对齐右侧的换行符

对齐右侧的换行符

我正在尝试建立一个像图片中这样的方程,其中右侧的一行有换行符。我尝试通过将其放入自己的额外方程中来实现这一点,但如图所示,这会产生大量额外空格和额外的方程引用。

在此处输入图片描述

图像是使用生成的

\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}

相关内容