Is there a robust way to align the baseline of subscripts?
The common approach here is to use a \vphantom
of the larger object, or \smash
the larger next to a \vphantom
of the smaller:
\documentclass{article}
\begin{document}
$T_a T_b$ vs
$T_a T_{\dot{b}}$ vs
$T_{\vphantom{\dot{b}}a} T_{\dot{b}}$ vs
$T_a T_{\vphantom{a}\smash{\dot{b}}}$
\end{document}
Borrowing from Hendrik's answer here: Redefine underscore to produce roman subscript without breaking file names
NOT recommended!
\documentclass{article}
\begingroup
\catcode`\_=\active
\gdef_#1{\ensuremath{\sb{\smash{#1}}}}
\endgroup
\mathcode`\_=\string"8000
\catcode`\_=12
\begin{document}
$T_a T_b$ vs $T_a T_{\dot b}.$
\end{document}
If one wanted the subscripts universally lower, a variation of the suggestion of NoWayHaze would be this:
\documentclass{article}
\begingroup
\catcode`\_=\active
\gdef_#1{\ensuremath{\sb{\strut#1}}}
\endgroup
\mathcode`\_=\string"8000
\catcode`\_=12
\begin{document}
$T_a T_b$ vs $T_a T_{\dot b}.$
\end{document}
As an alternative, you could sacrifice another character, here a !
, to specifically mean a subscript in which the height of the element is ignored. Then, you can still use _
in the normal cases.
\documentclass{article}
\begingroup
\catcode`\!=\active
\gdef!#1{\ensuremath{\sb{\smash{#1}}}}
\endgroup
\mathcode`\!=\string"8000
\catcode`\!=12
\begin{document}
$T_a T_{\dot b}.$ vs $T_a T!{\dot b}.$
\end{document}