
次のような生成されたコードを考えてみましょう。
\begin{minted}[escapeinside=||]{ocaml}
foo |this is escaped| bar
\end{minted}
これは期待どおりに動作します。つまり、エスケープされたテキストは実際にエスケープされます。
ただし、言語を から に変更するとocaml
、prolog
エスケープされたテキストはエスケープされなくなります。
\begin{minted}[escapeinside=||]{prolog}
foo |this is no longer escaped| bar
\end{minted}
これは minted のバグでしょうか、それとも minted パッケージを誤って使用したのでしょうか? いくつかのエスケープ文字を試しましたが、何もうまくいきませんでした。
答え1
minted
用途ピグメント実際のハイライトを行うには が必要です。これには が含まれます。Pygmentescapeinside
の の実装はescapeinside
状況によっては脆弱文字列やコメント内では機能しません。
この場合prolog
、foo
トークン化されたString.Atom
なので、レクサーが最初の に到達したとき|
、エスケープを開始するには間違ったモードになっています。対照的に、 のocaml
場合、foo
は としてトークン化されるName
ため、レクサーは をエスケープとして解釈します。最終的に、これは Pygments が を実装する方法とレクサーが機能する方法|
の間の相互作用に帰着します。escapeinside
prolog