LastPage nicht definiert - „Seite x von y“ kann nicht abgerufen werden – auch nicht nach mehrmaligem Kompilieren

LastPage nicht definiert - „Seite x von y“ kann nicht abgerufen werden – auch nicht nach mehrmaligem Kompilieren

Hier ist mein MWE:

\documentclass[11pt,letterpaper,oneside,notitlepage]{article}

\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[loose]{units}
\usepackage{url}
\usepackage{pgf,tikz}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{multirow}
\usepackage{dcolumn}
\newcolumntype{.}{D{.}{.}{-1}}
\usepackage{booktabs}
\usepackage{alltt}
\usepackage[font=small,format=plain,labelfont=bf,up,textfont=it,up]{caption}
\usepackage[margin=1in]{geometry}


% these commands use the fancyhdr package to get "x of y" style
% page numbering.  The headrulewidth command gets rid of a decorative 
% horizontal rule that is default with "fancy" pagestyle.
\pagestyle{fancy}
\cfoot{\thepage\ of \pageref{LastPage}}
\renewcommand{\headrulewidth}{0pt}


\begin{document}

\cfoot{{Cyclic triaxial test report  \ \ \ \ \ \ \   Page \thepage\ of \pageref{{LastPage}} \ \ \ \ \ \ \ Test ID: {testid} \\ {{\bf PRELIMINARY REPORT - NOT FOR ENGINEERING USE!}}}}

\subsection*{1}
\subsection*{2}
\subsection*{3}
\clearpage 
\subsection*{a}
\clearpage 
\subsection*{b}
\clearpage 
\subsection*{c}
\clearpage 
\subsection*{d}
\clearpage 
\clearpage 
\end{document}

Kann mir jemand einen Rat geben? Wie der Titel schon sagt, kann ich auch nach mehreren Kompilierungen nichts erreichen LastPage. Ich verwende pdfLaTeX.

Antwort1

Wenn Sie das zusätzliche Klammernpaar im Argument von weglassen \pageref, erhalten Sie

\pageref{{LastPage}}

und es sollte

\pageref{LastPage}

Das zusätzliche Klammernpaar führt dazu, dass LaTeX nach der falschen Zeichenfolge sucht, {LastPage}um den Querverweis zu erstellen (die richtige Zeichenfolge ist LastPage). Ihr Code erzeugt diesbezüglich einige Warnungen:

LaTeX Warning: Reference `{LastPage}' on page 1 undefined on input line 35.

Der Code mit einigen zuvor erläuterten Änderungen:

\documentclass[11pt,letterpaper,oneside,notitlepage]{article}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[loose]{units}
\usepackage{url}
\usepackage{pgf,tikz}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{multirow}
\usepackage{dcolumn}
\newcolumntype{.}{D{.}{.}{-1}}
\usepackage{booktabs}
\usepackage{alltt}
\usepackage[font=small,format=plain,labelfont=bf,up,textfont=it,up]{caption}
\usepackage[margin=1in]{geometry}


% these commands use the fancyhdr package to get "x of y" style
% page numbering.  The headrulewidth command gets rid of a decorative 
% horizontal rule that is default with "fancy" pagestyle.
\pagestyle{fancy}
\fancyfoot[C]{\thepage\ of \pageref{LastPage}}
\renewcommand{\headrulewidth}{0pt}

\begin{document}

\fancyfoot[C]{{Cyclic triaxial test report\qquad Page \thepage\ of \pageref{LastPage}\qquad  Test ID: {testid} \\ {\bfseries PRELIMINARY REPORT -- NOT FOR ENGINEERING USE!}}}

\subsection*{1}
\subsection*{2}
\subsection*{3}
\clearpage 
\subsection*{a}
\clearpage 
\subsection*{b}
\clearpage 
\subsection*{c}
\clearpage 
\subsection*{d}AAA
\clearpage 
\clearpage 
\end{document}

Bildbeschreibung hier eingeben

Ich habe \cfoot{...}auf die modernste \fancyfoot[C]{...}Schnittstelle umgestellt. Ich habe auch die headheightLänge korrigiert; Ihr MWE erzeugt eine Warnung

Package Fancyhdr Warning: `\headheight` is too small (`12.0pt`): Make it
at least `13.59999pt`.

also habe ich die geometryEinstellungen verwendet, um die Länge zu erhöhen, wie in der Nachricht vorgeschlagen. Beachten Sie auch, dass es sich \bfum einen alten TeX-Befehl handelt, der in modernen Dokumenten nicht verwendet werden sollte. Sie sollten \bfseriesstattdessen Folgendes verwenden:

Vielleicht sollten Sie eine andere Methode in Betracht ziehen, um den Abstand in der Fußzeile zu erhalten. Sie können \qquad(wie ich es in meinem Beispielcode getan habe) oder \hspace{<length>}anstelle aller einzelnen Leerzeichen zusammen verwenden.

Antwort2

Ich habe kürzlich eine Version mit \pdfximageund \pdflastximagepagesüber lualatexfür diese Situation getestet, empfehle sie jedoch nicht für dieses spezielle Problem in der Produktion. Wenn eine generierte PDF-Datei leer oder beschädigt ist, stoppt dieses Beispiel den nächsten Lauf von TeX, sofern diese (leere) PDF-Datei nicht vorher gelöscht wird.

Bearbeiten:Außerdem beginnen nicht alle Bücher auf Seite 1 und \pdfximageder Befehl könnte später im Dokument verwendet werden. Dieses Beispiel dient also nur zur Demonstration und müsste verbessert werden.

%! lualatex example.tex
\documentclass[a4paper]{article}
\def\myfile{example.pdf}
\IfFileExists{\myfile}  % Is document typeset for the first time?
  {\pdfximage{\myfile}} % Positive response...
  {\relax}              % Negative response...
\usepackage{fancyhdr}
\pagestyle{fancy}\fancyhf{}
\fancyhead[C]{Page \thepage\ of \the\pdflastximagepages}
\begin{document}
Some text.\par\newpage Some more text.
\end{document}

Es tut mir leid, aber ich neige dazu, das Problem zu lösen, indem ich die Verwendung des lastpagePakets vermeide, anstatt die Frage zu beantworten. Der Grund ist, dass wir oft vor der letzten Seite etwas brauchen, auf das wir verweisen können, z. B. wenn das Kolophon weggelassen wird oder eine leere Seite oder sogar viele Seiten vorhanden sind, z. B. wenn das Buch Anhänge, Seiten für Notizen, Seiten mit Werbung usw. enthält. Dies ist meine übliche Lösung, die ich \label{mylastpage}überall im Dokument einfügen kann.

\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}\fancyhf{}
\fancyhead[C]{Page \thepage\ of \pageref{mylastpage}}
\begin{document}
Some text.\newpage Some more text.
\label{mylastpage}
\end{document}

MWE, Teil 1 MWE, Teil 2

verwandte Informationen