我的设置有点问题。我无法找到错误,需要一些额外的眼睛来告诉我应该在哪里查看。我使用列表来显示我的 c++ 代码,但当我尝试添加其他关键字时,它们没有突出显示。以下是设置:
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{dred}{rgb}{0.545,0,0}
\definecolor{dblue}{rgb}{0,0,0.545}
\definecolor{lgrey}{rgb}{0.9,0.9,0.9}
\definecolor{gray}{rgb}{0.4,0.4,0.4}
\definecolor{darkblue}{rgb}{0.0,0.0,0.6}
\lstset{
backgroundcolor=\color{lgrey},
basicstyle=\footnotesize \ttfamily \color{black} \bfseries,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
commentstyle=\color{dkgreen},
deletekeywords={...},
escapeinside={\%*}{*)},
frame=single,
keywordstyle=\color{purple},
morekeywords={BRIEFDescriptorConfig,string,TiXmlNode,DetectorDescriptorConfigContainer,istringstream,cerr,exit},
identifierstyle=\color{black},
stringstyle=\color{blue},
language=C++,
numbers=right,
numbersep=5pt,
numberstyle=\tiny\color{black},
rulecolor=\color{black},
showspaces=false,
showstringspaces=false,
showtabs=false,
stepnumber=1,
tabsize=5,
title=\lstname,
}
所以我想没什么特别的。这是一个使用列表的最小示例:
\begin{lstlisting}[language={C++},caption={Caption}]
void XMLDetDecConfigReader::handleDescriptors(DetectorDescriptorConfigContainer* configContainer, TiXmlNode* descriptorsNode);
\end{lstlisting}
我不想使用任何其他包,只想解决这个突出显示问题。
感谢您的帮助。
答案1
输出
C++
如果您要在文档中排版除 之外的其他语言代码,我会听取 Sašo Živanović 的建议,定义您自己的方言C++
。如果不是,那么请在language=C++,
之前写入,然后从可选参数中省略。您也可以通过命令执行此操作以彰显自己的风格。keywordstyle=\color{purple},
\lstset
language={C++}
C++
\lstdefinelanguage
这里有一个最小工作示例(MWE)从您的代码片段中完成。(下次请发布 MWE。)
代码
%http://tex.stackexchange.com/questions/99455/keyword-highlighting-of-c-using-listing#99455
\documentclass[preview,border=5]{standalone}
%\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{dred}{rgb}{0.545,0,0}
\definecolor{dblue}{rgb}{0,0,0.545}
\definecolor{lgrey}{rgb}{0.9,0.9,0.9}
\definecolor{gray}{rgb}{0.4,0.4,0.4}
\definecolor{darkblue}{rgb}{0.0,0.0,0.6}
\lstdefinelanguage{cpp}{
backgroundcolor=\color{lgrey},
basicstyle=\footnotesize \ttfamily \color{black} \bfseries,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
commentstyle=\color{dkgreen},
deletekeywords={...},
escapeinside={\%*}{*)},
frame=single,
language=C++,
keywordstyle=\color{purple},
morekeywords={BRIEFDescriptorConfig,string,TiXmlNode,DetectorDescriptorConfigContainer,istringstream,cerr,exit},
identifierstyle=\color{black},
stringstyle=\color{blue},
numbers=right,
numbersep=5pt,
numberstyle=\tiny\color{black},
rulecolor=\color{black},
showspaces=false,
showstringspaces=false,
showtabs=false,
stepnumber=1,
tabsize=5,
title=\lstname,
}
\begin{document}
\begin{lstlisting}[language=cpp,caption={Caption}]
void XMLDetDecConfigReader::handleDescriptors(DetectorDescriptorConfigContainer* configContainer, TiXmlNode* descriptorsNode);
\end{lstlisting}
\end{document}
答案2
您要做的是定义要使用的样式,然后通过language={C++}
在环境中指定来有效地撤消您的指定。要么language=...
从可选参数中省略,要么甚至更好,定义您自己的方言C++
。