我刚刚偶然发现了这个关于的博客文章rubber
并想:“这不正是这样的latexmk
吗?”所以,现在我想知道:不是吗?或者有什么区别?
答案1
看来橡胶具有 latexmk 尚未提供的以下特性:
- 橡皮解析 LaTeX 日志文件,过滤它,并只漂亮地打印“相关”消息(警告、错误)。Rubber 总是在非交互模式,而 latexmk 似乎需要额外的开关或配置。
- 有了橡胶,你就可以拥有配置选项作为 LaTeX 源代码中的注释;latexmk 需要辅助配置文件。
- 最重要的是,rubber 可以让你指定正确的值TEXINPUTS、BIBINPUTS、BSTINPUTS 等对于每个文档使用前面提到的配置选项;latexmk 似乎期望这些环境变量已经被适当地定义。
当然,许多这些问题都可以通过一些包装器脚本和辅助文件来解决。显然 latexmk 的许多功能是 rubber 所不具备的。
答案2
latexmk 相对于 rubber 的一个重要优势是 latexmk 可以更可靠地检测依赖文件。据我所知,rubber 通过解析 tex 文件、查找 和 宏来确定依赖文件\input
。\include
但 \includegraphics
如果这些宏隐藏在另一个宏中,rubber 就无法正确检测依赖文件。例如,如果你有
\newcommand\try[1]{\input{#1}}
\try{sub}
rubber 不会检测sub.tex
依赖文件。因此如果文件sub.tex
发生变化,rubber 不会检测需要再次运行编译。
Latexmk 会解析日志文件并使用-recorder
( pdf
)选项latex
来确定依赖文件。
答案3
Latexmk 还带来了自动预览功能,可以在保存 tex 后立即重新编译(智能地)pdf。
还有更多高级功能,例如与 makefile 紧密集成。