VSCode で “Recipe terminated with fatal error: spawn ptex2pdf ENOENT.” が出て,TeX のコンパイルができない

公開日:
最終更新日:
ENOENT のアイキャッチ

VSCode で TeX を書いていてこれまで動いていたはずなのに,突然エラーが出てコンパイルできなくなってしまいました.
その時の解決法をメモに残しておきます.

1. 状況

VSCode で LaTeX Workshop を使って,セーブ時に TeX を自動でコンパイルしてくれるようにしています.
コンパイル方法は settings.json に設定しています.

{
    "latex-workshop.latex.recipes": [
        {
        "name": "ptex2pdf*2",
        "tools": [
            "ptex2pdf",
            "ptex2pdf"
        ]
    }
    ],
    "latex-workshop.latex.tools": [
    {
        "name": "ptex2pdf",
        "command": "ptex2pdf",
        "args": [
            "-interaction=nonstopmode",
            "-l",
            "-ot",
            "-u",
            "-kanji=utf8",
            "-synctex=1",
            "%DOC%.tex"
        ]
    }
    ],
    // 以下その他の設定
}

エラー内容は以下のようなものです.

ENOENT エラーの様子
ENOENT エラーの様子

2. エラーの意味

まず,ENOENTError NO ENTry の略でファイルやディレクトリが存在しないというような意味のエラーです.
つまり,ptex2pdf というコマンドが見つからないよ と言ってくれているわけです.
bibtex をコンパイルする時などは Recipe terminated with fatal error: spawn pbibtex ENOENT というようなエラーが出ることもあるでしょう.

3. 解決法

要するにコマンドが見つからないと言われているので,パスの問題です.
settings.json をいじってパスを通してあげれば or フルパスで書いてあげれば動くようになります.
(なぜ突然パスが通らなくなるのかは残念ながらわかっていないので,ご存知の方いればコメントお待ちしております 🙏)
そのためには,まず ptex2pdf コマンドがどこにあるか調べる必要があるので,ターミナルで which コマンドを実行して探しましょう.

$ which ptex2pdf
/Library/TeX/texbin/ptex2pdf

3.1. パスを通す

筆者の場合 ptex2pdf/Library/TeX/texbin/ptex2pdf にあるので,/Library/TeX/texbin をパスに追加してあげます.
tools の中の args の下にでも env を定義してあげましょう.

{
    // recipe の設定
    "latex-workshop.latex.tools": [
    {
        "name": "ptex2pdf",
        "command": "ptex2pdf",
        "args": [
            "-interaction=nonstopmode",
            "-l",
            "-ot",
            "-u",
            "-kanji=utf8",
            "-synctex=1",
            "%DOC%.tex"
        ],
        "env": {
            "PATH": "/Library/TeX/texbin"
        }
    }
    ],
    // 以下その他の設定
}

これで,無事コンパイルできるようになりました 👏

3.2. フルパスで書いてあげる

筆者の場合,/Library/TeX/texbin/ptex2pdf を実行すればいいので,コマンドをこれに書き換えます.

{
    // recipe の設定
    "latex-workshop.latex.tools": [
    {
        "name": "ptex2pdf",
        "command": "/Library/TeX/texbin/ptex2pdf",
        "args": [
            "-interaction=nonstopmode",
            "-l",
            "-ot",
            "-u",
            "-kanji=utf8",
            "-synctex=1",
            "%DOC%.tex"
        ]
    }
    ],
    // 以下その他の設定
}

これで,無事コンパイルできるようになりました 👏

4. まとめ

しっかりとパスを通してあげれば,再びコンパイルできるようになるので,見慣れないエラーにビビらずに対応してくれるといいのかなぁと思います.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA