从标记中剥离控制字符

从标记中剥离控制字符

我已向 lstlisting 添加了一个钩子,用于进行一些特殊突出显示。现在,我可以很好地突出显示以 % 为前缀的变量,但我想以另一种方式处理特殊情况“%this”。

不幸的是,当 lstlisting 找到一个后跟逗号的关键字时,它给了我this\unhbox \voidb@x \kern \z@一个很难解析的结果。本质上我只需要检查它是否是一个“this”关键字,但这已被证明很棘手。

更具体一点,我不能只做一个子字符串,因为 %thisVal 不应该被接受,只有 %this。

我试过来自另一个线程的 Sanitizer但没有成功。

如果令牌没有附加所有其他内容,我需要做的就是:

    \ifnum\pdf@strcmp{\@restTestChar}{this}=0%
    \def\lst@thestyle{\color{thisColor}}%
    \else
    \def\lst@thestyle{\color{variableColor}}%
    \fi

我在想,只要删除第一个 \ 之后的任何内容,任何方法都可以,但我不知道如何做到这一点,因为它本身不是一个字符串。

编辑:为了提供更多背景信息,我试图对基于 lstlisting 的 SyntaxHighlighlighter 进行扩展,以便 %this 以红色突出显示,而不是与其他 % 前缀变量突出显示的颜色相同。我有一个工作样本这显示了问题所在。lst-hook 仅检查标记是否为“%this”,并且不处理标记是的情况,而%this\unhbox \voidb@x \kern \z@出于某种原因,lst 会给我这种情况。我需要处理这两种情况。

相关内容