diff options
author | Norbert Preining <norbert@preining.info> | 2021-11-23 03:01:10 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2021-11-23 03:01:10 +0000 |
commit | 0b34c573a443a0ea2ce617f1466aef7ea2c38a98 (patch) | |
tree | 0a10ff22dddac4eef11f21687c390598dfc75f96 /macros/latex/contrib/l3kernel/l3keys.dtx | |
parent | 3b45580e298046d6c1cb0431da31bea04bc6613a (diff) |
CTAN sync 202111230301
Diffstat (limited to 'macros/latex/contrib/l3kernel/l3keys.dtx')
-rw-r--r-- | macros/latex/contrib/l3kernel/l3keys.dtx | 84 |
1 files changed, 59 insertions, 25 deletions
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx index 355de420bd..51bfbec712 100644 --- a/macros/latex/contrib/l3kernel/l3keys.dtx +++ b/macros/latex/contrib/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2021-11-12} +% \date{Released 2021-11-22} % % \maketitle % @@ -1780,41 +1780,30 @@ % % \subsection{Turning properties into actions} % -% \begin{macro}{\@@_bool_set:Nn, \@@_bool_set:cn} +% \begin{macro} +% { +% \@@_bool_set:Nn, \@@_bool_set:cn, +% \@@_bool_set_inverse:Nn, \@@_bool_set_inverse:cn +% } +% \begin{macro}{\@@_bool_set:Nnnn} % Boolean keys are really just choices, but all done by hand. The % second argument here is the scope: either empty or \texttt{ g } for % global. % \begin{macrocode} \cs_new_protected:Npn \@@_bool_set:Nn #1#2 - { - \bool_if_exist:NF #1 { \bool_new:N #1 } - \@@_choice_make: - \@@_cmd_set:nx { \l_keys_path_str / true } - { \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 } - \@@_cmd_set:nx { \l_keys_path_str / false } - { \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 } - \@@_cmd_set:nn { \l_keys_path_str / unknown } - { - \msg_error:nnx { keys } { boolean-values-only } - \l_keys_key_str - } - \@@_default_set:n { true } - } + { \@@_bool_set:Nnnn #1 {#2} { true } { false } } \cs_generate_variant:Nn \@@_bool_set:Nn { c } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@_bool_set_inverse:Nn, \@@_bool_set_inverse:cn} -% Inverse boolean setting is much the same. -% \begin{macrocode} \cs_new_protected:Npn \@@_bool_set_inverse:Nn #1#2 + { \@@_bool_set:Nnnn #1 {#2} { false } { true } } +\cs_generate_variant:Nn \@@_bool_set_inverse:Nn { c } +\cs_new_protected:Npn \@@_bool_set:Nnnn #1#2#3#4 { \bool_if_exist:NF #1 { \bool_new:N #1 } \@@_choice_make: \@@_cmd_set:nx { \l_keys_path_str / true } - { \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 } + { \exp_not:c { bool_ #2 set_ #3 :N } \exp_not:N #1 } \@@_cmd_set:nx { \l_keys_path_str / false } - { \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 } + { \exp_not:c { bool_ #2 set_ #4 :N } \exp_not:N #1 } \@@_cmd_set:nn { \l_keys_path_str / unknown } { \msg_error:nnx { keys } { boolean-values-only } @@ -1822,9 +1811,10 @@ } \@@_default_set:n { true } } -\cs_generate_variant:Nn \@@_bool_set_inverse:Nn { c } +\cs_generate_variant:Nn \@@_bool_set:Nn { c } % \end{macrocode} % \end{macro} +% \end{macro} % % \begin{macro}{\@@_choice_make:, \@@_multichoice_make:} % \begin{macro}{\@@_choice_make:N} @@ -1999,6 +1989,33 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@@_legacy_if_set:nn, \@@_legacy_if_inverse:nn} +% \begin{macro}{\@@_legacy_if_inverse:nnnn} +% Much the same as \pkg{expl3} booleans, except we assume that the switch +% exists. +% \begin{macrocode} +\cs_new_protected:Npn \@@_legacy_if_set:nn #1#2 + { \@@_legacy_if_set:nnnn {#1} {#2} { true } { false } } +\cs_new_protected:Npn \@@_legacy_if_set_inverse:nn #1#2 + { \@@_legacy_if_set:nnnn {#1} {#2} { false } { true } } +\cs_new_protected:Npn \@@_legacy_if_set:nnnn #1#2#3#4 + { + \@@_choice_make: + \@@_cmd_set:nx { \l_keys_path_str / true } + { \exp_not:c { legacy_if_#2 set_ #3 :n } { \exp_not:n {#1} } } + \@@_cmd_set:nx { \l_keys_path_str / false } + { \exp_not:c { legacy_if_#2 set_ #4 :n } { \exp_not:n {#1} } } + \@@_cmd_set:nn { \l_keys_path_str / unknown } + { + \msg_error:nnx { keys } { boolean-values-only } + \l_keys_key_str + } + \@@_default_set:n { true } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macro}{\@@_meta_make:n} % \begin{macro}{\@@_meta_make:nn} % To create a meta-key, simply set up to pass data through. @@ -2347,6 +2364,23 @@ % \end{macro} % \end{macro} % +% \begin{macro} +% { +% .legacy_if_set:n, .legacy_if_gset:n, +% .legacy_if_set_inverse:n, .legacy_if_gset_inverse:n +% } +% \begin{macrocode} +\cs_new_protected:cpn { \c_@@_props_root_str .legacy_if_set:n } #1 + { \@@_legacy_if_set:nn {#1} { } } +\cs_new_protected:cpn { \c_@@_props_root_str .legacy_if_gset:n } #1 + { \@@_legacy_if_set:nn {#1} { g } } +\cs_new_protected:cpn { \c_@@_props_root_str .legacy_if_set_inverse:n } #1 + { \@@_legacy_if_set_inverse:nn {#1} { } } +\cs_new_protected:cpn { \c_@@_props_root_str .legacy_if_gset_inverse:n } #1 + { \@@_legacy_if_set_inverse:nn {#1} { g } } +% \end{macrocode} +% \end{macro} +% % \begin{macro}{.meta:n} % Making a meta is handled internally. % \begin{macrocode} |