我正在尝试使用以下设置向现有语言添加一些关键字morekeywords
:
\documentclass[12pt]{article}
\usepackage{color}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{listings}
\definecolor{lightgray}{rgb}{0.98,0.98,0.98}
\renewcommand{\ttdefault}{pcr}
\lstset {
language=xml,
basicstyle={\footnotesize\ttfamily},
numbers=none,
backgroundcolor=\color{lightgray},
aboveskip=3mm,
belowskip=3mm,
showstringspaces=false,
columns=flexible,
keywordstyle={\bfseries\color{Blue}},
commentstyle={\color{Red}\textit},
stringstyle=\color{Magenta},
frame=single,
breaklines=true,
breakatwhitespace=true,
tabsize=4,
morekeywords={rdf,rdfs,owl} % <-- adding custom keywords
}
\begin{document}
\begin{lstlisting}
<owl:Class rdf:ID="Band">
<owl :Class rdf :ID="Band">
\end{lstlisting}
\end{document}
给我
当有尾随冒号时,关键字owl
和rdf
无法被识别。但是,内置关键字没有问题(C 示例):
有什么解决办法吗?
答案1
冒号是命名空间指示器,XML
因此这种行为其实并没有错!如果您在 gedit 中打开此 xml,您将看到 GTK 语法高亮器完全相同!:
但你可以做一些小改动!如果你添加:
分隔符,你就可以实现你想要的。请注意,我既不是列表专家也不是 xml 专家,所以我不确定这是最好的解决方案:
\documentclass[12pt]{article}
\usepackage{color}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{listings}
\definecolor{lightgray}{rgb}{0.98,0.98,0.98}
\renewcommand{\ttdefault}{pcr}
\lstset {
language=xml,
basicstyle={\footnotesize\ttfamily},
numbers=none,
backgroundcolor=\color{lightgray},
aboveskip=3mm,
belowskip=3mm,
showstringspaces=false,
columns=flexible,
keywordstyle={\bfseries\color{Blue}},
commentstyle={\color{Red}\textit},
stringstyle=\color{Magenta},
frame=single,
breaklines=true,
breakatwhitespace=true,
tabsize=4,
morekeywords={rdf,rdfs,owl},
moredelim=*[s][\ttfamily]{:}{:} %Newly added line
}
\begin{document}
\begin{lstlisting}
<owl:Class rdf:ID="Band">
<owl :Class rdf :ID="Band">
\end{lstlisting}
\end{document}
由此产生了如下结果: