¿Error acuñado o mal uso?

¿Error acuñado o mal uso?

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 ocamla 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

mintedusospigmentospara hacer el resaltado real, y esto incluye escapeinside. La implementación de Pygment escapeinsidepuede serfrágil en algunas circunstanciasy no funciona dentro de cadenas o comentarios.

En el prologcaso, fooestokenizado 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 ocamlcaso, foose 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 escapeinsidey la forma en que prologfunciona Lexer.

información relacionada