From d13d9685115e059e52709bb5583d7a6e9031942d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 12 Oct 2021 20:05:28 +0000 Subject: cdcmd (12oct21) git-svn-id: svn://tug.org/texlive/trunk@60742 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/cdcmd/cdcmd.sty | 571 ++++++++++++++++++++++++++++ 1 file changed, 571 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/cdcmd/cdcmd.sty (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/cdcmd/cdcmd.sty b/Master/texmf-dist/tex/latex/cdcmd/cdcmd.sty new file mode 100644 index 00000000000..75373f91153 --- /dev/null +++ b/Master/texmf-dist/tex/latex/cdcmd/cdcmd.sty @@ -0,0 +1,571 @@ +%% +%% This is file `cdcmd.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% cdcmd.dtx (with options: `package') +%% +%% Copyright (C) 2021--2021 +%% Wenjian Chern (Longaster) and any individual authors listed elsewhere in this file. +%% -------------------------------------------------------------------------- +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. This version of this license is in +%% http://www.latex-project.org/lppl/lppl-1-3c.txt +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainers of this work are Wenjian Chern (Longaster). +%% -------------------------------------------------------------------------- +%% +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{expl3}[2021/05/11] +\GetIdInfo$Id: cdcmd.dtx 1.0 2021/10/12 +0815 Longaster$ + {Expandable Conditional Command In LaTeX2e} +\ProvidesExplPackage{cdcmd} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\str_const:Nn \c_cdcmd_all_str { * } +\clist_new:N \g__cdcmd_clist +\bool_new:N \l__cdcmd_clear_set_bool +\msg_new:nnn { cdcmd } { condition-exist } + { The~ condition~ `#1'~ you~ try~ to~ new~ already~ exists. } +\msg_new:nnn { cdcmd } { condition-not-exist } + { The~ condition~ `#1'~ not~ exists. } +\msg_new:nnn { cdcmd } { condition-id-not-exist } + { The~ id~ `#2' of~ condition~ `#1'~ not~ exists. } +\prg_new_conditional:Npnn \cdcmd_if_exist:n #1 { p, T, F, TF } + { + \clist_if_exist:cTF { c__cdcmd_condition@ #1 _clist } + { \prg_return_true: } { \prg_return_false: } + } +\prg_new_conditional:Npnn \cdcmd_cd_id_if_exist:nn #1#2 { T, F, TF } + { + \clist_if_in:cnTF { c__cdcmd_condition@ #1 _clist } {#2} + { \prg_return_true: } { \prg_return_false: } + } +\cs_new_nopar:Npn \cdcmd_new:nn #1#2 + { + \cdcmd_if_exist:nTF {#1} + { \msg_error:nnn { cdcmd } { condition-exist } {#1} } + { + \clist_gput_right:Nn \g__cdcmd_clist {#1} + \clist_const:cn { c__cdcmd_condition@ #1 _clist } {#2} + \clist_new:c { l__cdcmd_curr_condition@ #1 _clist } + } + } +\cs_new_nopar:Npn \cdcmd_set:nn #1#2 + { + \cdcmd_if_exist:nTF {#1} + { + \bool_if:NT \l__cdcmd_clear_set_bool + { \clist_clear:c { l__cdcmd_curr_condition@ #1 _clist } } + \clist_map_inline:nn {#2} + { + \str_if_eq:eeTF {##1} { \c_cdcmd_all_str } + { \clist_map_break:n { \cdcmd_set_cdcmd_all:n {#1} } } + { \cdcmd_set_cdcmd_single:nn {#1} {##1} } + } + } + { \msg_warning:nnn { cdcmd } { condition-not-exist } {#1} } + } +\cs_new_nopar:Npn \cdcmd_set_cdcmd_single:nn #1#2 + { + \cdcmd_if_exist:nTF {#1} + { + \cdcmd_cd_id_if_exist:nnTF {#1} {#2} + { \clist_put_right:cn { l__cdcmd_curr_condition@ #1 _clist } {#2} } + { \msg_warning:nnnn { cdcmd } { condition-id-not-exist } {#1} {#2} } + } + { \msg_warning:nnn { cdcmd } { condition-not-exist } } + } +\cs_new_nopar:Npn \cdcmd_set_cdcmd_all:n #1 + { + \cdcmd_if_exist:nTF {#1} + { + \clist_set_eq:cc + { l__cdcmd_curr_condition@ #1 _clist } + { c__cdcmd_condition@ #1 _clist } + } + { \msg_warning:nnn { cdcmd } { condition-not-exist } {#1} } + } +\cs_new_nopar:Npn \cdcmd_set:n + { \keyval_parse:NNn \cdcmd_set_cdcmd_all:n \cdcmd_set:nn } +\cs_new_nopar:Npn \cdcmd_clear_set:n #1 + { + \bool_set_true:N \l__cdcmd_clear_set_bool + \keyval_parse:NNn \cdcmd_set_cdcmd_all:n \cdcmd_set:nn {#1} + \bool_set_false:N \l__cdcmd_clear_set_bool + } +\cs_new:Npn \cdcmd_any_if:nTF #1 + { + \bool_if:nTF + { + \keyval_parse:NNn + \__cdcmd_any_i:n \__cdcmd_any_ii:nn {#1} + \c_false_bool + } + } +\cs_new:Npn \cdcmd_any_if_p:n #1 + { + \bool_if_p:n + { + \keyval_parse:NNn + \__cdcmd_any_i:n \__cdcmd_any_ii:nn {#1} + \c_false_bool + } + } +\cs_new:Npn \cdcmd_any_if:nT #1#2 { \cdcmd_any_if:nTF {#1} {#2} { } } +\cs_new:Npn \cdcmd_any_if:nF #1 { \cdcmd_any_if:nTF {#1} { } } +\cs_new:Npn \cdcmd_any_if:nFT #1#2#3 { \cdcmd_any_if:nTF {#1} {#3} {#2} } +\prg_generate_conditional_variant:Nnn \cdcmd_any_if:n { o, V, f } { p, T, F, TF } +\cs_new:Npn \__cdcmd_any_i:n #1 + { + \str_if_eq:eeTF {#1} { \c_cdcmd_all_str } + { \c_true_bool || } + { \cdcmd_if_exist:nT {#1} { \c_true_bool || } } + } +\cs_new:Npn \__cdcmd_any_ii:nn #1#2 + { + \cdcmd_if_exist:nT {#1} + { + \clist_map_tokens:nn {#2} + { \__cdcmd_any_ii_aux:nn {#1} } + } + } +\cs_new:Npn \__cdcmd_any_ii_aux:nn #1#2 + { + \str_if_eq:eeTF {#2} { \c_cdcmd_all_str } + { \clist_map_break:n { \tex_the:D \c_true_bool || } } + { + \__cdcmd_clist_if_in:cnT { l__cdcmd_curr_condition@ #1 _clist } {#2} + { \clist_map_break:n { \tex_the:D \c_true_bool || } } + } + } +\cs_new:Npn \cdcmd_all_if:nTF #1 + { + \bool_if:nTF + { + \keyval_parse:NNn + \__cdcmd_all_i:n \__cdcmd_all_ii:nn {#1} + \c_true_bool + } + } +\cs_new:Npn \cdcmd_all_if_p:n #1 + { + \bool_if_p:n + { + \keyval_parse:NNn + \__cdcmd_all_i:n \__cdcmd_all_ii:nn {#1} + \c_true_bool + } + } +\cs_new:Npn \cdcmd_all_if:nT #1#2 { \cdcmd_all_if:nTF {#1} {#2} { } } +\cs_new:Npn \cdcmd_all_if:nF #1 { \cdcmd_all_if:nTF {#1} { } } +\cs_new:Npn \cdcmd_all_if:nFT #1#2#3 { \cdcmd_all_if:nTF {#1} {#3} {#2} } +\prg_generate_conditional_variant:Nnn \cdcmd_all_if:n { o, V, f } { p, T, F, TF } +\cs_new:Npn \__cdcmd_all_i:n #1 + { + \str_if_eq:eeF {#1} { \c_cdcmd_all_str } + { \cdcmd_if_exist:nF {#1} { \c_false_bool && } } + } +\cs_new:Npn \__cdcmd_all_ii:nn #1#2 + { + \cdcmd_if_exist:nTF {#1} + { + \bool_lazy_and_p:nn + { \int_compare_p:n { \clist_count:n {#2} > 0 } } + { + \int_compare_p:n + { \clist_map_tokens:nn {#2} { \__cdcmd_all_ii_aux:nn {#1} } 1 > 0 } + } && + } + { \c_false_bool && } + } +\cs_new:Npn \__cdcmd_all_ii_aux:nn #1#2 + { + \str_if_eq:eeF {#2} { \c_cdcmd_all_str } + { + \__cdcmd_clist_if_in:cnF { l__cdcmd_curr_condition@ #1 _clist } {#2} + { \clist_map_break:n { - } } + } + } +\prg_new_conditional:Npnn \__cdcmd_clist_if_in:Nn #1#2 { p, T, F, TF } + { + \int_compare:nTF + { 0 \clist_map_tokens:Nn #1 { \__cdcmd_if_eq_break:ee {#2} } > 0 } + { \prg_return_true: } { \prg_return_false: } + } +\prg_generate_conditional_variant:Nnn \__cdcmd_clist_if_in:Nn + { NV, No, cn, cV, co } { p, T, F, TF } +\prg_new_conditional:Npnn \__cdcmd_clist_if_in:nn #1#2 { p, T, F, TF } + { + \int_compare:nTF + { 0 \clist_map_tokens:nn {#1} { \__cdcmd_if_eq_break:ee {#2} } > 0 } + { \prg_return_true: } { \prg_return_false: } + } +\prg_generate_conditional_variant:Nnn \__cdcmd_clist_if_in:nn { nV, no } { p, T, F, TF } +\cs_new:Npn \__cdcmd_if_eq_break:ee #1#2 + { + \str_if_eq:eeT {#1} {#2} { \clist_map_break:n { 1 } } + } +\scan_new:N \s__cdcmd_mark +\scan_new:N \s__cdcmd_stop +\cs_new:Npn \cdcmd_any_case_true:nTF { \exp:w \__cdcmd_any_case_true:nTF } +\cs_new:Npn \cdcmd_any_case_true:n #1 { \exp:w \__cdcmd_any_case_true:nTF {#1} { } { } } +\cs_new:Npn \cdcmd_all_case_true:nTF { \exp:w \__cdcmd_all_case_true:nTF } +\cs_new:Npn \cdcmd_all_case_true:n #1 { \exp:w \__cdcmd_all_case_true:nTF {#1} { } { } } +\cs_new:Npn \cdcmd_any_case_false:nTF { \exp:w \__cdcmd_any_case_false:nTF } +\cs_new:Npn \cdcmd_any_case_false:n #1 { \exp:w \__cdcmd_any_case_false:nTF {#1} { } { } } +\cs_new:Npn \cdcmd_all_case_false:nTF { \exp:w \__cdcmd_all_case_false:nTF } +\cs_new:Npn \cdcmd_all_case_false:n #1 { \exp:w \__cdcmd_all_case_false:nTF {#1} { } { } } +\cs_new:Npn \__cdcmd_any_case_true:nTF #1#2#3 + { + \__cdcmd_case:Nw \cdcmd_any_if:nTF #1 { * } { } + \s__cdcmd_mark {#2} \s__cdcmd_mark {#3} \s__cdcmd_stop + } +\cs_new:Npn \__cdcmd_all_case_true:nTF #1#2#3 + { + \__cdcmd_case:Nw \cdcmd_all_if:nTF #1 { * } { } + \s__cdcmd_mark {#2} \s__cdcmd_mark {#3} \s__cdcmd_stop + } +\cs_new:Npn \__cdcmd_any_case_false:nTF #1#2#3 + { + \__cdcmd_case:Nw \cdcmd_any_if:nFT #1 { * } { } + \s__cdcmd_mark {#2} \s__cdcmd_mark {#3} \s__cdcmd_stop + } +\cs_new:Npn \__cdcmd_all_case_false:nTF #1#2#3 + { + \__cdcmd_case:Nw \cdcmd_all_if:nFT #1 { * } { } + \s__cdcmd_mark {#2} \s__cdcmd_mark {#3} \s__cdcmd_stop + } +\cs_new:Npn \__cdcmd_case:Nw #1#2#3 + { #1 {#2} { \__cdcmd_case_end:nw {#3} } { \__cdcmd_case:Nw #1 } } +\cs_new:Npn \__cdcmd_case_end:nw #1#2#3 \s__cdcmd_mark #4#5 \s__cdcmd_stop + { \exp_end: #1 #4 } +\NewDocumentCommand \newcondition { >{ \TrimSpaces } m } { \cdcmd_new:nn {#1} } +\NewDocumentCommand \setcondition { t+ } + { \IfBooleanTF {#1} { \cdcmd_set:n } { \cdcmd_clear_set:n } } +\NewDocumentCommand \clearcondition { !O{*} } + { + \clist_map_inline:nn {#1} + { + \str_if_eq:eeTF {##1} { \c_cdcmd_all_str } + { + \clist_map_break:n + { \exp_after:wN \clearcondition \exp_after:wN [ \g__cdcmd_clist ] } + } + { + \cdcmd_if_exist:nTF {##1} + { \clist_clear:c { l__cdcmd_curr_condition@ ##1 _clist } } + { \msg_warning:nnn { cdcmd } { condition-not-exist } {##1} } + } + } + } +\NewExpandableDocumentCommand \econditionif { s O{*} +m +m } + { + \IfBooleanTF {#1} + { \cdcmd_all_if:nTF } + { \cdcmd_any_if:nTF } + {#2} {#3} {#4} + } +\NewExpandableDocumentCommand \econditioncmd { s O{*} +m } + { + \IfBooleanTF {#1} + { \cdcmd_all_if:nTF } + { \cdcmd_any_if:nTF } + {#2} {#3} { } + } +\NewExpandableDocumentCommand \econditioncase { s +m } + { + \IfBooleanTF {#1} + { \cdcmd_all_case:n {#2} } + { \cdcmd_any_case:n {#2} } + } +\NewExpandableDocumentCommand \econditioncaseTF { s +m } + { + \IfBooleanTF {#1} + { \cdcmd_all_case:nTF {#2} } + { \cdcmd_any_case:nTF {#2} } + } +\NewDocumentCommand \conditionif { s O{*} +m +m } + { + \IfBooleanTF {#1} + { \cdcmd_all_if:nTF } + { \cdcmd_any_if:nTF } + {#2} {#3} {#4} + } +\NewDocumentCommand \conditioncmd { s O{*} +m } + { + \IfBooleanTF {#1} + { \cdcmd_all_if:nTF } + { \cdcmd_any_if:nTF } + {#2} {#3} { } + } +\NewDocumentCommand \conditioncase { s t! +m } + { + \IfBooleanTF {#2} + { + \IfBooleanTF {#1} + { \cdcmd_all_case_false:n {#3} } + { \cdcmd_any_case_false:n {#3} } + } + { + \IfBooleanTF {#1} + { \cdcmd_all_case_true:n {#3} } + { \cdcmd_any_case_true:n {#3} } + } + } +\NewDocumentCommand \conditioncaseTF { s t! +m } + { + \IfBooleanTF {#2} + { + \IfBooleanTF {#1} + { \cdcmd_all_case_false:nTF {#3} } + { \cdcmd_any_case_false:nTF {#3} } + } + { + \IfBooleanTF {#1} + { \cdcmd_all_case_true:nTF {#3} } + { \cdcmd_any_case_true:nTF {#3} } + } + } +\str_const:Nn \c_cdcmd_pair_u_str { cdcmd@u@ } +\str_const:Nn \c_cdcmd_pair_n_str { cdcmd@n@ } +\cs_new_nopar:Npn \__cdcmd_cs_pair_u:N #1 + { \c_cdcmd_pair_u_str \cs_to_str:N #1 } +\cs_new_nopar:Npn \__cdcmd_cs_pair_n:N #1 + { \c_cdcmd_pair_n_str \cs_to_str:N #1 } +\cs_new:Npn \__cdcmd_arg_spec_from_num:nn #1#2 + { + \if_case:w 0#1 \exp_stop_f: + \or: #2 \or: #2#2 \or: #2#2#2 \or: #2#2#2#2 \or: #2#2#2#2#2 \or: #2#2#2#2#2#2 + \or: #2#2#2#2#2#2#2 \or: #2#2#2#2#2#2#2#2 \else: #2#2#2#2#2#2#2#2#2 \fi: + } +\cs_new_nopar:Npn \__cdcmd_cs_pair_u:Nn #1#2 + { + \c_cdcmd_pair_u_str + \cs_to_str:N #1 : + \__cdcmd_arg_spec_from_num:nn {#2} { n } + } +\cs_new_nopar:Npn \__cdcmd_cs_pair_n:Nn #1#2 + { + \c_cdcmd_pair_n_str + \cs_to_str:N #1 : + \__cdcmd_arg_spec_from_num:nn {#2} { n } + } +\cs_new:Npn \__cdcmd_new_cdcmd_command:NN #1#2 + { + \cs_new_protected:Npn #1 ##1##2##3 + { + #2 ##1 { t+ m } + { + \IfBooleanTF {####1} + { \cdcmd_all_if:nTF } + { \cdcmd_any_if:nTF } + {####2} + { \use:c { \__cdcmd_cs_pair_u:N ##1 } } + { \use:c { \__cdcmd_cs_pair_n:N ##1 } } + } + \exp_args:Nc #2 + { \__cdcmd_cs_pair_u:N ##1 } {##2} {##3} + \exp_args:Nc #2 + { \__cdcmd_cs_pair_n:N ##1 } {##2} { } + } + } +\seq_const_from_clist:Nn \c__cdcmd_Command_seq + { + \NewDocumentCommand , + \RenewDocumentCommand , + \ProvideDocumentCommand , + \DeclareDocumentCommand , + \NewExpandableDocumentCommand , + \RenewExpandableDocumentCommand , + \ProvideExpandableDocumentCommand , + \DeclareExpandableDocumentCommand , + } +\seq_const_from_clist:Nn \c__cdcmd_COMMAND_seq + { + \NewConditionCommand , + \RenewConditionCommand , + \ProvideConditionCommand , + \DeclareConditionCommand , + \NewExpandableConditionCommand , + \RenewExpandableConditionCommand , + \ProvideExpandableConditionCommand , + \DeclareExpandableConditionCommand , + } +\seq_mapthread_function:NNN + \c__cdcmd_COMMAND_seq + \c__cdcmd_Command_seq + \__cdcmd_new_cdcmd_command:NN +\cs_new:Npn \__cdcmd_new_cdcmd_cmd_no:nnn #1#2#3 + { + \cs_new_protected:Npn #1 ##1##2##3 + { + #3 ##1 { t+ m } + { + \IfBooleanTF {####1} + { \cdcmd_all_if:nTF } + { \cdcmd_any_if:nTF } + { ####2 } + { \use:c { \__cdcmd_cs_pair_u:Nn ##1 {##2} } } + { \use:c { \__cdcmd_cs_pair_n:Nn ##1 {##2} } } + } + #2 { \__cdcmd_cs_pair_u:Nn ##1 {##2} } {##3} + #2 { \__cdcmd_cs_pair_n:Nn ##1 {##2} } { } + } + } +\cs_generate_variant:Nn \__cdcmd_new_cdcmd_cmd_no:nnn { xxx } +\seq_const_from_clist:Nn \c__cdcmd_cmd_no_seq + { + \cs_set_protected:cn , \cs_set_protected_nopar:cn , + \cs_set_protected:cn , \cs_set_protected_nopar:cn , + \cs_set_protected:cn , \cs_set_protected_nopar:cn , + \cs_set:cn , \cs_set_nopar:cn , + \cs_set:cn , \cs_set_nopar:cn , + \cs_set:cn , \cs_set_nopar:cn , + } +\seq_const_from_clist:Nn \c__cdcmd_Cmd_no_seq + { + \NewDocumentCommand , \NewDocumentCommand , + \RenewDocumentCommand , \RenewDocumentCommand , + \DeclareDocumentCommand , \DeclareDocumentCommand , + \NewExpandableDocumentCommand , \NewExpandableDocumentCommand , + \RenewExpandableDocumentCommand , \RenewExpandableDocumentCommand , + \DeclareExpandableDocumentCommand , \DeclareExpandableDocumentCommand , + } +\seq_const_from_clist:Nn \c__cdcmd_CMD_no_seq + { + \__cdcmd_new_cdcmd_p_l_num:Nnn , \__cdcmd_new_cdcmd_p_nl_num:Nnn , + \__cdcmd_renew_cdcmd_p_l_num:Nnn , \__cdcmd_renew_cdcmd_p_nl_num:Nnn , + \__cdcmd_declare_cdcmd_p_l_num:Nnn , \__cdcmd_declare_cdcmd_p_nl_num:Nnn , + \__cdcmd_new_cdcmd_np_l_num:Nnn , \__cdcmd_new_cdcmd_np_nl_num:Nnn , + \__cdcmd_renew_cdcmd_np_l_num:Nnn , \__cdcmd_renew_cdcmd_np_nl_num:Nnn , + \__cdcmd_declare_cdcmd_np_l_num:Nnn , \__cdcmd_declare_cdcmd_np_nl_num:Nnn , + } +\int_step_inline:nn { 6 } + { + \__cdcmd_new_cdcmd_cmd_no:xxx + { \seq_item:Nn \c__cdcmd_CMD_no_seq {#1} } + { \seq_item:Nn \c__cdcmd_cmd_no_seq {#1} } + { \seq_item:Nn \c__cdcmd_Cmd_no_seq {#1} } + } +\tl_new:N \l__cdcmd_arg_spec_tl +\cs_new:Npn \__cdcmd_generate_arg_spec:nnn #1#2#3 + { + \tl_set:Nn \l__cdcmd_arg_spec_tl { O{#2} } + \if_int_compare:w #1 > 1 \exp_stop_f: + \int_step_inline:nn {#1-1} { \tl_put_right:Nn \l__cdcmd_arg_spec_tl {#3} } + \fi: + } +\cs_new:Npn \__cdcmd_new_cdcmd_cmd_o_aux:nn #1#2 + { + \cs_new_protected:Npn #1 ##1##2##3##4##5 + { + #2 ##1 { t+ m } + { + \IfBooleanTF{####1} + { \cdcmd_all_if:nTF } + { \cdcmd_any_if:nTF } + {####2} + { \use:c { \__cdcmd_cs_pair_u:N ##1 } } + { \use:c { \__cdcmd_cs_pair_n:N ##1 } } + } + \__cdcmd_generate_arg_spec:nnn {##2} {##3} {##5} + \exp_args:NcV #2 { \__cdcmd_cs_pair_u:N ##1 } \l__cdcmd_arg_spec_tl {##4} + \exp_args:NcV #2 { \__cdcmd_cs_pair_n:N ##1 } \l__cdcmd_arg_spec_tl { } + } + } +\seq_const_from_clist:Nn \c__cdcmd_CMD_o_seq + { \NewDocumentCommand , \RenewDocumentCommand , \DeclareDocumentCommand } +\seq_const_from_clist:Nn \c__cdcmd_cmd_o_seq + { + \__cdcmd_new_cdcmd_o_num:Nnnnn , + \__cdcmd_renew_cdcmd_o_num:Nnnnn , + \__cdcmd_declare_cdcmd_o_num:Nnnnn , + } +\seq_mapthread_function:NNN + \c__cdcmd_cmd_o_seq + \c__cdcmd_CMD_o_seq + \__cdcmd_new_cdcmd_cmd_o_aux:nn +\cs_new_protected:Npn \__cdcmd_new_cdcmd_cmd_ne_aux:n #1 + { + \exp_args:Nc \NewDocumentCommand { #1 conditioncommand } { s m O{0} o +m } + { + \IfBooleanTF{##1} + { + \IfNoValueTF{##4} + { \use:c { __cdcmd_ #1 _cdcmd_p_nl_num:Nnn } ##2 {##3} {##5} } + { \use:c { __cdcmd_ #1 _cdcmd_o_num:Nnnnn } ##2 {##3} {##4} {##5} { m } } + } + { + \IfNoValueTF{##4} + { \use:c { __cdcmd_ #1 _cdcmd_p_l_num:Nnn } ##2 {##3} {##5} } + { \use:c { __cdcmd_ #1 _cdcmd_o_num:Nnnnn } ##2 {##3} {##4} {##5} { +m } } + } + } + } +\clist_map_function:nN { new, renew, declare } \__cdcmd_new_cdcmd_cmd_ne_aux:n +\NewDocumentCommand \provideconditioncommand { s m O{0} o +m } + { + \cs_if_free:NT #2 + { + \IfBooleanTF{#1} + { + \IfNoValueTF{#4} + { \newconditioncommand * #2 [#3] {#5} } + { \newconditioncommand * #2 [#3] [#4] {#5} } + } + { + \IfNoValueTF{#4} + { \newconditioncommand #2 [#3] {#5} } + { \newconditioncommand #2 [#3] [#4] {#5} } + } + } + } + +\int_step_inline:nnnn { 7 } { 1 } { 12 } + { + \__cdcmd_new_cdcmd_cmd_no:xxx + { \seq_item:Nn \c__cdcmd_CMD_no_seq {#1} } + { \seq_item:Nn \c__cdcmd_cmd_no_seq {#1} } + { \seq_item:Nn \c__cdcmd_Cmd_no_seq {#1} } + } + +\cs_new_protected:Npn \__cdcmd_new_cdcmd_cmd_e_no_aux:n #1 + { + \exp_args:Nc \NewDocumentCommand { #1 econditioncommand } { s m O{0} +m } + { + \IfBooleanTF{##1} + { \use:c { __cdcmd_ #1 _cdcmd_np_nl_num:Nnn } ##2 {##3} {##4} } + { \use:c { __cdcmd_ #1 _cdcmd_np_l_num:Nnn } ##2 {##3} {##4} } + } + } +\clist_map_function:nN { new, renew, declare } \__cdcmd_new_cdcmd_cmd_e_no_aux:n +\NewDocumentCommand \provideeconditioncommand { s m O{0} +m } + { + \cs_if_free:NT #2 + { + \IfBooleanTF{#1} + { \neweconditioncommand * #2 [#3] {#4} } + { \neweconditioncommand #2 [#2] {#4} } + } + } +%% +%% This work consists of the file cdcmd.dtx, +%% and the derived files cdcmd.pdf, +%% cdcmd.sty, +%% cdcmd-cn.tex, +%% cdcmd-cn.pdf, +%% cdcmd-test.tex, +%% cdcmd.ins and +%% README.md +%% +%% End of file `cdcmd.sty'. -- cgit v1.2.3