强调或更多关键词没有任何效果

强调或更多关键词没有任何效果

我希望一些选定的(子)字符串作为关键字突出显示(或强调):

\documentclass{article}

\usepackage{filecontents}
\usepackage{listings}


\lstdefinestyle{MyStyle} {
    boxpos=c,%
    breaklines=true,%
    showlines=false,%
    numbers=left,   %numbers=none,%
    numberstyle=\tiny,%
    firstnumber=1,%
    numbersep=5pt,%
    showstringspaces=false,%
    frame=none,%frame=single,%
    basicstyle=\footnotesize\ttfamily,
    keywordstyle=\underline,%
    captionpos=b, %
    literate={<-}{{$\leftarrow{}$}}2,
    rangeprefix=\#\/\/\ ,
    rangesuffix=\ \/\/}

\begin{filecontents*}{src.code}
#// start //
A  <- `A` 'a' a:B;
B  <- `B` 'b' b:<alnum>;
#// end //
\end{filecontents*}

\begin{document}

\lstset{includerangemarker=false,
  style=MyStyle}
\lstinputlisting[linerange=start-end,alsoletter={:},morekeywords={A,B,a:,b:}]{src.code}

\end{document}

我就是搞错了。虽然在示例中,“A”、“B”、“b:”按预期标记(带下划线),但“a:”却没有。希望得到一些提示。

答案1

在列表中,关键字始终是一个完整的单词,因此是最大字母序列。 之后alsoletter={:}a:B是字母序列,不是关键字,因此它不会突出显示为关键字。 您可以通过避免 来解决这个问题alsoletter={:},然后:不再是字母,因此它可以用来分隔单词。 当然,此时您不能再使用morekeywords={a:,b:}。 该包为此目的\listings有一个特殊的键:包含包含非字母的关键字。otherkeywordsotherkeywords

例如:

\documentclass{article}
\usepackage{filecontents}
\usepackage{listings}

\begin{filecontents*}{src.code}
#// start //
A  <- `A` 'a' a:B;
B  <- `B` 'b' b:<alnum>;
#// end //
\end{filecontents*}

\begin{document}
\lstinputlisting[keywordstyle=\underline,morekeywords={A,B,a:,b:},otherkeywords={a:,b:}]{src.code}
\end{document}

在此处输入图片描述

相关内容