数式モードの色分け

数式モードの色分け

数式モードで一部の記号に色を付けたいのですが、下付き文字には色を付けたくありません。しかし、これを行うと、下付き文字が壊れてテキストから外れてしまいます。

問題を説明するための最小限の例を用意しました。

\documentclass{article}
\usepackage{xcolor}
\begin{document}

$T_i$

${\color{red}T}_i$

$\textcolor[rgb]{1,0,0}{T}_{i}$

\end{document}

結果は次のとおりです。

画像

T に色を付ける場合、T と i は分離されることに注意してください。下付き文字に余分なスペースを追加せずに適切に色を付ける方法はありますか?

答え1

下付き文字の直前で色を変更したりグループを閉じたりするのではなく、下付き文字を入力した後に色を変更します。

\documentclass{article}
\usepackage{xcolor}
\begin{document}
$T_i$

${\color{red}T_{\color{black}i}}$
\end{document}

ここに画像の説明を入力してください

答え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}

ここに画像の説明を入力してください

関連情報