语境
我在 R-Markdown 文档中使用cases
它来显示公式(这是上下文,因为我不完全清楚 Rmarkdown 最终使用哪些工具来排版公式)。但最终它(在我看来)与 rmarkdown 无关,而是一个纯粹的LaTeX
问题(此外,添加不属于 Rmarkdown 工具链的外部包或命令可能会变得更加困难)
问题
我想将不平等现象在环境的右侧对齐cases
。问题是,对于极端情况,我没有下限,因此不平等现象不再对齐。
我试图用 来填补空白\phantom
,但由于我必须替换\leq
符号,所以间距不对齐(我读到这里在不等式运算符后添加LaTeX
了一个\thickmuskip
,我猜这正是缺少的。但是,我无法\thickmuskip
在 Rmarkdown 中添加)。
(注意:我知道这些不等式没有意义;) - 但这显然不是重点)
\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}
输出
答案1
由于中缀二元运算符周围的间距取决于它们周围的内容,因此当它们出现在内部数学列表的边缘(括号内)时,它们可能会失去间距。您已利用这一点确保减号保持为无括号减号(负数)。很好!(尽管在某些情况下没有必要。)问题出在幻象末尾的关系符号上。
您可以添加显式空间(\;
)来补偿,或者可以提供一些内容来恢复二元关系处理:
\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}
答案2
您可以使用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}
and来代替and (但代价是整个显示会稍微向左移动)。\right.
\begin{cases}
\end{cases}
答案3
您还可以使用嵌套案例更简单的可能性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}
答案4
好的,显然我误解了\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}