Bug cunhado ou uso indevido?

Bug cunhado ou uso indevido?

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

mintedusaPigmentospara fazer o realce real, e isso inclui escapeinside. A implementação do Pygment escapeinsidepode serfrágil em algumas circunstânciase não funciona dentro de strings ou comentários.

No prologcaso, 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 ocamlcaso, 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 escapeinsidee a maneira como o prologlexer funciona.

informação relacionada