![多行第一行右侧的方程编号](https://linux22.com/image/304925/%E5%A4%9A%E8%A1%8C%E7%AC%AC%E4%B8%80%E8%A1%8C%E5%8F%B3%E4%BE%A7%E7%9A%84%E6%96%B9%E7%A8%8B%E7%BC%96%E5%8F%B7.png)
这非常类似于多行环境中垂直居中的方程编号,但答案似乎不适用于我的情况。
我有
\begin{multline}
X = \\
LOOOOOOOOOOOOOOOOOOOOOOOOOOONG
\end{multline}
就像没有行号的输出一样。现在我想在右边添加一个行号,但第二行太长了。我该如何把它放在第一行(右边!)?
我知道\raisetag
,但我更喜欢精确的解决方案。我的第二条线的高度不平凡。
编辑:我应该补充一点,LOOOOOOOOOONG 几乎和我的文本宽度一样长。
编辑:这是一个更合适的例子:
\begin{multline}
X = \\
\framebox[\linewidth]{LONG}
\end{multline}
编辑:再次提供一个更详细的例子来表明 egreg 的答案没有回答我的问题。我的用例是一个积分表达式,我不想打破。它的外观和内容并不重要。它的线条非常接近可用的线宽。
\documentclass{article}
\usepackage{mathtools}
\usepackage[showframe]{geometry}
\setlength{\multlinegap}{0pt}
\begin{document}
This works fine:
\begin{equation}
\begin{multlined}[t]%
X = \\%
\framebox[\dimexpr.9\linewidth\relax]{some expression shorter than the next}%
\end{multlined}%
\end{equation}%
Note the equation number in this harder case:
\begin{equation}%
\begin{multlined}[t]%
X = \\%
\framebox[\dimexpr\linewidth-1.666666pt\relax]{long expression that I do not want to break}%
\end{multlined}%
\end{equation}%
This solves the equation number problem, but messes up horizontal positioning. It actually goes over the right border:
\begin{equation}%
\begin{multlined}[t]%
X = \\%
\mathmakebox[.9\width][l]{%
\framebox[\dimexpr\linewidth-1.666666pt\relax]{long expression that I do not want to break}%
}%
\end{multlined}%
\end{equation}
\end{document}
答案1
您可以使用multlined
from mathtools
(加载amsmath
):
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{multline}
X = \\
LOOOOOOOOOOOOOOOOOOOOOOOOOOONG
\end{multline}
\begin{equation}
\begin{multlined}[t][.9\displaywidth]
X = \\
LOOOOOOOOOOOOOOOOOOOOOOOOOOONG
\end{multlined}
\end{equation}
\begin{equation}
\begin{multlined}[t]
X = \\
LOOOOOOOOOOOOOOOOOOOOOOOOOOONG
\end{multlined}
\end{equation}
\end{document}
如果第一行很短,我更喜欢第三种选择。但在我的文档中,数字留在最后一行。
对于很长的行,可以使用不同的方法:
\documentclass{article}
\usepackage{mathtools}
\usepackage[showframe]{geometry}
\begin{document}
\begin{flalign}
& X= && \\
&&& \mathmakebox[0pt][r]{%
\framebox[\displaywidth]{\dotfill long expression that I do not want to break\dotfill}
\hspace{-1.8em}
}
\notag
\end{flalign}
\end{document}
您必须隐藏与公式编号空间重叠的部分
答案2
如何使用对齐环境右对齐?和使用 flalign 或 alignat 或 align 或类似环境左对齐帮助我想出了这个(我对此非常满意):
\begin{gather}
\begin{flalign}
& X = &
\end{flalign}\\
\begin{flalign*}
&& LOOOOOOOOOOOOOOOOOOOOOOOOOOONG
\end{flalign*}
\end{gather}
编辑:将 egreg 提出的所有内容放在一起(特别是mathmakebox
,这是我想到的。
\begin{align}
& #1 \\
& \mathmakebox[\displaywidth][r]{#2}\notag
\end{align}
其实很简单。我怀疑还有比这更简单的方法。egreg 的解决方案的缺点是不能处理未知的标签宽度,而且我还没有找到如何从 amsmath 获取它们。