
Considere el siguiente código acuñado:
\begin{minted}[escapeinside=||]{ocaml}
foo |this is escaped| bar
\end{minted}
que funciona como se esperaba, es decir, el texto escapado en realidad se escapa.
Sin embargo, si cambiamos el idioma de ocaml
a prolog
, entonces el texto escapado ya no tendrá escape:
\begin{minted}[escapeinside=||]{prolog}
foo |this is no longer escaped| bar
\end{minted}
¿Es esto un error acuñado o hice un mal uso del paquete acuñado? Probé varios personajes de escape pero nada funcionó para mí.
Respuesta1
minted
usospigmentospara hacer el resaltado real, y esto incluye escapeinside
. La implementación de Pygment escapeinside
puede serfrágil en algunas circunstanciasy no funciona dentro de cadenas o comentarios.
En el prolog
caso, foo
estokenizado como unString.Atom
, por lo que cuando el lexer llega al primero |
, está en el modo incorrecto para iniciar un escape. Por el contrario, en el ocaml
caso, foo
se tokeniza como Name
, por lo que el lexer lo interpreta |
como un escape. En última instancia, esto se reduce a una interacción entre la forma en que Pygments implementa escapeinside
y la forma en que prolog
funciona Lexer.