
Мне бы хотелось полностью понять все различия между использованием 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
in 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