使用 VS Code 实现 LaTeX 便捷编译与预览

好久不见,水一篇文章。

Overleaf 实在是太慢了,编辑器用起来也不爽,既然有轻便的本地发行版和优秀的编辑器,为什么不用呢?

本人使用 Windows 和 Arch Linux 下的 MikTeX,对于其他发行版或操作系统,仅供参考。

LaTeX 安装

个人会推荐 MiKTeX 发行版,仅需下载必要的文件,相比 TeXLive 10GB + 的大小大大改善。

Windows 下没什么难度,从 官网 下载即可。

Arch Linux 等 Pacman 的 Linux 发行版建议从 AUR 下载,Arch Linux CN 源下了好几遍似乎有点问题;然后打开 MiKTeX Console,个人建议为所有用户安装,省事。

插件安装

首先在 VS Code Marketplace 下载一个插件,LaTeX Workshop

装完之后,用 VS Code 打开一个工作区中的. tex 文件,主界面就变成了这样。

打开工作区 tex 文件

recipe 包含了对文件进行的处理步骤。毫无疑问,左边的 recipe 又要自己配了。马上讲。

编译配置

此部分主要参考 https://mingzzx.com/2019/05/14/miktex-vscode/ (CC BY-SA 4.0)。

recipe 的逻辑似乎类似于 Linux 的 pipe,以及 VS Code 其他语言的调试思想。

此处我使用 XeLaTeX 命令,而原帖使用 pdfLaTeX,区别可看 此帖。一言以蔽之,前者对中文和自定义字体支持更佳。

配置属于 VS Code 首选项的一部分,所以可以填在工作区的. vscode/settings.json 内,或用户首选项文件内。

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
{
    "latex-workshop.latex.recipes": [
        {
            "name":"xelatex",
            "tools": [
                "xelatex",
            ]
        },
        {
            "name":"xelatex+bibtex",
            "tools": [
                "xelatex",
                "bibtex",
                "xelatex",
                "xelatex"
            ]
        }
    ],
    "latex-workshop.latex.tools": [
        {
            "name": "bibtex",
            "command": "bibtex",
            "args": [
                "%DOCFILE%"
            ]
        },
        {
            "name": "xelatex",
            "command":"xelatex",
            "args":[
                "%DOCFILE%"
            ]
        }
    ],
}

基础的配置文件如上,tools 部分封装了某个工具的执行方法,并取一个名字,如 xelatex tool 就是 xelatex %DOCFILE%。recipe 则是通过指定不同工具执行的次数和次序,最终取得不同的结果。单独的 xelatex 适用于不含参考文献的情况,而 xelatex+bibtex 适用于含参考文献的情况。

现在,在 tex 文件编辑界面按下 Ctrl+S,就会自动开始编译,然后产生一个 PDF 文件。

优化配置

首先,可以在上面的 settings.json 外层大括号中加入:

json
1
2
3
4
    "latex-workshop.view.pdf.viewer": "tab",
    "latex-workshop.latex.autoBuild.interval":30000,
    "latex-workshop.latex.recipe.default": "lastUsed",
    "editor.wordWrap": "wordWrapColumn",

作用分别为:

  • 编译出的 PDF 预览显示在另一标签页中

  • 间隔 30 秒内不重新编译

  • 默认(即 Ctrl+S)编译命令使用上一个使用的 recipe

  • 启用折行,即某行过长时折成两行显示

读者也可以探索更多的编辑器与插件设置。

自带的 PDF 预览功能也过于孱弱,可以使用 vscode-pdf 插件预览 PDF,与 Firefox 浏览器的 PDF 预览有基本一致的体验。可以忽视插件的不支持警告,直接把 PDF 分屏预览,四舍五入就是 Overleaf。


试试 Typst 吧!可能是语法更简单、更自然的 LaTeX,同时也在不断完善中,未来可期。