我的目标是,如果文档有 1 页以上,则实现 n/m 类型的页码,否则没有页码。我可以毫无问题地放置 n/m 页码,这要归功于如何在我的文档中添加“第 # 页,共 ## 页”?。我的计划是使用总计数包来测试总页数。问题是最后一页包搞乱了总数。具体来说,生成的 1 页文档包含以下 MWE:
\documentclass{article}
\usepackage{lastpage}
\usepackage{totcount}
\regtotcounter{page}
\begin{document}
totcount: \total{page}
lastpage: \pageref{LastPage}
\end{document}
等于\total{page}
2 而\pageref{LastPage}
等于 1。
知道发生什么事了吗?
答案1
也许这不能完全回答这个问题,但它提供了一个解决方法(绕过totcount
):
\documentclass{article}
\usepackage[paper=a6paper]{geometry}% http://ctan.org/pkg/geometry
\usepackage{fancyhdr,refcount}% http://ctan.org/pkg/{fancyhdr,refcount}
\usepackage{lastpage}% http://ctan.org/pkg/lastpage
\pagestyle{fancy}
\fancyhf{}% Clear header/footer
\renewcommand{\headrulewidth}{0pt}% No header rule
\fancyfoot[C]{%
\ifnum\getpagerefnumber{LastPage}>1
\thepage~of~\getpagerefnumber{LastPage}%
\fi%
}
\begin{document}
First page.
\clearpage
Last page.
\end{document}
如果您遇到文档末尾未处理的浮点数问题,可能需要考虑使用atveryend
。
答案2
问题是page
每次调用输出例程时计数器都会递增,并且是当 TeX 判定文档已结束时,至少会调用一次。因此totcount
不可靠page
。
您可以将其用于zref-lastpage
此目的,因为它提供了对引用值的可扩展访问。
\documentclass{article}
\usepackage{zref-lastpage}
\usepackage{fancyhdr}
\makeatletter
\fancypagestyle{plain}{%
\fancyhf{}%
\fancyfoot[C]{%
\ifnum\zref@extractdefault{LastPage}{page}{0}>1
\thepage\ of\ \zref@extract{LastPage}{page}%
\fi
}
\renewcommand{\headrulewidth}{0pt}%
}
\makeatother
\pagestyle{plain}
\begin{document}
x
% uncommenting the following lines will show page numbers as “1 of 2” and “2 of 2”
% \clearpage
% y
\end{document}