![带列表的 XML:属性和元素有不同的颜色](https://linux22.com/image/268370/%E5%B8%A6%E5%88%97%E8%A1%A8%E7%9A%84%20XML%EF%BC%9A%E5%B1%9E%E6%80%A7%E5%92%8C%E5%85%83%E7%B4%A0%E6%9C%89%E4%B8%8D%E5%90%8C%E7%9A%84%E9%A2%9C%E8%89%B2.png)
我怎样才能使每个属性名称都采用颜色 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,效果非常好。
安装很复杂,但这里的说明对我有帮助。
所有这些说明缺少什么:安装完所有内容后您需要重新启动(至少对我来说是这样的)。
如果你使用 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 :)