【VScode】TeX LiveのインストールからAuto Buildの設定まで

# 概要
VScodeでTex LiveのインストールからAuto Build(セーブ時に自動でコンパイル)の設定までを行います．
OSは`Windows`でPDFの作成には`ptex2pdf`と`latexmk`のそれぞれを使用する方法を記述するので好きな方を選んでください．

LaTeXのコンパイルコマンドは日本語に対応した`platex`です．

あとLaTeXファイルの文字コードは**UTF-8**を想定しています．

# TeX Liveのインストール

[こちら](https://texwiki.texjp.org/?TeX%20Live%2FWindows)のページを参照．
今回はネットワークインストーラを使用します．

以下のページにアクセスして`install-tl-windows.exe`をダウンロードします．
[Installing TeX Live over the Internet](https://www.tug.org/texlive/acquire-netinstall.html)
![2020-02-14_17h50_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427721/b777da01-5667-75bd-8306-abf3f7d25ef6.png)

実行ファイルをクリックしてインストーラが起動します．
かなり時間がかかるので気長に待ちましょう．自分の環境では1時間ほどかかりました．

#### 2020/04/11更新

**TeX Live 2020**がインストールできるようになっていました．
方法は上記のやり方でいけるようです．

![2020-04-11_14h03_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427721/194c9e71-ab12-3feb-e901-c21f082a7f12.png)

`install-tl-windows.exe`を実行するとこのようなウィンドウが出てくるのでインストールします．
`TeXworks`は使わないのでチェックを外しても大丈夫です．

## 動作確認

`Windows PowerShell`を開いて`platex`などのコマンドを叩いてみて動作するか確認しましょう．
コマンドが見つからない等エラーが出たらPCの再起動を行うと環境変数が通って動作すると思います．

# VScode拡張(LaTeX Workshop)のインストール

LaTeXに関する様々な機能を提供する(LaTeX Workshop)をインストールします．

[LaTeX Workshop(このURLからインストールできます)](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop)
![2020-02-14_17h58_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427721/3be6520d-988e-8263-17d2-160adfa05dd5.png)

# settings.jsonの設定

VScodeの作業ディレクトリに`.vscode/settings.json`に以下の内容を記述します．
このファイルがない場合は新しく作成してください．おおもとの`settings.json`を書き換えることでいちいち作業ディレクトリに`.vscode/settings.json`を作成しなくても良くなります(好きな方で)．

```json:settings.json
{
    "latex-workshop.latex.tools": [
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-f",
                "-c",
                "%DOC%"
            ],
            "env": {}
        },
        {
            "name": "ptex2pdf",
            "command": "ptex2pdf",
            "args": [
                "-l",
                "%DOC%"
            ],
            "env": {}
        }
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "latexmk",
            "tools": [
                "latexmk"
            ]
        },
        {
            "name": "ptex2pdf",
            "tools": [
                "ptex2pdf"
            ]
        },
    ]
}
```

`latex-workshop.latex.tools`が実行するコマンドの設定，`latex-workshop.latex.recipes`はどのツールを使用するかの設定を行います．
デフォルトでは`latex-workshop.latex.recipes`の一番上のレシピが実行されます．例えば`ptex2pdf`を使用したい場合は，次のように直してください．

```json:settings.json
"latex-workshop.latex.recipes": [
    {
        "name": "ptex2pdf",
        "tools": [
            "ptex2pdf"
        ]
    },        
    {
        "name": "latexmk",
        "tools": [
            "latexmk"
        ]
    }
]
```

# `latexmk`を使用する場合
`latexmk`を使用する場合，作業ディレクトリに`.latexmkrc`というファイル(windowsの場合は先頭`.`が不要)を作成する必要があります．
以下の内容でファイルを作成してください(`latexmkrc`について，[こちら](https://ichiro-maruta.blogspot.com/2016/01/atom-latex-on-windows.html)のサイトを参考にしました)．

```:latexmkrc
#!/usr/bin/perl
$latex         = 'platex %O -src-specials -shell-escape -interaction=nonstopmode -synctex=1 -kanji=utf8 %S';
$bibtex        = 'pbibtex %O %B -kanji=utf8';
$dvipdf        = 'dvipdfmx %O -o %D %S';
$pdf_mode      = 3;
```

# おわりに
VScodeにLaTeXの環境を整えました．
個人的に`ptex2pdf`の方が手軽で好きです．`latexmk`の方は細かい設定(2回コンパイルなど)ができるので自分好みにカスタマイズするのもいいと思います．
最後に，2月の下旬になりましたが卒論書き終わっていません．

#### 2020/03/11更新

卒論提出しました．

# 付録

`bibtex`の追加などのアップデートも行い，自分的に安定した設定を載せます．

```json:settings.json
{
    "latex-workshop.latex.tools": [
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-f",
                "-c",
                "%DOC%"
            ],
            "env": {}
        },
        {
            "name": "ptex2pdf",
            "command": "ptex2pdf",
            "args": [
                "-interaction=nonstopmode",
                "-l",
                "%DOC%"
            ],
            "env": {}
        },
        {
            "name": "platex",
            "command": "platex",
            "args": [
                "-interaction=nonstopmode",
                "%DOC%"
            ],
            "env": {}
        },
        {
            "name": "pbibtex",
            "command": "pbibtex",
            "args": [
                "-kanji=utf8",
                "%DOCFILE%"
            ],
            "env": {}
        }
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "ptex2pdf",
            "tools": [
                "ptex2pdf",
                "ptex2pdf"
            ]
        },
        {
            "name": "platex & pbibtex",
            "tools": [
                "platex",
                "pbibtex",
                "platex",
                "ptex2pdf"
            ]
        },
        {
            "name": "latexmk",
            "tools": [
                "latexmk"
            ]
        },
    ]
}
```