使用VSCode编写LaTeX

纵然是瞬间 提交于 2019-12-15 13:45:10

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

许多人都是用texstudio或者winedt配合texlive编写 

 文档,很长一段时间内texstudio是我唯一的编辑器,然而,颜控的我受不了那原始的界面,于是我看上了VSCode。漂亮、免费、开源是我选择VSCode的主要原因。

网上有很多介绍VSCode+ 

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

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

安装texlive

加载texlive 2018的iso文件,

 右键install-tl-advanced.bat,单击以管理员身份运行,进入高级安装界面。

 可以在“选择安装方案”和“Installation collections”选择需要安装的功能,TEXDIR修改安装目录。

 很多宏包和功能我个人并不需要,因此我在这里取消勾选,大家可以根据需要勾选自己需要的功能,如果嫌麻烦全部安装也可以,并不消耗多少空间。

 等待安装完成。

安装VSCode上的 

 插件

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

 VSCode安装完成之后,在扩展商店安装LaTeX Workshop插件。

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

 可以看到,代码已经被高亮显示。

配置VSCode

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

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

 LaTeX Workshop默认的编译工具是latexmk,大家根据需要修改所需的工具和命令,我不需要用到latexmk,因此我把其修改为中文环境最常用的xelatex,大家根据需求自行修改。
"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放到第一位,即可以默认工具编译,但会比较慢。大家可以根据需要自行按照格式添加自己需要的编译链。

要使用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为阅读器预览了。

 右键编辑器空白处,单击“Build LaTeX project”(可更改快捷键)就可以以默认编译工具xelatex编译文件。

 单击右上角的按钮即可打开SumatraPDF并预览。

正向搜索

"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中高亮显示。

反向搜索

打开SumatraPDF,进入设置->选项

 填入Code.exe的所在位置,另外添加以下命令
 -g "%f:%l"

(感谢 

@Macrofuns

 指出,如果不加双引号,在文件路径有空格的情况下会导致无法反向搜索)

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

这样VSCode+texlive就完全配置好了。

注意事项

  1. 如果通过VSCode编辑器内预览按钮打开SumatraPDF阅读器则无法进行反向搜索,如需要进行搜索,请先单独打开SumatraPDF,再通过预览按钮预览PDF;
  2. 最好不要清理xelatex生成的gz后缀的临时文件,否则就不能进行正向和反向搜索;

对于问题1,LaTeX Workshop的作者给出了解释:

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

简单地说,这是因为通过VSCode中预览按钮启动的SumatraPDF是作为VSCode的一个子进程运行的,这样就无法反过来调用Code.exe(后面这句是我猜的)。

这种问题目前无法在插件层面解决,作者给出了一种解决方案,

使用CMD作为命令而SumatraPDF.exe作为参数,不过这种方法我还没有搞成功。

其他设置

  • LaTeX Workshop默认保存的时候编译,如果不喜欢这个设置,可以添加以下代码进入设置区:
"latex-workshop.latex.autoBuild.onSave.enabled": false,
  • latex-formatter是一款用于格式化 

     代码的插件,有需要可以安装。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!