summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-02-11 22:10:31 +0000
committerKarl Berry <karl@freefriends.org>2020-02-11 22:10:31 +0000
commite3b4a159cf41e3aa51b8a48e50ec38fc7f6d51b6 (patch)
treeb17591d4fde382db56bcf7931e5721a4e8a84431 /Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
parent5e49fa64bd451d499e66784df6f9a437f8b3ab71 (diff)
l3kernel (11feb20)
git-svn-id: svn://tug.org/texlive/trunk@53758 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3keys.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx56
1 files changed, 55 insertions, 1 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index d172a1a041c..eedd06ad24f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-08}
+% \date{Released 2020-02-11}
%
% \maketitle
%
@@ -243,6 +243,20 @@
% \meta{value} given for the \meta{key}.
% \end{function}
%
+% \begin{function}[added = 2020-01-11]
+% {
+% .cs_set:Np, .cs_set:cp,
+% .cs_set_protected:Np, .cs_set_protected:cp,
+% .cs_gset:Np, .cs_gset:cp,
+% .cs_gset_protected:Np, .cs_gset_protected:cp,
+% }
+% \begin{syntax}
+% \meta{key} .cs_set:Np = \meta{control sequence} \meta{arg.~spec.}
+% \end{syntax}
+% Defines \meta{key} to set \meta{control sequence} to have \meta{arg.~spec.}
+% and replacement text \meta{value}.
+% \end{function}
+%
% \begin{function}[updated = 2013-07-09]
% {.default:n, .default:V, .default:o, .default:x}
% \begin{syntax}
@@ -1588,6 +1602,21 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_cs_set:NNpn, \@@_cs_set:Ncpn}
+% Creating control sequences is a bit more tricky than other cases as
+% we need to pick up the |p| argument. To make the internals look clearer,
+% the trailing |n| argument here is just for appearance.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_cs_set:NNpn #1#2#3#
+ {
+ \cs_set_protected:cpx { \c_@@_code_root_str \l_keys_path_str } ##1
+ { #1 \exp_not:N #2 \exp_not:n {#3} {##1} }
+ \use_none:n
+ }
+\cs_generate_variant:Nn \@@_cs_set:NNpn { Nc }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@@_default_set:n}
% Setting a default value is easy. These are stored using \cs{cs_set:cpx} as this
% avoids any worries about whether a token list exists.
@@ -1898,6 +1927,31 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}
+% {.cs_set:Np, .cs_set:cp, .cs_set_protected:Np, .cs_set_protected:cp}
+% \begin{macro}
+% {.cs_gset:Np, .cs_gset:cp, .cs_gset_protected:Np, .cs_gset_protected:cp}
+% \begin{macrocode}
+\cs_new_protected:cpn { \c_@@_props_root_str .cs_set:Np } #1
+ { \@@_cs_set:NNpn \cs_set:Npn #1 { } }
+\cs_new_protected:cpn { \c_@@_props_root_str .cs_set:cp } #1
+ { \@@_cs_set:Ncpn \cs_set:Npn #1 { } }
+\cs_new_protected:cpn { \c_@@_props_root_str .cs_set_protected:Np } #1
+ { \@@_cs_set:NNpn \cs_set_protected:Npn #1 { } }
+\cs_new_protected:cpn { \c_@@_props_root_str .cs_set_protected:cp } #1
+ { \@@_cs_set:Ncpn \cs_set_protected:Npn #1 { } }
+\cs_new_protected:cpn { \c_@@_props_root_str .cs_gset:Np } #1
+ { \@@_cs_set:NNpn \cs_gset:Npn #1 { } }
+\cs_new_protected:cpn { \c_@@_props_root_str .cs_gset:cp } #1
+ { \@@_cs_set:Ncpn \cs_gset:Npn #1 { } }
+\cs_new_protected:cpn { \c_@@_props_root_str .cs_gset_protected:Np } #1
+ { \@@_cs_set:NNpn \cs_gset_protected:Npn #1 { } }
+\cs_new_protected:cpn { \c_@@_props_root_str .cs_gset_protected:cp } #1
+ { \@@_cs_set:Ncpn \cs_gset_protected:Npn #1 { } }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{.default:n, .default:V, .default:o, .default:x}
% Expansion is left to the internal functions.
% \begin{macrocode}