使用VSCode编写LaTeX(latex+vscode+SumatraPDF

许多人都是用 texstudio 或者 winedt 配合 texlive 编写 [公式] 文档,很长一段时间内 texstudio 是我惟一的编辑器,然而,颜控的我受不了那原始的界面,因而我看上了 VSCode。漂亮、免费、开源是我选择 VSCode 的主要缘由。git

网上有不少介绍 VSCode + [公式] 的文章,不过在配置外部阅读器的介绍稍微有点少,我在网上找了好久才在 LaTeX Workshop 做者的 github 主页上找到方法,同时也萌发了写一篇教程的想法。github

本文主要介绍使用 VSCode 编写简单的文档以及设置外部PDF阅读器的方法。windows

若是你已经安装好了 texlive、VSCode 和 SumatraPDF,而且不想看完整篇文章,只想快点上手,请翻到文章末尾的附录,将代码所有复制到 VSCode 的设置里,而后再根据第5节设置一下反向搜索就可使用了。app

1. 安装 texlive

加载 texlive 2019 的 iso 文件,编辑器

[公式] 右键 install-tl-windows,单击以管理员身份运行,进入安装界面。工具

[公式] 能够点击“Advanced”进入高级安装来取消你不须要安装的宏包。ui

高级安装界面spa

[公式] 点击“Customize”来取消勾选不须要的宏包。.net

[公式] 不少宏包和功能我我的并不须要,所以我在这里取消勾选,你们能够根据须要勾选本身须要的功能,若是嫌麻烦所有安装也能够,并不消耗多少空间。插件

设置完安装路径等选项以后点击“安装”,以后静坐 20 分钟等待安装完成。

2. 安装 VSCode 上的 [公式] 插件

与此同时,下载 VSCode 并安装,VSCode 的安装很简单,这里就不唠叨了。

[公式] VSCode 安装完成以后,在扩展商店安装 LaTeX Workshop 插件。

安装完成后,随便打开一个 tex 源文件,

[公式] 能够看到,代码已经被高亮显示。

3. 配置 VSCode 的 [公式] 插件

将如下代码放入 VSCode 的设置区内。

"latex-workshop.latex.tools": [
    {
        // 编译工具和命令
        "name": "xelatex",
        "command": "xelatex",
        "args": [
            "-synctex=1",
            "-interaction=nonstopmode",
            "-file-line-error",
            "-pdf",
            "%DOCFILE%"
        ]
    },
    {
        "name": "pdflatex",
        "command": "pdflatex",
        "args": [
            "-synctex=1",
            "-interaction=nonstopmode",
            "-file-line-error",
            "%DOCFILE%"
        ]
    },
    {
        "name": "bibtex",
        "command": "bibtex",
        "args": [
            "%DOCFILE%"
        ]
    }
],

[公式] LaTeX Workshop 默认的编译工具是 latexmk,你们根据须要修改所需的工具和命令,我不须要用到 latexmk,所以我把其修改成中文环境经常使用的 xelatex,你们根据须要自行修改。(感谢 

@huan Yu

 ,将 tools 中的 %DOC%替换成%DOCFILE%就能够支持中文路径下的文件了

"latex-workshop.latex.recipes": [
    {
        "name": "xelatex",
        "tools": [
            "xelatex"
        ]
    },
    {
        "name": "xe->bib->xe->xe",
        "tools": [
            "xelatex",
            "bibtex",
            "xelatex",
            "xelatex"
        ]
    }
],

[公式] 用于配置编译链,一样地放入设置区。第一个 recipe 为默认的编译工具,如须要使用 bibtex 可在编译时单击 VSCode 界面左下角的小勾,单击“Build LaTeX project”,选择“xe->bib->xe->xe”,另外的方法是使用右侧栏,或者直接将“xe->bib->xe->xe”的Recipe 放到第一位,就能够做为默认 Recipe 编译了,但由于编译次数比较多,速度会比较慢。你们能够根据须要自行按照格式添加本身须要的编译链。

要使用 pdflatex,只需在 tex 文档首加入如下代码:

%!TEX program = pdflatex

要使用 SumatraPDF 预览编译好的PDF文件,添加如下代码进入设置区。

"latex-workshop.view.pdf.viewer": "external",

"latex-workshop.view.pdf.external.command": {
    "command": "E:/Programs/SumatraPDF/SumatraPDF.exe",
    "args": [
        "%PDF%"
    ]
},

[公式] “viewer”设置阅读器为外置阅读器,“command”为 SumatraPDF.exe 的路径,根据具体状况修改。

如今就可使用 VSCode 编译 tex 文件并以 SumatraPDF 为阅读器预览了。

[公式] 插件通过几回更新以后已经去掉了右键菜单选项,选项被移动到了右侧栏。点击右侧栏的 [公式] 图标,再点击你所想要使用的Recipe就能够编译了,若是用快捷键则默认使用第一条 Recipe 编译。或者也可使用快捷键 Ctrl+Alt+V。

[公式] 单击右上角的按钮便可打开 SumatraPDF 并预览。

4. 配置正向搜索

"latex-workshop.view.pdf.external.synctex": {
    "command": "E:/Programs/SumatraPDF/SumatraPDF.exe",
    "args": [
        "-forward-search",
        "%TEX%",
        "%LINE%",
        "%PDF%"
    ]
},

[公式] 添加代码进入设置区以配置正向搜索。“command”依旧是 SumatraPDF.exe 的存放位置,根据具体状况修改。

[公式] 单击“SyncTeX from cursor”便可正向搜索。

[公式] 能够看到,光标所在的行的内容在 PDF 中高亮显示。

5. 配置反向搜索

打开 SumatraPDF,进入设置->选项->设置反向搜索命令行

添加如下命令

"Code.exe" "resources\app\out\cli.js" -g "%f":"%l"

根据 VSCode 具体的安装位置将“Code.exe”和“resources\app\out\cli.js”换成 VSCode 在本身的电脑上的安装位置,例如:

"C:\Users\Marvey\AppData\Local\Programs\Microsoft VS Code\Code.exe" "C:\Users\Marvey\AppData\Local\Programs\Microsoft VS Code\resources\app\out\cli.js" -g "%f":"%l"

(感谢 

@Macrofuns

 指出,若是不加双引号,在文件路径有空格的状况下会致使没法反向搜索)

双击 PDF 中的任意一处便可跳转到 VSCode 中所对应的内容的源代码处。

这样 VSCode + texlive 就彻底配置好了。

最好不要清理 xelatex 生成的 gz 后缀的临时文件,不然就不能进行正向和反向搜索;

以前的文章中,我提到了从 VSCode 预览按钮启动 SumatraPDF 会没法反向搜索的问题,如今已经解决,解决方法是在反向搜索命令中添加

"resources\app\out\cli.js"

解决方案来源:

Synctex inverse search doesn't work half the time (and How I got forward search to work for SumatraPDF) · Issue #637 · James-Yu/LaTeX-Workshop​github.com图标

6. 其余设置

  • LaTeX Workshop 默认保存的时候自动编译,若是不喜欢这个设置,能够添加如下代码进入设置区:
"latex-workshop.latex.autoBuild.run": "never",

附录

// LaTeX
    "latex-workshop.latex.tools": [
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "%DOCFILE%"
            ]
        },
        {
            "name": "pdflatex",
            "command": "pdflatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%"
            ]
        },
        {
            "name": "bibtex",
            "command": "bibtex",
            "args": [
                "%DOCFILE%"
            ]
        }
    ],

    "latex-workshop.latex.recipes": [
        {
            "name": "xelatex",
            "tools": [
                "xelatex"
            ]
        },
        {
            "name": "xe->bib->xe->xe",
            "tools": [
                "xelatex",
                "bibtex",
                "xelatex",
                "xelatex"
            ]
        },
        {
            "name": "pdflatex",
            "tools": [
                "pdflatex"
            ]
        }
    ],
    "latex-workshop.view.pdf.viewer": "external",

    "latex-workshop.view.pdf.external.command": {                // **********
        "command": "C:/Program Files/SumatraPDF/SumatraPDF.exe", // 注意修改路径
        "args": [                                                // **********
            "%PDF%"
        ]
    },
    
    "latex-workshop.view.pdf.external.synctex": {                // **********
        "command": "C:/Program Files/SumatraPDF/SumatraPDF.exe", // 注意修改路径
        "args": [                                                // **********
            "-forward-search",
            "%TEX%",
            "%LINE%",
            "%PDF%"
        ]
    },
相关文章
相关标签/搜索