我正在尝试使用运算符=>
和创建一个新的语言定义>
。
突出显示两者=>
但>
似乎不起作用。
我尝试过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}
这种方法的缺点是=>
将在所有地方替换,因此像这样的操作==>
将显得不正确。