撰写报告时,通常在开头有一页元信息,包括撰写者、审核者、客户、日期等。我需要的字段之一是页数。由于我要自动输出这些报告,我想知道是否有办法从 latex 中获取这些信息,然后在下一次编译时输入它?比如Number of pages: \pdflength
答案1
包中zref
,模块totpages
提供了\ztotpages
包含页数的宏(无论页码如何编号)。
\documentclass{article}
\usepackage{zref-totpages}
\begin{document}
Total pages: \ztotpages
\end{document}
其内部工作原理是将 zref 标签写入文件.aux
。如果文件中尚不存在该标签.aux
,则\ztotpages
扩展为0
。
比较最后一页与总页数
\documentclass{book}
\usepackage{blindtext}
\usepackage{zref-totpages}
\usepackage{lastpage}
\begin{document}
\frontmatter
\begin{tabular}{ll}
Total pages: & \ztotpages \\
Last page: & \pageref{LastPage} \\
\end{tabular}
\newpage
\tableofcontents
\mainmatter
\blinddocument
\end{document}
该文件包含四个罗马数字封面页和四个正文页。结果:
Total pages: 8
Last page: 4
答案2
在 OpTeX 中,有一个宏\lastpage
。你可以尝试:
\fontfam[lm]
Number of pages: \lastpage.
\bye
在 TeX 第一次运行中,终端会\lastpage
扩展为:?
WARNING l.5: Try to rerun, document.ref file was created.
当您再次运行 TeX 时,将\lastpage
扩展为文档中的页数。 如果此数字发生变化,则终端会显示:
WARNING l.9: Try to rerun, document.ref file was changed.
当您再次运行 TeX 时,\lastpage
是正确的,并且终端和log
文件上没有打印任何警告。
答案3
您可以尝试\usepackage{lastpage}
一下\pageref{LastPage}
。以下是 MWE:
\documentclass[a4paper]{article}
\usepackage{lastpage}
\usepackage{hyperref}
\hypersetup{hidelinks}
\usepackage{lipsum}
\title{Title \\
\large Subtitle}
\author{Author}
\date{31.05.2022}
\begin{document}
\maketitle
\begin{center}
Total pages: \pageref{LastPage}
\end{center}
\newpage
\lipsum
\end{document}