はじめに
Mac (Mojave) 上の VSCode で LaTeX の環境を整えているとき,Format Document
が上手く動作しなかったので原因を調べてみました.
以前に書いたこちらの記事にしたがってインストールした場合を前提としています.
[Mojave] MacTex 2018 + VS Code で LaTeX の環境を構築する - Qiita
.tex ファイル上で右クリックすると Format Document
を選択できるのですが,エラーになってしまいます.
ログ
VSCode 上でログ出力を見ると,perl のモジュールが足りないような記述がありました.
調べてみると,この自動インデント機能は latexindent
が担っているらしく,latexindent
は多くの perl モジュールに依存しているようです.
ログでも Log::Log4perl
が足りないよ,と言っていますね.
[18:20:25] Formatting failed with exit code 2
[18:20:25] stderr: Can't locate Log/Log4perl.pm in @INC (you may need to install the Log::Log4perl module) (@INC contains: /usr/local/texlive/2018/texmf-dist/scripts/latexindent /usr/local/Cellar/perl/5.28.1/lib/perl5/site_perl/5.28.1/darwin-thread-multi-2level /usr/local/Cellar/perl/5.28.1/lib/perl5/site_perl/5.28.1 /usr/local/Cellar/perl/5.28.1/lib/perl5/5.28.1/darwin-thread-multi-2level /usr/local/Cellar/perl/5.28.1/lib/perl5/5.28.1 /usr/local/lib/perl5/site_perl/5.28.1/darwin-thread-multi-2level /usr/local/lib/perl5/site_perl/5.28.1) at /usr/local/texlive/2018/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm line 22.
cpan
コマンドで該当するモジュールをインストールし Format Document
を実行.
エラー内容が変わるたびに指定されたモジュールをインストールするというのを繰り返してみましたが,途中でコケてしまいました.
File::HomeDir
が依存する Mac::SystemDirectory
に問題があり,インストールが進みません.
別のプロジェクトではありますが,Mojave 固有の問題として issue が立っているようでした.
Failed to install on OSX Mojave Mac::SystemDirectory is not installed. · Issue #39 · sqitchers/homebrew-sqitch
この issue によると brew で入れた perl であれば問題なくインストール可能ということでした.
試してみると案外簡単に解決できたので,次節で実際に入力したコマンドを載せておきます.
コマンド
cpan
より cpanm
の方が便利そうだったので,ついでに入れておきました.
基本的な作業としては,Format Document
を実行した際のエラーメッセージで怒られる度に,指定されたモジュールをインストールするだけです.
もちろん,わざわざ VSCode 上で試さなくてもコマンドラインでデバックできると思います.
$ brew install perl
$ brew install cpanm
$ cpanm Log::Log4perl Log::Dispatch::File YAML::Tiny File::HomeDir Unicode::GCString
おわりに
実際に入力したコマンド自体は少ないですが,原因の調査に時間がかかりました.
普段はあまり perl を使うことがないので,モジュールについての認識が間違っているかもしれません.
何かあればコメントお願いします.