列表:根据前缀突出显示文本

列表:根据前缀突出显示文本

如何根据关键字的前缀应用不同的样式?

以下是一些示例代码:

(-2,0,0) (2,1,1) op-registerbox !box1
;box1 /Blue op-setproperties

我想排版

  1. 以红色开头!;颜色为红色的单词,
  2. /以绿色开头的单词,
  3. 以 粗体 开头的单词cp-

到目前为止,这就是我所得到的:

\lstdefinelanguage{XX}
{
basicstyle=\small\sffamily\fontseries{c},
emphstyle=\underbar,
keywordsprefix=[2]{/},
alsoletter={/},
keywordstyle=\textbf,
keywordstyle=[2]\color{green},
morekeywords={op,registerbox, ...},
morestring=[b][\color{green}]",
columns=flexible,
escapechar=\%,
numbersep=6pt,
numberstyle=\scriptsize
}

我知道keywordsprefix目前只能定义一个:目前不支持指定多个前缀类(keywordsprefix=[2]{/})。我想避免将所有符合我的描述的单词都列在里面morekeywords。这可能吗?怎么做?

答案1

以下是使用的方法moredelim。我以为你的意思是以...开头的单词op-, 不是以...开头的单词cp-。我没有使用,keywordsprefix因为它目前只允许一个前缀“class”,并且listings文档(v1.5b)仍然认为它是一个有缺陷的功能;请参阅第 4.18 节有关该内容的内容。

lmodern如果您希望某些内容以粗体打字机字体排版,请记得加载。

在此处输入图片描述

\documentclass{article}

\usepackage[dvipsnames]{xcolor}
\usepackage{lmodern}
\usepackage{listings}

\lstdefinelanguage{XX}
{
basicstyle=\small\sffamily\fontseries{c},
morestring=[b][\color{green}]",
%
moredelim=[s][\color{red}]{!}{\ },
moredelim=[s][\color{red}]{;}{\ },
moredelim=[s][\color{ForestGreen}]{/}{\ },
moredelim=[s][\bfseries]{op-}{\ },
%
columns=flexible,
escapechar=\%,
numbersep=6pt,
numberstyle=\scriptsize
}

\begin{document}

\begin{lstlisting}[language=XX]
(-2,0,0) (2,1,1) op-registerbox !box1
;box1 /Blue op-setproperties
\end{lstlisting}

\end{document}

相关内容