跳转至

Vscode+Latex+SumatraPDF环境配置

约 845 个字 165 行代码 4 张图片 预计阅读时间 5 分钟

本次推文主要记录自己在 Vscode 中配置 Latex 环境 的过程,希望可以对正在频繁使用 Latex 的小伙伴有所帮助。

我接触 Latex 是在读研期间,刚开始主要用 Overleaf,不用下载任何软件,也不用配置任何环境,直接就能拿来用,但是编译速度真的很拉,可能是国内网络环境导致的,后来又接触了 Texstudio,本地化运行,编译更加稳定,速度也有所提升。

在如今 AI 遍地飞的时代,写代码总喜欢 AI 辅助,写的时候有一些联想,按下 Tad 键直接可以自动补全,利用各种插件的加持,使得过程更加丝滑、界面更美观,显然 Texstudio 已经不能满足我的需求。

这时在网上看到一些主流的 IDE 都是可以关联 Latex 的,那我就在最常用的 Vscode 中关联一下吧,将环境配置过程做了总结,要是你也想在 Vscode 中配置 Latex,不妨照着试一试~


主要支持:

  1. Latex 语法自动补全
  2. 与 Sumatra PDF 梦幻联动
    1. Vscode 中编译,Sumatra 预览
    2. 正向搜索,点击 Vscode 任意代码位置即可跳转Sumatra 相应位置
    3. 反向搜索,双击 PDF 任意位置即可跳转 Vscode 相应 Latex 代码位置
  3. 保存文件时自动编译
  4. 自动格式化 tex 代码
  5. 加速编译小技巧

软件安装部分就省略了,主要就是TeX Live 和 VSCode 的安装,这里假设你都已经安装好了,本文主要记录环境配置过程。

1 环境配置

Vscode 中安装Latex Workshop 插件,打开设置中的配置文件 将下列代码添加其中:

//------------------------------LaTeX 配置----------------------------------
//右键菜单
"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": "xelatex",
        "args": [
            "-synctex=1",
            "-interaction=nonstopmode",
            "-file-line-error",
            "%DOCFILE%"
        ]
    },
    {
        "name": "pdflatex",
        "command": "pdflatex",
        "args": [
            "-synctex=1",
            "-interaction=nonstopmode",
            "-file-line-error",
            "%DOCFILE%"
        ]
    },
    {
        "name": "latexmk",
        "command": "latexmk",
        "args": [
            "-synctex=1",
            "-interaction=nonstopmode",
            "-file-line-error",
            "-pdf",
            "-outdir=%OUTDIR%",
            "%DOC%"
        ],
        "env": {}
    },
    {
        "name": "lualatex",
        "command": "lualatex",
        "args": [
            "-synctex=1",
            "-interaction=nonstopmode",
            "-file-line-error",
            "-shell-escape", //这个命令行在网上的Latex Workshop设置里一般没有,所以直接recipe会报错
            "%DOCFILE%"
        ]
    },
    {
        "name": "bibtex",
        "command": "bibtex",
        "args": [
            "%DOCFILE%"
        ]
    },
    {
        "name": "biber",
        "command": "biber",
        "args": [
            "%DOCFILE%"
        ]
    }
],
// 用于配置编译链
"latex-workshop.latex.recipes": [
    {
        "name": "XeLaTeX",
        "tools": [
            "xelatex"
        ]
    },
    {
        "name": "PDFLaTeX",
        "tools": [
            "pdflatex"
        ]
    },
    {
        "name": "xelatex -> bibtex -> xelatex*2",
        "tools": [
            "xelatex",
            "bibtex",
            "xelatex",
            "xelatex"
        ]
    },
    {
        "name": "xelatex -> biber -> xelatex*2",
        "tools": [
            "xelatex",
            "biber",
            "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",
],
//设置为onFaild 在构建失败后清除辅助文件
"latex-workshop.latex.autoClean.run": "onFailed",
// 使用上次的recipe编译组合
"latex-workshop.latex.recipe.default": "lastUsed",

"latex-workshop.synctex.indicator":"circle",//正向搜索显示
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click", //双击反向搜索
"editor.wordWrap": "on",
"editor.renderControlCharacters": false,
"security.workspace.trust.untrustedFiles": "newWindow", // 
"files.autoSave": "afterDelay",// 自动保存

重启 Vscode 后,点击右上角绿色小箭头即可编译

编译后可以直接在 Vscode 中进行预览,但是在较大文件时内部预览比较卡顿,这时可以利用 Sumatra PDF 进行实时预览,Sumatra PDF 是一款轻量级的 PDF 阅读软件(免费),启动速度极快,PDF 渲染速度也是极快。

可以左侧写 Latex 代码,右侧用 Sumatra PDF 预览,效果如下:

2 Sumatra PDF 环境配置

将下列代码加入配置文件中,注意<span class="underline">每个人的安装路径不同,替换为自己的安装路径!

"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.ref.viewer": "external",
"latex-workshop.view.pdf.external.viewer.command": "C:/APP/SumatraPDF/SumatraPDF.exe",
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
"latex-workshop.view.pdf.external.synctex.command":"C:/APP/SumatraPDF/SumatraPDF.exe", //定位
"latex-workshop.view.pdf.external.synctex.args":[
"-forward-search",
"%TEX%",
"%LINE%",
"%PDF%"],

然后在SumatraPDF 的设置中的高级选项里面插入以下代码,这里以个人 Vscode 安装位置为准

InverseSearchCmdLine = "D:\APP\Microsoft VS Code\Code.exe" "D:\APP\Microsoft VS Code\resources\app\out\cli.js" --ms-enable-electron-run-as-node -r -g "%f":"%l"
EnableTeXEnhancements = true

经过以上配置,就可以在 Vscode 中丝滑的写代码了。

3 进阶设置

3.1 保存后自动编译

如果我们不想每次编译都要点击右上角的小绿箭头,也可以在配置文件中加入:

"latex-workshop.latex.autoBuild.run": "onSave",

现在就可以在 Vscode 中保存代码后自动编译了,效果如下:

3.2 格式化 Latex 代码

配置文件中加入:

"latex-workshop.formatting.latex": "latexindent",
"latex-workshop.formatting.latexindent.path": "D:\\APP\\texlive\\2024\\bin\\windows\\latexindent.exe",//替换自己的路径
"editor.formatOnSave": true

一般情况下在安装 TexLive 后会,已经包含了 latexindent.exe,只需要用 Everything 全盘搜索一下路径即可。

3.3 加速编译小技巧

当编译较大文档时,编译的时间将会变得很慢,这时,可以主文件开头加入:

\special{dvipdfmx:config z 0}

加入这个命令后,将极大提升编译速度,同时会产生较大的内存,即不压缩PDF,可在最后编译时注释该命令。