やっていくログ

にんげんをやっていきましょう

VSCode で LaTeX を使う (Windows)

はじめに

 VSCode 上で LaTeX を使えるようにするまでの流れのメモ。Windows 環境。2020/03/18 加筆修正
 

1. TeX自体の準備:TeX Live のインストール

 TeX Live/Windows - TeX Wiki に詳述されている。Installing TeX Live over the Internet - TeX Users Group から install-tl-windows.exe を入手し、インストールを行う。インストール時間は本体の性能に依存するようで、1時間程度で済む場合から10時間くらいかかる場合まで…。

2. VSCode側の準備

LaTeX Workshop のインストール

 VSCode拡張機能から LaTeX Workshop を検索しインストールする。

settings.json の編集

 本項は以下の記事を参考にしている。

 VSCode の settings.json 内に、ツール・レシピ・オプションを記載することで、VSCode からコンパイルを行うことができる。ツールは、コンパイルのための具体的なコマンドを記載したもの。レシピは、ツールの使用順番を記載したもの。レシピを用意することで、コンパイル一気通貫に行うことができる。

 bibtex の有無、参照(figure など)の有無に応じて、6 通りのレシピを用意した。platex / uplatex のそれぞれについて、bibtex も 参照もないもの用 (nobib/noref)、bibtex はないが参照はあるもの用 (nobib/ref)、bibtex も参照もあるもの用 (bib/ref) のレシピがある。

 以下に settings.json の中身を示す。

{
    "editor.wordSeparators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~? 、。「」【】『』()!?てにをはがのともへでや",
  
    // latex-workshop.latex.tools: Tool の定義
    "latex-workshop.latex.tools": [
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "-interaction=nonstopmode",
                "%DOC%"
            ],
            "name": "ptex2pdf (platex)"
        },
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-u",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "-interaction=nonstopmode",
                "%DOC%"
            ],
            "name": "ptex2pdf (uplatex)"
        },
        {
            "command": "pbibtex",
            "args": [
                "%DOCFILE%",
                "-kanji=utf8"
            ],
            "name": "pbibtex"
        },
        {
            "command": "upbibtex",
            "args": [
                "%DOCFILE%",
                "-kanji=utf8"
            ],
            "name": "upbibtex"
        }
    ],
  
    // latex-workshop.latex.recipes: recipeの定義
    "latex-workshop.latex.recipes": [
        {
            "name": "bib/ref (uplatex)",
            "tools": [
                "ptex2pdf (uplatex)",
                "upbibtex",
                "ptex2pdf (uplatex)",
                "ptex2pdf (uplatex)"
            ]
        },
        {
            "name": "bib/ref (platex)",
            "tools": [
                "ptex2pdf (platex)",
                "pbibtex",
                "ptex2pdf (platex)",
                "ptex2pdf (platex)"
            ]
        },
        {
            "name": "nobib/ref (uplatex)",
            "tools": [
                "ptex2pdf (uplatex)",
                "ptex2pdf (uplatex)"
            ]
            },
        {
            "name": "nobib/ref (platex)",
            "tools": [
                "ptex2pdf (platex)",
                "ptex2pdf (platex)"
            ]
        },
        {
            "name": "nobib/noref (uplatex)",
            "tools": [
                "ptex2pdf (uplatex)"
            ]
        },
        {
            "name": "nobib/noref (platex)",
            "tools": [
                "ptex2pdf (platex)"
            ]
        }         
    ],
  
    "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", "*.synctex.gz", "_minted*", "*.nav", "*.snm", "*.vrb",
    ],
  
    "latex-workshop.view.pdf.viewer": "tab",
    "latex-workshop.latex.autoBuild.run": "never",
    "latex-workshop.latex.autoClean.run": "onBuilt"
}


 以下にオプションの説明を示す。

  • 文法ミスが存在するとコンパイルが終わらない場合がある。コンパイルに失敗してもひとまず終了するよう、 "-interaction=nonstopmode" をコマンドの引数に加える。
  • editor.wordSeparators は区切り文字の指示。
  • latex-workshop.latex.clean.fileTypes はコンパイル中に生まれる中間ファイルの消去対象の指示。
  • latex-workshop.view.pdf.viewer はできた pdf の表示ツールの指示。tab にすれば VSCode 上で確認できる。
  • latex-workshop.latex.autoBuild.run はセーブしたときに自動でコンパイルするか否かの指示。onFileChange にするとセーブしたとき自動でコンパイルされるが、煩わしければ never にする。
  • latex-workshop.latex.autoClean.run は中間ファイルの自動消去をいつ行うかの指示。onBuild にするとコンパイルの成否にかかわらず消去を行う。onFailed にするとコンパイルに失敗した時だけ消去を行う。never は自動消去を行わない。