Listings 拒绝突出显示诸如“intent–filter”之类的标识符。为什么?

Listings 拒绝突出显示诸如“intent–filter”之类的标识符。为什么?

我有一些 xml 代码,希望它们在我的 latexdocument 中看起来不错。我这样做:

\documentclass[12pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[none]{hyphenat}
\usepackage{helvet}
\usepackage{url}
\usepackage{graphicx}
\usepackage[onehalfspacing]{setspace}
\renewcommand{\familydefault}{\sfdefault}
\DeclareGraphicsExtensions{.png}
\usepackage{textcomp}
\usepackage{listings}
\usepackage{color}



\lstset{
basicstyle=\fontsize{12}{12},
columns=fullflexible,
showstringspaces=false,
breaklines=true,
showstringspaces=false,
identifierstyle=\ttfamily,
stringstyle =\color[rgb]{0,0,1}\ttfamily,
commentstyle=\color[rgb]{0.133,0.545,0.133}\ttfamily,
keywordstyle=\color[RGB]{49,0,171}\ttfamily,
emph= {action,intent–filter,category, receiver, application, activity, manifest},
emphstyle={\color[RGB]{63,127,127}},alsoletter={-},
}



\begin{document}

\tableofcontents
\newpage

 \begin{lstlisting} [language=xml] 
<intent-filter>

  </intent-filter>
\end{lstlisting}   

\结束{文档}

我将其用于 java 和 xml。它看起来不错,但“intent-filter”仍然是黑色,其他关键字(我在这里删除了它)变为绿色。使用“intentfilter”可以,但必须是“intent-filter”。我该怎么做?

答案1

默认情况下,listings不允许-在标识符中使用连字符。您必须使用 明确告知它这样做alsoletter=-。此修改应进行加载所需的语言,因为该alsoletter键(通常)用于listings' 语言定义。因此,太晚加载语言可能会覆盖您之前的alsoletter规范。

下列应该工作:

\begin{lstlisting}[language=xml,alsoletter=-]
<intent-filter><xyz>blablabla</xyz></intent-filter>
\end{lstlisting}

在此处输入图片描述

应该但事实并非如此。为什么?因为,在

emph= {action,intent–filter,category, receiver, application, activity, manifest}

字符是短划线字符 (U+2013),而在您的列表中,您使用连字符(U+002D)这两个角色在你看来只是相似,却listings视之为两个截然不同的人物。

如果您始终使用连字符,内容就会按预期突出显示。

在此处输入图片描述

\documentclass[12pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[none]{hyphenat}
\usepackage{helvet}
\usepackage{url}
\usepackage{graphicx}
\usepackage[onehalfspacing]{setspace}
\renewcommand{\familydefault}{\sfdefault}
\DeclareGraphicsExtensions{.png}
\usepackage{textcomp}
\usepackage{listings}
\usepackage{color}

\lstset{
basicstyle=\fontsize{12}{12},
columns=fullflexible,
showstringspaces=false,
breaklines=true,
showstringspaces=false,
identifierstyle=\ttfamily,
stringstyle =\color[rgb]{0,0,1}\ttfamily,
commentstyle=\color[rgb]{0.133,0.545,0.133}\ttfamily,
keywordstyle=\color[RGB]{49,0,171}\ttfamily,
emph= {action,intent-filter,category, receiver, application, activity, manifest},
emphstyle={\color[RGB]{63,127,127}},alsoletter={-},
}

\begin{document}

\begin{lstlisting}[language=xml,alsoletter=-]
<intent-filter><xyz>blablabla</xyz></intent-filter>
\end{lstlisting}

\end{document}

相关内容