Casos vs. ambientes Array

Casos vs. ambientes Array

Gostaria de entender completamente todas as diferenças entre usar o amsmathambiente casese usar o arrayambiente para escrever funções com casos.

Aqui está meu entendimento atual depois de ler outras perguntas no fórum:

  • arrayvem com preenchimento à esquerda e à direita. Pode ser suprimido usando {@{}ll@{}}como explicado emesta questão relacionada.
  • arraycria problemas de espaçamento vertical que não entendo totalmente. Veresta questão relacionada.
  • Ambos arraye casespermitem alterar o espaço entre linhas usando, por exemplo, \\[2ex].
  • É muito mais fácil alterar o alinhamento das colunas com arraydo que com cases.
  • A chave esquerda de casesparece ser mais alta que a chave esquerda de array. Mas não entendo por quê.
  • Usar casesé semanticamente mais apropriado.
  • casesrequer carregamentoamsmath

No geral, parece que a versão padrão casesé melhor, mas arrayé mais personalizável.

Existem outras diferenças que estou perdendo? Existe algum aspecto de funções com casos que podem ser formatados usando um dos ambientes, mas não o outro?

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

função gerada com 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}

função gerada com array

O que eu realmente quero saber é qual dos dois ambientes é melhor e por quê. Uso arrayhá anos, mas estou pensando em mudar para cases.

Responder1

O código para casesin amsmathé apenas

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

então é arraycom uma especificação de coluna {@{}l@{\quad}l@{}}e arraystretch de 1,2

informação relacionada