经常看到 Windows 用户不知道该怎么用命令行来编译 tex 文件,甚至不懂该如何打开命令行。这篇文章就简要介绍一下该如何用命令行来编译 tex 文件。
首先,我们假设硬盘上已存在一个 main.tex 文件,它存在于文件夹 D:\Documents\work-latex 当中。
接下来,我们要打开命令行,这里介绍的是命令提示符(cmd)。在键盘上同时按下微软键和 R 两个键,打开“运行”窗口,输入 cmd 后点击“确定”,我们就可以看到一个新的窗口被打开。
在这个 cmd 窗口中输入
cd /d D:\Documents\work-latex
后按 enter 键,我们就会发现新一行左边的路径就变成了我们 tex 所在的文件夹。
这里需要特别强调空格。很多新人在使用命令行时,都不注意空格的存在,最终导致命令失效。
进入了文件夹,在编译之前,我们可以查看一下该文件夹下到底有没有 main.tex,这时在 cmd 窗口中执行
dir main.tex
如果屏幕上反馈的是类似如下结果
那么也就是说我们要编译的文件的确存在。
接下来就到了编译的时刻。注意我们目前常见的编译命令是 pdflatex 和 xelatex,一般我建议,main.tex 如果是纯英文的文档,那么就执行如下命令进行编译
pdflatex main
那如果是中文文档并且使用了 ctex 宏集,那么就执行如下命令进行编译
xelatex main
接下来我们会看到一系列的信息刷在屏幕上,直到最后看到
那么我们就可以认为文档编译成功。这时如果再执行
dir main.pdf
就可以看到系统反馈出它存在的信息。
如果我们编译过程中,系统中止在某步,那么很有可能是哪里出了问题,这种时候我们可以先停止编译,一般按 X 键。然后根据刚刚中止地方的提示,去找错误到底在哪里。不过必须强调,LaTeX 的错误提示没有那么靠谱,虽然有错,但未必是系统提示的错。
实际上编译命令可以带很多参数。很多人一直在各种编辑器中体验到的正反向搜索,就是因为添加了参数 -synctex,在命令行中,就写作
pdflatex -synctex=1 main
这时候,文件夹中就会多出一个压缩包叫 main.synctex.gz,它才是正反向搜索的关键。
当然还有很多其他的参数,例如 texstudio 中默认带有 -interaction=nonstopmode 等等。这些参数用户可以自行去查询手册,这里不再赘述。
那么如果我们不仅想编译文档本身,还要用 bibtex 处理参考文献等等,我们就需要进行类似如下的操作
pdflatex main
bibtex main
pdflatex main
pdflatex main
这样用起来未免复杂。幸好,有 latexmk 命令帮我们解决这些难题。以上四行,可以直接写作
latexmk -pdf main
当然,latexmk 的功能比我这里介绍得要复杂得多,这里只是从实用角度介绍方法而已,具体的原理,大家还是要阅读手册。
latexmk 当然也有编译参数,例如 -synctex=1 和 -interaction=nonstopmode 都可以添加进去:
latexmk -pdf -synctex=1 -interaction=nonstopmode main
倘若用户想使用 xelatex 来处理,类似地有
latexmk -pdfxe -synctex=1 -interaction=nonstopmode main
以上就是用命令行编译文档的一个最基础介绍。
命令行的功能远没有这么简单,感兴趣的朋友可以多多学习。