带列表的 XML:属性和元素有不同的颜色

带列表的 XML:属性和元素有不同的颜色

我怎样才能使每个属性名称都采用颜色 X 并且每个元素名称都采用颜色 Y 而不添加关键字和内容?

我目前所做的:

\lstdefinelanguage{myXML}
{
    morestring=[b]",
    morecomment=[s]{<?}{?>},
    morekeywords={
        name,
        type,
        targetNamespace,
        element,
        xmlns,
        xsd,
        s0,
        soap,
        http
    }
}

\lstdefinestyle{xmlStyle}{
    language=myXML,
    stringstyle=\color{mygreen},
    identifierstyle=\color{blue},
    keywordstyle=\color{mymauve},
}

其结果如下:

在此处输入图片描述

如您所见,一些元素名称(如 xsd:something)是淡紫色而不是蓝色,因为它们同时作为元素和属性名称出现。和binding相同element

答案1

似乎使用 listings-package 无法解决这个问题。根据 @Marco Daniel 的建议,我改用了 minted-package,效果非常好。

安装很复杂,但这里的说明对我有帮助。

如何在 Windows 7 上安装语法高亮包?

所有这些说明缺少什么:安装完所有内容后您需要重新启动(至少对我来说是这样的)。

如果你使用 TeXlipse(像我一样)并想添加-shell-escape标志

Rightclick on Project > Properties > Latex Project Properties > Setup build tools... >
Select 'PdfLatex program' > Edit > Insert '-shell-escape' somewhere before '%input'

此后您就可以实际使用 minted 了。

我将其放在开头的某个地方(序言),以形成可重复使用的 xml 样式

\newminted[xml]{xml}{
    bgcolor = mygray,
    fontfamily = tt,
    fontsize = \scriptsize,
    gobble = 1,
    samepage
}

在我的实际内容中我嵌入了如下 XML

\begin{listing}[!ht]
  \begin{xml}
    <element attribute="value" />
  \end{xml}
  \caption[Test]{Just a test caption}
  \label{lst:test}
\end{listing}

列表环境是为了稍后引用这段代码。如果你正在使用,\autoref{}你可能会发现这很有用

\providecommand*{\listingautorefname}{Listing}

感谢 Marco Daniel 向我展示 minted-package :)

相关内容