Minted:是否有适用于 escapeinside 的 Unicode /非 ASCII 字符?

Minted:是否有适用于 escapeinside 的 Unicode /非 ASCII 字符?

fancyvrb和的文档minted警告用户不要期望列表中的任何字符都能正常工作,而 中则不能verbatim。但他们并没有排除这种可能性,使用源代码中永远不会出现的转义字符的想法是一个诱人的前景:玩弄转义字符很麻烦;更好的方法是设置一个然后忘掉它。

我一直在使用,listings直到几天前,我发现\lstinline在垂直模式下(例如\parbox)存在问题,而我知道minted没有。但listings它的优点是它允许使用非 ASCII 字符转义到 LaTeX — 我一直在使用“ ©”而没有任何问题 — 而到目前为止,minted我尝试过的十几个非 ASCII 字符都不接受。escapeinside

存在吗?

\documentclass{article}

\usepackage{fontspec}

\usepackage{minted}

\usepackage{unicode-math}

\begin{document}

\begin{minted}[escapeinside=©©]{postgres}
  SELECT ©\(a ∈ A\)©
\end{minted}

\end{document}

我正在使用 进行编译lualatex,如果重要的话,使用选项--shell-escape并安装并运行 Pygments 版本 2.2.0。

答案1

escapeinside可以处理非 ASCII 字符。但前提是您可以避免编码问题。

这些字符作为通过 shell 转义执行的命令escapeinside的一部分传递给 Python 和 Pygments 。这在 Windows 下会失败,因为字符被编码为,但默认情况下 Python 将命令参数 ( ) 解释为(至少在 PowerShell 中是这样)。在 Linux 下,它也会失败,并且会变成 Unicode 序列。我不确定是哪组编码问题导致了这种情况,因为一切似乎都是默认的。pygmentizeutf8pygmentizesys.argvcp1252©\udcc2\udca9utf8

如果您可以使用相同的编码获得所有内容,那么它就会起作用(我尝试编辑 Pygmentscmdline.py以在 Windows 下强制执行utf8),但在某些情况下实现这一点可能很困难。

相关内容