如何编译目录中的所有 tex 文件

如何编译目录中的所有 tex 文件

我在一个目录中有几十个 .tex 文件。

我怎样才能用终端上的单个命令来编译它们?

此外:是否可以避免编译器生成的所有文件(.bak,.log,.aux,.out,.bib 文件)?

我通常用 进行编译pdflatex file.tex

答案1

for你可以用命令来做

for f in *.tex; do pdflatex $f; done

我发现这种语法比查找更容易记住。

关于删除辅助文件,请考虑使用latexmk -c -pdflatexmk -C -pdf代替pdflatex。latex latexmkmake 仅构建需要构建的文件。我不确定到底删除了哪些辅助文件,但我认为大多数文件都会被删除-c-C切换。

for f in *.tex; do latexmk -C -pdf $f; done

根据手册它也应该像这样工作

latexmk -C -pdf *.tex

另一个选择是在处理完成后手动删除文件。具体操作如下:

for f in *.tex; do pdflatex $f; done; rm *.bak *.log *.aux *.out *.bib

我不确定这是否还能算作一句话。

答案2

根据man pdflatex,它只接受一个文件。可以使用以下命令对更多文件运行此类命令find

find . -maxdepth 1 -name '*.tex' -exec pdflatex {} \;
  • .参数告诉find在当前文件夹中搜索。
  • -maxdepth 1禁用对子文件夹的递归 – 如果不需要,请删除。
  • -name '*.tex'仅允许处理*.tex文件。
  • -exec对每个找到的文件运行给定的命令(pdflatex)并替换{}为实际的文件名。\;结束-exec选项并标记每次调用只应传递一个找到的文件pdflatex

您可以通过在和echo之间包含来测试该命令。在这种情况下,生成的命令将仅打印到标准输出。-execpdflatexfind

该过程完成后,您可以使用以下命令简单地删除不需要的文件rm,例如:

rm *.bak *.log *.aux *.out *.bib

相关内容