C 代码列表的多行宏语法突出显示中断

C 代码列表的多行宏语法突出显示中断

使用listingscolor包,我可以很容易地在 C 代码列表中获得语法高亮显示:

\documentclass{article}
\usepackage[usenames,dvipsnames]{color}  %% Allow color names
\usepackage{listings}
\lstdefinestyle{customasm}{
  language=C,
  basicstyle=\footnotesize\ttfamily,
  commentstyle=\itshape\color{Gray},
  stringstyle=\color{Black},
  keywordstyle=\bfseries\color{OliveGreen},
  identifierstyle=\color{blue},
  showstringspaces=false
}        

\begin{document}

\lstinputlisting[style=customasm]{sample.c}

\end{document}

但是,在像我这里得到的多行预处理器指令之后,语法突出显示会中断:

/* comment with
 * multiple lines */

#define MACRO1 "single line here"
#define MACRO2 "multiple \
 lines"
#define MACRO3 "syntax highlighting broken from here on :("

int main(void) {
    return 0;
}

以下是 的输出pdflatex。请注意,第三个define(以及它之后的所有内容)未突出显示:

破碎样本

请注意,对于跨越宏外部的多行字符串文字,不会发生相同的情况:

无破损样品

有没有办法在不修改 C 代码文件的情况下修复这个问题?

相关内容