我正在尝试排版\smash{\bm{U}}_\rho
;但是间距与不同\bm{U}_\rho
。我尝试\!
恢复间距,但间距太小。如何在使用的情况下恢复原始间距\smash
?
请参阅此 MWE:
\documentclass{article}
\usepackage{bm}
\newcommand{\mat}[1]{\smash{\bm{#1}}}
\newcommand{\matfix}[1]{\smash{\bm{#1}}\!}
\begin{document}
$\bm{U}_\rho$
$\mat{U}_\rho$
$\matfix{U}_\rho$
\end{document}
输出结果如下:
答案1
我不确定的目的\smash
是什么(我相信你会遇到麻烦)。
无论如何,这是一个解决方案。
\documentclass{article}
\usepackage{amsmath,bm,xparse}
\NewDocumentCommand{\mat}{m e{_^}}{%
\smash{\bm{#1}}%
\IfValueT{#2}{\tuckin{#1}{#2}}%
\IfValueT{#3}{^{#3}}%
}
\newcommand{\tuckin}[2]{%
\mathpalette\tuckinauxA{{#1}{#2}}%
}
\newcommand{\tuckinauxA}[2]{\tuckinauxB#1#2}
\newcommand{\tuckinauxB}[3]{%
\sbox0{$#1\bm{#2}_{#3}$}%
\sbox2{$#1{{}\bm{#2}}_{#3}$}%
\dimen0=\dimexpr\wd0-\wd2\relax
_{\kern\dimen0 #3}%
}
\begin{document}
$\bm{U}_\rho$ \sbox0{$\bm{U}_\rho$}\the\wd0\ \the\ht0
$\mat{U}_\rho$ \sbox0{$\mat{U}_\rho$}\the\wd0\ \the\ht0
\end{document}
答案2
公认的答案是通用的,但相当棘手。正如评论中提到的,目的是确保 的\mat{\tilde{U}}
大小与 的大小相同\mat{U}
。可以使用以下方法轻松实现
\usepackage{mathtools} % for \mathrlap
\newcommand{\tmat}[1]{\mathrlap{\smash{\bm{\tilde{#1}}}}\bm{#1}}
并替换\mat{\tilde{U}}_\rho
为\tmat{U}_\rho
。请注意,U
符号被打印两次,并\mathrlap{\smash{...}}
完全破坏了边界框。