![LaTeX lstlisting 的字符文字样式](https://linux22.com/image/389161/LaTeX%20lstlisting%20%E7%9A%84%E5%AD%97%E7%AC%A6%E6%96%87%E5%AD%97%E6%A0%B7%E5%BC%8F.png)
众所周知,我们可以通过使用来指定string
文字的样式,但是在我的代码的某些部分,我有文字(即当我有一些字符串时)。而这些不会被解释为字符串(这实际上很好)。所以我想给它们上色。假设字符串是绿色的,所以我想将这些字符文字涂成红色/橙色(有点像在 Visual Studio 中)。lstlisting
stringstyle=
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}]
是要应用于新字符串类型的样式。