
考慮以下鑄造代碼:
\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}
這是一個鑄造的錯誤還是我濫用了鑄造的包?我嘗試了幾個轉義字符,但沒有任何效果。
答案1
minted
用途皮格門斯進行實際的突出顯示,這包括escapeinside
. Pygment的實作escapeinside
可以是在某些情況下脆弱,並且在字串或註解中不起作用。
在這種prolog
情況下,foo
是標記為String.Atom
,因此當詞法分析器到達第一個時|
,它處於開始轉義的錯誤模式。相反,在這種ocaml
情況下,foo
被標記為 a Name
,因此詞法分析器將其解釋|
為轉義。最終,這取決於 Pygments 實作方式escapeinside
和詞法分析器工作方式之間的交互作用prolog
。