latexmk 和橡胶有什么区别?

latexmk 和橡胶有什么区别?

我刚刚偶然发现了这个关于的博客文章rubber并想:“这不正是这样的latexmk吗?”所以,现在我想知道:不是吗?或者有什么区别?

答案1

看来橡胶具有 latexmk 尚未提供的以下特性:

  1. 橡皮解析 LaTeX 日志文件,过滤它,并只漂亮地打印“相关”消息(警告、错误)。Rubber 总是在非交互模式,而 latexmk 似乎需要额外的开关或配置。
  2. 有了橡胶,你就可以拥有配置选项作为 LaTeX 源代码中的注释;latexmk 需要辅助配置文件。
  3. 最重要的是,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 紧密集成。

相关内容