我想展示一组方程式可以蕴含另一组方程式,中间有双右箭头。这是我的两个尝试:一个是使用另一级数学模式来封闭两组方程式,另一个是使用表格,每组方程式都在一个单元格中。
第一个
$$
\begin{align*}
\nabla f(x) -\mu X^{-1} e + A(x) \lambda - z = 0,
\\ c(x) = 0,
\\ -\mu X^{-1} e + z = 0,
\\ x > 0
\\ z > 0
\end{align*}
\quad \Longrightarrow \quad
\begin{align*}
\nabla f(x) + A(x) \lambda - 2z = 0,
\\ c(x) = 0,
\\ -\mu X^{-1} e + z = 0,
\\ x > 0
\\ z > 0
\\
\end{align*}
$$
这将导致错误
amsmath:方程结构嵌套错误;(amsmath)尝试使用“aligned”进行恢复。\end{align*}
另一个是使用tabular
:
\begin{tabular*}{c c c}
\begin{align*}
\nabla f(x) -\mu X^{-1} e + A(x) \lambda - z = 0,
\\ c(x) = 0,
\\ -\mu X^{-1} e + z = 0,
\\ x > 0
\\ z > 0
\end{align*}
& $\Longrightarrow$ &
\begin{align*}
\nabla f(x) + A(x) \lambda - 2z = 0,
\\ c(x) = 0,
\\ -\mu X^{-1} e + z = 0,
\\ x > 0
\\ z > 0
\\
\end{align*}
\end{tabular*}
它也无法编译。
我想知道如何使这两种方法可行,以及是否还有其他更好的方法?
答案1
这是另一种方法,添加一些括号来“合并”单独的方程组。当然,如果需要,可以删除这些括号。每个方程组都以rcl
( r
ight- c
enter- l
eft ) 方式沿二元关系对齐,并留有适当的间距。
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
\begin{align*}
\left.\begin{array}{r@{\mskip\thickmuskip}l}
\nabla f(x) -\mu X^{-1} e + A(x) \lambda - z &= 0, \\
c(x) &= 0, \\
-\mu X^{-1} e + z &= 0, \\
x &> 0 \\
z &> 0
\end{array} \right\}
\quad \implies \quad
\left\{\begin{array}{r@{\mskip\thickmuskip}l}
\nabla f(x) + A(x) \lambda - 2z &= 0, \\
c(x) &= 0, \\
-\mu X^{-1} e + z &= 0, \\
x &> 0 \\
z &> 0
\end{array}\right.
\end{align*}
\end{document}
答案2
错误消息实际上告诉您该怎么做:使用环境{aligned}
。这是一个可以在任何类型的数学中使用的子环境,其工作原理类似于,{align}
只是它只占用必要的最小宽度(而不是整行)。您想做类似的事情:
\[
\begin{aligned}
\nabla f(x) -\mu X^{-1} e + A(x) \lambda - z = 0,
\\ c(x) = 0,
\\ -\mu X^{-1} e + z = 0,
\\ x > 0
\\ z > 0
\end{aligned}
\quad \implies \quad
\begin{aligned}
\nabla f(x) + A(x) \lambda - 2z = 0,
\\ c(x) = 0,
\\ -\mu X^{-1} e + z = 0,
\\ x > 0
\\ z > 0
\\
\end{aligned}
\]
我擅自做了一些其他更改。首先,您不应使用$$...$$
,而应使用\[...\]
,它被重新定义为更好地检查错误并更像其他amsmath
环境。其次,您可以使用\implies
而不是字面上但名称不明确的\Longrightarrow
。第三,我没有这样做,但您可能希望在其中添加一些对齐选项卡。
您也可以使用表格来实现此目的。您只需{aligned}
在每个单元格中输入一个内部数学公式即可:
\begin{tabular}{ccc}
$\begin{aligned}
\nabla f(x) -\mu X^{-1} e + A(x) \lambda - z = 0,
\\ c(x) = 0,
\\ -\mu X^{-1} e + z = 0,
\\ x > 0
\\ z > 0
\end{aligned}$
&$\quad \implies \quad$&
$\begin{aligned}
\nabla f(x) + A(x) \lambda - 2z = 0,
\\ c(x) = 0,
\\ -\mu X^{-1} e + z = 0,
\\ x > 0
\\ z > 0
\\
\end{aligned}$
\end{tabular}
这是有效的,因为{aligned}
可以进入任何数学环境。您甚至可以将其嵌入段落内的文本中,尽管这很丑陋。
答案3
以下代码可能是对原始问题的最小侵入性调整。它将两个align*
结构放入小页面中,并插入&
字符以告诉 latex 在哪里对齐各个方程式。
\documentclass[a4paper]{article}
\usepackage{amsmath}
\begin{document}
\noindent
\begin{minipage}{0.45\textwidth}
\begin{align*}
\nabla f(x) -\mu X^{-1} e + A(x) \lambda - z &= 0,\\
c(x) &= 0,\\
-\mu X^{-1} e + z &= 0,\\
x &> 0\\
z &> 0
\end{align*}
\end{minipage}
$\quad \Longrightarrow \quad$
\begin{minipage}{0.35\textwidth}
\begin{align*}
\nabla f(x) + A(x) \lambda - 2z &= 0,\\
c(x) &= 0,\\
-\mu X^{-1} e + z &= 0,\\
x &> 0\\
z &> 0
\end{align*}
\end{minipage}
\end{document}
唯一不太对劲的是 的垂直定位\Longrightarrow
。我想这个问题可以通过将其放入自己的 minipage/gather 系统中来“修复”。不过,我其实更喜欢 @Werner 建议的解决方案。
答案4
您还可以非常简单地使用更多列!
\documentclass{article}
\usepackage{amsmath}
\pagestyle{empty}
\begin{document}
\begin{align*}
\nabla f(x) -\mu X^{-1} e + A(x) \lambda - z = 0, && \nabla f(x) + A(x) \lambda - 2z = 0,\\
c(x) = 0, && c(x) = 0,\\
-\mu X^{-1} e + z = 0, &\implies& -\mu X^{-1} e + z = 0,\\
x > 0 && x > 0\\
z > 0 && z > 0
\end{align*}
\[
\begin{array}{lcl}
\nabla f(x) -\mu X^{-1} e + A(x) \lambda - z = 0, && \nabla f(x) + A(x) \lambda - 2z = 0,\\
c(x) = 0, && c(x) = 0,\\
-\mu X^{-1} e + z = 0, &\implies& -\mu X^{-1} e + z = 0,\\
x > 0 && x > 0\\
z > 0 && z > 0
\end{array}
\]
\end{document}
得出以下结论: