使用 totcount 的替代方法来获取文档的总页数

使用 totcount 的替代方法来获取文档的总页数

我在包中遇到了一个错误totcount:有时它会错误地计算页数。例如,以下代码为我生成了一个 2 页的 PDF 文件,但totcount认为只有一页:

\documentclass[letterpaper]{article}

\usepackage{lipsum}

\usepackage{totcount}
\regtotcounter{page}

\begin{document}

\lipsum[1-5]

{\LARGE Total page count according to \texttt{totcount}: \total{page}.}

\end{document}

还有人在维护这个包吗?

有哪些可行的替代方案totcount

我知道,lastpage但我需要数字形式的总数,而不是文本。totcount我用\totvalue{page}它。

答案1

您可以使用zref它,它不应该有totcount与页码相关的问题。我的意思是,totcount它非常适合保存计数器的值,但它可能会失败page

\documentclass[letterpaper]{article}

\usepackage[lastpage]{zref}

\usepackage{lipsum} % for the example

\makeatletter
\newcommand{\totalpages}{\zref@extractdefault{LastPage}{page}{0}}
\makeatother

\newcounter{test}

\begin{document}

\lipsum[1-5]

\bigskip

\LARGE

\setcounter{test}{\totalpages}\thetest

Total page count according to \texttt{zref}: \totalpages.

\end{document}

\totalpages如您所见,您也可以在需要数字的上下文中使用。

在此处输入图片描述

答案2

lastpage如你所愿返回 2

\documentclass[letterpaper]{article}

\usepackage{lipsum}

\usepackage{lastpage}


\begin{document}

\lipsum[1-5]

{\LARGE Total page count according to \texttt{lastpage}: \pageref{LastPage}.}

\end{document}

如果您很小心的话,您可以将 的值用作\pageref{LastPage}数字。

\documentclass[letterpaper]{article}

\makeatletter
\long\def\@secondoffour#1#2#3#4{#2}
\def\getlastpage{\ifx\r@LastPage\@undefined 0\else
\expandafter\@secondoffour\r@LastPage\@empty\@empty\fi}
\makeatother

\usepackage{lipsum}

\usepackage{lastpage}


\begin{document}

\lipsum[1-5]

{\LARGE Total page count according to \texttt{lastpage}: \pageref{LastPage}.}

\the\numexpr\getlastpage+5\relax

\end{document}

答案3

\AtEndDocument您可以使用以下命令“手动”执行此操作电子工具箱包。下面的代码equation在文档末尾增加计数器,然后创建LastPage标签。有了这个,\pageref{LastPage}将给出文档中的页数(当然,您需要使用 latex 两次,并且页数需要稳定。

在此处输入图片描述

以下是 MWE 输出的前几行:

以下是代码:

\documentclass{article}
\usepackage{etoolbox}% setting the LastPage label
\AtEndDocument{\refstepcounter{equation}\label{LastPage}}

\usepackage{blindtext}% for illustrative purposes only below

\begin{document}

The number of pages in this document is \pageref{LastPage}.

\Blinddocument% a fake random document

\end{document}

相关内容