长方程中的方程编号

长方程中的方程编号

我有一个很长的等式,跨越两行。第一行占据整个水平空间,第二行缩进。我使用amsmath'ssplit来实现这一点。

我的问题是公式编号跳到了第二行下面的行。我希望它紧挨着第二行。我该如何实现?

我的公式如下所示(我无法发布完全相同的公式,但由于我实际上使用 KOMA-Script,所以我认为它不依赖于精确的间距): 在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\begin{document}
    \begin{equation}
    \begin{split}
    \max \Biggl\{\sum_{(a,b)\in MW} a_ba_{bc} &- \sum_{(a,b)\in M} a_ba_{bc} - \sum_{a\in A} \sum_{(a,b)\in M} \sum_{(a,b)\in M} a_ba_{bc} - \zeta \sum_{(a,b)\in MW} a_{bc} \\
    &- \sum_{(a,b)\in M} a_ba_{bc} - \sum_{(a,b)\in M} a_b (a^+_b+a^-_b) \Biggr\}
    \end{split}
    \end{equation}
\end{document}

答案1

我认为提出一个更通用的技巧会很有用,因为它也可以应用于不容易重新格式化方程以适应的情况。

方程式编号被下移是因为split环境生成一个块,其宽度等于最长的一行,因此周围equation环境将其视为一行,在这种情况下,该行太宽而无法与数字一起放置,因此将其下移。但是,我们看到,如果第二行可以被视为一个方程式,数字就可以放在第二行中。

现在,从逻辑的角度来看,问题中的标记是正确的,并且一般来说,是唯一应该使用的标记:等式,数字代表整个等式,并且这个等式由两行组成。但是,在这种情况下,基于视觉标记的一个小技巧可以解决问题:指定通过使用环境,可以生成多个方程而不是一个方程align,理论上每个方程都有自己的编号;但通过\notag在第一个“方程”末尾放置命令来隐藏第一行的编号。代码如下:

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath}

\begin{document}
\begin{align}
    \max \Biggl\{\sum_{(a,b)\in MW} a_ba_{bc}
        &- \sum_{(a,b)\in M} a_ba_{bc}
            - \sum_{a\in A} \sum_{(a,b)\in M} \sum_{(a,b)\in M} a_ba_{bc}
            - \zeta \sum_{(a,b)\in MW} a_{bc} \notag \\ % \notag suppresses the
                                                        % equation number
        &- \sum_{(a,b)\in M} a_ba_{bc}
            - \sum_{(a,b)\in M} a_b (a^+_b+a^-_b) \Biggr\}
\end{align}
\end{document}

它的输出如下:

上述代码的输出

答案2

您可以使用该\raisetag功能:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\begin{split}
\max \biggl\{ \sum_{(a,b)\in MW} a_ba_{bc}
  &- \sum_{(a,b)\in M} a_ba_{bc}
   - \sum_{a\in A} \sum_{(a,b)\in M} \sum_{(a,b)\in M} a_ba_{bc}
   - \zeta \sum_{(a,b)\in MW} a_{bc} \\
  &- \sum_{(a,b)\in M} a_ba_{bc}
   - \sum_{(a,b)\in M} a_b (a^+_b+a^-_b)
\biggr\}
\end{split}
\raisetag{2\normalbaselineskip}
\end{equation}
\end{document}

在此处输入图片描述

答案3

解决方案是使用\smashoperator命令 from mathtools。在这种情况下,不要加载amsmath,因为 mathtools 会为您完成此操作。请注意,您还可以使用环境 multline,它会以不同的方式放置方程编号。

\documentclass{article}
\usepackage{mathtools}
\begin{document}

\begin{equation}
  \begin{split}
    \max \Biggl\{\smashoperator[r]{\sum_{(a,b) \in MW}} a_ba_{bc} &- \smashoperator{\sum_{(a,b) \in M}} a_ba_{bc} - \sum_{a \in A} \sum_{(a,b) \in M} \smashoperator[r]{\sum_{(a,b) \in M}} a_ba_{bc} - \zeta \smashoperator{\sum_{(a,b) \in MW}} a_{bc} \\
    &- \smashoperator{\sum_{(a,b) \in M}} a_ba_{bc} -\smashoperator{ \sum_{(a,b) \in M}} a_b (a^+_b+a^-_b) \Biggr\}
  \end{split}
\end{equation}

\end{document} 

在此处输入图片描述

相关内容