
Considere o seguinte código cunhado:
\begin{minted}[escapeinside=||]{ocaml}
foo |this is escaped| bar
\end{minted}
que funciona conforme o esperado, ou seja, o texto escapado é realmente escapado.
No entanto, se alterarmos o idioma de ocaml
para prolog
, o texto escapado não terá mais escape:
\begin{minted}[escapeinside=||]{prolog}
foo |this is no longer escaped| bar
\end{minted}
Isso é um bug criado ou eu usei indevidamente o pacote criado? Tentei vários caracteres de escape, mas nada funcionou para mim.
Responder1
minted
usaPigmentospara fazer o realce real, e isso inclui escapeinside
. A implementação do Pygment escapeinside
pode serfrágil em algumas circunstânciase não funciona dentro de strings ou comentários.
No prolog
caso, foo
étokenizado como umString.Atom
, então quando o lexer atinge o primeiro |
, ele está no modo errado para iniciar um escape. Por outro lado, no ocaml
caso, foo
é tokenizado como a Name
, então o lexer interpreta |
como um escape. Em última análise, isso se resume a uma interação entre a maneira como o Pygments implementa escapeinside
e a maneira como o prolog
lexer funciona.