使用 lstlistings 进行 LaTeX 代码格式化:无法识别自定义关键字

使用 lstlistings 进行 LaTeX 代码格式化:无法识别自定义关键字

我正在尝试使用以下设置向现有语言添加一些关键字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}

给我

在此处输入图片描述

当有尾随冒号时,关键字owlrdf无法被识别。但是,内置关键字没有问题(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}

由此产生了如下结果:

在此处输入图片描述

相关内容