长方程与 omit 和 rlap 对齐,超出边缘

长方程与 omit 和 rlap 对齐,超出边缘

我最近了解到在 LaTeX 中格式化线性程序的最佳方法是这样的:

\begin{alignat}{3}
  \text{min:} \quad & \omit{\rlap{$ \sum_{i=1}{n} c_i X_i $}} \\
  \text{s.t.} \quad & a_t \leq \sum_{i=1}{n} X_i \leq b_t \quad && t=1,\cdots,T \\
                    & X_i \in \{0,1\}                     \quad && i=1,\cdots,n
\end{alignat}

这样,所有约束都在“st”后左对齐,并留有一点空间,所有约束域都在最长约束后左对齐,并留有一点空间,即使目标函数很长(ish),那么我不会得到很大的差距,就像如果我只是&&在最后放一个而没有 一样\omit{\rlap{$[...]$}}

无论如何,上面只是我写的一些废话。但这里有一个在我的文档中行为不端的例子:

\begin{alignat}{3}
    \text{min:} \quad & \omit{\rlap{$\alpha\sum_{i=1}^N\sum_{k=1}^K\sum_{l=1}^K b_{k,l}Y_{i,k}Y_{i,l} + \beta\sum_{i=1}^N\sum_{j=1}^M c_{i,j}X_{i,j} + \gamma(\sum_{j=1}^M S_j + T_j)$}} \\
    \text{s.t.} \quad & \sum_{i=1}^N X_{i,j} + S_j - T_j = 1 \quad && j=1,\ldots,M \\
                      & S_j \in \mathbb{Z}^+                 \quad && j = 1, \ldots, M \\
                      & T_j \in \mathbb{Z}^+                 \quad && j = 1, \ldots, M
\end{alignat}

当我构建这个时,目标函数(第一行)从页面末尾运行出来,但左边有足够的空间来容纳它。

&我尝试在每行末尾以及结束后添加一个额外的空对齐点\omit,但这没有任何作用。

我可以通过将第一行分成两行来解决这个问题,但我更愿意将整个内容移动到左边。

在此处输入图片描述

谢谢。

编辑1:实际上我之前甚至没有注意到这一点,但看起来第一个方程式是文本中的内联数学(这是有道理的,因为它在 中$)。总和的参数不像其他行那样位于上方和下方,而是位于它们旁边。有什么想法可以解决这个问题吗?

编辑2:好的,修复了第一行是内联数学模式的问题\displaystyle后。$

答案1

手动添加一些空格,在下面的代码中\hspace{9em}

我还做了一些小改动:隐藏方程的宏和\bigg求和括号的宏。应该\ldots\dots

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{showframe} % just for the example

\newcommand{\eqhide}[1]{%
  \omit\makebox[0pt][l]{$\displaystyle#1$}%
}

\begin{document}

\begin{alignat}{2}
\text{min:} \quad & \eqhide{\alpha\sum_{i=1}^N\sum_{k=1}^K
                            \sum_{l=1}^K b_{k,l}Y_{i,k}Y_{i,l} +
                            \beta\sum_{i=1}^N\sum_{j=1}^M c_{i,j}X_{i,j} +
                            \gamma\biggl(\,\sum_{j=1}^M S_j + T_j\biggr)} \\
\text{s.t.} \quad & \sum_{i=1}^N X_{i,j} + S_j - T_j = 1 \quad && j = 1 ,\dots, M \hspace{9em} \\
                  & S_j \in \mathbb{Z}^+                 \quad && j = 1, \dots, M \\
                  & T_j \in \mathbb{Z}^+                 \quad && j = 1, \dots, M
\end{alignat}

\end{document}

在此处输入图片描述

答案2

\rlap这是一个没有也没有的解决方案\omit,它导致总和的界限是 sym 符号右侧的类型,但更好地使用了&。顺便说一句,请注意3对齐点需要5&。我还建议使用 subequations` 环境,以便为方程本身(第一行)提供主方程编号,并为约束提供 3 个辅助计数器:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{showframe}%
 \renewcommand{\ShowFrameLinethickness}{0.3pt}
\usepackage{amssymb}%
\usepackage{mathtools}

\begin{document}

\begin{subequations}
\begin{alignat}{3}
  \min &\colon & \quad \alpha & \sum_{i=1}^N\sum_{k=1}^K\sum_{l=1}^K b_{k,l}Y_{i,k}Y_{i,l} + \beta & & \sum_{i=1}^N\sum_{j=1}^M c_{i,j}X_{i,j} + \gamma(\sum_{j=1}^M S_j + T_j) \tag{1} \\
  \text{s.t.} &\phantom{:} & & \sum_{i=1}^N X_{i,j} + S_j - T_j = 1 & & j=1,\ldots,M \\
                 & & & S_j \in \mathbb{Z}^+ \quad && j = 1, \ldots, M \\
                   & & & T_j \in \mathbb{Z}^+ \quad && j = 1, \ldots, M
\end{alignat}
\end{subequations}

\end{document} 

在此处输入图片描述

相关内容