最近想要用命令行去编译 latex 文件。

最简单的命令,输入

xelatex a.tex

我随便写了一个报错,看看 Overleaf, Online LaTeX Editor 这个平台的表现如何。

因为这个项目是开源的,好奇心的驱使下,让我想看看他背后用什么命令去编译的。

源码文件地址:https://github.com/overleaf/clsi/blob/a883084bba5491ced188db7b32e64c988ffe73ca/app/js/LatexRunner.js#L188

从源码可以看到,他是使用 latexmk + xelatex 命令编译的。

如果你还不了解 Latexmk 是什么东东,这里简单的介绍一下:LaTeX 要生成最终的 PDF 文档,如果含有交叉引用、BibTeX、术语表等等,通常需要多次编译才行。而使用 Latexmk 则只需运行一次,它会自动帮你做好其它所有事情。通常情况下,你安装的 LaTeX 发行版已经包含了 Latexmk,我们并不需要手动安装它。

一般来说,你可能已经在你的计算机上安装了它,因为它是 MacTeX 和 MikTeX 它与许多linux发行版捆绑在一起。

在最简单的情况下,你只需要输入

latexmk

如果你想.pdf文件作为输出,只需输入:

latexmk -pdf

如果你只想编译一个特定的.tex文件在当前目录中,只需提供文件名:

latexmk myfile.tex

如果要预览结果,只需使用

latexmk -pv

如果希望 Latexmk 连续检查所有输入文件中的更改,并在需要时编译整个过程并始终显示结果,请键入

latexmk -pvc

使用 xelatex 引擎编译

latexmk -pvc -xelatex file.tex

Latexmk 有文件监测的机制。

它应该可以做到只需运行一次,然后每次文件保存动作后,自动重新编译。
当然,选项可以组合在一起,例如。

latexmk -pdf -pv myfile.tex

运行LaTeX之后,当前目录被大量临时文件污染;您可以使用这个命令清理

latexmk -c

这不会删除.pdf /.ps /.dvi如果你想删除这些文件,使用

latexmk -C

更多的命令,只需要输入

latexmk -help

更详细的可以看官网:Latexmk

他上面有详解。

xelatex 命令行

最简单的命令

xelatex a.tex

但这个命令遇到错误不会停止,你必须不断的按回车键才行。

以下是几个比较常用的命令

  1. -halt-on-error 和 -interaction=nonstopmode 参数 使编译遇到错误时立即停止
  2. -file-line-error 使报错输出文件和行号
  3. -synctex=1 则开启 synctex 的功能

更多的命令

xelatex -help

latexmk 结合 xelatex 编译

比如

latexmk -xelatex -file-line-error -halt-on-error -interaction=nonstopmode -synctex=1  a.tex

参考资料:

1、LaTeX 技巧938:如何配置 latexmk

2、Using Latexmk - homepage

03-05 16:12