\AtBeginDocument
\AtBeginDocument
ist eine LaTeX-Kern-Anweisung, um aus der Dokumentpräambel heraus Code erst während \begin{document}
auszuführen.
Inhaltsverzeichnis
Verwendung
Syntax
\AtBeginDocument{Code}
Parameter
{Code}
-
- Der
Code
, der innerhalb von\begin{document}
auszuführen ist.
- Der
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.
- Die Fehlermeldung tritt auf, wenn
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.