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

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


DG1BGS
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Do 6. Mai 2010, 19:36
Wohnort: Ulm

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

Beitrag 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

phi
Moderator
Moderator
Beiträge: 420
Registriert: Fr 6. Feb 2009, 21:28

Beitrag 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.

DG1BGS
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Do 6. Mai 2010, 19:36
Wohnort: Ulm

Beitrag von DG1BGS »

Danke für die schnelle Antwort phi. Ich werde damit mal etwas herum experimentieren.

Liebe Grüße, Stephan

Antworten