在下面的代码中,我可以标记等式的不同项。但是,等号、加号和减号不在每个项的中间。理想情况下,我可以强制它们恰好位于项的中间,并使所有项的间距相等,这样看起来更整洁。有什么办法吗?
谢谢
\begin{equation}
\begin{split}
\underbrace{\rho T\dfrac{D s}{D t}}_{\substack{\text{Entropy}\\\text{advection}}} = \underbrace{\dot{q}}_{\substack{\text{Heat}\\\text{addition}}} - \underbrace{\nabla \cdot \boldsymbol{q}}_{\substack{\text{Heat}\\\text{transfer}}} +
\underbrace{\tau:(\nabla \boldsymbol{u})}_{\substack{\text{Viscous}\\\text{effects}}} - \underbrace{\rho\sum^{N}_{i=1}\left(\dfrac{\mu_i}{W_i}\right)\dfrac{DY_i}{Dt}}_{\substack{\text{Chemical}\\\text{reactions}}}.
\end{split}
\end{equation}
编辑:
根据egreg的建议,我复制了该命令:
并加载了 amsmath,但出现以下错误:
答案1
问题在于长单词超出了括号的长度。
您可以通过使它们宽度为零并将关系和运算符号周围的默认间距加倍(周围除外)来解决问题\dot{q}
。
我还添加了一个本地命令\?
,使所有括号处于同一级别。
为了补救支撑狂潮,我定义了一个\ubracetext
简化输入的命令。
\documentclass{article}
\usepackage{amsmath}
\ExplSyntaxOn
\NewDocumentCommand{\ubracetext}{mm}
{
{% make the thing an ordinary atom
\underbrace { #1 } \sb { \jrjrjr_ubrace_text:n { #2 } }
}
}
\cs_new_protected:Nn \jrjrjr_ubrace_text:n
{
\seq_set_split:Nnn \l_tmpa_seq { \\ } { #1 }
\seq_set_map:NNn \l_tmpb_seq \l_tmpa_seq { \text{\vphantom{Ay}##1} }
\substack { \seq_use:Nn \l_tmpb_seq { \\ } }
}
\ExplSyntaxOff
\begin{document}
\begin{equation}
\def\?{\vphantom{\displaystyle\sum_{i=1}^N}}
%
\ubracetext{\?\rho T\dfrac{D s}{D t}}{Entropy \\ \makebox[0pt]{advection}}
\;=
\ubracetext{\?\dot{q}}{Heat \\ \makebox[0pt]{addition}}
-\;
\ubracetext{\?\nabla \cdot \boldsymbol{q}}{Heat \\ \makebox[0pt]{transfer}}
\;+\;
\ubracetext{\?\tau:(\nabla \boldsymbol{u})}{Viscous \\ effects}
\;-\;
\ubracetext{\?\rho\sum^{N}_{i=1}\left(\dfrac{\mu_i}{W_i}\right)\dfrac{DY_i}{Dt}}%
{Chemical \\ reactions}.
\end{equation}
\end{document}