LaTeX Workshop の自動ビルドがハングアップするときの対処方法

TeX

Visual Studio と TeX Live 2022 の環境を新しい Mac に整え直したところ、TeX 文書の自動ビルドがハングアップするようになったため、その原因を探してみました。


Visual Studio Code を使って TeX 文書制作環境を整えて使っていたのですけれど、Mac 本体を買い替えたのを機に環境を整え直してみたところ、それまで動作していたはずの TeX データが上手くビルドできなくなりました。

手動でビルドすればちゃんとできるのですけれど、Visual Studio Code に入れた LaTeX Workshop 機能拡張を使って、TeX ファイルの保存をしたタイミングで自動ビルドさせる動作が途中でハングアップしてしまい、それ以降進むこともなければ、強制キャンセルさえもできなくなってしまう感じでした。

不具合の状況

不具合の具体的な状況としては、Visual Studio Code で TeX ファイルを保存したら自動ビルドされるように、その settings.json で例えば次のような設定を行っていました。

"latex-workshop.latex.autoBuild.run": "onFileChange",
"latex-workshop.latex.recipes": [
    {
        "name": "toolchain",
        "tools": [
            "test-codes",
            "prepare-meta",
            "prepare-buildnumber",
            "prepare-codes",
            "latexmk",
            "generate-simpletoc"
        ],
    }
],

このときに、TeX を保存すると即座に recipes で指定した 6 つのツールの実行が始まるところまでは良かったのですけれど、そのうちの最後のツールの実行を開始したところから止まってしまって、実行が終わることもなければ、実行を強制中断することもできなくなっていました。

Visual Studio Code の OUTPUT から LaTeX Workshop を選択すると、最後に次のようなログが記録されたところで止まっています。

Recipe step 6: casualbook.generate-toc.sh
Recipe step 6 args: ["~/Developer/Books/Book.06/Sources"]
Recipe step env: undefined
cwd: ~/Developer/Books/Book.06/Sources

ここで出てくる casualbook.generate-toc.sh が、先ほどの recipesgenerate-simpletoc で起動される実行ファイルなので、この処理が正しく実行できていない様子でした。

原因は "シバン" の記載ミス

そうとなると、シェルスクリプトファイルに記載した処理に問題があるのだろうと思って、しばらくプログラムの間違いを探してみていたのですけれど改善されなくて困っていたのですけれど、ようやくその問題が、スクリプトファイルの1行目にある シバン にあることに気がつきました。

シバン (shebang) というのは、そのシェルスクリプトファイルが単体で実行されたときに、どのインタープリターを使ってそれを処理するかを指定する行です。今回は /bin/sh で実行したかったので、本来であればその場合は次のように記載します。

#!/bin/sh

これが、うっかり感嘆符が抜けてしまっていて、次のようになっていました。

#/bin/sh

どうやらこのミスによって、LaTeX Workshop が recipes で指定されたシェルスクリプトを正しく実行できずにプロセスを見落としてしまい、処理を続けることも中断することもできなくなってしまったものと思われます。

問題解消

今回はそんな原因だったため、LaTeX Workshop が実行するシェルスクリプトのシバンの記載ミスを修正してから Visual Studio Code を再起動することで、以降は正常に TeX 文書の生成プロセスが動くようになりました。