列表中突出显示 UTF-8 注释

列表中突出显示 UTF-8 注释

我正在编写一个充满 UTF-8 字符和代码的文档,因此我使用带有 lstlisting 的 CJKutf8 包。但是,文本突出显示似乎有问题。

在下面的例子中,似乎只有 ASCII 字符被涂成蓝色,而 UTF-8 字符(中文和日文)则不是。为什么会发生这种情况?有没有什么方法可以解决这个问题?

结果:

结果

来源:

\documentclass{article}

\usepackage{CJKutf8}
\usepackage{listings}
\usepackage{tikz}

\lstset{
  extendedchars=false,
  commentstyle=\color{blue},
}

\begin{document}
\begin{CJK}{UTF8}{gbsn}

Text % may contain UTF-8 characters

\begin{lstlisting} [language=Python]
# Comment
# 注释 comment
# コメント comment
\end{lstlisting}

Text % may contain UTF-8 characters

\newpage
\end{CJK}
\end{document}

答案1

这实际上比预期的要简单:listings有一个texcl选项导致“注释行文本(直到行尾)被读取为 LaTeX 代码并以注释样式排版”(手册第 40 页)。这意味着注释由 CJKutf8 处理,允许文本着色。

要保留空格,您可以使用\obeyspaces命令作为escapebegin键 from 的参数listings。不幸的是,这不适用于制表符。

梅威瑟:

\documentclass{article}

\usepackage{CJKutf8}
\usepackage{listings}
\usepackage{tikz}

\lstset{
  extendedchars=false,
  commentstyle=\color{blue},
  texcl,
  escapebegin=\obeyspaces
}

\begin{document}
\begin{CJK}{UTF8}{gbsn}

Text % may contain UTF-8 characters

\begin{lstlisting}[language=Python]
# Comment
# 注释 comment      with spaces       and tabs
# コメント comment
\end{lstlisting}

Text % may contain UTF-8 characters

\newpage
\end{CJK}
\end{document}

结果:

在此处输入图片描述

相关内容