summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3keys.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx78
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}