32
16

More than 1 year has passed since last update.

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

Last updated at Posted at 2019-07-10

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

要約

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

どんだけ速くなるの?

ここではWindowsとLinux(WSL)で速度を比較します.
Windowsではtexlive2019-20190410をインストールしました.WSLではaptでインストールしています.

対象はこんな感じの2ページ論文です.
ronbun.png

コンパイル時間を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に比べると差は小さいです.

32
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
16