包含字母和数字的关键字列表

包含字母和数字的关键字列表

我有一个列表,需要用字母和数字突出显示关键字。按照这个问题我使用了 来otherkeywords定义包含数字的关键字。这适用于仅包含字母的关键字(例如FOO)和仅包含数字的关键字(例如1234),但不适用于同时包含字母和数字的关键字(例如1234FOO)。

以下是一个示例文档:

\documentclass[12pt]{article}

\usepackage{xcolor}
\usepackage{listings}

\renewcommand{\ttdefault}{pcr}

\definecolor{Black}{gray}{0.0}
\definecolor{Blue}{rgb}{0.12,0.29,0.53}

\lstset{
  basicstyle=\color{Black}\ttfamily, %
  keywordstyle=[1]\color{Blue}\ttfamily\bfseries, %
}

\lstdefinelanguage{mylang}{ %
  keywords={FOO,BAR,BAZ,ARG}, %
  otherkeywords={1234,XYZ1234,XYZ1234HelloWorld}, %
}

\begin{document}
\begin{lstlisting}[numbers=none,breaklines=true,caption={},language=mylang]
FOO
BAR
BAZ
ARG
1234
XYZ1234
XYZ1234HelloWorld
\end{lstlisting}
\end{document}

生成的 PDF 如下所示:

由上述 LaTeX 生成的 PDF

在此示例中,关键字XYZ1234XYZ1234HelloWorld应该突出显示,但前三个字母(XYZ)与关键字的其余部分样式不一致。我如何更改语言定义以使突出显示一致?

答案1

这里最简单的做法是将所有数字声明为“字母”,并keywords仅用键定义所有关键字,otherkeywords完全避开键:

在此处输入图片描述

\documentclass[12pt]{article}

\usepackage{xcolor}
\usepackage{listings}

\renewcommand{\ttdefault}{pcr}

\definecolor{Black}{gray}{0.0}
\definecolor{Blue}{rgb}{0.12,0.29,0.53}

\lstset{
  basicstyle=\color{Black}\ttfamily, %
  keywordstyle=[1]\color{Blue}\ttfamily\bfseries, %
}

\lstdefinelanguage{mylang}{ %
  alsoletter=0123456789,
  keywords={FOO,BAR,BAZ,ARG,1234,XYZ1234,XYZ1234HelloWorld}, %
}

\begin{document}
\begin{lstlisting}[numbers=none,breaklines=true,caption={},language=mylang]
FOO
BAR
BAZ
ARG
1234
XYZ1234
XYZ1234HelloWorld
\end{lstlisting}
\end{document}

相关内容