![\@abspage@last kann Nummer nicht in der Kopfzeile setzen](https://rvso.com/image/449626/%5C%40abspage%40last%20kann%20Nummer%20nicht%20in%20der%20Kopfzeile%20setzen.png)
Ich habe versucht, die Gesamtzahl der Seiten in der rechten Kopfzeile \@abspage@last
unter „Seitenstil“ zu setzen fancy
. Statt der Zahl wird der Text abspage@last
gedruckt. Warum? Und wie gehe ich damit um?
MWE:
\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\rhead{Page \thepage\ of \makeatletter\@abspage@last\makeatother}
\begin{document}
First page:\\
total pages are: \@abspage@last\\ % typeset abspage@last. Why not give error message?
total pages are: \makeatletter\@abspage@last\makeatother % typeset the right number
\clearpage
Second page
\clearpage
Third page
\end{document}
Antwort1
Du brauchst\makeatletter
um \rhead{...}
, nicht darin, aber Sie können es besser machen.
Es gibt keine „offizielle“ Schnittstelle für die Verwendung \@abspage@last
im Dokument, hauptsächlich weil nicht die letzte Seitenzahl gespeichert werden soll, sondern die Gesamtzahl der Seiten, einschließlich der Seiten mit unterschiedlichem Nummerierungsschema.
Wenn Sie das Nummerierungsschema nicht ändern, können Sie es verwenden, indem Sie zuerst Ihre eigene Schnittstelle definieren
\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\makeatletter
\newcommand{\lastpagenumber}{\@abspage@last}
\makeatother
\pagestyle{fancy}
\fancyhf{}
\rhead{Page \thepage\ of \lastpagenumber}
\begin{document}
First page:
\clearpage
Second page
\clearpage
Third page
\end{document}
Der Standardwert ist 1073741823, den Sie erhalten, wenn die .aux
Datei noch nicht existiert.
Wenn Sie gewarnt werden möchten, dass eine erneute Ausführung erforderlich ist, können Sie prüfen, ob \@abspage@last
„equals“ gilt \maxdimen
:
\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\makeatletter
\newcommand{\lastpagenumber}{%
\ifnum\@abspage@last=\maxdimen
\@lastpagewarning
\else
\@abspage@last
\fi
}
\newcommand{\@lastpagewarning}{%
\@latex@warning@no@line{Could not determine last page number, rerun LaTeX}%
??\gdef\@lastpagewarning{??}%
}
\makeatother
\pagestyle{fancy}
\fancyhf{}
\rhead{Page \thepage\ of \lastpagenumber}
\begin{document}
First page:
\clearpage
Second page
\clearpage
Third page
\end{document}
Wenn die .aux
Datei fehlt oder aus irgendeinem Grund \@abspage@last
noch nicht definiert ist, erhalten Sie
LaTeX Warning: Could not determine last page number, rerun LaTeX.
Dies würde natürlich fehlschlagen, wenn Ihr Dokument 1073741823 Seiten umfasst, aber …