dantefaq:movingargument

%META:TOPICINFO{author=“HerbertVoss” date=“1237298181” format=“1.1” reprev=“1.1” version=“1.1”}% %META:TOPICPARENT{name=“WebHome”}%

Zerbrechliche Anweisungen in ,moving arguments`

Der Text, den ein Autor im Argument von Anweisungen wie \caption, \section etc. angibt, kann an mehreren Stellen in einem Dokument gesetzt werden. Der Argumenttext von \section wird z.B. als Kapitelüberschrift gesetzt und taucht evtl. nochmals im Inhaltsverzeichnis oder im Seitenkopf bzw. -fuß auf. Diese Argumente nennt man ,moving arguments`, da sie vom Platz, wo ein Autor sie angibt, auch zu anderen Stellen verschoben werden.

Die korrekte Ausführung von ,zerbrechlichen Anweisungen` hängt intern von Zuweisungen ab. Innerhalb eines ,moving argument` werden diese Zuweisungen jedoch nicht durchgeführt, so daß solche Anweisungen ,zerbrechen`. Zu den zerbrechlichen Anweisungen zählen unter anderem \cite, \ref, \pageref für Literatur- und Querverweise, \footnote, \footnotemark, die Anweisungen \small, \large etc. zur Wahl der Schriftgröße, mathematische Formelzeichen wie \sqrt, \notin, \overbrace und viele mehr.

Wie kann ich innerhalb des Arguments von \caption, \section etc. Anweisungen wie \cite, \ref, \pageref oder \footnote verwenden, ohne Fehler wie , ! Argument of \@sect has an extra }.` oder , ! Use of \@chapter doesn't match its definition. ` zu erhalten?

Zerbrechliche Befehle wie \cite müssen im ,moving argument` der Anweisung \caption mit \protect geschützt werden, d.h. statt

\caption{Bildunterschrift~\cite{PartlKnappen95}}

ist ein \protect direkt und ohne geschweifte Klammern vor die zu schützende Anweisung zu setzen: <verbatim>\caption{Bildunterschrift~\protect\cite{PartlKnappen95}} </verbatim>

Anweisungen wie \caption, \section etc. haben außerdem noch die Möglichkeit, in einem optionalen Argument den zu ,verschiebenden Argumenttext` anzugeben. Das heißt, obiges könnte auch in

<verbatim>\caption[Bildunterschrift]%
        {Bildunterschrift~\cite{PartlKnappen95}}</verbatim> 

umformuliert werden. Jetzt ist das optionale Argument in []-Klammern das ,moving argument`, in dem Sie zerbrechliche Anweisungen mit \protect schützen müssen!

Beginnend mit LaTeX von Dezember 1995 sind Anweisungen wie \cite und Anweisungen mit optionalem Argument, wie \sqrt, nicht mehr zerbrechlich und benötigen damit kein \protect mehr. Dennoch sollten Sie diese Anweisungen weiterhin mit \protect schützen, wenn Sie Ihre Dokumente anderen zukommen lassen wollen.

– Main.HerbertVoss - 17 Mar 2009

  • dantefaq/movingargument.txt
  • Last modified: 2023/02/28 10:39
  • by 127.0.0.1