下括号和方程式:术语之间的间距

下括号和方程式:术语之间的间距

在下面的代码中,我可以标记等式的不同项。但是,等号、加号和减号不在每个项的中间。理想情况下,我可以强制它们恰好位于项的中间,并使所有项的间距相等,这样看起来更整洁。有什么办法吗?

谢谢

\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}

在此处输入图片描述

相关内容