製造錯誤還是濫用?

製造錯誤還是濫用?

考慮以下鑄造代碼:

\begin{minted}[escapeinside=||]{ocaml}
  foo |this is escaped| bar
\end{minted}

其按預期工作,即轉義文本實際上已轉義。

但是,如果我們將語言從 更改ocamlprolog,則轉義文字不再轉義:

\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

相關內容