我正在尝试建立一个像图片中这样的方程,其中右侧的一行有换行符。我尝试通过将其放入自己的额外方程中来实现这一点,但如图所示,这会产生大量额外空格和额外的方程引用。
图像是使用生成的
\begin{subequations}
\label{eq:class:sub}
\begin{alignat}{2}
\text{min}\quad & \sum_{i \in V} e_i - \sum_{i \in V} y_ia_i - u \\
\text{s.t.}\quad
& a_i \leq e_i + p_{\lambda_i} && \qquad\text{for \(i \in V\)} \\
& a_n + a_m \leq 1+\sum_{i \in S} a_i && \qquad\text{for \(a,b \in V\) and \(S
\subseteq V\)} \\
&&&\qquad\text{separating \(a\) from \(b\)} \\
& a_i \in \{0,1\} && \qquad\text{for \(i \in V\)}
\end{alignat}
\end{subequations}
我怎样才能将“将 a 与 b 分开”部分进一步向上移动,以便它与之前的文本合适地结合在一起?
答案1
用一个tabular
:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\setcounter{equation}{19} % just to reproduce the picture
\begin{subequations}\label{eq:class:sub}
\begin{alignat}{2}
\min\quad & \sum_{i \in V} e_i - \sum_{i \in V} y_ia_i - u \\
\text{s.t.}\quad
& a_i \leq e_i + p_{\lambda_i} && \qquad\text{for \(i \in V\)} \\
& a_n + a_m \leq 1+\sum_{i \in S} a_i && \qquad
\begin{tabular}[t]{@{}l@{}}
for \(a,b \in V\) and \(S\subseteq V\) \\
separating \(a\) from \(b\)
\end{tabular} \\
& a_i \in \{0,1\} && \qquad\text{for \(i \in V\)}
\end{alignat}
\end{subequations}
\end{document}
答案2
我会选择专用包,optidef
也就是它的mini!
环境,借助于stackengine
:
\documentclass{article}
\usepackage{mathtools}
\usepackage[usestackEOL]{stackengine}
\usepackage[short]{optidef}
\usepackage{cleveref}
\begin{document}
\begin{mini!}[2]
{}{\sum_{i \in V} e_i - \sum_{i \in V} y_ia_i - u \label{eq:1a}}
{\label{eq:1}}{}
\addConstraint{a_i \leq e_i + p_{\lambda_i}}{\label{eq:1b}}{\text{for }i \in V}
\addConstraint{a_n + a_m \leq 1+\sum_{i \in S} a_i}{\qquad\label{eq:1c}}{\Shortunderstack[l]{for \(a,b \in V \) and \(S \subseteq V\)\\separating \(a\) from \(b\)}}
\addConstraint{ a_i \in \{0,1\} }{\label{eq:1d}}{\text{for }i \in V}
\end{mini!}
We can see from \cref{eq:1}, and more precisely from \cref{eq:1a,eq:1b,eq:1c} blah blah.
\end{document}
答案3
一定有几种方法可以实现您的排版目标。我能想到的一种方法就是将两行文本放入\parbox
适当宽度的文本框中。
\documentclass{article}
\usepackage{amsmath}
\newlength\mylen
% measure width of \parbox below:
\settowidth\mylen{for \(a,b \in V\) and \(S\subseteq V\)}
\begin{document}
\setcounter{equation}{19} % just for this example
\begin{subequations}
\label{eq:class:sub}
\begin{alignat}{2}
\min\quad & \sum_{i \in V} e_i - \sum_{i \in V} y_ia_i - u \\
\text{s.t.}\quad
& a_i \leq e_i + p_{\lambda_i}
&\qquad&\text{for \(i \in V\)} \\
& a_n + a_m \leq 1+\sum_{i \in S} a_i
&&\parbox[t]{\mylen}{for \(a,b \in V\) and \(S\subseteq V\)
separating \(a\) from \(b\)} \\[1ex]
& a_i \in \{0,1\}
&&\text{for \(i \in V\)}
\end{alignat}
\end{subequations}
\end{document}