Remova o destaque de uma palavra-chave em uma única instância no lstlisting

Remova o destaque de uma palavra-chave em uma única instância no lstlisting

Estou usando um lstlistingambiente personalizado para destacar o código LaTeX. Para usar isso, inseri adicionalmente mais algumas palavras-chave. No entanto, o multirowpacote usa seu nome como comando. Como posso remover o destaque de palavras-chave neste caso, assim como faria \mathrmem um ambiente matemático?

Aqui está o ambiente (reduzido ao essencial):

\lstnewenvironment{customtex}
{\lstset{%
    language=[LaTeX]{TeX},
    ...
    keywordstyle=\color{darkred}\bfseries,
        morekeywords={multirow},
}}{}

E na instância do \RequirePackage{multirow}pacote não deve ser destacado, mas ao usá \multirow{...}{...}{...}-lo deve ser destacado como palavra-chave.

Responder1

Para listagens com código LaTeX existem lstsetopções especiais que definem a aparência dos comandos LaTeX e as opções correspondentes para adicionar entradas à lista de comandos destacados. Estes são texcsstyle(estilo de sequência de controle TeX) e moretexcs. Se você quiser que a barra invertida também seja destacada (como é feito neste site, por exemplo), você pode usar =*em vez de =.

MWE:

\documentclass{article}
\usepackage{listings}
\usepackage[svgnames]{xcolor}
\lstnewenvironment{customtex}
{\lstset{%
    language=[LaTeX]{TeX},
    texcsstyle=*\color{DarkRed}\bfseries,
    moretexcs={RequirePackage,multirow},
}}{}
\begin{document}
\begin{customtex}
\RequirePackage{multirow}
\multirow{1}{2}{3}
\end{customtex}
\end{document}

Resultado:

insira a descrição da imagem aqui

informação relacionada