LoginSignup
34
20

More than 5 years have passed since last update.

[LaTeX] [Mojave] Mac で latexindent が上手く動作しないときの対処法

Last updated at Posted at 2019-01-05

はじめに

Mac (Mojave) 上の VSCode で LaTeX の環境を整えているとき,Format Document が上手く動作しなかったので原因を調べてみました.

以前に書いたこちらの記事にしたがってインストールした場合を前提としています.
[Mojave] MacTex 2018 + VS Code で LaTeX の環境を構築する - Qiita

.tex ファイル上で右クリックすると Format Document を選択できるのですが,エラーになってしまいます.
スクリーンショット 2019-01-05 18.43.54.png

ログ

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 を使うことがないので,モジュールについての認識が間違っているかもしれません.
何かあればコメントお願いします.

参考

34
20
2

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
34
20