这是我的 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
和\pdflastximagepages
via 的版本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}