为什么 `eqnarray` 在跟我开玩笑?

为什么 `eqnarray` 在跟我开玩笑?

我有以下代码:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{eqnarray*}
\Rightarrow & x^2 > 4  \ \land & x\ge 0 
\end{eqnarray*}
\end{document}

我想要做的是在上面设置一个列分隔符eqnarray。但是,如果我在前面放置一个\land或尝试在中间添加一个额外的列,LaTeX 会给出错误,并给出类似这样的描述! Missing $ inserted

嗯,为什么?谢谢!

Emma 的更新:

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\begin{document}
\begin{proof}
$\subseteq$: Sei $x \in M $.
\begin{align*}
\Rightarrow & x^2 > 4 &\text{\ und\ }&x \ge 0 \\
\Rightarrow &\underbrace{x^2 - 4}_{(x-2)(x+2)} > 0 & \text{\ und\ } & x \ge 0 \\
\Rightarrow & x>2 & & \\
\Rightarrow & x \in N & &  
\end{align*}
\end{proof}
\end{document}

答案1

普遍的共识是eqnarray已经过时,而您应该使用amsmath环境aligngather等。

出现这种! Missing $ inserted情况的原因是eqnarray只需要三列(LHS、运算符、RHS),因此它会尝试\ge在文本模式下在不存在的“第四”列中排版。

由于您已经在使用amsmath,因此您只需将其替换eqnarrayalign,您的代码就可以运行。

如果你希望列之间的空间更小,也许你真的想使用环境alignat,它会让除了明确插入的内容外,请留出空格。例如,

\documentclass{article}
\usepackage{amsmath,mathtools}
\usepackage{amsthm}
\begin{document}
\begin{proof}
$\subseteq$: Sei $x \in M $.
\begin{alignat*}{3} % Argument is number of <r&l> columns
  \Rightarrow&\quad  &  &x^2 > 4     &      \text{und\ }&x \ge 0 \\
  \Rightarrow&       &  &\!\underbrace{x^2 - 4}_{\mathclap{(x-2)(x+2)}} > 0
                                     & \quad\text{und\ }&x \ge 0 \\
  \Rightarrow&       &  &x>2         &                  & \\
  \Rightarrow&       &  &x \in N     &                  &
\end{alignat*}
\end{proof}
\end{document}

就像 一样align,列在右对齐和左对齐之间交替(我试图通过在代码中添加空格来帮助跟踪)。我还包含了mathtools命令\mathclap,这使得括号下的描述不占用水平空间,以便方程式更好地对齐(括号本身也占用了一些空间,我用 来吃掉了\!)。

相关内容