我想更改列表中某些部分代码的颜色。这是我尝试过的 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}
输出