有没有办法知道乳胶已经运行了多少次?

有没有办法知道乳胶已经运行了多少次?

几天前,我看到了一个乳胶文件的示例,它\def在后续运行中执行了条件,但我再也找不到那个了。

我还记得是通过查看\jobname.auxdo 来获取以前的构建数量。

就我目前的情况而言,我想不是使用包minted但定义其命令以在前两次构建期间简单地使用 verbatim-environment,并minted在第三次运行中使用其内置宏进行 syntaxhighlight。

我究竟如何才能获得之前的 latex 运行次数?

答案1

.tex代码使用一个名为的计数器NumberOfRuns,并将其值写入.aux文档末尾的文件(\AtEndDocument)。在文档开头,.aux读取文件后,计数器值已知,然后增加。

然后可以轻松地通过\ifnum\ifnumexpr命令(例如来自etoolbox包)对当前计数器值做出反应。

笔记:如果.aux文件被删除,信息将会丢失。

\documentclass{scrartcl}


\newcounter{NumberOfRuns}


\makeatletter
\AtEndDocument{%
\immediate\write\@auxout{%
\string\setcounter{NumberOfRuns}{\number\value{NumberOfRuns}}
}
}%

\AtBeginDocument{%
\refstepcounter{NumberOfRuns}
}%

\makeatother

\begin{document}

This document was compiled \theNumberOfRuns~times so far!

\end{document}

改进版本,显示对某些值的查询

\documentclass{scrartcl}

\usepackage{etoolbox}

\newcounter{NumberOfRuns}


\makeatletter
\AtEndDocument{%
\immediate\write\@auxout{%
\string\setcounter{NumberOfRuns}{\number\value{NumberOfRuns}}
}
}%

\AtBeginDocument{%
\refstepcounter{NumberOfRuns}
}%

\makeatother

\newcommand{\prettyoutput}[1]{%
\ifnumequal{\number\value{#1}}{1}{once}{%
  \ifnumequal{\number\value{#1}}{2}{twice}{%
    \ifnumequal{\number\value{#1}}{3}{thrice}{%
      \number\value{#1}~times%
    }%
  }%
}%
}%

\begin{document}

This document was compiled \prettyoutput{NumberOfRuns} so far!

\end{document}

在此处输入图片描述

相关内容