Estou usando um lstlisting
ambiente personalizado para destacar o código LaTeX. Para usar isso, inseri adicionalmente mais algumas palavras-chave. No entanto, o multirow
pacote usa seu nome como comando. Como posso remover o destaque de palavras-chave neste caso, assim como faria \mathrm
em 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 lstset
opçõ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: