列表和 Unicode 字符

列表和 Unicode 字符

我想将一些 unicode 字符写入lstlisting环境,但它们在输出中以内联方式显示,这不是我所期望的。我怎样才能让它像标准字符一样工作?谢谢。

\documentclass{article}

\usepackage{fontspec}
\setmonofont{Consolas}

\usepackage{listings}
\lstset{
    basicstyle=\ttfamily
}

\begin{document}
    \begin{lstlisting}
    \end{lstlisting}    
\end{document}

答案1

如果您发现我的回答不合适,我很抱歉,但是在对您的代码进行一段时间的研究之后,我发现最简单的变体是从lstlisting包切换到minted

为什么minted

优点:

  • 与 pdflatex、xelatex 等配合使用效果很好
  • 支持更多语言突出显示,比lstlisting
  • 有时执行突出显示看起来更好
  • 开箱即用,无 UTF-8 字符问题

缺点:

  • 需要额外的软件(尽管安装需要 2-5 分钟)
  • 需要编辑编译命令标志(另外 30 秒)

好消息是附加软件上面提到的是 Python,如果你使用 OS X 或任何流行的 Linux 发行版,它可能会随你的系统一起提供,还有它的包 Pygments,只需在 shell 中一行即可安装。

您可以前往minted 手动的并检查第 2.1 节,说明非常简短且内容丰富。

你还需要检查你的 TeX 编辑器设置并进行如下更改

/Library/tex/texbin/xelatex -synctex=1 %.tex

添加-shell-escape标志,所以现在它看起来像

/Library/tex/texbin/xelatex -shell-escape -synctex=1 %.tex

这是为了允许 XeLaTeX 调用其“沙箱”之外的东西(在我们的例子中是调用 Python)。

完成这些步骤后,您就可以使用了minted。无需再进行任何设置。


现在您的 MWE 已适用于minted

\documentclass{article}

\usepackage{fontspec}
\setmonofont{Consolas}

\usepackage{minted}

\begin{document}
    \begin{minted}{text}
    \end{minted}    
\end{document}

注意选项{text}——它是指定语言(在我们的例子中是纯文本)。

结果如下:

在此处输入图片描述


PS 我以前从未用过minted,但是为了解决你的问题,我花了超过 40 分钟的时间玩lstlisting,只花了 2 分钟的时间安装和习惯minted,所以绝对值得一试。

相关内容