在以下摘录中,我想按照&
或&&
符号的指示对齐方程组,但我需要将每个方程的左侧附加到=
或\geq
符号。换句话说,我希望在方程编号后面有水平空格。
提前感谢您的任何建议。
\documentclass{extbook}
\usepackage{amsmath}
\begin{document}
\begin{equation*}
\begin{aligned}
&\textnormal{(i)} \enspace f'(x^*) &&= \sum\limits_{i=1}^m \lambda_i h'_i(x^*) +\sum\limits_{i=1}^p \mu_i^* g'_i(x^*) \\
&\textnormal{(ii)} \enspace h_i(x^*) &&= 0, \; i=1,\ldots, \, m, \\
&\textnormal{(iii)} \enspace g_i(x^*) &&\ge 0, \; i=1, \ldots, \, p, \\
&\textnormal{(iv)} \enspace \mu_i^* g_i(x^*) &&=0, \; i=1,\ldots, \, p, \\
&\textnormal{(v)} \enspace \mu_i^* &&\ge 0, \; i=1,\ldots, \, p.
\end{aligned}
\end{equation*}
\end{document}
答案1
您只需在您的环境中插入一个额外的&
而不是。但是,您似乎对元素列表的枚举以及关系周围的对齐感兴趣。为此,将每个方程设置为带有一些框测量/操作的 ,以帮助进行左侧对齐。\enspace
aligned
\item
两个选项如下所示:
\documentclass{article}
%\usepackage{showframe}
\usepackage{enumitem}
\usepackage{amsmath,eqparbox}
% https://tex.stackexchange.com/a/34412/5764
\makeatletter
\NewDocumentCommand{\eqmathbox}{o O{c} m}{%
\IfValueTF{#1}
{\def\eqmathbox@##1##2{\eqmakebox[#1][#2]{$##1##2$}}}
{\def\eqmathbox@##1##2{\eqmakebox{$##1##2$}}}
\mathpalette\eqmathbox@{#3}
}
\makeatother
\begin{document}
\[
\begin{aligned}
&\textnormal{(i)} & f'(x^*) &= \sum\limits_{i = 1}^m \lambda_i h'_i(x^*) + \sum\limits_{i = 1}^p \mu_i^* g'_i(x^*) \\
&\textnormal{(ii)} & h_i(x^*) &= 0, ~ i = 1,\dots, m, \\
&\textnormal{(iii)} & g_i(x^*) &\geq 0, ~ i = 1, \dots, p, \\
&\textnormal{(iv)} & \mu_i^* g_i(x^*) &= 0, ~ i = 1, \dots, p, \\
&\textnormal{(v)} & \mu_i^* &\geq 0, ~ i = 1, \dots, p.
\end{aligned}
\]
\begin{enumerate}[label={(\roman*)},align=left]
\item
$\displaystyle\eqmathbox[LHS][r]{f'(x^*)} = \sum\limits_{i = 1}^m \lambda_i h'_i(x^*) + \sum\limits_{i = 1}^p \mu_i^* g'_i(x^*)$
\item
$\eqmathbox[LHS][r]{h_i(x^*)} = 0, ~ i = 1,\dots, m$,
\item
$\eqmathbox[LHS][r]{g_i(x^*)} \geq 0, ~ i = 1, \dots, p$,
\item
$\eqmathbox[LHS][r]{\mu_i^* g_i(x^*)} = 0, ~ i = 1, \dots, p$,
\item
$\eqmathbox[LHS][r]{\mu_i^*} \geq 0, ~ i = 1, \dots, p$.
\end{enumerate}
\end{document}
\eqmathbox[<tag>][<align>]{<stuff>}
在所有类似的 s 中设置<stuff>
尽可能宽的框<tag>
,并附加<align>
ment 选项(默认为c
entred,但您也可以与l
eft 或r
ight 对齐)。
自从eqparbox
(内部使用\eqmathbox
)使用类似于\label
-\ref
的机制(通过.aux
),每次更改最大宽度时您都必须至少编译两次<tag>
(第一次编译时也必然如此)。
showframe
用于指示文本块边界(在图像中看作沿侧面的黑条)。
答案2
使用alignedat
:
\documentclass{extbook}
\usepackage{amsmath}
\begin{document}
\begin{equation*}
\begin{alignedat}{2}
&\textnormal{(i)} & f'(x^*) &= \sum\limits_{i=1}^m \lambda_i h'_i(x^*) +\sum\limits_{i=1}^p \mu_i^* g'_i(x^*) \\
&\textnormal{(ii)} & h_i(x^*) &= 0, \; i=1,\ldots, \, m, \\
&\textnormal{(iii)} & g_i(x^*) &\ge 0, \; i=1, \ldots, \, p, \\
&\textnormal{(iv)} & \enspace \mu_i^* g_i(x^*) &=0, \; i=1,\ldots, \, p, \\
&\textnormal{(v)} & \mu_i^* &\ge 0, \; i=1,\ldots, \, p.
\end{alignedat}
\end{equation*}
\end{document}