一名经常使用 LaTeX
的用户必须配置一个好用的编辑器来提高效率。另外也得想办法提高编译速度。这里我介绍一下我的常用编译相关的内容,希望你看了有收获。
注意,本文不适合新人,要看懂偏难。
我的环境
系统:ArchLinux
编辑器:VsCode
TeX 发行版:TeXLive2020
VsCode 相关插件:LaTeX Workshop, Code Runner, psioniq File Header, Error Lens
其中的 Error Lens 不是本文必须,但是它能改善我的编译体验,推荐你也尝试使用。
配置 latexmkrc 文件
latexmkrc 文件推荐放到符合 XDG Base Directory
标准的 ~/.config/latexmk/latexmkrc
下。
我的配置比较简单1
2
3
4$clean_ext = "bbl nav out snm";
$out_dir=temp;
$pdf_previewer = 'okular';
$dvipdf='xdvipdfmx %O -o %D %S';
就是增加了点清理的文件类型,指定输出文件夹,指定 pdf 阅读器,以及使用的 dvipdf
。
配置 zshrc 文件
偶尔要在 terminal 里运行看错误,所以 rc 文件也要简单配置方便使用。我用的是 zsh ,因此配置的是 ~/.zshrc
文件。1
2
3
4
5alias platexmk='latexmk -pdf -shell-escape -synctex=1 -file-line-error'
alias xlatexmk='latexmk -pdfxe -shell-escape -synctex=1 -file-line-error'
alias llatexmk=' latexmk -latex -pdfdvi -shell-escape -synctex=1 -file-line-error'
alias pfly='texliveonfly --terminal_only --compiler=pdflatex'
alias xfly='texliveonfly --terminal_only --compiler=xelatex'
这里开启了 -shell-escape
,注意你的选择,以及运行来自网络代码前别直接开 -shell-escape
,有一定风险。最后两条是关于 texliveonfly
的,对于安装了完整版 TeXLive 的用户,没必要使用 texliveonfly
。
由于设置了 $out_dir=temp;
,所以在 terminal 里编译时可能用 -pv
参数会方便很多,例如 xlatexmk -pv main.tex
。
配置 VsCode
首先安装我推荐的插件,安装好后开始设置。
配置 psioniq File Header
1 | { |
main.tex
文件名的文件头会生成 %&temp/main
的第一行,这个告诉编译时使用 temp/main.fmt
文件。当不存在 temp/main.fmt
时也不后报错。这里可能需要查看 mylatexformat 学习加速编译才能明白这里的作用。
其实这里 psioniq File Header
最重要的作用就是自动生成第一行的信息,其余不是很重要。
配置 Code Runner
1 | "code-runner.executorMap": { |
我最常用的是 etex
生成 fmt
文件,所以让它占 Code Runner
的编译。由于我打算让 fmt
文件放在 temp
文件下,所以必须保证 temp
文件存在,故需要使用 mkdir -p temp
,当 temp
文件夹不存在是就建立它。
顺手再来个快捷键1
2
3
4
5{
"key": "f4",
"command": "code-runner.run",
"when": "!config.latex-workshop.bind.altKeymap.enabled && editorLangId == 'latex'"
},
这样在编辑 tex
文件时,使用 f4
可以快速编译得到 fmt
文件。
配置 LaTeX Workshop
在编译时我基本使用 latexmk
来自动编译,在这里进分享两个例子1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40"latex-workshop.latex.recipes": [
{
"name": "la-latexmk-latex🔃",
"tools": ["latexmk-la"]
},
{
"name": "x-latexmk-xelatex🔃",
"tools": ["latexmk-xe"]
},
"latex-workshop.latex.tools": [
{
"name": "latexmk-xe",
"command": "latexmk",
"args": [
"-synctex=1",
"-shell-escape",
"-interaction=nonstopmode",
"-file-line-error",
"-xelatex",
"-silent",
"%DOCFILE%.tex"
],
"env": {}
},
{
"name": "latexmk-la",
"command": "latexmk",
"args": [
"-e",
"$dvipdf='xdvipdfmx %O -o %D %S'",
"-latex",
"-pdfdvi",
"-synctex=1",
"-shell-escape",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
],
注意我的 latexmkrc
文件会将所有编译的东西放到 temp
文件夹,所以还需要1
"latex-workshop.latex.outDir": "temp",
来告诉 VsCode 去哪里找 pdf
等编译后的文件。
接下来是配置其常用的快捷键1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28{
"key": "f5",
"command": "latex-workshop.build",
"when": "!config.latex-workshop.bind.altKeymap.enabled && editorLangId == 'latex'"
},
{
"key": "f5",
"command": "latex-workshop.build",
"when": "!config.latex-workshop.bind.altKeymap.enabled && editorLangId == 'tex'"
},
{
"key": "ctrl+l k",
"command": "latex-workshop.kill"
},
{
"key": "ctrl+l l",
"command": "latex-workshop.view",
"when": "!config.latex-workshop.bind.altKeymap.enabled && editorLangId == 'latex'"
},
{
"key": "ctrl+l b",
"command": "latex-workshop.recipes"
},
{
"key": "alt+a",
"command": "latex-workshop.synctex",
"when": "editorTextFocus && !config.latex-workshop.bind.altKeymap.enabled && editorLangId == 'latex'"
},
用 ctrl+l b
来选择编译链,之后就用 f5
就行。使用 ctrl+l k
杀灭编译进程,用 ctrl+l l
打开 pdf
文件,用 alt+a
进行正向跳转。
运用实例
在 VsCode 中新建一个 main.tex
文件1
2
3
4
5
6
7
8
9%&temp/main
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% @File: /nnn.tex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[UTF8]{ctexart}
\begin{document}
中文
\end{document}
这时先用 f4
构建 fmt
文件,再用 ctrl+l b
选择 la-latexmk-latex🔃
即可(如果你的 la-latexmk-latex🔃
在第一位直接用 f5
即可)。之后每次用 f5
编译即可。对于以上的例子我用 temp/main.fmt
文件后仅需 0.5s 左右,不用要 0.6s 。这里的时间节约不明显,但是对于导言区长的文件很好用,能节约很多时间。
其它配置
直接参考我的博客之前的文章
参考文献:打造舒适的 TeX 参考文献引用环境
texliveonfly: Arch 下 TeXlive-basic 的安装以及 texliveonfly 的基础使用的折腾日记
xelatex 的字体: LaTeX 调用发行版本的字体
VsCode 里的 vim 输入法自动切换:fcitx5 和 vim 的配合使用