最近偶然得知Linux下编译Latex要比Windows快很多。这对长期受Latex缓慢编译速度(尤其是大文件)折磨的我是一个福音。然而为此把Latex工作环境搬移到Linux又会带来其他不便。幸好有WSL这个神器,可以帮我们在Win系统下无缝运行Linux子系统。

WSL2安装Texlive

由于我的WSL2装的是Ubuntu20.04,目前Miktex不支持这一版本。所以只能选择Texlive。从CTAN镜像下载安装包 install-unx.tar.gz。解压后运行

1
sudo ./install-tl

安装需要半小时到一小时不等。完成后在~/.bashrc中添加环境变量

1
2
3
export PATH=/usr/local/texlive/2022/bin/x86_64-linux:$PATH
export MANPATH=/usr/local/texlive/2022/texmf-dist/doc/man:$MANPATH
export INFOPATH=/usr/local/texlive/2022/texmf-dist/doc/info:$INFOPATH

刷新环境变量

1
source ~/.bashrc

至此Latex环境就配置好啦~

搭配VScode写Tex文档

虽然我们是在Linux下编译的,但是这并不代表我们要用vim写Tex文档(。我本人向来习惯用VScode作为各种文档的编辑器,而VScode正好支持打开并编辑WSL系统下的文件。这意味着我们可以像以前一样继续用VScode写Tex!

首先VScode需要安装插件Remote-WSL。一般如果安装了WSL的话,打开VScode会自动提醒你安装这个插件。

remote-wsl

然后在WSL系统中新建Latex工作文件夹,例如我这里叫srtp_mid。cd到工作文件夹,输入code . 就可以在VScode中打开该文件夹了。

注意,文件夹一定要建在WSL2的文件系统里,而不是建在Win的文件系统里。众所周知WSL2的跨系统IO性能很难看,所以工作文件夹建在Win文件系统的话会适得其反,编译速度会大大下降。

成功打开后VScode左下角会显示当前环境为WSL,

之后搜索Latex workshop插件,并选择在wsl中安装

一定要在WSL环境下搜索这个插件,否则可能找不到在wsl中安装的选项。

安装完这个插件基本上就大功告成了。如果之前在Windows环境中安装过Latex workshop,那么其配置是共用的,不用再配置一遍。关于如何配置我这里就不细说了。

这里贴出我个人的配置

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"latex-workshop.latex.tools": [
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
// 编译工具和命令
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},

{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
}
],

"latex-workshop.latex.recipes": [
{
"name": "xe->bib->xe->xe",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex",
"tools": [
"pdflatex"
]
},

{
"name": "xelatex",
"tools": [
"xelatex"
],
},
{
"name": "pdf->bib->pdf->pdf",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
}


]

在WSL2下使用VScode写Tex还是有一定缺陷的,比如因为linux路径的问题不能自动调用第三方阅读器预览。不过这个问题不大,我们可以到WSL2文件目录下手动打开pdf文件挂在一边,每次编译后可以看到内容刷新,只是不能用正反向搜索罢了。当然如果你用vscode内置预览器,则没有任何问题。

这里贴出最终的工作情景。

速度测评

这里就拿我的一个项目报告做一个简单测评。分别在Windows,WSL1,WSL2环境下,编译链如下

1
xelatex-bibtex-xelatex-xelatex

速度分别为

  • Windows: 14秒

  • WSL1:7秒

  • WSL2: 5秒

意料之中的结果。WSL编译速度均比Windows快一倍以上,而WSL2性能又高于WSL1,所以最终WSL2速度最快,相比Windows提速64%。

虽然我的这个测试很简陋,不过足以帮你做出抉择了~有兴趣的话可以自己做一个更专业全面的测评。