Warum erkennt \AtEndDocument nicht das richtige Seitenende?
Am Ende eines Dokuments sollen verschiedene Befehle ausgeführt werden. Hierzu verwende ich `\AtEndDocument`, wobei es gelegentlich zu Fehlern kommt, was ich am Beispiel eines Seitenlabels demonstrieren möchte. (Ich weiß, dass es hierfür auch das Paket `lastpage` gibt, aber es soll später mehr als nur das Label am Ende gesetzt werden.)
Folgender Code steht hierzu vor `\begin{document}`
\AtEndDocument{%
% weiterer Code
\label{page:ende}}
Im Dokument wird dann mit `\pageref{page:ende}` auf die letzte Seite verwiesen.
Nun kommt es aber manchmal dazu, dass , vielleicht abhängig vom Inhalt des Dokuments und der Seitenfüllung, das Dokumentenende nicht richtig erkannt wird und "undefined references" als Fehler ausgegeben wird. In einem Fall, in dem das geschieht, hat mein Dokument zwei Seiten.
Verwende ich im selben Dokument
\AtEndDocument{%
% weiterer Code
\label{page:ende}
Hier ist das Dokument zu Ende.}
kommt es zu keinen Fehlern in diesem Sinne, allerdings erhalte ich eine dritte Seite mit der Zeile "Hier ist das Dokument zu Ende." und `\pageref{page:ende}` liefert den Wert drei. Also passt hier etwas nicht, oder ich scheine was (grundsätzlich) falsch zu machen.
Setze ich im selben Dokument allerdings das Label manuell am Ende, also ohne Verwendung von `\AtEndDocument` funktioniert die Referenz.
Aktualisierung: **Aktualisierung:** Alle Dokumente, in denen dieses Verhalten auftritt, enden mit einer selbstdefinierten Umgebung, an deren Ende `\par\vspace{1ex}` ausgeführt wird.wird.
Hier mal ein ähnliches Minimalbeispiel:
\documentclass{article}
\usepackage{lipsum}
\AtEndDocument{\label{page:ende}}
\newenvironment{aufzaehlung}{%
\begin{itemize}}{\end{itemize}\par\vspace{3ex}}
\begin{document}
\textbf{Insgesamt sind es \pageref{page:ende} Seiten.}
\lipsum[1-9]
\begin{aufzaehlung}
\item Wer?
\item Wie?
\item Was?
\item Warum?
\item Wer nicht fragt bleibt dumm!
\end{aufzaehlung}
\end{document}
Bei `\par\vspace{3ex}` taucht das Problem auf, bei `\par\vspace{2ex}` nicht.