众所周知,Windows 上 Latex 编译速度被 Linux 吊着打不知道几个来回。故打算以后都用 Linux 写 Latex。
但是毕竟 Linux 还算不上是主力系统,要写 Latex 重启切换 Linux 十分麻烦,那么我们可以在 wsl 上装 TeXLive。
又众所周知的是,wsl 默认装在 C 盘,而 TeXLive 近 10GB,所以有了这篇记录。
安装 WSL2 虚拟机到非系统盘
安装并启用 WSL2 教程已经满天飞了,故不再赘述。直接从安装 Linux 发行版开始。
到 下载发行版 选择你喜欢的系统下载,这里我选择了 Ubuntu 24.04。
把下载的文件 Ubuntu2404-240425.AppxBundle
后缀改为 zip
并解压。
在解压出的文件夹中选择符合你机器的系统包,AMD64 下所需文件为 Ubuntu_2404.0.5.0_x64.appx
,改后缀为 zip
并将其解压到你要安装的路径下。比如我把它放在了 D:\WSL\Ubuntu2404-240425
下。
双击路径中的 ubuntu2404.exe
等待并设置用户名和密码就大功告成了。
更换清华源等更多个性化配置自行搜索教程。
下载 TeXLive 并安装至 WSL
到国内镜像站下载最新 TeXLive 镜像,比如 清华大学开源软件镜像站。
WSL 是可以直接访问 Windows 的文件的,比如 C 盘的内容在 /mnt/c/
下。假设我们下载的 TeXLive 镜像路径是 C:\texlive2024.iso
。
1
2
3
4
5
6
| # 新建要挂载的目录
sudo mkdir /mnt/texlive
# 把TeXLive镜像挂载过来
sudo mount /mnt/c/texlive2024.iso /mnt/texlive
# 执行安装脚本
sudo /mnt/texlive/install-tl
|
之后的页面你可以修改一些安装可选项,如果你懒得折腾就直接输入 I
默认安装即可。(个性化选项若有所需请自行了解)
安装过程可能需要几分钟,等待即可。之后弹出镜像并删除文件夹:
1
2
| sudo umount /mnt/texlive
sudo rm -r /mnt/texlive
|
之后更新环境变量,修改 ~/.bashrc
文件在最后新增:
1
2
3
4
| # Add TeX Live to the PATH, MANPATH, INFOPATH
export PATH=/usr/local/texlive/2024/bin/x86_64-linux:$PATH
export MANPATH=/usr/share/man:/usr/local/texlive/2024/texmf-dist/doc/man:$MANPATH
export INFOPATH=/usr/local/texlive/2024/texmf-dist/doc/info:$INFOPATH
|
重启终端或执行 source ~/.bashrc
即可。
之后可以执行 tex -v
查看安装是否成功。
我看的教程还有一个操作,不知道什么作用,反正执行就对了(
1
2
| sudo cp /usr/local/texlive/2024/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
sudo fc-cache -fsv
|
VSCode 的 LaTex 配置
基础配置
安装以下几个插件:
- LaTeX Workshop(必选)
- English word hint
- Path Autocomplete
新建一个文件夹用于存放 tex
文件,假设名为 LaTexSpace
。
新建 LaTexSpace/.vscode/setting.json
。
配置编译工具链,添加如下内容:
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
68
69
70
71
| "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%"
]
},
// 下面这个是使用外部 PDF 查看器用的,仅配置编译工具链无需添加
{
"name": "correct_path",
"command": "/home/spirit/LaTexSpace/.vscode/correct_path"
},
],
// 下面 tools 中的 correct_path 也是要在 VSCode+wsl 环境下使用 Windows 的 PDF 查看器才需要添加的。
"latex-workshop.latex.recipes": [
{
"name": "xelatex",
"tools": [
"xelatex",
"correct_path"
],
},
{
"name": "pdflatex",
"tools": [
"pdflatex",
"correct_path"
]
},
{
"name": "xe->bib->xe->xe",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex",
"correct_path"
]
},
{
"name": "pdf->bib->pdf->pdf",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex",
"correct_path"
]
},
],
|
配置 SumatraPDF 作外部查看器
首先贴上 SumatraPDF官网。
在设置文件中添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
| "latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.external.viewer.command": "/mnt/d/Program/SumatraPDF/SumatraPDF.exe", // 改为自己的路径
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
"latex-workshop.view.pdf.external.synctex.command": "/mnt/d/Program/SumatraPDF/SumatraPDF.exe", // 改为自己的路径
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"\\\\wsl$\\Ubuntu-24.04\\%TEX%", // 中间的 Ubuntu-24.04 改为自己的发行版名称
"%LINE%",
"-reuse-instance",
"\\\\wsl$\\Ubuntu-24.04\\%PDF%" // 改为自己的发行版名称
],
|
不知道自己发行版准确名称的话可以使用 wsl -l -v
命令查看。
此外还需要把 WSL 的路径转为 Windows 的,如上一小节添加 correct_path 工具,并新建 LaTexSpace/.vscode/correct_path
文件。其内容如下,注意其中的路径和发行版名称都要修改为自己的。
1
2
3
| gunzip *.synctex.gz
sed -i "s/\/home\/spirit\/LaTexSpace\//\\\\\\\\wsl$\\\\Ubuntu-24.04\\\\home\\\\spirit\\\\LaTexSpace\\\\/g" *.synctex
gzip *.synctex
|
在 Windows 上新建一个 vbs
文件,路径自定义即可。
注意修改为自己的 wsl 发行版名称和 VSCode 路径。
1
2
3
4
5
6
| Set args = WScript.Arguments
arg = ""
For Each s In args
arg = arg & " " & s
Next
WScript.CreateObject("WScript.Shell").Run "wsl -d Ubuntu-24.04 '/mnt/d/Program Files/Microsoft VS Code/bin/code' " & arg, 0
|
在 SumatraPDF 的设置-选项中填写反向查找命令,注意微调。
1
| wscript "D:\Code\LaTex\Inverse Search.vbs" -r -g $(echo $(wslpath '%f:%l') "|" sed 's/\/mnt\/d\/wsl$\/Ubuntu-24.04//g')
|
latexindent 格式化 tex 文档
真没必要搞这个,费劲还没用
在 setting.json
中添加如下内容:
1
2
3
| "latex-workshop.formatting.latex": "latexindent",
// 修改为自己的 TeXLive 路径
"latex-workshop.formatting.latexindent.path": "/usr/local/texlive/2024/bin/x86_64-linux/latexindent"
|
latexindent 是一个 perl 脚本。要使用它需要安装依赖:
1
2
3
4
5
| sudo cpan Log::Log4perl
sudo cpan Log::Dispatch
sudo cpan YAML::Tiny
sudo cpan File::HomeDir
sudo cpan Unicode::GCString
|
踩坑
‘xxx.sty’ not found
缺啥装啥就行。
sudo 执行 tlmgr,command not found
因为 sudo 并不使用用户的环境变量,也不调用shell执行命令。故你折腾 ~/.bashrc
/etc/profile
什么的都是没用的。
可以在命令中指定环境变量:
1
| sudo env PATH="$PATH" tlmgr install package
|
但是这样做好麻烦,在 ~/.bashrc
中用 alias
简化一下吧:
1
| alias psudo='sudo env PATH="$PATH"'
|
这样用 psudo
代替 sudo
就是使用当前终端的环境变量了。
还有一种强制 sudo 在 shell 中执行命令的办法,对应内容如下:
1
2
| sudo sh -l -c tlmgr install package
alias shsudo='sudo sh -l -c'
|
编译一个 Beamer 模板莫名失败
缺包导致的,TeXLive 镜像默认不带这些东西吗?
1
| sudo apt install latex-cjk-all texlive-lang-chinese texlive-lang-english
|
如果最开始用 sudo apt install texlive-full
安装环境似乎没有这个问题,但我没试。感兴趣的可以在新的系统上试试,坏处就是仓库里的是什么版本你就只能用什么版本。
复制 Windows 字体到 WSL
1
2
3
4
5
6
7
8
9
| sudo mkdir /usr/share/fonts/windows_fonts
cd /usr/share/fonts/windows_fonts
sudo cp /mnt/c/Windows/Fonts/*.ttf ./
sudo cp /mnt/c/Windows/Fonts/*.TTF ./
sudo cp /mnt/c/Windows/Fonts/*.otf ./
sudo cp /mnt/c/Windows/Fonts/simsun.ttc ./
sudo mkfontscale
sudo mkfontdir
fc-cache -fv
|
好消息:如果你能使用 deb 包,就不需要上面这个用处不大的东西了。
可以直接安装Linux字体包(百度网盘,提取码yfsb)。非常全面的同时操作还简单。
LinuxFont(夸克网盘,提取码ks4L) 。
perl 依赖装不上
需要先安装一些工具:
1
2
| # 事到如今我也不知道哪个有用了,都tm装上得了
sudo apt install gcc g++ gcc-multilib g++-multilib make cmake build-essential libperl-dev build-essential libperl-dev
|
这样还会有一个依赖 Log::Dispatch 装不上。顺着报错的依赖一路追到上游然后手动编译安装就好了:
1
2
3
4
5
6
7
| wget https://www.cpan.org/modules/by-module/Devel/Module-Pluggable-6.2.tar.gz
gzip -dc Module-Pluggable-6.2.tar.gz | tar xf -
cd Module-Pluggable-6.2
perl Makefile.PL
make
make test
sudo make install
|
然后顺着这一串报错的依赖再装回来:
1
2
3
4
| sudo cpan Test2::Plugin::NoWarnings
sudo cpan Params::ValidationCompiler
# 说不定直接跑这个就行了?试试?
sudo cpan Log::Dispatch
|
然后这 byd latexindent 就终于能用了。
说实话我现在感觉手写的 tex 挺好看的,没事别瞎折腾(能跑就行
参考文献
WSL2 虚拟机 其他盘安装(非C盘)及调试(含填坑)
TeX Live 2024 安装教程(Windows/WSL/Linux)
Permission problem when installing package from tlmgr
Setting TeX Live path for root
CPAN general build error (or fail during “install Module::ScanDeps”)
hilinxinhui/VSCode_LaTeX_configuration
ubuntu下vscode LaTeX文档格式化
shinyypig/latex-vscode-config
基于WSL-LaTeX的VS Code+SumatraPDF协作
WSL下LaTeX的VS Code+SumatraPDF协作
VS Code的LaTeX配置
LaTeX配置安装大对比:TeXLive/MiKTeX、Windows/WSL、xelatex/lualatex/pdflatex编译器的速度性能详细对比