Я использую пользовательскую lstlisting
среду для подсветки кода LaTeX. Чтобы использовать это, я дополнительно ввел еще несколько ключевых слов. Однако пакет multirow
использует свое имя как команду. Как мне убрать подсветку ключевых слов в этом одном случае, как это можно было бы сделать \mathrm
в среде Math?
Вот окружающая среда (сокращенная до самого необходимого):
\lstnewenvironment{customtex}
{\lstset{%
language=[LaTeX]{TeX},
...
keywordstyle=\color{darkred}\bfseries,
morekeywords={multirow},
}}{}
И в случае \RequirePackage{multirow}
пакета не следует его выделять, тогда как при использовании \multirow{...}{...}{...}
его следует выделять как ключевое слово.
решение1
Для листингов с кодом LaTeX есть специальные lstset
параметры, которые задают внешний вид команд LaTeX и соответствующие параметры для добавления записей в список выделенных команд. Это texcsstyle
(стиль последовательности управления TeX) и moretexcs
. Если вы хотите, чтобы обратная косая черта также была выделена (как это сделано, например, на этом сайте), то вы можете использовать =*
вместо =
.
МВЭ:
\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}
Результат: