列表中的彩色花括号

列表中的彩色花括号

我想更改列表中某些部分代码的颜色。这是我尝试过的 MWE:

\lstdefinestyle{mystyle}
  {escapechar=\%}
\lstset{style=mystyle}
\lstinputlisting{Pro/Code.java}

内部Pro/Code.java

公共静态int foo(String s1)
{
 %\color{浅灰色}{int M = s1.length();}%
  ... // 其他内容将不会突出显示
}

现在,我正在努力改变{和的颜色},这似乎与宏中的{(或)冲突。解决方案是什么?}%\color{light-gray}{....}%"

答案1

由于您要转为 LaTeX,因此您需要转义{}(如\{\})才能明确打印它们。

在此处输入图片描述

\documentclass{article}

\usepackage{listings,xcolor}

\lstdefinestyle{mystyle}
    {escapechar=\%}
\lstset{style=mystyle}

\begin{document}

\begin{lstlisting}
public static int foo(String s1)
{
 %\color{black!50}\{ int M = s1.length();\}%
  ... // other stuff won't be highlighted
}
\end{lstlisting}

\end{document}

答案2

您不应该使用转义字符来突出显示代码的各个部分,因为特殊字符需要手动转义,并且文本的对齐方式与清单其余部分的对齐方式不一致(另请参阅对齐列表中的转义文本)。

相反,你可以定义一个新的分隔环境

moredelim=[is][\color{gray}]{\%}{\%}

它将像平常一样解析文本,%...%但将文本应用灰色。i使分隔字符不可见。

完整示例:

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

\lstdefinestyle{mystyle}{
    moredelim=[is][\color{gray}]{\%}{\%}
}
\lstset{
    style=mystyle,
    basicstyle=\ttfamily
}

\begin{document}
\begin{lstlisting}
public static int foo(String s1)
{
 %{int M = s1.length();}%
  ... // other stuff won't be highlighted
}
\end{lstlisting}
\end{document}

输出

在此处输入图片描述

相关内容