列表列表中的平面文件逗号和分号突出显示?

列表列表中的平面文件逗号和分号突出显示?

如何创建一个列表语言来处理以逗号和分号分隔的列表。

想要突出显示关键字“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}

在此处输入图片描述

相关内容