给定以下文档:(存储在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 未来版本的改进之一。