
다음과 같은 생성된 코드를 고려하세요.
\begin{minted}[escapeinside=||]{ocaml}
foo |this is escaped| bar
\end{minted}
이는 예상대로 작동합니다. 즉, 이스케이프된 텍스트가 실제로 이스케이프됩니다.
ocaml
그러나 언어를 에서 로 변경하면 prolog
이스케이프된 텍스트는 더 이상 이스케이프되지 않습니다.
\begin{minted}[escapeinside=||]{prolog}
foo |this is no longer escaped| bar
\end{minted}
이것은 작성된 버그입니까, 아니면 제가 작성된 패키지를 오용한 것입니까? 여러 이스케이프 문자를 시도했지만 아무것도 효과가 없었습니다.
답변1
minted
용도피그먼트실제 강조 표시를 수행하려면 여기에는 가 포함됩니다 escapeinside
. Pygment의 구현은 escapeinside
다음과 같습니다.어떤 상황에서는 취약하다, 문자열이나 주석 내에서는 작동하지 않습니다.
이 prolog
경우 foo
에는로 토큰화됨String.Atom
, 따라서 어휘 분석기가 첫 번째 에 도달하면 |
탈출을 시작하기 위한 잘못된 모드에 있는 것입니다. 대조적으로, 이 ocaml
경우 에는 foo
로 토큰화되므로 Name
어휘분석기는 |
이스케이프로 해석합니다. 궁극적으로 이는 Pygments가 구현하는 방식 escapeinside
과 어휘 분석기가 작동하는 방식 사이의 상호 작용으로 귀결됩니다 prolog
.