Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

29 Jun '13, 15:38

Marco_D's gravatar image

Marco_D
43015

Der Stern als Token wird in LaTeX als Teil des Befehlsnamens verstanden. Somit kommt dem Stern also nur eine symbolische Wirkung zu. Es könnte genauso ein `+` sein. Der Test `\@ifstar` is auch genau so im LaTeX Kernel definiert: \def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}} Willst du die Eigenschaften eines Tokens ändern, so kannst du dessen `\catcode` ändern. Willst du beispielsweise, dass LaTeX alle `*` ignoriert, so kannst du das durch die Zuweisung des catcode 9 erreichen. Im nachstehenden Beispiel werden die Anweisungen `\ActivateStar` und `DeactivateStar` definiert, die genau diesen catcode-Wechsel durchführen. \documentclass[]{article} \protected\edef\ActivateStar{% \catcode42 = \the\catcode42\relax%42 is the star: \number`\* } \protected\edef\DeactivateStar{% \catcode42 = 9\relax%catcode 9 token wird ignoriert } \begin{document} \tableofcontents \DeactivateStar \section*{foo} \ActivateStar \section*{foo} \end{document} Durch die oben gezeigte Deklaration werden aber all Token * ignoriert. Somit führt die Eingabe `L*T` zu `LT`.`LT`. ---- Allerdings noch eine Anmerkung. Wenn ein internes Makro die Sternvariante nutzt, hat es einen guten Grund. Es muss also immer darauf geachtet werden, was man erreichen bzw. ändern möchte.
Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

29 Jun '13, 13:21

Marco_D's gravatar image

Marco_D
43015

Der Stern als Token wird in LaTeX als Teil des Befehlsnamens verstanden. Somit kommt dem Stern also nur eine symbolische Wirkung zu. Es könnte genauso ein `+` sein. Der Test `\@ifstar` is auch genau so im LaTeX Kernel definiert: \def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}} Willst du die Eigenschaften eines Tokens ändern, so kannst du dessen `\catcode` ändern. Willst du beispielsweise, dass LaTeX alle `*` ignoriert, so kannst du das durch die Zuweisung des catcode 9 erreichen. Im nachstehenden Beispiel werden die Anweisungen `\ActivateStar` und `DeactivateStar` definiert, die genau diesen catcode-Wechsel durchführen. \documentclass[]{article} \protected\edef\ActivateStar{% \catcode42 = \the\catcode42\relax%42 is the star: \number`\* } \protected\edef\DeactivateStar{% \catcode42 = 9\relax%catcode 9 token wird ignoriert } \begin{document} \tableofcontents \DeactivateStar \section*{foo} \ActivateStar \section*{foo} \end{document} Durch die oben gezeigte Deklaration werden aber all Token * ignoriert. Somit führt die Eingabe `L*T` zu `LT`.