当 .run.xml 文件发生更改时,latexmk 会不必要地重新运行 pdflatex

当 .run.xml 文件发生更改时,latexmk 会不必要地重新运行 pdflatex

给定以下文档:(存储在a.tex

\documentclass{article}
\usepackage{logreq}
\begin{document}
\section{Hello world}
\end{document}

运行latexmk -recorder a会输出:

------------
Run number 2 of rule 'lualatex'
------------
------------
Running 'lualatex  -recorder  "a.tex"'
------------

[...]

Latexmk: Getting log file 'a.log'
Latexmk: Examining 'a.fls'
Latexmk: Examining 'a.log'
Latexmk: Log file says output to 'a.pdf'
Latexmk: applying rule 'lualatex'...
Rule 'lualatex':  Reasons for rerun
Changed files or newly in use/created:
  a.run.xml

------------
Run number 3 of rule 'lualatex'
------------
------------
Running 'lualatex  -recorder  "a.tex"'
------------

问题:

  • 据我所知,最后一次运行lualatex是没有必要的。当 .run.xml 文件发生改变时,是否存在需要重新运行 latex 的情况?
  • 如果不,有没有办法修改logreq包(或其他方式)以避免重复运行?

答案1

据我所知,您说得对,.run.xml 中的更改导致 latexmk 执行 *latex 的额外运行,但这并不影响输出 pdf 文件的内容。原则上,它们可能会影响输出 pdf 文件的内容,因为 .run.xml 是在编译期间读取的;这就是执行额外运行的原因。但实际上,更改的影响仅在 logreq 发送到日志文件(和屏幕)的消息中,关于用户是否应该重新编译文档。但 latexmk 无需 logreq 的帮助就能找出该信息。

当使用 biblatex 包进行参考书目时,额外运行的问题尤其令人烦恼,因为 biblatex 使用 logreq 包。

不幸的是,在当前版本的 latexmk 中没有办法避免额外的运行,至少没有什么简单的办法。

解决这个问题是我对 latexmk 未来版本的改进之一。

相关内容