Eliminar el resaltado de una palabra clave en una sola instancia en lstlisting

Eliminar el resaltado de una palabra clave en una sola instancia en lstlisting

Estoy usando un lstlistingentorno personalizado para resaltar el código LaTeX. Para usar esto, ingresé adicionalmente algunas palabras clave más. Sin embargo, el multirowpaquete usa su nombre como comando. ¿Cómo puedo eliminar el resaltado de palabras clave en este caso, tal como lo haría \mathrmen un entorno matemático?

Aquí está el entorno (reducido a lo esencial):

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

Y en el caso del \RequirePackage{multirow}paquete no debe resaltarse, mientras que cuando se usa \multirow{...}{...}{...}debe resaltarse como una palabra clave.

Respuesta1

Para listados con código LaTeX hay lstsetopciones especiales que configuran la apariencia de los comandos LaTeX y las opciones correspondientes para agregar entradas a la lista de comandos resaltados. Estos son texcsstyle(Estilo de secuencia de control TeX) y moretexcs. Si desea que la barra invertida también se resalte (como se hace en este sitio web, por ejemplo), puede usar =*en lugar 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:

ingrese la descripción de la imagen aquí

información relacionada