lstlisting:像编辑器一样突出显示 C++ 的语法?

lstlisting:像编辑器一样突出显示 C++ 的语法?

我想在我的论文中插入一些 C++ 代码,我尝试了很多选项来使代码在我的编辑器中看起来像这样。以下是我目前所做的:

\usepackage{listings}
\usepackage{color}

\definecolor{mygray}{rgb}{0.4,0.4,0.4}
\definecolor{mygreen}{rgb}{0,0.8,0.6}
\definecolor{myorange}{rgb}{1.0,0.4,0}

\lstset{
basicstyle=\footnotesize\sffamily\color{black},
commentstyle=\color{mygray},
frame=single,
numbers=left,
numbersep=5pt,
numberstyle=\tiny\color{mygray},
keywordstyle=\color{mygreen},
showspaces=false,
showstringspaces=false,
stringstyle=\color{myorange},
tabsize=2
}

以下是一段代码:

\begin{lstlisting}[language=C++]{Name=test2}
/*
 * Project: ATFOC -> Autonomous Trainer For Object Classification
 * Name:    Main.cc 
 * Autor:   Bla Blub
 * Date:    03.09.2013
 * Description: main class for 
 *          1) executing a web search for images and store them
 *          2) and image comparison to filter good from bad samples
 */

#include "stdafx.h"

#include "WebSearch.h"
#include "ImageComparison.h"

using namespace std;

#define NUMBER_OF_IMAGES 50 // default
#define NUMBER_OF_QUERIES 3 // default

int main(int argc, char** argv)
{
    vector<string> input_vector;
    string input;

    uint i;

 \end{lstlisting}

您可以看到它的样子:

好的,现在我的问题是预处理器指令与其他关键字一样有颜色,我的问题是:我该如何改变它?

另一个问题是基本数据类型(int、char...)与标准关键字(for、else、return...)具有相同的颜色,我该如何改变它?

如果有任何解决方案,请提前致谢。

编辑:如果可能的话,我还希望彩色单词带有阴影或以某种方式加边框(我的意思是字母有一个细的黑色边框并填充相应的颜色)以使它们更好地可见。

答案1

对于指令样式,使用directivestyle

emph对于 C++ 类型,您可以通过用强调并使用设置样式来改变颜色emphstyle

\begin{lstlisting}[language=C++,
                   directivestyle={\color{black}}
                   emph={int,char,double,float,unsigned},
                   emphstyle={\color{blue}}
                  ]
% ...
\end{lstlisting}

相关内容