我正在尝试更改列表中文本的颜色。我使用了分隔符,但它们似乎删除了缩进。
这是我的设置:
\usepackage{listings}
\usepackage{color}
\definecolor{javared}{rgb}{0.6,0,0} % for strings
\definecolor{javagreen}{rgb}{0.25,0.5,0.35} % comments
\definecolor{javapurple}{rgb}{0.5,0,0.35} % keywords
\definecolor{javadocblue}{rgb}{0.25,0.35,0.75} % javadoc
\lstset{language=Java,
basicstyle=\small\ttfamily,
frame=single,
breaklines=true,
columns=fullflexible,
keywordstyle=\color{javapurple}\bfseries,
stringstyle=\color{javared},
commentstyle=\color{javagreen},
morecomment=[s][\color{javadocblue}]{/**}{*/},
tabsize=4,
showspaces=false,
showstringspaces=false,
escapeinside={(*@}{@*)},
moredelim=[il][\textcolor{pyellow}]{$$},
moredelim=[is][\textcolor{pgrey}]{\%\%}{\%\%},
moredelim=[is][\color{red}]{|}{|},
moredelim=[is][\color{green}]{#}{#}
}
\begin{lstlisting}
|+ THIS SHOULD BE GREEN|
#- THIS SHOULD BE RED#
\end{lstlisting}
这是缺少缩进的输出:
我的设置正确吗?有什么方法可以保留缩进或插入缩进吗?
答案1
除了间距问题之外,请注意#
LaTeX 中的字符具有特殊含义,因此在用作列表分隔符时需要转义。因此,您的最后一个分隔符定义应为
moredelim=[is][\color{green}]{\#}{\#}
缺少空格的原因是使用了选项columns=fullflexible
。对于列对齐,listings
有四个选项,分别是fixed
、flexible
和。它们之间的区别在 2.10 节中进行了描述spaceflexible
fullflexible
listings
手动的。
对于较长的等宽列表,您可能希望使用fixed
或flexible
格式。下图显示了四个选项对您的示例的影响: