Alinear las desigualdades en los casos

Aug 19 2020

Contexto

Estoy usando casesdentro de un documento R-Markdown para mostrar una fórmula (esto para el contexto, ya que no estoy totalmente consciente de qué herramientas usa Rmarkdown para componer la fórmula eventualmente). Pero en última instancia, (en mi humilde opinión) no tiene nada que ver con rmarkdown, sino un LaTeXproblema puro (además de que puede resultar más difícil agregar paquetes o comandos externos que no forman parte de la cadena de herramientas de Rmarkdown)

Problema

Quiero alinear las desigualdades en el lado derecho del casesmedio ambiente. El problema es que para el caso de la esquina no tengo un límite inferior y, por lo tanto, las desigualdades ya no están alineadas.

Traté de llenar el espacio con, \phantompero como tengo que sustituir el \leqsigno, el espaciado no está alineado (leí aquí que LaTeXagrega un \thickmuskipdespués de un operador de desigualdad y creo que esto es exactamente lo que falta. Sin embargo, no puedo agregar \thickmuskipen Rmarkdown) .

(NB, sé que las inquietudes no tienen sentido;) - pero claramente ese no es el punto)

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

Salida

Respuestas

3 DonaldArseneau Aug 19 2020 at 08:41

Dado que el espacio alrededor de los operadores binarios infijos depende de lo que los rodea, pueden perder su espacio cuando aparecen en el borde de una lista matemática interna (contra llaves). Ha hecho uso de esto para asegurarse de que los signos negativos permanezcan como un signo menos (números negativos). ¡Bueno! (Aunque es innecesario en algunos casos). El problema viene con los símbolos de relación que vienen al final del fantasma.

Puede agregar un espacio explícito ( \;) para compensar, o puede proporcionar algo para restaurar el tratamiento de la relación binaria:

\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

Puede utilizar 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}

En lugar de \left\{\renewcommand{\arraystretch}{1.2}y \right.podría usar \begin{cases}y \end{cases}(a expensas de un ligero desplazamiento hacia la izquierda de toda la pantalla.

3 Bernard Aug 19 2020 at 09:09

También tiene una posibilidad más sencilla con alignedatcasos anidados. No estoy seguro de que sea una buena idea alinear los números al final de las líneas, además de alinear los <signos. Así que agregué un código de variante, usando el empheqpaquete, sin esta alineación final. Agrega la posibilidad de numerar o subnumerar cada línea, lo que puede ser útil en algunas situaciones:

\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 no desea numerar las ecuaciones, usaría una arraycomo se sugiere en otras respuestas. Sin embargo, si desea numerar las ecuaciones, se puede utilizar {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, aparentemente entendí mal \thickmuskipque es una longitud, en lugar de un comando. \;debería agregar esto:

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