Я хочу раскрасить некоторые символы в математическом режиме, но не их индексы. Однако, когда я это делаю, индексы ломаются и выпадают из текста.
Я подготовил минимальный пример, демонстрирующий мою проблему:
\documentclass{article}
\usepackage{xcolor}
\begin{document}
$T_i$
${\color{red}T}_i$
$\textcolor[rgb]{1,0,0}{T}_{i}$
\end{document}
Результат:
Обратите внимание, что T и i разделены, когда T раскрашена. Есть ли способ раскрасить правильно, не добавляя лишнего пробела в нижнем индексе?
решение1
решение2
Вы можете запомнить текущий цвет и использовать его xparse
для выбора возможных нижних и верхних индексов, которые набраны текущим цветом.
\documentclass{article}
\usepackage{xcolor}
\usepackage{xparse}
\NewDocumentCommand{\colornucleus}{omme{_^}}{%
\begingroup\colorlet{currcolor}{.}%
\IfValueTF{#1}
{\textcolor[#1]{#2}}
{\textcolor{#2}}
{%
#3% the nucleus
\IfValueT{#4}{_{\textcolor{currcolor}{#4}}}% subscript
\IfValueT{#5}{^{\textcolor{currcolor}{#5}}}% superscript
}%
\endgroup
}
\begin{document}
$T_i$ $T^j$ $T_i^j$
$\colornucleus{red}{T}_i$
$\colornucleus{red}{T}^j$
$\colornucleus{red}{T}_i^j$
$\colornucleus[rgb]{1,0,0}{T}_{i}$
$\colornucleus[rgb]{0,1,0}{T}^j$
$\colornucleus[rgb]{0,0,1}{T}_{i}^j$
\textcolor{blue!30!red}{Text $\colornucleus{black}{T}_i$ text}
\end{document}