Aligner les inégalités dans les cas

Aug 19 2020

Le contexte

J'utilise à l' casesintérieur d'un document R-Markdown pour afficher une formule (ceci pour le contexte car je ne suis pas totalement conscient des outils que Rmarkdown utilise pour composer éventuellement la formule). Mais finalement, cela n'a (à mon humble avis) rien à voir avec rmarkdown mais un pur LaTeXproblème (en plus, il peut devenir plus difficile d'ajouter des packages ou des commandes externes qui ne font pas partie de la chaîne d'outils Rmarkdown)

Problème

Je veux aligner les inégalités du bon côté de l' casesenvironnement. Le problème est que pour le cas du coin, je n'ai pas de borne inférieure et donc les inégalités ne sont plus alignées.

J'ai essayé de combler l'écart avec \phantommais comme je dois remplacer le \leqsigne, l'espacement n'est pas aligné (j'ai lu ici qui LaTeXajoute un \thickmuskipaprès un opérateur d'inégalité et je suppose que c'est exactement ce qui manque. Cependant, je ne peux pas ajouter \thickmuskipdans Rmarkdown) .

(NB je sais que les enquêtes n'ont pas de sens;) - mais ce n'est clairement pas le but)

\begin{cases}
1, & \text{if}\ \phantom{{-1.0}<} x_i < -0.2\\                % too little space
2, & \text{if}\ {-0.2} \leq x_i < -0.1\\                      % add brackets around to -0.2 to treat `-` as unary
3, & \text{if}\ {-0.1} \leq x_i < \phantom{-}0.1 \\
4, & \text{if}\ \phantom{{-}}0.1 \leq x_i < \phantom{-}0.5\\
5, & \text{if}\ \phantom{{-0.5}<1} x_i < \phantom{-}5.0       % too much space
\end{cases}

Production

Réponses

3 DonaldArseneau Aug 19 2020 at 08:41

Comme l'espacement autour des opérateurs binaires infixes dépend de ce qui les entoure, ils peuvent perdre leur espacement lorsqu'ils apparaissent au bord d'une liste mathématique interne (contre des accolades). Vous vous en êtes servi pour vous assurer que les signes moins restent comme des moins unaray (nombres négatifs). Bien! (Bien que inutile dans certains cas.) Le problème vient des symboles de relation qui viennent à la fin du fantôme.

Vous pouvez ajouter un espace explicite ( \;) pour compenser, ou vous pouvez fournir quelque chose pour restaurer le traitement de la relation binaire:

\begin{cases}
1, & \text{if}\ \phantom{{-1.0}<{}} x_i < -0.2\\
2, & \text{if}\ {-0.2} \leq x_i < -0.1\\
3, & \text{if}\ {-0.1} \leq x_i < \phantom{-}0.1 \\
4, & \text{if}\ \phantom{{-}}0.1 \leq x_i < \phantom{-}0.5\\
5, & \text{if}\ \phantom{{-0.5}<{}} x_i < \phantom{-}5.0 
\end{cases}
4 egreg Aug 19 2020 at 09:05

Vous pouvez utiliser un array:

\documentclass{article}
\usepackage{amsmath,array}

\begin{document}

\begin{equation*}
\left\{
\renewcommand{\arraystretch}{1.2} % like cases does
\setlength{\arraycolsep}{0pt} % we don't want padding
\begin{array}{
  l           % value
  @{\quad}    % like cases does
  >{$}l<{ $}  % text column with trailing normal space
  r           % lower bound
  >{{}}c<{{}} % relation
  c           % variable
  >{{}}c<{{}} % relation
  r           % upper bound
}
1, & if &      &     & x_i & < &  0.2 \\
2, & if & -0.2 & \le & x_i & < & -0.1 \\
3, & if & -0.1 & \le & x_i & < &  0.1 \\
4, & if &  0.1 & \le & x_i & < &  0.5 \\
5, & if &  0.5 & \le & x_i
\end{array}
\right.
\end{equation*}

\end{document}

Au lieu de \left\{\renewcommand{\arraystretch}{1.2}et, \right.vous pouvez utiliser \begin{cases}et \end{cases}(au prix d'un léger décalage vers la gauche de l'ensemble de l'affichage.

3 Bernard Aug 19 2020 at 09:09

Vous avez également une possibilité plus simple avec alignedatdes cas imbriqués. Je ne suis pas sûr que ce soit une bonne idée d'aligner les nombres à la fin des lignes, en plus d'aligner les <signes. J'ai donc ajouté un code de variante, en utilisant le empheqpackage, sans cet alignement final. Il ajoute la possibilité de numéroter ou de sous-numéroter chaque ligne, ce qui peut être utile dans certaines situations:

\documentclass[a4paper,12pt]{article}

\usepackage{array}
\usepackage{empheq}

\begin{document}

 \[ \begin{cases}
\begin{alignedat}{3} &1, &\quad & \text{if} & x_i &< -0.2\\ &2, & &\text{if} & \quad -0.2 \leq x_i &< -0.1\\ &3, & &\text{if} &-0.1 \leq x_i & < \phantom{-}0.1 \\ &4, & &\text{if} & \phantom{{-}}0.1 \leq x_i &< \phantom{-}0.5\\ &5, & &\text{if} & x_i &< \phantom{-}5.0 % too much space \end{alignedat}
\end{cases} \]
\vspace{1cm}

\begin{subequations}
 \begin{empheq}[left=\empheqlbrace]{alignat=3}
&1, &\quad & \text{if} & x_i &< -0.2\\
&2, & &\text{if} & \quad -0.2 \leq x_i &< -0.1\\
&3, & &\text{if} &-0.1 \leq x_i & < 0.1 \\
&4, & &\text{if} & \phantom{{-}}0.1 \leq x_i &< 0.5\\
&5, & &\text{if} & x_i &< 5.0 % too much space
\end{empheq}
\end{subequations}

\end{document} 

2 F.Pantigny Aug 19 2020 at 12:40

Si vous ne voulez pas numéroter les équations, j'utiliserais un arraycomme suggéré dans les autres réponses. Cependant, si vous voulez numéroter les équations, vous pouvez utiliser {DispWithArrow}de witharrows:

\documentclass{article}
\usepackage{witharrows}
\usepackage{amsmath}

\begin{document}

\begin{DispWithArrows}<f(x_i)=>[format=lrrcccr]
1, & \quad \text{if } &        &         & x_i & {}<{} &  0.2 \\
2, &       \text{if } & {-0.2} & {}\le{} & x_i & {}<{} & {-0.1} \\
3, &       \text{if } & {-0.1} & {}\le{} & x_i & {}<{} &  0.1 \\
4, &       \text{if } &  0.1   & {}\le{} & x_i & {}<{} &  0.5 \\
5, &       \text{if } &  0.5   & {}\le{} & x_i
\end{DispWithArrows}

\end{document}

1 thothal Aug 19 2020 at 08:25

Ok, apparemment j'ai mal compris \thickmuskipce qui est une longueur, plutôt qu'une commande. \;devrait ajouter ceci:

\begin{cases}
1, & \text{if}\ \phantom{{-1.0}<}\; x_i < -0.2\\
2, & \text{if}\ {-0.2} \leq x_i < -0.1\\
3, & \text{if}\ {-0.1} \leq x_i < \phantom{-}0.1 \\
4, & \text{if}\ \phantom{{-}}0.1 \leq x_i < \phantom{-}0.5\\
5, & \text{if}\ \phantom{{-0.5}<}\; x_i < \phantom{-}5.0 
\end{cases}