案例与数组环境

案例与数组环境

我想彻底了解使用环境amsmathcases使用array环境编写带有案例的函数之间的所有区别。

阅读论坛中的其他问题后,这是我目前的理解:

  • array左右两侧均带有内边距。可以使用{@{}ll@{}}以下方法取消内边距:这个相关问题
  • array导致垂直间距问题,我不太明白。请参阅这个相关问题
  • array和都cases允许使用 来更改行距,例如,\\[2ex]
  • array使用 来改变列的对齐方式比使用要容易得多cases
  • 的左括号cases似乎比的左括号高array。但我不明白为什么。
  • 从语义上来说使用cases更为合适。
  • cases需要加载amsmath

总体而言,似乎默认版本cases更好,但array可定制性更强。

我还遗漏了其他区别吗?函数中是否存在可以使用其中一个环境进行格式化但不能使用另一个环境进行格式化的情况?

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
    |x| =
        \begin{cases}
            x & \text{if}\ x\geq 0\\
            -x & \text{if}\ x<0\\
        \end{cases}.
\]
\end{document}

用案例生成的函数

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
    |x| = 
        \left\{\begin{array}{ll}
            x & \text{if}\ x\geq 0\\
            -x & \text{if}\ x<0\\
        \end{array}\right..
\]
\end{document}

用数组生成的函数

我真正想知道的是这两个环境中哪一个更好以及为什么。我已经使用了array很多年,但我正在考虑切换到cases

答案1

cases的代码amsmath只是

\renewenvironment{cases}{%
  \matrix@check\cases\env@cases
}{%
  \endarray\right.%
}
\def\env@cases{%
  \let\@ifnextchar\new@ifnextchar
  \left\lbrace
  \def\arraystretch{1.2}%
  \array{@{}l@{\quad}l@{}}%
}

因此,array其列规范为{@{}l@{\quad}l@{}},arraystretch 为 1.2

相关内容