分段定义的自定义单线表示

分段定义的自定义单线表示

我想要一个宏来实现以下分段定义表示:

\documentclass{article}

\usepackage{amsmath}

\begin{document}

\begin{equation*}
    \exists g \in X \to Y: \forall x \in X:
    \langle x \in A \Rightarrow g(x) = 0;~ x \notin A \Rightarrow g(x) \in B \rangle
\end{equation*}

\end{document}

其输出看起来像

在此处输入图片描述

所需的宏可以使用以下语法:

\scases{
    x \in A & g(x) = 0\\
    x \notin A & g(x) \in B
}

或者与环境类似的cases

\begin{scases}
    x \in A & g(x) = 0\\
    x \notin A & g(x) \in B
\end{scases}

\langle其输出将与括号和所括起来的部分相同\rangle

在此处输入图片描述

也就是说,&被条件$ \Rightarrow $取代,并被\\取代;~

请帮我设计这样的宏。

请求更新:宏应该允许任意多个\\s。

答案1

下面的宏可以完成您想要的操作:

\def\scases #1{\bgroup \def\\{;~}\langle \scasesA #1&\egroup}
\def\scasesA #1&{#1\futurelet\next\scasesB}
\def\scasesB {\ifx\next\egroup \rangle \else \Rightarrow \expandafter\scasesA \fi}

% test:
$$
\scases{
    x \in A & g(x) = 0\\
    x \notin A & g(x) \in B
}
$$
\bye

相关内容