Casos versus entornos de matriz

Casos versus entornos de matriz

Me gustaría comprender completamente todas las diferencias entre usar el amsmathentorno casesy usar el arrayentorno para escribir funciones con casos.

Aquí está mi comprensión actual después de leer otras preguntas en el foro:

  • arrayViene con acolchado a la izquierda y a la derecha. Se puede suprimir usando{@{}ll@{}} como se explica enesta pregunta relacionada.
  • arraycrea problemas de espaciado vertical que no entiendo del todo. Veresta pregunta relacionada.
  • Ambos arrayy casespermiten cambiar el espacio entre líneas usando, por ejemplo, \\[2ex].
  • Es mucho más fácil cambiar la alineación de las columnas con arrayque con cases.
  • El tirante izquierdo de casesparece ser más alto que el tirante izquierdo de array. Pero no entiendo por qué.
  • Usar caseses semánticamente más apropiado.
  • casesrequiere cargaamsmath

En general, parece que la versión predeterminada caseses mejor, pero arrayes más personalizable.

¿Hay otras diferencias que me faltan? ¿Existe algún aspecto de funciones con casos que se pueda formatear usando uno de los entornos pero no el otro?

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

función generada con casos

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

función generada con matriz

Lo que realmente quiero saber es cuál de los dos entornos es mejor y por qué. Lo he estado usando arraydurante años, pero estoy considerando cambiarme a cases.

Respuesta1

El código para casesin amsmathes solo

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

lo mismo ocurre arraycon una especificación de columna {@{}l@{\quad}l@{}}y un tramo de matriz de 1,2

información relacionada