LastPage 未定义 - 无法获取“第 x 页,共 y 页” - 即使经过多次编译

LastPage 未定义 - 无法获取“第 x 页,共 y 页” - 即使经过多次编译

这是我的 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}

有人能提供建议吗?正如标题所说,即使经过多次编译,我还是无法开始LastPage工作。我正在使用pdfLaTeX

答案1

\pageref删除;参数中的多余括号

\pageref{{LastPage}}

而且应该是

\pageref{LastPage}

多余的括号导致 LaTeX 查找错误的字符串{LastPage}来生成交叉引用(正确的字符串是LastPage)。您的代码会对此发出一些警告:

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

代码经过了一些修改,之前已经解释过:

\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}

在此处输入图片描述

我换成\cfoot{...}了最新的\fancyfoot[C]{...}界面。我还修复了headheight长度;您的 MWE 会发出警告

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

所以我geometry按照消息的建议使用了设置来增加长度。还要注意,这\bf是一个旧的 TeX 命令,不应在现代文档中使用;你应该改用\bfseries

也许您应该考虑其他方法来获取页脚中的间距;您可以使用\qquad(就像我在示例代码中所做的那样)或\hspace{<length>}代替所有这些单个空格。

答案2

我最近针对这种情况测试了一个带有\pdfximage\pdflastximagepagesvia 的版本lualatex,但我不建议在生产中使用它来解决这个特定问题。如果生成的 PDF 文件为空或损坏,则此示例将在未提前删除该(空)PDF 文件的情况下停止下一次 TeX 运行。

编辑:除此之外,并非所有书籍都从第 1 页开始,并且\pdfximage命令可以在文档的后面使用,因此此示例仅用于演示,需要改进。

%! 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}

很抱歉,我倾向于通过避免使用包来解决问题,lastpage而不是回答问题。原因是我们经常需要在最后一页之前引用,例如省略版权页或空白页甚至许多页时,例如当书包含附录、注释页、广告页等时。这是我的常用解决方案,我可以将其放在\label{mylastpage}文档的任何位置。

\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,第 1 部分 MWE,第 2 部分

相关内容