Windowsで日本語texのコンパイルを爆速にする方法

書いている人はlatexもVSCodeも，文字通りなんもわからん素人です．
もっといい方法を知っている人，ぜひ教えてください！

# 要約
* WindowsだとLinuxに比べてLatex(特に日本語)のコンパイルがだいぶ遅い
* WSLを使えばWindowsでも速い
* VSCodeからも呼び出して使えるよ

# どんだけ速くなるの?
ここではWindowsとLinux(WSL)で速度を比較します．
Windowsではtexlive2019-20190410をインストールしました．WSLではaptでインストールしています．

対象はこんな感じの2ページ論文です．
![ronbun.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22967/a3b1309f-1906-eaab-3be9-879a46d16650.png)

コンパイル時間をPowershellで測ってみます．

```
PS > time ptex2pdf -l -ot -kanji=utf8 robomech2019.tex
```
→ 5654.5197 msec

このtimeは [この記事にあるもの](https://qiita.com/earthdiver1/items/1991fa00b1f6333ea3ca) を使わせていただきました．

次に，WSLで同じく実行してみます．

```
WSL $ time ptex2pdf -l -ot -kanji=utf8 robomech2019.tex
```
→ 
real    0m0.725s
user    0m0.453s
sys     0m0.266s

という感じで7~8倍くらい速いことがわかります．Linuxネイティブだともう少し速い気がします．

# 設定方法
WSLの中だけで生きていくのは大変なので，
WindowsのIDEを使いながら，WSLのtexを呼び出して使うことにします．
WSLのアプリケーションはWindowsのコマンドプロンプトから簡単に

```
wsl <コマンド>
```

で呼び出せるそうなので，これでtexコマンドを呼び出していた部分を置き換えればOKです．
この記事ではVSCodeの例を載せていますが，他の開発環境でも同じようにできると思います．

## WSLにlatexをインストール
まずWSLのUbuntuコマンドプロンプトを起動して，

```
sudo apt install texlive-lang-japanese texlive-latex-extra 
```

でtexliveをインストールします．他のパッケージも必要に応じてインストールしてください．


## VSCodeから使う設定
VSCodeにLaTex-Workshopをインストールしておきます．
https://github.com/James-Yu/LaTeX-Workshop

- メニュー「表示」→「拡張機能」を選択
- 検索にlatexと入力
- Latex Workshopの「インストール」ボタンを押す


次に，VSCodeの設定画面を開いて(Ctrl+,)，jsonに設定を書きます．
platexを使う場合の設定:
```
    "latex-workshop.latex.tools": [
    {
        "command": "wsl",
        "args": [
            "ptex2pdf",
            "-l",
            "-od",
            "-V7",
            "-ot",
            "-kanji=utf8 -synctex=1",
            "%DOCFILE%"
        ],
        "name": "ptex2pdf"
    },
    {
        "command": "wsl",
        "args": [
            "pbibtex",
            "%DOCFILE%",
            "-kanji=utf8"
        ],
        "name": "pbibtex"
    },
],
"latex-workshop.latex.recipes": [
    {
        "name": "toolchain",
        "tools": [
            "ptex2pdf",
            "pbibtex",
            "ptex2pdf",
            "ptex2pdf",
        ]
    },
],
```
uplatexを使う場合の設定:
```
{
    "editor.inlineSuggest.enabled": true,
    "latex-workshop.latex.tools": [
        {
            "command": "wsl",
            "args": [
                "ptex2pdf",
                "-u",
                "-l",
                "-od",
                "-V7",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "%DOCFILE%"
            ],
            "name": "ptex2pdf"
        },
        {
            "command": "wsl",
            "args": [
                "pbibtex",
                "%DOCFILE%",
                "-kanji=utf8"
            ],
            "name": "pbibtex"
        },
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "ptex2pdf",
            "tools": [
                "ptex2pdf",
            ]
        },
        {
            "name": "toolchain",
            "tools": [
                "ptex2pdf",
                "pbibtex",
                "ptex2pdf",
                "ptex2pdf",
            ]
        },
    ],
}
```

この設定はptex2pdfを使う設定
https://gist.github.com/Ikuyadeu/204d06fffd912f441b383eb02463e29b
を元にしています．

本質的に変わっているのは，

* ptex2pdfを直接呼び出すのではなくて，wslをコマンドに，ptex2pdfを引数に変えています．
* %DOC%のところがフルパス(C:\\Users\\... な感じ)になってエラーになったので%DOCFILE%を使うようにしました．

これだけです．

これで，VSCodeから
ptex2pdf -> pbibtex -> ptex2pdf -> ptex2pdf 
の4段階が今まで20秒ほどかかっていたのが，3秒かからず終わるようになりました．


とりあえず速くなったことには満足ですが，なぜWindows版がこんなに遅いのかわからずモヤモヤするので，何かご存知の方，教えていただけると嬉しいです．

ちなみに，[XelatexがWindowsで遅いよというStackoverflowのエントリ](https://tex.stackexchange.com/questions/325278/xelatex-runs-slow-on-windows-machine)は見つけましたが，ここに書いてあることを試しても改善は感じられませんでした．
xelatexをWindowsとWSLで比較すると，3倍くらいWSL版が速いのです．が，ptex2pdfに比べると差は小さいです．