diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3keys.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3keys.dtx | 78 |
1 files changed, 63 insertions, 15 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index 13c088c2785..2b1deb80434 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/05/13} +% \date{Released 2017/05/29} % % \maketitle % @@ -656,7 +656,7 @@ % } % \end{verbatim} % -% \begin{function}[added = 2011-08-23, updated = 2015-11-07] +% \begin{function}[added = 2011-08-23, updated = 2017-05-27] % { % \keys_set_known:nnN, \keys_set_known:nVN, % \keys_set_known:nvN, \keys_set_known:noN, @@ -720,7 +720,7 @@ % groups to be made \enquote{active}, or by marking one or more groups to % be ignored in key setting. % -% \begin{function}[added = 2013-07-14, updated = 2015-11-07] +% \begin{function}[added = 2013-07-14, updated = 2017-05-27] % { % \keys_set_filter:nnnN, \keys_set_filter:nnVN, % \keys_set_filter:nnvN, \keys_set_filter:nnoN, @@ -742,7 +742,7 @@ % \meta{keyval list} returned at each stage. % \end{function} % -% \begin{function}[added = 2013-07-14, updated = 2015-11-07] +% \begin{function}[added = 2013-07-14, updated = 2017-05-27] % { % \keys_set_groups:nnn, \keys_set_groups:nnV, % \keys_set_groups:nnv, \keys_set_groups:nno @@ -2022,6 +2022,7 @@ % \keys_set_known:nn, \keys_set_known:nV, % \keys_set_known:nv, \keys_set_known:no % } +% \begin{macro}[aux]{\@@_keys_set_known:nn} % Setting known keys simply means setting the appropriate flag, then % running the standard code. To allow for nested setting, any existing % value of \cs{l_@@_unused_clist} is saved on the stack and reset @@ -2041,15 +2042,23 @@ \cs_generate_variant:Nn \@@_set_known:nnnN { o } \cs_new_protected:Npn \keys_set_known:nn #1#2 { + \bool_if:NTF \l_@@_only_known_bool + { \keys_set:nn } + { \@@_set_known:nn } + {#1} {#2} + } +\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no } +\cs_new_protected:Npn \@@_set_known:nn #1#2 + { \bool_set_true:N \l_@@_only_known_bool \keys_set:nn {#1} {#2} \bool_set_false:N \l_@@_only_known_bool } -\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro} % { @@ -2062,14 +2071,20 @@ % \keys_set_filter:nnn, \keys_set_filter:nnV, \keys_set_filter:nnv, % \keys_set_filter:nno % } +% \begin{macro}[aux]{\@@_set_filter:nnn} % \begin{macro} % { % \keys_set_groups:nnn, \keys_set_groups:nnV, \keys_set_groups:nnv, % \keys_set_groups:nno % } +% \begin{macro}[aux]{\@@_set_groups:nnn} +% \begin{macro}[aux]{\@@_set_selective:nnn} +% \begin{macro}[aux]{\@@_set_selective:nnnn, \@@_set_selective:onnn} +% \begin{macro}[aux]{\@@_set_selective:nn} % The idea of setting keys in a selective manner again uses flags % wrapped around the basic code. The comments on \cs{keys_set_known:nnN} -% also apply here. +% also apply here. We have a bit more shuffling to do to keep everything +% nestable. % \begin{macrocode} \cs_new_protected:Npn \keys_set_filter:nnnN { \@@_set_filter:onnnN \l_@@_unused_clist } @@ -2084,27 +2099,60 @@ \cs_generate_variant:Nn \@@_set_filter:nnnnN { o } \cs_new_protected:Npn \keys_set_filter:nnn #1#2#3 { - \bool_set_true:N \l_@@_selective_bool - \bool_set_true:N \l_@@_filtered_bool - \seq_set_from_clist:Nn \l_@@_selective_seq {#2} - \keys_set:nn {#1} {#3} - \bool_set_false:N \l_@@_selective_bool + \bool_if:NTF \l_@@_filtered_bool + { \@@_set_selective:nnn } + { \@@_set_filter:nnn } + {#1} {#2} {#3} } \cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno } +\cs_new_protected:Npn \@@_set_filter:nnn #1#2#3 + { + \bool_set_true:N \l_@@_filtered_bool + \@@_set_selective:nnn {#1} {#2} {#3} + \bool_set_false:N \l_@@_filtered_bool + } \cs_new_protected:Npn \keys_set_groups:nnn #1#2#3 { - \bool_set_true:N \l_@@_selective_bool + \bool_if:NTF \l_@@_filtered_bool + { \@@_set_groups:nnn } + { \@@_set_selective:nnn } + {#1} {#2} {#3} + } +\cs_generate_variant:Nn \keys_set_groups:nnn { nnV , nnv , nno } +\cs_new_protected:Npn \@@_set_groups:nnn #1#2#3 + { \bool_set_false:N \l_@@_filtered_bool - \seq_set_from_clist:Nn \l_@@_selective_seq {#2} - \keys_set:nn {#1} {#3} + \@@_set_selective:nnn {#1} {#2} {#3} + \bool_set_true:N \l_@@_filtered_bool + } +\cs_new_protected:Npn \@@_set_selective:nnn + { \@@_set_selective:onnn \l_@@_selective_seq } +\cs_new_protected:Npn \@@_set_selective:nnnn #1#2#3#4 + { + \seq_set_from_clist:Nn \l_@@_selective_seq {#3} + \bool_if:NTF \l_@@_selective_bool + { \keys_set:nn } + { \@@_set_selective:nn } + {#2} {#4} + \tl_set:Nn \l_@@_selective_seq {#1} + } +\cs_generate_variant:Nn \@@_set_selective:nnnn { o } +\cs_new_protected:Npn \@@_set_selective:nn #1#2 + { + \bool_set_true:N \l_@@_selective_bool + \keys_set:nn {#1} {#2} \bool_set_false:N \l_@@_selective_bool } -\cs_generate_variant:Nn \keys_set_groups:nnn { nnV , nnv , nno } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % % \begin{macro}[int]{\@@_set:n, \@@_set:nn} % \begin{macro}[aux]{\@@_set_aux:nnn, \@@_set_aux:onn} |