鉴于在 Linux 系统上编译 LaTeX 远快于 Windows(测试发现大约快一半),即使 Linux 是虚拟机或者 WSL2,也有更好的速度,因此选择在 WSL2 中安装 TexLive2023。本文是安装过程的记录,安装主要参考这篇博客

下载镜像

找一个 CTAN 镜像站下载 texlive2023 即可,例如清华镜像

texlive 的安装其实非常友好,安装在不同系统上都只需要同一个镜像(texlive2023.iso,不到 5 个 G),正好 windows 安装之后并没有卸载,因此实践中省去了下载过程,镜像存放在 windows 的文件系统中。

挂载镜像

在 WSL2 中挂载镜像,这里假设镜像文件存放在 D 盘根目录,实际修改即可

1
2
sudo mkdir /mnt/texlive
sudo mount /mnt/d/texlive2023.iso /mnt/texlive

可能会出现警告,挂载的文件是写保护的,但是无所谓,我们只需要读取权限就可以完成安装。

下面的很多命令都是需要sudo的,也可以直接切换到 root 用户进行,反正安装是全局的,不是具体用户层面的安装。

安装镜像

直接调用install-tl进行安装

1
sudo /mnt/texlive/install-tl

此时可以看到如下内容,提示选择安装组件

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
======================> TeX Live installation procedure <=====================

======> Letters/digits in <angle brackets> indicate <=======
======> menu items for actions or customizations <=======
= help> https://tug.org/texlive/doc/install-tl.html <=======

Detected platform: GNU/Linux on x86_64

<B> set binary platforms: 1 out of 6

<S> set installation scheme: scheme-full

<C> set installation collections:
40 collections out of 41, disk space required: 7599 MB (free: 970831 MB)

<D> set directories:
TEXDIR (the main TeX directory):
/usr/local/texlive/2023
TEXMFLOCAL (directory for site-wide local files):
/usr/local/texlive/texmf-local
TEXMFSYSVAR (directory for variable and automatically generated data):
/usr/local/texlive/2023/texmf-var
TEXMFSYSCONFIG (directory for local config):
/usr/local/texlive/2023/texmf-config
TEXMFVAR (personal directory for variable and automatically generated data):
~/.texlive2023/texmf-var
TEXMFCONFIG (personal directory for local config):
~/.texlive2023/texmf-config
TEXMFHOME (directory for user-specific files):
~/texmf

<O> options:
[ ] use letter size instead of A4 by default
[X] allow execution of restricted list of programs via \write18
[X] create all format files
[X] install macro/font doc tree
[X] install macro/font source tree
[ ] create symlinks to standard directories
[X] after install, set CTAN as source for package updates

<V> set up for portable installation

Actions:
<I> start installation to hard disk
<P> save installation profile to 'texlive.profile' and exit
<Q> quit

Enter command:

可以删去其中不常用的组件,后续是可以单独下载组件的,可以节约空间。这里我为了避免可能的麻烦,直接全部安装,输入I即可进行安装,安装过程略长,但不超过半个小时。

安装后的配置

添加环境变量(这个在前面的安装过程最后会提示我们,需要添加哪些环境变量)

1
2
3
4
# Add TeX Live to the PATH, MANPATH, INFOPATH
export PATH=/usr/local/texlive/2023/bin/x86_64-linux:$PATH
export MANPATH=/usr/local/texlive/2023/texmf-dist/doc/man:$MANPATH
export INFOPATH=/usr/local/texlive/2023/texmf-dist/doc/info:$INFOPATH

这是针对~/.bashrc的,如果使用 fish 或者其它的 shell,则需要相应调整。重新加载 bash 的配置文件,测试一下

1
tex -v

正常输出版本信息即可。

移除镜像(事实上系统重启之后就自动移除了挂载)

1
2
sudo umount /mnt/texlive	# 注意不是unmount!
sudo rm -r /mnt/texlive

拷贝字体并刷新字体缓存

1
2
sudo cp /usr/local/texlive/2023/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
sudo fc-cache -fsv

查看当前texlive可以识别的所有中文字体(这个命令在Linux和Windows均可以使用)

1
fc-list -f "%{family}\n" :lang=zh > zhfont.txt

WSL2可以直接利用windows当前已经全局安装的所有字体(字体都在c:Windows/Fonts目录下),做法如下:

  1. 确保安装了fontconfig:sudo apt install fontconfig

  2. 新建文件/etc/fonts/local.conf,内容如下

    1
    2
    3
    4
    5
    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <fontconfig>
    <dir>/mnt/c/Windows/Fonts</dir>
    </fontconfig>

  3. 刷新字体缓存:sudo fc-cache -fv

注意:基于ctex宏包编译输出PDF中,默认采取的中文字体是与平台相关的,Windows和Linux(包括WSL)的默认中文字体(尤其是粗体)明显不一样,Overleaf等在线平台的默认行为属于Linux类别。

VSCode 编译测试

这里选择使用 VSCode+WSL2 进行 LaTex 的编写,相应的配置参考另一篇笔记,并不需要专门针对 WSL2 进行配置。

测试一下在 WSL2 中进行基本的含中文文档编译

1
2
3
4
5
6
7
8
9
10
11
12
13
\documentclass{ctexart}

\title{LaTeX示例}
\date{\today}
\author{}

\begin{document}

\maketitle

你好世界!

\end{document}

需要使用支持中文的编译命令(xelatex 或 lualatex 等),可以编译得到正确显示中文的 pdf。 (测试时发现 lualatex 比 xelatex 慢不少,编译中文文档时的最优解是 xelatex)

但是在实践中遇到了 Latex workshop 插件无法支持格式化的问题,报错信息显示是缺少了某些 Perl 模块,因此在 WSL2 中进行下载(在普通用户下执行的,暂不清楚这个命令的安装是否是全局的,root 用户执行是否有区别)

1
2
cpan YAML::Tiny
cpan File::HomeDir

下载完成后可以正常进行格式化。

PDF 查看

由于 WSL2 通常没有 GUI,因此需要关注一下如何查看 pdf 文件:

  • 可以直接使用 VSCode 的内置 pdf 浏览器查看

  • 在命令行中也可以直接调用 windows 上的SumatraPDF.exe,注意需要在 Windows 系统中把它的路径加入 PATH 环境变量。

    1
    SumatraPDF.exe main.pdf

  • 根据参考的博客推荐,还有一种 Linux 下的轻量级 PDF 浏览器(比 SumatraPDF 更轻量级),并且支持 vim 风格的键位,鉴于 WSLg 可以支持简单的 GUI 了,因此也尝试一下

    1
    2
    apt install zathura
    zathura main.pdf