書いている人はlatexもVSCodeも,文字通りなんもわからん素人です.
もっといい方法を知っている人,ぜひ教えてください!
要約
- WindowsだとLinuxに比べてLatex(特に日本語)のコンパイルがだいぶ遅い
- WSLを使えばWindowsでも速い
- VSCodeからも呼び出して使えるよ
どんだけ速くなるの?
ここではWindowsとLinux(WSL)で速度を比較します.
Windowsではtexlive2019-20190410をインストールしました.WSLではaptでインストールしています.
コンパイル時間をPowershellで測ってみます.
PS > time ptex2pdf -l -ot -kanji=utf8 robomech2019.tex
→ 5654.5197 msec
このtimeは この記事にあるもの を使わせていただきました.
次に,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のエントリは見つけましたが,ここに書いてあることを試しても改善は感じられませんでした.
xelatexをWindowsとWSLで比較すると,3倍くらいWSL版が速いのです.が,ptex2pdfに比べると差は小さいです.