我想编写我的线性程序,使其看起来像这张图:
这意味着我想要得到以下内容:
- 文本左对齐
- 所有
x_{j}
变量都彼此相关 i=
和语句j=
再次成为另一个之下的一个
这是我目前所拥有的:
\begin{equation}
\begin{split}
\text{minimize} \displaystyle\sum\limits_{j=1}^{m} w_{j}*&x_{j} \\
\text{subject to} \displaystyle\sum\limits_{j:e_{i} \in S_{j}} &x_{j} \geq 1, i=1 ,..., n\\
&x_{j} \in \{0,1\}, j=1 ,..., m
\end{split}
\end{equation}
我尝试使用多个&
s,但要么我使用它们却没有任何变化,要么我收到以下错误:Extra alingment tab has been changed to \cr \end{split}
。我搜索过这个错误,我知道如果我忘记写一个&
或我有一个多余的,它就会出现,但这不是我的情况。这是代码:
\begin{equation}
\begin{split}
&\text{minimize} \displaystyle\sum\limits_{j=1}^{m} w_{j}*&x_{j} & \\
&\text{subject to} \displaystyle\sum\limits_{j:e_{i} \in S_{j}} &x_{j} \geq 1, &i=1 ,..., n\\
& &x_{j} \in \{0,1\}, &j=1 ,..., m
\end{split}
\end{equation}
我怎样才能按照我想要的方式对齐它们?
还有,不用 可以做到吗align
?因为这个程序位于我的页面末尾,如果我使用align
它,它会被放置在下一页,我不想这样。
答案1
类似这样。使用数组
代码
\documentclass[a4paper]{article}
\usepackage[paper size={10cm,5cm}]{geometry}
\pagestyle{empty}
\usepackage{amsmath,amssymb}
\begin{document}
\begin{equation*}
\begin{array}{ll@{}ll}
\text{minimize} & \displaystyle\sum\limits_{j=1}^{m} w_{j}&x_{j} &\\
\text{subject to}& \displaystyle\sum\limits_{j:e_{i} \in S_{j}} &x_{j} \geq 1, &i=1 ,\dots, n\\
& &x_{j} \in \{0,1\}, &j=1 ,\dots, m
\end{array}
\end{equation*}
\end{document}
答案2
这些=
符号不是完全垂直对齐的。这里有一个解决方案,alignat*
它给出了正确的对齐方式,并且语法稍微简单一些。我还提出了一个变体,其中总和是对齐的,而 x_j 只是部分对齐,在我看来看起来更好:
\documentclass[a4paper]{article}
\usepackage[paper size={10cm,5cm}]{geometry}
\pagestyle{empty}
\usepackage{mathtools,amssymb}
\begin{document}
\begin{alignat*}{3}
& \text{minimize} & \sum_{j=1}^{m} w_{j}x_{j}& \\
& \text{subject to} \quad& \sum_{\mathclap{{j:e_{i} \in S_{j}}}}x_{j}& \geq 1, & i &=1 ,..., n\\
&& x_{j}& \in \{0,1\},\quad & j &=1 ,..., m
\end{alignat*}
\begin{alignat*}{2}
& \text{minimize: } & & \sum_{j=1}^{m} w_{j}x_{j} \\
& \text{subject to: }& \quad & \sum_{\mathclap{{j:e_{i} \in S_{j}}}}\begin{aligned}[t]
x_{j} & \geq 1,& i & =1, \dots, n\\[3ex]
x_{j} & \in \{0,1\}, & \quad j &=1 ,\dots, m
\end{aligned}
\end{alignat*}
\end{document}
变体:
答案3
使用奥替卡夫包你可以获得相同的结果,如下所示:
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{optidef}
\begin{document}
\begin{mini*}
{}{\sum_{j=1}^{m} w_{j}x_{j}}{}{}
\addConstraint{\sum_{j:\, e_{i} \in S_{j}} } {x_{j}\geq 1,}{}{\mkern53mu i=1 ,\ldots, n}
\addConstraint{ }{x_{j}}{ \in \{0,1\},}{\quad j=1 ,\ldots, m}
\end{mini*}
\end{document}