最近想要用命令行去编译 latex 文件。
最简单的命令,输入
xelatex a.tex
我随便写了一个报错,看看 Overleaf, Online LaTeX Editor 这个平台的表现如何。
因为这个项目是开源的,好奇心的驱使下,让我想看看他背后用什么命令去编译的。
从源码可以看到,他是使用 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
但这个命令遇到错误不会停止,你必须不断的按回车键才行。
以下是几个比较常用的命令
- -halt-on-error 和 -interaction=nonstopmode 参数 使编译遇到错误时立即停止
- -file-line-error 使报错输出文件和行号
- -synctex=1 则开启 synctex 的功能
更多的命令
xelatex -help
latexmk 结合 xelatex 编译
比如
latexmk -xelatex -file-line-error -halt-on-error -interaction=nonstopmode -synctex=1 a.tex
参考资料: