如何创建构建次数的计数器

如何创建构建次数的计数器

我刚刚使用 Latex 撰写了我的硕士论文。

当我执行最后的构建时,我在想计算到目前为止我所完成的构建总数将会非常有趣。

是否有可能以某种方式计算您在单个文档上执行的构建次数?我可以定义某种计数器,每次构建时计数器都会增加 1(也许使用外部文件来存储和读取当前数字)吗?

答案1

zref包提供了runs将运行次数存储到.aux文件中的模块。

(附注:手册第 9 页的用户模块概述zref 不完整,runs但第 16 页提到了该模块)

可以通过 检索数字\zruns,这是一个可扩展的宏。

请注意,

  • 处于活动状态的运行\nofiles不被计算在内。
  • .aux当文件被删除时,运行次数将会丢失。

\documentclass{book}

\usepackage{blindtext}

\usepackage[runs]{zref}


\begin{document}
\typeout{This document has been built \zruns\ times}
\blindtext[10]
\end{document}

答案2

这是用户自制的方法。不幸的是,我似乎找不到一种方法来测试 TeX 过去是否遇到过错误(例如,是否继续\nonstopmode ),因此这将计算所有运行,除非您以交互方式运行并手动停止编译错误(通过X)。

这里的想法是使用一个特殊的专用辅助文件,因为.aux在某些情况下可以合法地删除主文件以从某些情况中恢复。

\newcounter{nbofruns}
\InputIfFileExists{\jobname-nbofruns.txt}{}{}
\stepcounter{nbofruns}

\documentclass{article}
\usepackage{atveryend}
\AtVeryVeryEnd
{%
  \newwrite\runs
  \immediate\openout\runs=\jobname-nbofruns.txt
  \immediate\write\runs
     {\string\setcounter{nbofruns}{\the\value{nbofruns}}}%
}
\begin{document}
This document has been built \arabic{nbofruns} times.
\end{document}

相关内容