Fälle vs. Array-Umgebungen

Fälle vs. Array-Umgebungen

Ich möchte alle Unterschiede zwischen der Verwendung der amsmathUmgebung casesund der Verwendung der arrayUmgebung zum Schreiben von Funktionen mit Fällen vollständig verstehen.

Hier ist mein aktueller Kenntnisstand, nachdem ich andere Fragen im Forum gelesen habe:

  • arraykommt mit Polsterung auf der linken und rechten Seite. Es kann unterdrückt werden, {@{}ll@{}}wie indiese verwandte Frage.
  • arrayführt zu vertikalen Abstandsproblemen, die ich nicht ganz verstehe. Siehediese verwandte Frage.
  • Sowohl arrayals auch casesermöglichen das Ändern des Zeilenabstands, beispielsweise mit \\[2ex].
  • Es ist viel einfacher, die Ausrichtung von Spalten mit zu ändern arrayals mit cases.
  • Die linke Klammer von casesscheint höher zu sein als die linke Klammer von array. Aber ich verstehe nicht, warum.
  • Die Verwendung casesist semantisch angemessener.
  • caseserfordert Ladenamsmath

Insgesamt scheint die Standardversion casesbesser zu sein, lässt sich aber arraybesser anpassen.

Gibt es noch andere Unterschiede, die ich übersehen habe? Gibt es einen Aspekt von Funktionen mit Fällen, der mit einer der Umgebungen formatiert werden kann, mit der anderen jedoch nicht?

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

Mit Fällen generierte Funktion

\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}

Mit Array generierte Funktion

Was ich wirklich wissen möchte, ist, welche der beiden Umgebungen besser ist und warum. Ich verwende sie arrayseit Jahren, überlege aber, auf umzusteigen cases.

Antwort1

Der Code für casesin amsmathist einfach

\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@{}}%
}

so ist es arraymit einer Spaltenangabe von {@{}l@{\quad}l@{}}und Arraystretch von 1,2

verwandte Informationen