我想彻底了解使用环境amsmath
和cases
使用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