防止 LaTeX 列表突出显示部分单词

防止 LaTeX 列表突出显示部分单词

我正在定义自己的列表并遇到一个问题,即 LaTeX 突出显示单词中的单词 - 例如,如果 OR 是一个关键字,它会突出显示 ANIMATOR 中的 OR - 即使 ANIMATOR 本身是一个关键字(它会覆盖 ANIMATOR 突出显示)。

梅威瑟:

\documentclass{article}
\usepackage{listings, xcolor, courier}

\lstdefinelanguage{defFile}{
    morekeywords={FOOBAR, FOOBAE},
    otherkeywords={-,->,> ,BAR},
    morekeywords=[2]{-,->,>,;},
    morekeywords=[3]{BAR}
}

\lstdefinestyle{defFile}
{   
    \lstset{
            language = {defFile},
            basicstyle = \small\ttfamily,
            keywordstyle = \bfseries\color{purple},
            keywordstyle = [2]{\color{green}},
            keywordstyle = [3]{\color{blue}}
            }
}
\begin{document}

\begin{lstlisting}[style={defFile}]
FOOBAR -> FOO, BAR
FOOBAE -> FOO, BAE
\end{lstlisting}


\end{document}

其结果是:

在此处输入图片描述

请注意,由于随后将 BAR 定义为关键字,FOOBAR 不再突出显示。

答案1

您的示例无法编译。您不能\lstset在样式定义中使用。除此之外:不要在中重复您的关键字otherkeywords

\documentclass{article}
\usepackage{listings, xcolor, courier}

\lstdefinelanguage{defFile}{
    morekeywords={FOOBAR, FOOBAE},
    otherkeywords={-,->,>},
    morekeywords=[2]{-,->,>,;},
    morekeywords=[3]{BAR}
}

\lstdefinestyle{defFile}
{
            language = {defFile},
            basicstyle = \small\ttfamily,
            keywordstyle = \bfseries\color{purple},
            keywordstyle = [2]{\color{green}},
            keywordstyle = [3]{\color{blue}}
}
\begin{document}

\begin{lstlisting}[style={defFile}]
FOOBAR -> FOO, BAR
FOOBAE -> FOO, BAE
\end{lstlisting}


\end{document}

在此处输入图片描述

相关内容