考虑以下代码:
\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
用途皮格门特斯进行实际的高亮显示,其中包括escapeinside
。Pygment 的实现escapeinside
可以是在某些情况下很脆弱,并且在字符串或注释中不起作用。
在这种情况下prolog
,foo
被标记化为String.Atom
,因此当词法分析器到达第一个 时|
,它处于错误的模式,无法开始转义。相反,在这种ocaml
情况下,foo
被标记为Name
,因此词法分析器将其解释为转义。最终,这归结为 Pygments 实现 的方式与词法分析器工作方式|
之间的相互作用。escapeinside
prolog