Ich verwende eine benutzerdefinierte lstlisting
Umgebung, um LaTeX-Code hervorzuheben. Dazu habe ich zusätzlich noch ein paar Schlüsselwörter eingegeben. Das multirow
Paket verwendet seinen Namen jedoch als Befehl. Wie kann ich die Schlüsselworthervorhebung in diesem Fall entfernen, so wie ich es in einer Mathe-Umgebung tun könnte \mathrm
?
Hier die Umgebung (auf das Wesentliche reduziert):
\lstnewenvironment{customtex}
{\lstset{%
language=[LaTeX]{TeX},
...
keywordstyle=\color{darkred}\bfseries,
morekeywords={multirow},
}}{}
Und in der Instanz des \RequirePackage{multirow}
Pakets sollte es nicht hervorgehoben werden, wohingegen \multirow{...}{...}{...}
es bei Verwendung als Schlüsselwort hervorgehoben werden sollte.
Antwort1
Für Listings mit LaTeX-Code gibt es spezielle lstset
Optionen, die das Aussehen von LaTeX-Befehlen festlegen, sowie die entsprechenden Optionen, um Einträge zur Liste der hervorgehobenen Befehle hinzuzufügen. Diese sind texcsstyle
(TeX Control Sequence Style) und moretexcs
. Wenn Sie möchten, dass auch der Backslash hervorgehoben wird (wie es beispielsweise auf dieser Website gemacht wird), können Sie =*
anstelle von verwenden =
.
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}
Ergebnis: