将类似运算符添加到列表中

将类似运算符添加到列表中

我正在尝试使用运算符=>和创建一个新的语言定义>

突出显示两者=>>似乎不起作用。

我尝试过otherkeywords按两种顺序输入它们。但似乎都没有用。

在下面的代码中,只有>被突出显示。是否可以让它们都突出显示?

谢谢

\documentclass[a4]{report}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{listings}

\definecolor{backcolour}{RGB}{242,242,0235}
\definecolor{codegray}{RGB}{128,128,128}
\definecolor{codeOrange}{RGB}{254, 97, 0}
\definecolor{codeBlue}{RGB}{100, 143, 255}

\lstdefinestyle{newStyle}{
    backgroundcolor=\color{backcolour},   
    commentstyle=\color{codeBlue},
    keywordstyle=[0]\color{codeBlue},
    keywordstyle=[1]\color{codeBlue},
    keywordstyle=[2]\color{codeBlue},
    keywordstyle=[3]\color{codeBlue},
    numberstyle=\tiny\color{codegray},
    stringstyle=\color{codeOrange},
    basicstyle=\ttfamily,
    breakatwhitespace=false,         
    breaklines=true,                 
    captionpos=b,                    
    keepspaces=true,                                                 
    showspaces=false,                
    showstringspaces=false,
    showtabs=false,                  
    tabsize=4
}

\lstdefinelanguage{newLanguage}{
    keywords={type,def,True,False},
    otherkeywords={!,\$,|,<,[,],::,=>,>},
    otherkeywords={>},
    sensitive=true,
    morecomment=[l]{//},
    morecomment=[n]{/*}{*/},
    morestring=[b]",
    morestring=[b]"""
}


\begin{document}
\begin{lstlisting}[language=newLanguage,style=newStyle]
a = [1,>,2]
b => c
\end{lstlisting}

\end{document}

答案1

otherkeywords目前,如果同一字符出现在不同的关键字中,则对该选项的支持“有点问题”(另见这个问题)。

您可以检查不同关键字列表的行为:

otherkeywords={!,\$,|,<,[,],::,>}

在此处输入图片描述

otherkeywords={!,\$,|,<,[,],::,=>}

在此处输入图片描述

这些都是正确的。但是一旦你添加两者,事情就出错了:

otherkeywords={!,\$,|,<,[,],::,=>,>}

在此处输入图片描述

作为一种解决方法,您可以使用该literate选项来明确设置所有文字出现的样式=>

otherkeywords={!,\$,|,<,[,],::,>},
literate={=>}{{\textcolor{codeBlue}{=}}{\textcolor{codeBlue}{>}}}{2}

在此处输入图片描述

这种方法的缺点是=>将在所有地方替换,因此像这样的操作==>将显得不正确。

相关内容