为了排版数学程序,我使用 subequations 环境来对方程进行编号。使用 alignat 环境来对齐限制(参见 MWE1)。
我想要实现的是,目标方程应该以在方程环境中的中心位置为中心,但不影响限制方程的对齐(所需对齐参见 MWE2)。
MWE2 的问题在于目标方程和直线之间的垂直间距错误s.t.
,以及目标方程的编号错误,而后者应该与 MWE1 中的相同。
无意义的数学程序作为 MWE1:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{subequations}
\begin{alignat}{3}
\shortintertext{Objective Function:}
\min x \\
\shortintertext{s.t.:}
& \sum_{p \in P} (x_p + x_p) x_{a, m, l} && \leq M & \qquad & , \forall p \in P \\
& \sum_{q \in Q} x_q x_{a, m, l} && \leq M & \qquad & , \forall q \in Q
\end{alignat}
\end{subequations}
\end{document}
无意义的数学程序作为 MWE2:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\noindent Objective Function:
\begin{equation}
\min x
\end{equation}
\begin{subequations}
\begin{alignat}{3}
\shortintertext{s.t.:}
& \sum_{p \in P} (x_p + x_p) x_{a, m, l} && \leq M & \qquad & , \forall p \in P \\
& \sum_{q \in Q} x_q x_{a, m, l} && \leq M & \qquad & , \forall q \in Q
\end{alignat}
\end{subequations}
\end{document}
答案1
最简单的方法是使用gather
和alignat
,删除垂直空格。minipage
是为了避免分页;gather
而不是equation
确保\abovedisplayskip
无论如何都会使用 (并且永远不会\abovedisplayshortskip
)。
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{subequations}
\noindent\begin{minipage}{\textwidth}
Objective Function:
\begin{gather}
\min x
\end{gather}
\vspace{-\belowdisplayskip}
\vspace{-\abovedisplayskip}
\begin{alignat}{3}
\shortintertext{s.t.:}
& \sum_{p \in P} (x_p + x_p) x_{a, m, l} && \leq M & \qquad & , \forall p \in P \\
& \sum_{q \in Q} x_q x_{a, m, l} && \leq M & \qquad & , \forall q \in Q
\end{alignat}
\end{minipage}
\end{subequations}
\end{document}