如何将列表中的各种单词设置为不同的文本颜色?
例如,我希望“失败”一词以红色显示,而“通过”一词以绿色显示。
我感觉应该有一些简单的逃脱可能性!?
什么没有奏效
我尝试使用参数
escapeinside={(*@}{@*)}
然后在列表内
(*@\color{red}@*) fail (*@\color{black}@*)
但这并没有什么效果。
因此,我尝试过
$\textcolor{red}{\lstinline!fail!}$
但是 listings 不喜欢 lstlistings 中的嵌套 lstinline。
复杂解决方案
一个不太合适的解决方案描述\textcolor 在 lstlisting 中吗?:它仅适用于一种颜色,所以我必须添加类似
moredelim=**[is][\color{red}]{@}{@},
对于我使用的每种颜色 :(
答案1
转义部分是一组,因此在那里发出的颜色命令最后会丢失。没有官方的方法来全局设置颜色,但你可以在这里查看我怎样才能改变文本颜色以使其效果超越群组?。
除此之外,您还可以尝试使用以下方法设置颜色\aftergroup
(但关键词的颜色将覆盖此设置):
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{listings}
\begin{document}
\def\redcolor{\color{red}}
\def\blackcolor{\color{black}}
\begin{lstlisting}[escapechar=@]
#@\aftergroup\redcolor@include@\aftergroup\blackcolor@ <fstream.h>
void main () {
fail
pass
}
\end{lstlisting}
\end{document}
答案2
一个选项是使用额外的关键字集:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{listings}
\lstset{
language=C++,
basicstyle=\small\ttfamily,
columns=fullflexible,
keywords=[2]{fail},
keywords=[3]{pass},
keywordstyle={\color{blue!80!black}},
keywordstyle=[2]{\color{red!80!black}},
keywordstyle=[3]{\color{green!50!black}},
}
\begin{document}
\begin{lstlisting}
#include <fstream.h>
void main () {
fail
pass
}
\end{lstlisting}
\end{document}