\AtBeginDocument

Aus goLaTeX

\AtBeginDocument ist eine LaTeX-Kern-Anweisung, um aus der Dokumentpräambel heraus Code erst während \begin{document} auszuführen.

Verwendung

Syntax

\AtBeginDocument{Code}

Parameter

{Code}
Der Code, der innerhalb von \begin{document} auszuführen ist.

Beschreibung

Die Anweisung kann nur innerhalb der Dokumentpräambel verwendet werden. Der darüber angegebene Code wird dann erst innerhalb von \begin{document} expandiert und ausgeführt. Die Verwendung von \AtBeginDocument innerhalb des Arguments von \AtBeginDocument ist prinzipiell möglich.

Zum Zeitpunkt der Expansion und Ausführung von Code ist die aux-Datei bereits gelesen und die neue aux-Datei zum Schreiben geöffnet. Jedoch ist die Initialisierung der Ausgabe noch nicht vollständig ausgeschlossen, weshalb in „LaTeX2ε for class and package writers” explizit dokumentiert ist, dass Code Teil der Dokumentpräambel ist und damit keine satztechnischen Ausgaben tätigen darf.

Fehlermeldungen

LaTeX Error: Can be used only in preamble.
Die Fehlermeldung tritt auf, wenn \AtBeginDocument nach \begin{document} aufgerufen wird.

Beispiele

\documentclass{article}
\newlength{\foo}
\AtBeginDocument{%
  \setlength{\foo}{\columnwidth}%
}
\usepackage[a5paper]{geometry}
\begin{document}
\verb|\foo|=\the\foo, \verb|\columnwidth|=\the\columnwidth
\end{document}

Im Beispiel wird das Setzen der neuen Länge \foo durch die Verwendung von \AtBeginDocument unabhängig(er) von Code, der in der Dokumentpräambel noch folgt. Offiziell werden diverse Satzspiegel-Längen wie \columnwidth ohnehin erst innerhalb von \begin{document} initialisiert, so dass man sie in der Dokumentpräambel nicht unmittelbar verwenden sollte. Da das Argument von \AtBeginDocument erst innerhalb von \begin{document} expandiert wird, wird die Satzspiegellänge \columnwidth hier auch tatsächlich erst nach ihrer offiziellen Initialisierung verwendet.

Verwandte Befehle

\AtEndDocument, \AtEndOfPackage, \AtBeginDvi, \BeforeClosingMainAux (KOMA-Script), \AfterReadingMainAux (KOMA-Script), \AfterPreamble (etoolbox), \AtEndPreamble (etoolbox), \AfterEndPreamble (etoolbox), \AfterEndDocument (etoolbox)

Verweise

Die Anweisung ist in den LaTeX-Quellen in Datei ltclass.dtx definiert und zusätzlich zu source2e.pdf in „LaTeX2ε for class and package writers” dokumentiert.

Links