LaTeXでプログラムのコードの体裁を整えてくれるminted
というパッケージがある。「latex minted」で検索すれば簡単に設定の方法が出てくるため、本記事では扱わない。
遭遇したエラー
minted
が問題なく動くように設定(-shell-escapeなど)したはずなのだが、1度は成功したものの文書作成の途中で急に以下のようなエラーが発生し、以降ビルドに失敗するようになった。
Package minted: Missing Pygments output; \inputminted was
probably given a file that does not exist--otherwise, you may need
the outputdir package option, or may be using an incompatible build tool,
or may be using frozencache with a missing file.
エラーをみると、なんとなくpygments
が動いていないかpygments
が作成したファイルをTeXが上手く認識していないような印象を受ける。しかし原因は違った。
[失敗]試したこと
いろいろググってみて、
\usepackage[cache=false]{minted}
や
\usepackage[cache=false, outputdir=hoge]{minted}
を試してみたが、残念ながら私の場合では上記のエラーは解決しなかった。cache=false
を設定すると、コンパイル自体は成功した(エラーメッセージは出ない)ものの、できたPDFファイルにはコードが一切出力されていなかった。
さらにpygments関連が悪いのではないかと考え、Python 2.7の仮想環境を別途つくりこちらでも試してみたが解決には至らなかった。
[本題]エラーの原因は?
実は途中で追加したパッケージが悪さをしていることが発覚した。なんとプリアンブルでfancybox
とminted
の\usepackage
を書く順番が重要であることが分かった。エラーが出ていた時には、
\usepackage{minted}
\usepackage{fancybox}
の順番でプリアンブルに書いていたのだが、
\usepackage{fancybox}
\usepackage{minted}
と書くことであっさりとビルドが成功した。おそらく二つのパッケージ間で何かしらの衝突が起きていたのだろう。cache=false
の設定も必要無かった。
結論
minted
とfancybox
を共存させたい場合には、fancybox
を先に書きましょう。
LaTeX環境
最後におそらく今回のエラーの原因とは直接関係無いと思われるが、念のため私のLaTeX環境を書き留めておく。
- OSは
Linux version 3.10.0
- LaTeXは
texlive2020
でインストール -
uplatex
を指定。 -
VSCode
のLaTeX Workshop
を使用しbuild。