答案1
这是另一个例子为什么使用 amsmath 时嵌套 \tilde 或 \breve 命令的参数会重新出现?
\documentclass{article}
\usepackage{amsmath}
\newsavebox{\accentbox}
\newcommand{\compositeaccents}[2]{%
\sbox\accentbox{$#2$}#1{\usebox\accentbox}}
\begin{document}
Bad: ${^{\rm I}(\dot {I_{\rm p} \omega_{\rm p} \hat b_3})}$
\bigskip
Good: ${}^{\mathrm{I}}\compositeaccents{\dot}{(I_{\mathrm{p}} \omega_{\mathrm{p}} \hat{b}_3})$
\end{document}
然而,我会避免使用这样的符号。
请注意,该功能\rm
已被弃用 25 年了。
答案2
无法理解为什么你的片段会出现叠印,以下文档会产生
\documentclass{article}
\begin{document}
${^{\mathrm{I}}\dot {({I}_{\mathrm{p}} \omega_{\mathrm{p}} \hat{b}_3})}$
\end{document}
事实证明,这是一个amsmath
功能(尽管问题中没有提到 amsmath)尚未完全测试,但下面有一个可能的修复方法。我可以添加类似的东西,amsmath
但它需要更多的测试,如果你有一个更大的真实文档,我会很感兴趣,看看这是否有效
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\def\mathaccentV#1#2#3#4#5{%
\ifmmode
\gdef\macc@tmp{\macc@depth\@ne}%
\setbox\z@\hbox{%
% only short circuit \mathaccentV if only one token after expansion
% not quite the right test but hard to test for only one math atom
\ifcat$\@gobble#5\@empty$\let\mathaccentV\macc@test\fi
% end of change
\let\use@mathgroup\@gobbletwo \let\select@group\@gobblethree
\frozen@everymath{}$#5$%
}%
\macc@tmp
\ifnum\macc@depth=\@ne
\global\let\macc@nucleus\@empty
\mathaccent"\accentclass@
\else
\@xp\macc@nested
\fi
#2#3#4{#5}%
\macc@nucleus
\else
\@xp\nonmatherr@\csname#1\endcsname
\fi
}
\makeatother
\begin{document}
$\dot{\hat{b}}$
${^{\mathrm{I}}\dot {({I}_{\mathrm{p}} \omega_{\mathrm{p}} \hat{b}_3})}$
\end{document}
答案3
替代:
\documentclass{article}
\usepackage{amsmath,stackengine}
\stackMath
\begin{document}
$^{\mathrm{I}}(\stackon[1pt]{I_{\mathrm{p}} \omega_{\mathrm{p}} \hat b_3}{.})$
\end{document}
你也可以考虑一些不那么令人困惑的事情,比如$^{\mathrm{I}}[\frac{d}{dt}(I_{\mathrm{p}} \omega_{\mathrm{p}} \hat b_3)]$
或者,如果语法合理的话,$\frac{d}{dt}\,^{\mathrm{I}}(I_{\mathrm{p}} \omega_{\mathrm{p}} \hat b_3)$