lstlisting:不要将 include-file 视为关键字

lstlisting:不要将 include-file 视为关键字

我正在编写一些 C++ 列表。我更希望使用更多关键字突出显示(例如cout,,,,, cerr等等endl)。但是,当我定义为关键字时,指令也会突出显示。ifstreamstringstring#include

\documentclass{scrartcl}

\usepackage{listings}
\usepackage{xcolor}

\begin{document}

\begin{lstlisting}[
   language=c++,
   keywordstyle=\color{red},
   morekeywords={string, cout, endl}
]
#include <string>
#include <iostream>

string s;
cout << s << endl;
\end{lstlisting}

\end{document}

结果是:

列表

我希望string后面的单词#include不被突出显示。

答案1

<string>您可以对文本部分使用例外。
这不是一个完美的解决方案,但它有效。我已将所有选项移至\lstset块中。

\documentclass{scrartcl}

\usepackage{listings}
\usepackage{xcolor}

\begin{document}

\lstset{
   language=c++,   
   mathescape,   
   morekeywords={string, cout, endl},keywordstyle=\color{red},
   morecomment=[l][\color{black}]{<string>}
}

\begin{lstlisting}
#include <string>
#include <iostream>

string s;
cout << s << endl;
\end{lstlisting}

\end{document}

相关内容