Устранение неравенства в делах
Контекст
Я использую cases
внутри документа R-Markdown для отображения формулы (это для контекста, поскольку я не совсем понимаю, какие инструменты Rmarkdown использует для набора формулы в конечном итоге). Но в конечном итоге это (IMHO) не имеет ничего общего с rmarkdown, а является чистой LaTeX
проблемой (кроме того, может стать сложнее добавить внешние пакеты или команды, которые не являются частью цепочки инструментов Rmarkdown)
Проблема
Я хочу выровнять неравенство в правой части cases
среды. Проблема в том, что для углового случая у меня нет нижней границы, и, следовательно, неравенства больше не выравниваются.
Я попытался заполнить пробел, \phantom
но поскольку мне нужно заменить \leq
знак, интервал не выровнен (я читал здесь, что LaTeX
добавляет \thickmuskip
после оператора неравенства, и я думаю, это именно то, чего не хватает. Однако я не могу добавить \thickmuskip
в Rmarkdown) .
(NB Я знаю, что в неравенствах нет смысла;) - но дело явно не в этом)
\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}
Вывод

Ответы
Поскольку интервал между инфиксными бинарными операторами зависит от того, что их окружает, они могут потерять свой интервал, когда они появляются на краю внутреннего математического списка (напротив фигурных скобок). Вы использовали это, чтобы знаки минус оставались unaray minus (отрицательные числа). Хорошо! (Хотя в некоторых случаях это и не нужно.) Проблема связана с символами отношений, которые идут в конце фантома.
Вы можете добавить явный пробел ( \;
) для компенсации или предоставить что-то для восстановления обработки двоичных отношений:
\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}
Вы можете использовать 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}
Вместо \left\{\renewcommand{\arraystretch}{1.2}
и \right.
вы можете использовать \begin{cases}
и \end{cases}
(за счет небольшого сдвига влево всего дисплея.

У вас также есть более простая возможность с alignedat
вложенными случаями. Я не уверен, что выравнивать числа в конце строк, помимо выравнивания <
знаков, - хорошая идея . Поэтому я добавил код варианта, используя empheq
пакет, без этого окончательного выравнивания. Он добавляет возможность пронумеровать или перенумеровать каждую строку, что может быть полезно в некоторых ситуациях:
\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}

Если вы не хотите нумеровать уравнения, я бы использовал, array
как предложено в других ответах. Тем не менее, если вы хотите нумеровать уравнения, можно использовать {DispWithArrow}
в 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}

Хорошо, видимо, я неправильно понял, \thickmuskip
что это длина, а не команда. \;
следует добавить это:
\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}
