使用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%"
        ]
    },
相關文章
相關標籤/搜索