LaTeX lstlisting 的字符文字样式

LaTeX lstlisting 的字符文字样式

众所周知,我们可以通过使用来指定string文字的样式,但是在我的代码的某些部分,我有文字(即当我有一些字符串时)。而这些不会被解释为字符串(这实际上很好)。所以我想给它们上色。假设字符串是绿色的,所以我想将这些字符文字涂成红色/橙色(有点像在 Visual Studio 中)。lstlistingstringstyle=character.Split()

所以我的问题是:有没有办法为 lstlisting 中的那些字符文字着色,即这一行:

var foo = bar.Split(')');

会得到')'颜色的部分吗?

答案1

我假设你正在使用 C 语言,因此下面的代码可能会完成这项工作

\documentclass{article}
\usepackage{listings}
\lstset{breaklines = true, frame = trBL, tabsize = 4, basicstyle = \small \ttfamily, keywordstyle = \color{blue}, stringstyle = \color{red}, rulecolor = \color{black}}
\usepackage[usenames, dvipsnames]{color}

\begin{document}

\begin{lstlisting}[language = C]
var foo = bar.Split(')');
\end{lstlisting}

\end{document}

这将产生

细绳

答案2

listings仅支持单个stringstyle值,即使已经定义了不同的字符串类型。如果要定义具有不同样式的新字符串类型,可以使用选项的可选参数morestring

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}

\lstset{
    string = [d]{"},
    stringstyle = {\color{blue}},
    morestring = [d][\color{orange}]{'}
}

\begin{document}
\begin{lstlisting}
var bar = "foo(bar)baz";
var foo = bar.Split(')');
\end{lstlisting}
\end{document}

输出

在此处输入图片描述

[d]这里定义了一个字符串,其开始和结束分隔符相同('),并且[\color{orange}]是要应用于新字符串类型的样式。

相关内容