我正在使用该tabularray
包创建一个类似案例的环境,并进行了一些更改:
- 我想要自动放置“if”。
- 我需要两个版本:带星号和不带星号。第一个版本必须将“if”改为“otherwise”,但只在最后一行。
- 带有设置第一列对齐方式的可选参数。
这就是我目前所拥有的:
\documentclass{article}
\usepackage {amssymb} % for \mathbb
\usepackage {mathtools} % for \coloneqq
\usepackage {tabularray}
\NewDocumentEnvironment{jcases}{sO{c}} % s=star, O(c)=first column align, default c
{% At the beginning
\IfBooleanTF{#1}
{% with star
\left\{\begin{tblr}
{% format
colspec={#2l}, column{2}={leftsep=0.2em},
cell{1-Y}{2}={preto=\text{if}\hspace{0.7em}},
cell{Z}{2}={l,preto=\text{otherwise.}}
}
}
{% without star
\left\{\begin{tblr}
{% format
colspec={#2l},
column{2}={leftsep=0.2em,preto=\text{if}\hspace{0.7em}}
}
}
}% At the end
{\end{tblr}\right.}
\begin{document}
So now we define the Dirichlet function as
\begin{align*}
\chi_\mathbb{Q}(x) & \coloneqq{\begin{jcases}
0 & x\not\in\mathbb{Q},\\
1 & x\in\mathbb{Q}.
\end{jcases}}
\shortintertext{But it looks better this way:}
\chi_\mathbb{Q}(x) & \coloneqq{\begin{jcases}*
0 & x\not\in\mathbb{Q},\\
1 & x\in\mathbb{Q},\\
2
\end{jcases}}% tblr inside align must be enclosed in curly braces
\end{align*}
\end{document}
我有两个问题:
- 有没有更好/更简单/更强大的方法来做到这一点?
- 我可以获得与传统完全相同的间距吗
array
?
答案1
您可以使用标准来完成此操作array
。
\documentclass{article}
\usepackage{amsmath,array,amssymb}
\NewDocumentEnvironment{jcases}{O{c}}
{%
\left\lbrace
\renewcommand{\arraystretch}{1.2}% like in cases
\begin{array}{@{} #1 >{\text{if }}l @{}}
}
{%
\end{array}\right.
}
\NewDocumentEnvironment{jcases*}{O{c}}
{\begin{jcases}[#1]}
{&\multicolumn{1}{l}{\text{otherwise}}\end{jcases}}
\begin{document}
\begin{align*}
\chi_{\mathbb{Q}}(x)&=
\begin{jcases}
0 & x\not\in\mathbb{Q},\\
1 & x\in\mathbb{Q}.
\end{jcases}
\\
\chi_{\mathbb{Q}}(x)&=
\begin{jcases*}
0 & x\not\in\mathbb{Q},\\
1 & x\in\mathbb{Q},\\
2
\end{jcases*}
\end{align*}
\end{document}