Seite 1 von 1

\g@addto@macro -> add BEFORE Macro gesucht

Verfasst: Mi 4. Aug 2010, 17:38
von DG1BGS
Hallo goLaTeX-Forum-Gemeinde,
mir Stellen sind folgende Fragen im Bezug auf das Macro \g@addto@macro aufgekommen:
  • 1. Was ist genau der Unterschied zwischen \g@addto@macro und \l@addto@macro?
    2. Gibt es einen Art Platzhalter der es erlaubt, \g@addto@macro auf Macros anzuwenden, denen Optionen übergeben werden?
    3. Gibt es ein Pendant zu \g@addto@macro, mit dem etwas VOR dem Macro eingefügt werden kann?
Beispiel zu 2.
\g@addto@macro{\blindtext}{\\ENDE}
\blindtext[20] %Erzeugt \blindtext + ENDE[20] in der nächsten Zeile, [20] wird also nicht mehr als Option gesehen, da \\ENDE direkt hinter \blindtext eingefügt wurde
Beispiel zu 3.
\???@macro{\blindtext}{ANFANG\\}
Liebe Grüße, Stephan

Verfasst: Mi 4. Aug 2010, 19:11
von phi
Hallo,

1. "g" steht für global, "l" für lokal. Lokale Änderungen sind, wenn sie in einer Gruppe geschehen, außerhalb dieser unwirksam:
\documentclass{scrartcl}
\begin{document}
\makeatletter
\def\x{a}
\x\par % Ausgabe "a"
\begingroup
\g@addto@macro\x{b}
\x\par % Ausgabe "ab"
\l@addto@macro\x{c}
\x\par % Ausgabe "abc"
\endgroup
\x\par % Ausgabe "ab"
\end{document}
\g@addto@macro stammt aus dem LaTeX-Kernel, \l@addto@macro aus den KOMA-Script-Klassen.
Ein öffentlich dokumentiertes Äquivalent zu \g@addto@macro ist \gappto aus dem etoolbox-Paket.

2. Das ist nicht automatisiert möglich. \apptocmd aus dem etoolbox-Paket deckt einige Fälle ab, versagt aber beispielsweise bei Befehlen mit optionalen Parametern. Verwende \renewcommand oder einen Wrapper-Befehl.

3. Ebenfalls aus dem etoolbox-Paket: \preto, \gpreto, \pretocmd usw.

Verfasst: Do 5. Aug 2010, 15:18
von DG1BGS
Danke für die schnelle Antwort phi. Ich werde damit mal etwas herum experimentieren.

Liebe Grüße, Stephan