我在使用 lstlistings 包时遇到了问题。我需要创建自己的语言定义,其中有关键字“test”,但也需要在某个特定位置转义关键字突出显示,该位置是名称“variable test”的一部分。我设置了一个分隔符,但它没有按我预期的那样工作。“test”仍然被突出显示为关键字。我已经尝试使用不可见的分隔符,但结果相同。
\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{color}
\usepackage{listings}
\lstdefinelanguage{script}{
keywords={test,
},
morecomment=[s]{'}{'},
morestring=[b]",
sensitive=false,
}
\lstdefinestyle{default}{
inputencoding=utf8,
extendedchars=\true,
backgroundcolor=\color[HTML]{FEFDFF},
breaklines=true,
frame=single,
keepspaces=true,
keywordstyle=\color{blue},
commentstyle=\color{orange}\emph,
numbers=left,
breakatwhitespace=false,
moredelim=[s][basicstyle]{variable}{test},
}
\begin{document}
\begin{lstlisting}[style=default,language=script]
variable test
\end{lstlisting}
\end{document}
附言:我基本上只是用下划线替换了空格。这不是最优雅的解决方案,但它有效。