如何创建一个列表语言来处理以逗号和分号分隔的列表。
想要突出显示关键字“STOP、START、ATTEMPT”以及“,,:”(实际逗号和分号)
我迄今为止的尝试
\definecolor{eclipseBlue}{RGB}{42,0.0,255}
\definecolor{eclipseGreen}{RGB}{63,127,95}
\definecolor{eclipsePurple}{RGB}{127,0,85}
\lstdefinelanguage{flatfile}{
morekeywords={STOP, START, ATTEMPT, INTERMEDIATE},
morekeywords=[2]{\,}, % Actual comma
morekeywords=[3]{:},
sensitive=false,
}
\lstset{
language={flatfile},
[..]
keywordstyle=\color{eclipsePurple},
keywordstyle =[2]\color{eclipseGreen},
keywordstyle =[3]\color{eclipseBlue},
}
\begin{lstlisting}[caption={Partial CDR STOP Record}]
STOP,YF08,0x00015F3800000002,1919632,GMT+05:30-Calcutta,04/12/2019,09:57:21.7,0,67,73,04/12/2019,09:57:32.5,2,1006,16,VoIP,IP-TO-IP,DEFAULT,,22223333,44445555,,0,,0,,0,22223333,EGRESS_RL,1,YF08:EGRESS_TG,[..]
\end{lstlisting}
答案1
这似乎相当棘手,让我有点困惑,因为逗号、冒号和常规关键字似乎都需要以非常不同的方式处理。
首先,逗号和冒号需要使用 来定义,otherkeywords
因为它们不是字母。但是,使用 时无法为它们分配特定颜色otherkeywords
。此外,似乎otherkeywords
只有在调用 时morekeywords
没有可选参数时才能定义。也许我错了,但这就是我发现的。因此,我决定为eclipseGreen
关键字设置默认颜色,然后将其应用于 中定义的字符串otherkeywords
。
其次,我应用eclipsePurple
了常规关键词。
最后,我再次用morekeywords
第三种颜色定义了冒号,效果非常好(另见这个答案)。然而,这似乎只有在冒号先前定义为 时才有可能otherkeywords
。但这个技巧对逗号仍然不起作用。
也许其他人可以解释发生了什么。无论如何,常规关键字现在变成紫色,逗号变成绿色,冒号变成蓝色,希望这就是您想要的。
\documentclass{article}
\usepackage{listings, xcolor}
\definecolor{eclipseBlue}{RGB}{42,0.0,255}
\definecolor{eclipseGreen}{RGB}{63,127,95}
\definecolor{eclipsePurple}{RGB}{127,0,85}
\lstdefinelanguage{flatfile}{
morekeywords={},
otherkeywords={{,},:},
morekeywords=[2]{STOP,START,ATTEMPT,INTERMEDIATE},
morekeywords=[3]{:},
sensitive=false,
}
\lstset{
language={flatfile},
keywordstyle=\color{eclipseGreen},
keywordstyle=[2]\color{eclipsePurple},
keywordstyle=[3]\color{eclipseBlue},
breaklines
}
\begin{document}
\begin{lstlisting}[caption={Partial CDR STOP Record}]
STOP,YF08,0x00015F3800000002,1919632,GMT+05:30-Calcutta,04/12/2019,09:57:21.7,0,67,73,04/12/2019,09:57:32.5,2,1006,16,VoIP,IP-TO-IP,DEFAULT,,22223333,44445555,,0,,0,,0,22223333,EGRESS_RL,1,YF08:EGRESS_TG
\end{lstlisting}
\end{document}