我在使用对齐环境堆叠线性程序方程时遇到了麻烦。我遇到的问题是顶行中间列的内容太长,以至于它们将下行推入边距并影响行号的对齐。我想做的是,也许在下行中放入额外的子列和/或将它们连接起来,以使“for each”语句对齐,但位于顶部方程的悬垂部分下方。我尝试了一些命令,但没有成功。以下是当前的情况...
顺便说一句...我对 LaTex 基本是个菜鸟。我只偶尔会用到它,而且我通常会写代码直到它能工作,所以不要在回答中假设任何事情!:)
\usepackage{amsmath}
\begin{flalign}
max \quad &Z=\sum_{d \in D} w_1*dep_d - \sum_{V, a \in G^v} w_2*x_{v,a} \sum_{S, a \in G^s} w_3*x_{s, a}\\
s.t. \quad & x_{s,a} \le x_{v,a} &\forall s \in S, v \in V, a \in CN\\
&count_{cfg} * x_{v,a} \le \sum_{s \in S} x_{s,a} &\forall v \in V, a \in CN, cfg \in C_d
\end{flalign}
答案1
(备注:我修改了这个答案,以纳入 OP 提供的几条信息,例如,-
第 1 行中的求和项之间缺少一个符号,并且*
符号表示乘法并且不是严格需要的。)
这是一个采用环境和每行align
单个对齐标记的解决方案。&
\documentclass{article} % or some other suitable document class
\usepackage{mathtools} % for \smashoperator macro; loads amsmath automatically
\newcommand\vn[1]{\textit{#1}} % 'variable name'
\begin{document}
\begin{align}
\max\quad &Z= \sum_{d \in D} w_1\,\vn{dep}_d
-\smashoperator{\sum_{v,a\in G^v}} w_2\,x_{v,a}
-\smashoperator{\sum_{s,a\in G^s}} w_3\,x_{s,a}\\
\textup{s.t.}\quad
& x_{s,a} \le x_{v,a}
\qquad\forall s \in S,\ v \in V,\ a \in \vn{CN}\\
& \vn{count}^{}_{\vn{cfg}} \, x_{v,a} \le \sum_{s \in S} x_{s,a}
\qquad\forall v \in V,\ a \in \vn{CN},\ \vn{cfg} \in C_d
\end{align}
\end{document}
答案2
在摸索了 w/multispan
和其他方法均未成功之后,我偶然发现了span
哪种方法有效并允许长段“跨越”最后一列。
这很好用:
\begin{flalign}
max \quad &Z=\sum_{d \in D} w_1dep_d - \sum_{V, a \in G^v} w_2x_{v,a} -\sum_{S, a \in G^s} w_3x_{s, a}\span\\
s.t. \quad & x_{s,a} \le x_{v,a} &\forall s \in S, v \in V, a \in CN\\
&count_{cfg} x_{v,a} \le \sum_{s \in S} x_{s,a} &\forall v \in V, a \in CN, cfg \in C_d
\end{flalign}
答案3
我认为你应该使用专门用于优化问题的包 – optidef
:
\documentclass{article}
\usepackage{amsmath}
\usepackage[short]{optidef}
\begin{document}
\begin{maxi!}{}
{Z=\sum_{d \in D} w_1\cdot\operatorname{dep}_d - \sum_{V, a \in G^v} w_2\cdot x_{v,a} \sum_{S, a \in G^s} w_3*x_{s, a}}{}{}
\addConstraint{x_{s,a}}{ \le x_{v,a}}{\forall s \in S, v \in V, a \in CN}
\addConstraint{\operatorname{count}_{cfg}\cdot x_{v,a}}{ \le \sum_{s \in S} x_{s,a}\quad}{ \forall v \in V, a \in CN, %
cfg \in C_d}
\end{maxi!}
\end{document}