列表分隔符删除缩进

列表分隔符删除缩进

我正在尝试更改列表中文本的颜色。我使用了分隔符,但它们似乎删除了缩进。

这是我的设置:

\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有四个选项,分别是fixedflexible和。它们之间的区别在 2.10 节中进行了描述spaceflexiblefullflexiblelistings手动的

对于较长的等宽列表,您可能希望使用fixedflexible格式。下图显示了四个选项对您的示例的影响:

在此处输入图片描述

相关内容