如何根据关键字的前缀应用不同的样式?
以下是一些示例代码:
(-2,0,0) (2,1,1) op-registerbox !box1
;box1 /Blue op-setproperties
我想排版
- 以红色开头
!
且;
颜色为红色的单词, /
以绿色开头的单词,- 以 粗体 开头的单词
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}