![LuaTeX:我能确定这是否是第一次运行吗?](https://linux22.com/image/460460/LuaTeX%EF%BC%9A%E6%88%91%E8%83%BD%E7%A1%AE%E5%AE%9A%E8%BF%99%E6%98%AF%E5%90%A6%E6%98%AF%E7%AC%AC%E4%B8%80%E6%AC%A1%E8%BF%90%E8%A1%8C%E5%90%97%EF%BC%9F.png)
是否可以检测当前运行是否是第一次运行(最好从 Lua 端)?
我尝试读取日志文件,但是当 Lua 引擎启动时它显然已被删除。
当然,我可以创建一个文件,然后在每次完成编译后手动删除该文件(或者创建一个在第一次运行时删除的文件),但我更喜欢“自动”工作的解决方案。
答案1
您可以测试 pdf 输出是否存在:
\newread\f
\openin\f=\jobname.pdf
\ifeof\f\message{First run}\else\message{Next run}\fi
\closein\f
Text
\bye
请注意,此处的另一个答案(以及讨论)基于 LaTeX。但 OP 的问题中没有提到 LaTeX。我的解决方案与 LaTeX 无关。
答案2
我相信不需要 Lua 的解决方案可以基于此处提供的答案:读取和写入 auxfile 命令
要点:当您的文档运行时,将自定义变量(或计数器)写入 *aux 文件,然后在下次编译时读取它。每次都重新写入。注意 *aux 何时先被读取,以便您的写入命令稍后执行。
并且一定要测试变量是否已定义。如果没有,那么它必须是第一次运行。