\@abspage@last kann Nummer nicht in der Kopfzeile setzen

\@abspage@last kann Nummer nicht in der Kopfzeile setzen

Ich habe versucht, die Gesamtzahl der Seiten in der rechten Kopfzeile \@abspage@lastunter „Seitenstil“ zu setzen fancy. Statt der Zahl wird der Text abspage@lastgedruckt. 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@lastim 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 .auxDatei 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 .auxDatei fehlt oder aus irgendeinem Grund \@abspage@lastnoch 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 …

verwandte Informationen