创建案例环境

创建案例环境

我正在使用该tabularray包创建一个类似案例的环境,并进行了一些更改:

  1. 我想要自动放置“if”。
  2. 我需要两个版本:带星号和不带星号。第一个版本必须将“if”改为“otherwise”,但只在最后一行。
  3. 带有设置第一列对齐方式的可选参数。

这就是我目前所拥有的:

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

我认为这张图片解释了我想要实现的目标: 在此处输入图片描述

我有两个问题:

  1. 有没有更好/更简单/更强大的方法来做到这一点?
  2. 我可以获得与传统完全相同的间距吗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}

在此处输入图片描述

相关内容