请考虑这个MWE:
\documentclass{article}
\usepackage{listings}
\usepackage{textcomp}
\usepackage{xcolor}
\lstset{
columns=flexible,
literate=
{Public Class}{{Public Class\color{red}}}{12}
{.Object}{{.\color{red}Object\color{black}}}{6}
}
\begin{document}
\begin{lstlisting}
Public Class Example
.Object = A
\end{lstlisting}
\end{document}
我想要Example
红色的,但我做不到。
我想
{Public Class}{{Public Class\color{red}}}{12}
将填充任意字符序列后 Public Class
, 喜欢
{.Object}{{.\color{red}Object}}{6}
(请注意,我删除了\color{black}
并= A
用红色填充。)
重要的 Example
可以改变,即红色应该适用于任何字符序列同一条线的Public Class
。下一行将删除此效果。
编辑哦,我意识到了空格{Public Class}
是个问题。不过我会搜索一下这是否重复。
编辑2我找不到重复的。我还编辑了这个问题,因为我忘了添加columns=flexible
,这让事情变得有点困难,因为@Robert 指出这样做{Public\ Class}
可以解决问题,但添加columns=flexible
不再起作用。
答案1
除了literate
密钥之外,您还可以使用moredelim
(基于这个技巧):
\documentclass{article}
\usepackage{listings}
\usepackage{textcomp}
\usepackage{xcolor}
\lstset{
columns=flexible,
moredelim=**[il][\PublicClass]{Public\ Class},
}
\newcommand\PublicClass{Public Class\color{red}}
\begin{document}
\begin{lstlisting}
Public Class Example
\end{lstlisting}
\end{document}