latex3 是否正在对布尔 case 语句进行处理?

latex3 是否正在对布尔 case 语句进行处理?

各种语言都有类似的结构

选择;
   当 <表达式 1> 时
      <动作 1>;
   当 <表达式 2> 时
      <动作2>;
   ...
   当 <表达式 n> 时
      <动作 n>;
   否则;
      <动作错误>;
   结尾;

或者

if (<表达式 1>) {
  <操作 1>
  }
elsif (<表达式2>) {
  <操作 2>
  }
...
elsif (<表达式 n>) {
  <动作 n>
  }
别的 {
  <动作错误>
  }

用于评估一系列表达式并执行表达式评估为真时执行的第一个操作。我原本希望 expl3 内核包含 \case:n 和 \case:nTF 来实现此目的,但事实并非如此。是否有任何正在进行的工作来添加这样的构造?

答案1

构建这样的结构很容易,我可能没有很正式的命名方案,但可以安排

在此处输入图片描述

\documentclass{article}

\usepackage{expl3}
\begin{document}


\ExplSyntaxOn
\def\zz#1\zzz{}\def\zzz{}

two ~true ~just ~do ~first ~
aaa ~ \bool_if:nT {\int_compare_p:n{3=1}} {3 ~ is ~ 1\zz}
      \bool_if:nT {\int_compare_p:n{3=2}} {3 ~ is ~ 2\zz}
      \bool_if:nT {\int_compare_p:n{3=3}} {3 ~ is ~ 3\zz}
      \bool_if:nT {\int_compare_p:n{3=4}} {3 ~ is ~ 4\zz}
      \bool_if:nT {\int_compare_p:n{1=1}} {1 ~ is ~ 1}
      \zzz \ bbb

\par

one ~true ~
aaa ~ \bool_if:nT {\int_compare_p:n{3=1}} {3 ~ is ~ 1\zz}
      \bool_if:nT {\int_compare_p:n{3=2}} {3 ~ is ~ 2\zz}
      \bool_if:nT {\int_compare_p:n{3=4}} {3 ~ is ~ 4\zz}
      \bool_if:nT {\int_compare_p:n{3=4}} {3 ~ is ~ 4\zz}
      \bool_if:nT {\int_compare_p:n{1=1}} {1 ~ is ~ 1}
      \zzz \ bbb

\par

none ~true ~
aaa ~ \bool_if:nT {\int_compare_p:n{3=1}} {3 ~ is ~ 1\zz}
      \bool_if:nT {\int_compare_p:n{3=2}} {3 ~ is ~ 2\zz}
      \bool_if:nT {\int_compare_p:n{3=4}} {3 ~ is ~ 4\zz}
      \bool_if:nT {\int_compare_p:n{3=4}} {3 ~ is ~ 4\zz}
      \bool_if:nT {\int_compare_p:n{1=4}} {1 ~ is ~ 4}
      \zzz \ bbb

\ExplSyntaxOff


\end{document}

相关内容