当使用包时listing
,彩色注释不会产生彩色的外来 Unicode 字符。
这是一个最小的工作示例:
\documentclass{minimal}
\usepackage{
listings,
color,
fontspec
}
\setmainfont{Linux Libertine}
\lstset{
commentstyle=\color{green},
}
\begin{document}
\begin{lstlisting}[language=Java,showtabs=false]
// Comments are green, yet ‘•’ and ‘≤’ are not.
\end{lstlisting}
\end{document}
为这些字符着色通常在列表环境中起作用:
\lstset{
basicstyle=\color{green},
}
\begin{document}
\begin{lstlisting}[showtabs=false]
Everything is green, even ‘•’ and ‘≤’.
\end{lstlisting}
\end{document}
这是错误吗?如何给评论中的 unicode 字符上色?我使用的是 TeXLive 2013 和 lualatex。
答案1
您必须将非 ASCII 字母(包括引号字符)添加到 \lst@ProcessLetter(请参阅https://tex.stackexchange.com/a/25396/2388}
\makeatletter
\lst@InputCatcodes
\def\lst@DefEC{%
\lst@CCECUse \lst@ProcessLetter
^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f%
^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f%
^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af%
^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf%
^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf%
^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df%
^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef%
^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff%
^^^^2022^^^^2264% add more codes here
^^00}
\lst@RestoreCatcodes
\makeatother