lstlisting 内有各种 \textcolor?

lstlisting 内有各种 \textcolor?

如何将列表中的各种单词设置为不同的文本颜色?

例如,我希望“失败”一词以红色显示,而“通过”一词以绿色显示。

我感觉应该有一些简单的逃脱可能性!?

什么没有奏效

我尝试使用参数

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}

在此处输入图片描述

相关内容