alignat 环境中的不同对齐方式

alignat 环境中的不同对齐方式

我有以下乳胶代码来写下线性程序:

\begin{alignat}{5} 
  \tag{$L(\mu)$} L(\mu) =  & \,\textrm{min}  && \,\sum_{h \in H} c_h x_h
  - \sum_{a \in A} \mu_a \sum_{h in H(a)} x_h
  + \sum_{a \in A} \mu_a y_a \\
  &&&- \sum_{t \in T} \mu_t \sum_{h \in H(t)} x_h
  + \sum_{t \in T} \mu_t       \nonumber    \\ 
  \tag{vehicle-flow}      &\textrm{s.t.} && \sum_{ a\in A(v)^{out}} y_a  &= \sum_{a \in A(v)^{in} } y_a  & \forall\, v \in V\\  
  \tag{x-space}           &              && 0                            &\leq x_{h} \leq 1              &\forall\, h \in H \\
  \tag{y-space}           &              && 0                            &\leq y_{a} \leq 1              &\forall\, a \in A 
 \end{alignat}$

我们可以看出,第一个方程的长度导致下面方程的对齐不好。 在此处输入图片描述

我想要实现的目标:

  1. 将“min”与“st”对齐

  2. 打破最小方程,使其不会变得太长

  3. 将最后三个方程对齐,不要留太多空白

  4. 我不想通过在第一个等式中添加更多对齐标签来实现这一点,因为这会导致总和之间出现奇怪的间距

  5. 我研究了分割环境,但分割不允许我在方程式上添加单独的标签。

谢谢!

答案1

你可以欺骗通过将内容放入块中,可以在两个对齐选项卡之间添加更多内容,而无需增加它们的水平间距\makebox。以下示例显示了如何使用它以您想要的方式排列公式*:

\documentclass{article}
\usepackage{amsmath}

\newlength\stextwidth
\newcommand\makesamewidth[3][c]{%
  \settowidth{\stextwidth}{#2}%
  \makebox[\stextwidth][#1]{#3}%
}

\begin{document}

\begin{alignat}{4}
    L(\mu)=\min&\makebox[0pt][l]{$\displaystyle\sum_{h \in H} c_h x_h- \sum_{a \in A} \mu_a \sum_{h \in H(a)} x_h+ \sum_{a \in A} \mu_a y_a$} \tag{$L(\mu)$} \\
    &\makebox[0pt][l]{$\displaystyle- \sum_{t \in T} \mu_t \sum_{h \in H(t)} x_h + \sum_{t \in T} \mu_t$} \notag \\
    \makesamewidth[l]{$\min$}{s.t.}&\sum_{ a\in A(v)^{\textrm{out}}} y_a = \sum_{a \in A(v)^{\textrm{in}} } y_a&&\,\forall\, v \in V \tag{vehicle-flow} \\
    &&\makebox[0pt][r]{$0\leq x_{h} \leq 1$}&\,\forall\, h \in H \tag{x-space} \\
    &&\makebox[0pt][r]{$0\leq y_{a} \leq 1$}&\,\forall\, a \in A \tag{y-space}
\end{alignat}

\end{document}

在此处输入图片描述

*(我不确定您希望如何对齐最后三个方程式,所以我按照符号对齐它们\forall)。

转至\makesamwidth这个帖子

相关内容