如何高效地创建条件变体?

如何高效地创建条件变体?

假设我有以下内容:

\prg_new_conditional:Nnn \sean_cond:n { T,F,TF } { \prg_return_false: }

我如何有效地创建以下内容?(此列表是任意的。)

\sean_cond:nT \sean_cond:nF \sean_cond:nTF
\sean_cond:oT \sean_cond:oF \sean_cond:oTF
\sean_cond:VT \sean_cond:VF \sean_cond:VTF

我知道我可以(可能)使用类似下面的东西,但我觉得这比需要的更难。

\cs_generate_variant:Nn \sean_cond:nT { o, V }
\cs_generate_variant:Nn \sean_cond:nF { o, V }
\cs_generate_variant:Nn \sean_cond:nTF { o, V }

答案1

2017 年 12 月发布的expl3新增

\prg_generate_conditional_variant:Nnn

这简化了变体的定义。

以下是示例:

\documentclass{article}
\usepackage{expl3}

\ExplSyntaxOn

\prg_new_conditional:Nnn \sean_cond:n { T, F, TF } { \prg_return_false: }

\prg_generate_conditional_variant:Nnn \sean_cond:n { o, V } { T, F, TF }

\cs_show:N \sean_cond:nT
\cs_show:N \sean_cond:nF
\cs_show:N \sean_cond:nTF
\cs_show:N \sean_cond:oT
\cs_show:N \sean_cond:oF
\cs_show:N \sean_cond:oTF
\cs_show:N \sean_cond:VT
\cs_show:N \sean_cond:VF
\cs_show:N \sean_cond:VTF

\stop

所有九个功能都将被定义。

相关内容