用命令行编译该怎么玩?- 啸行

发布于 2021-03-25 22:58:16

经常看到 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

如果屏幕上反馈的是类似如下结果

image.png

那么也就是说我们要编译的文件的确存在。

接下来就到了编译的时刻。注意我们目前常见的编译命令是 pdflatex 和 xelatex,一般我建议,main.tex 如果是纯英文的文档,那么就执行如下命令进行编译

pdflatex main

那如果是中文文档并且使用了 ctex 宏集,那么就执行如下命令进行编译

xelatex main

接下来我们会看到一系列的信息刷在屏幕上,直到最后看到

image.png

那么我们就可以认为文档编译成功。这时如果再执行

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

以上就是用命令行编译文档的一个最基础介绍。

命令行的功能远没有这么简单,感兴趣的朋友可以多多学习。

0 条评论

发布
问题