1 概述
1.1 写在前面
相比Word,使用LaTeX编写论文可以节省大量排版的时间。另外,目前绝大多数期刊都提供官方的LaTeX模版,可以实现较为美观且符合要求的排版效果,从而给审稿人一个良好的第一印象。
但是,LaTeX是一种更偏向于编程语言的标记语言,需要经过编译才能生成可视化的排版结果,并以PDF的形式呈现。其单次编译时间并不是难以接受的,但在撰写后期精修微调时,往往每次改动都较小且频繁,从而十分影响使用体验。
可惜的是,LaTeX并不具备动态编译的能力,因此只能寻求尽可能减少编译时间。一个较为普遍的认知是,相比Windows系统,LaTeX(以texlive为例)在Linux系统中编译速度要快5倍以上。但是,很多人并不具备配置两个主机的条件,而且一般Windows主机是主要的工作环境,全部迁移过去就有“为了这碟醋专门包顿饺子”的意味了。
因此,本文借助Win10+WSL+Ubuntu 22.04+LaTeX+VSCode这一套技术框架,提供一种可行的解决方案。
1.2 一些概念
这部分是对一些基本概念的简述,只针对小白,有了解的可以直接跳过。
- WSL:全称Windows Subsystem for Linux,是由微软开发的一种技术,允许用户在Windows操作系统上原生运行Linux发行版。WSL提供了一个兼容层,使得Linux的应用程序可以直接在Windows上运行,而无需虚拟机或双启动的系统配置。
WSL 1:第一版WSL,提供了一种兼容Linux系统调用的层,允许用户在Windows上运行Linux命令行和应用。WSL 1使用了一种转译机制,将Linux系统调用转换为Windows系统调用,从而实现兼容性。
WSL 2:第二版WSL,引入了完整的Linux内核。WSL 2使用轻量级虚拟机运行Linux发行版,使得其性能显著增强,尤其是在文件操作和运行Linux应用程序时。WSL 2的引入使得WSL在兼容性和执行速度上都有了很大的提升。
本文使用的是WSL 2,如何区分和切换版本会在下文进行介绍。 - Ubuntu:是一个开源的Linux发行版系统,它以其易用性、稳定性以及在桌面和服务器市场中的广泛使用而闻名。上文提到,WSL只是提供了一个兼容层,因此还需要安装一个Linux系统。可以理解为,Windows系统是一层,Ubuntu系统是二层,它们共用一个地基,但是Windows在一层直接接触的就是地基,Ubuntu需要WSL作为楼梯才能接触地基。本文使用的版本是22.04。
- LaTeX:LaTeX是一种基于TeX的文档排版系统,特别适用于创建高质量的科学和技术文档。LaTeX提供了一种标记语言,使得用户可以专注于文档的内容,而不必过于关注格式设置。LaTeX对数学公式的支持非常强大,用户可以使用简单的标记来插入复杂的数学符号和方程式。另外,LaTeX还可以自动管理交叉引用(如章节、图表和公式)以及参考文献,用户无需手动更新这些内容。综合以上特点,使得LaTeX十分适合学术写作。
2 环境配置
系统版本:Windows 10 专业版 22H2 内部版本19045.4651
WSL:第2版
Linux子系统:Ubuntu 22.04.3 LTS
LaTeX发行版环境:texlive2024-20240312
VSCode:1.91.0
请尽量保持版本一致,以防出现一些未知问题。
3 安装流程
3.1 WSL安装配置
3.1.1 启用WSL功能
左下搜索框搜索启用或关闭Windows功能
,如图所示,选择适用于Linux的Windows子系统
以及虚拟机平台
两项。
单击确定
,等待安装完成并重启系统
。
3.1.2 安装Windows Terminal
Windows Terminal是微软推出的一款新的、可扩展的命令行界面和终端应用,它是Windows 10和Windows 11操作系统的一部分。Windows Terminal结合了多个命令行工具(如命令提示符、PowerShell、Windows PowerShell Core和WSL)的特点,提供了统一和强大的终端体验。
安装该工具主要是为了避免在cmd、PowerShell和WSL之间来回切换。
左下搜索框搜索Microsoft Store
,并在如图所示的商店搜索框输入Windows Terminal
,选择第一个安装即可,我这里已经安装过了。
3.1.3 更新WSL
重启系统后,打开Windows Terminal
,默认是powershell,输入以下命令并运行
wsl.exe --update
3.1.4 等待安装完成
到此WSL安装结束
3.2 Ubuntu系统安装
Microsoft Store有提供官方的Ubuntu系统安装,但默认会安装到C盘,占用空间会比较大。因此采用手动安装的方式,将系统安装到D盘。
3.2.1 系统镜像下载
打开Microsoft官方提供的手动安装指引,点击下载对应版本
3.2.2 手动安装系统
下载的文件后缀为.AppxBundle
,将其后缀改为.zip
,移动到D盘任意位置并解压,找到Ubuntu_2204.1.7.0_x64.appx
。
再次将其后缀改为.zip
并解压,双击运行ubuntu.exe
输入用户名和密码,安装成功!
这是ubuntu系统的文件目录,已经成功安装到D盘
3.2.3 检查WSL版本
输入以下命令,查看当前分发的系统和对应的版本
如果不是2的话,输入以下命令切换版本
wsl.exe --set-version Ubuntu 2
3.2.4 更新依赖
输入以下命令,打开软件源配置
sudo vim /etc/apt/sources.list
将原内容全部删除并替换成以下内容
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
输入以下命令更新依赖
sudo apt update && sudo apt upgrade
3.3 texlive安装
3.3.1 下载texlive光盘映像文件
访问清华软件镜像站,下载对应版本的texlive
3.3.2 安装texlive到ubuntu
在Windows系统中加载光驱,分配并记住盘符,我这里是F:
盘
打开Windows Terminal
,选择新建Ubuntu
命令窗口,进入ubuntu系统
依次输入以下命令,创建文件夹并将F:
挂载到该文件夹
sudo mkdir /mnt/texlive
sudo mount -t drvfs F: /mnt/texlive
sudo /mnt/texlive/install-tl
输入i
开始安装
安装好后,需要解除挂载状态,并删除安装包,命令如下:
sudo umount /mnt/texlive
sudo rm -r /mnt/texlive/
Windows系统加载的光盘弹出即可。
3.3.3 环境变量配置
前文提到,WSL主要起到一个兼容的作用,本身Linux子系统与Windows系统是较为隔离的,通过WSL只能访问到/usr/local/bin
下的命令,因此,为了在Windows中使用powershell能直接访问到ubuntu系统中的环境变量,需要建立软连接到tex命令
sudo /usr/local/texlive/2024/bin/x86_64-linux/tlmgr path add
打开powershell,输入以下命令测试能否直接访问tex命令
wsl tex -v
输出以下结果则安装配置成功
3.3.4 在WSL里使用Windows字体
安装fontconfig
sudo apt install fontconfig
新建/etc/fonts/local.conf
,添加以下内容
sudo vim /etc/fonts/local.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>/mnt/c/Windows/Fonts</dir>
</fontconfig>
然后使用sudo fc-cache -fv
刷新一下字体缓存,就可以使用Windows中的字体。
3.4 VSCode安装与配置
3.4.1 vscode下载
下载链接
不再讲怎么安装了,这个完全是傻瓜式的
3.4.2 插件下载安装
打开vscode,点击左侧扩展商店,输入LaTeX Workshop
,点击安装即可,我这里已经安装好了
3.4.3 插件配置
详细参数解释还有额外的一些配置可以看这里,我这里直接贴Json配置
按照如图所示步骤,打开Json配置文件
在对应位置添加latex workshop的相关配置,注意目录结构和逗号
//latex-workshop
"latex-workshop.latex.autoBuild.run": "never",
"latex-workshop.showContextMenu": true,
"latex-workshop.intellisense.package.enabled": true,
"latex-workshop.message.error.show": false,
"latex-workshop.message.warning.show": false,
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "wsl xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "pdflatex",
"command": "wsl pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "latexmk",
"command": "wsl latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOCFILE%"
]
},
{
"name": "bibtex",
"command": "wsl bibtex",
"args": [
"%DOCFILE%"
]
}
],
"latex-workshop.latex.recipes": [
{
"name": "XeLaTeX",
"tools": [
"xelatex"
]
},
{
"name": "PDFLaTeX",
"tools": [
"pdflatex"
]
},
{
"name": "BibTeX",
"tools": [
"bibtex"
]
},
{
"name": "LaTeXmk",
"tools": [
"latexmk"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
],
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.fdb_latexmk"
],
"latex-workshop.latex.autoClean.run": "onFailed",
"latex-workshop.latex.recipe.default": "lastUsed",
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
现在应该就可以正常编译了,实测20页左右的双栏论文编译时间从十多秒减为两三秒,基本可以实时修改预览论文了。