使用 totcount 和 lastpage

使用 totcount 和 lastpage

我的目标是,如果文档有 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}

相关内容