我正在尝试将一个线性程序与一个非常长的限制对齐。我试过使用 split,但无法成功。这是我所拥有的
\begin{alignat*}{2}
&\text{Maximize}
&\quad & 7 x_1 + 8x_2 + 9x_3+6x_4 +8x_5+7x_6+6x_7+4x_8+5x_9\\
& \text{subject to } & &92 x_1 + 45x_2 + 60x_3 +35x_4+50x_5+647x_6+42x_7+72x_8+15x_9 \leq 362.8\\
& & & \sum_{i=1}^{9}x_i\geq 6\\
& & & x_4+x_7=1\\
& & & (1-x_9)\geq x_8. \end{alignat*}
问题在于第一个限制,我不喜欢它太长,所以我想在 x_7 中将其剪断,然后根据那一行,我希望以下限制中的 \leq、\geq 和 = 符号对齐。
答案1
据我所知,您正在寻找双列布局。左列用于注释,右列用于方程式。
为了获得注释的正确垂直对齐,我将它们放在拆分环境中,就像您最初想要拆分的右列中的前两个表达式一样。
在后一列中,我将的开头x_5
作为该列中其他表达式可以对齐的点。
对于最后三行,我将等号左右两侧的所有表达式放入从中派生的命令中eqparbox
。因此,左侧的所有表达式都排版在宽度相等的框中,就像右侧的表达式一样。使用此技巧可以将所有表达式沿同一点居中。我认为这会给每个公式和整个块的最后三行带来更和谐的印象。
\documentclass{article}
\usepackage{eqparbox}
\usepackage{amsmath}
\newcommand\EqMathb[2][std]{%
\eqparbox{#1}{%
\hfill$\displaystyle\vphantom{\int}#2$\hfill\mbox{}%
}
}
\setlength\jot{0.4em}
\begin{document}
\begin{align}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{split}
\text{Maximize}\quad & \\ &
\end{split} &
\begin{split}
7 x_1 + 8x_2 + 9x_3+6x_4 +8 & x_5+7x_6+6x_7 \\
& \quad\qquad+4x_8+5x_9
\end{split}\\[0.4em]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{split}
\text{subject to}\quad & \\ &
\end{split} &
\begin{split}
92 x_1 + 45x_2 + 60x_3 +35x_4+50 & x_5+647x_6+42x_7 \\
& +72x_8+15x_9 \leq 362.8
\end{split}\\[0.4em]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
&& \EqMathb{\sum_{i=1}^{9}x_i} \geq \EqMathb[right]{6} & \\
&& \EqMathb{x_4+x_7} = \EqMathb[right]{1} & \\
&& \EqMathb{(1-x_9)} \geq \EqMathb[right]{x_8.} &
\end{align}
\end{document}