编译子目录中的所有 latex 文档(当文档涉及多个文件时)

编译子目录中的所有 latex 文档(当文档涉及多个文件时)

我有一个目录,其中包含许多单独的 latex 文档,这些文档直接位于目录内或位于子目录内;我想同时编译所有这些文档。其中一些文档涉及多个.tex文件 — 主文件包含一些其他文件。

以下问题问的是非常类似的问题:

但是,那里给出的答案对我的情况不起作用;他们本质上告诉latexmk(或pdflatex,或其他)尝试编译全部.tex文件在当前目录中。当每个.tex文件都是单独的文档时,这种方法有效,但当存在多个文件文档时,这种方法就会失效,原因有两个:

  • 仅作为包含的文件.tex不会单独编译,因此latexmk会阻塞这些文件
  • 即使在编译文档的主文件时,latexmk也可能会失败,因为它试图在当前目录中而不是主文件所在的目录中定位请求的包含文件。

在这种情况下,是否有人有一个好的命令行单行程序来编译所有文档?

我最接近的方法是ag -lR --null 'documentclass' . | xargs -0 latexmklatexmk在包含的所有文件上运行documentclass,它通过挑选出主文件(至少是初步近似)解决了上述第一个问题;但它并不能解决第二个问题,即找到正确的包含文件。

(我使用的是 Mac OS;但我猜对于所有具有类似 unix/linux 命令行的系统,答案应该都类似。)

答案1

您可以将-cd参数传递给latexmk。这将导致latexmk更改为文件目录tex,然后应找到包含的文件。

相关内容