summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex222
1 files changed, 123 insertions, 99 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index f1de71696e7..cc7f3c32b25 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -71,7 +71,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-05-22}%
+\def\ExplFileDate{2023-06-05}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -1586,13 +1586,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_set_protected:Npn \__kernel_if_debug:TF #1#2 {#2}
\cs_set_protected:Npn \debug_on:n #1
{
- \msg_error:nnx { debug } { enable-debug }
- { \tl_to_str:n { \debug_on:n {#1} } }
+ \sys_load_debug:
+ \debug_on:n {#1}
}
\cs_set_protected:Npn \debug_off:n #1
{
- \msg_error:nnx { debug } { enable-debug }
- { \tl_to_str:n { \debug_off:n {#1} } }
+ \sys_load_debug:
+ \debug_off:n {#1}
}
\cs_set_protected:Npn \debug_suspend: { }
\cs_set_protected:Npn \debug_resume: { }
@@ -1755,6 +1755,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_set:Npn \__prg_TF_true:w \fi: \use_ii:nn { \fi: \use_i:nn }
\cs_set_protected:Npn \prg_set_eq_conditional:NNn
{ \__prg_set_eq_conditional:NNNn \cs_set_eq:cc }
+\cs_set_protected:Npn \prg_gset_eq_conditional:NNn
+ { \__prg_set_eq_conditional:NNNn \cs_gset_eq:cc }
\cs_set_protected:Npn \prg_new_eq_conditional:NNn
{ \__prg_set_eq_conditional:NNNn \cs_new_eq:cc }
\cs_set_protected:Npn \__prg_set_eq_conditional:NNNn #1#2#3#4
@@ -3003,6 +3005,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__cs_tmp:w { ccx }
\__cs_tmp:w { cnx }
\__cs_tmp:w { oox }
+\cs_generate_variant:Nn \cs_generate_from_arg_count:NNnn { NNno }
+\cs_generate_variant:Nn \cs_replacement_spec:N { c }
%% File: l3quark.dtx
\cs_new_protected:Npn \quark_new:N #1
{
@@ -3376,12 +3380,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
\cs_new_protected:Npn \tl_gset:Nx #1#2
{ \__kernel_tl_gset:Nx #1 {#2} }
-\cs_generate_variant:Nn \tl_set:Nn { NV , Nv , Nf }
-\cs_generate_variant:Nn \tl_set:Nn { c, cV , cv , cf }
+\cs_generate_variant:Nn \tl_set:Nn { NV , Nv , Ne , Nf }
+\cs_generate_variant:Nn \tl_set:Nn { c, cV , cv , ce , cf }
\cs_generate_variant:Nn \tl_set:Nx { c }
\cs_generate_variant:Nn \tl_set:No { c }
-\cs_generate_variant:Nn \tl_gset:Nn { NV , Nv , Nf }
-\cs_generate_variant:Nn \tl_gset:Nn { c, cV , cv , cf }
+\cs_generate_variant:Nn \tl_gset:Nn { NV , Nv , Ne , Nf }
+\cs_generate_variant:Nn \tl_gset:Nn { c, cV , cv , ce , cf }
\cs_generate_variant:Nn \tl_gset:Nx { c }
\cs_generate_variant:Nn \tl_gset:No { c }
\cs_new_protected:Npn \tl_put_left:Nn #1#2
@@ -3488,6 +3492,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__tl_rescan_aux:
\l__tl_internal_a_tl
}
+\cs_generate_variant:Nn \tl_rescan:nn { nV }
\exp_args:NNo \cs_new_protected:Npn \__tl_rescan_aux:
{ \tl_clear:N \l__tl_internal_a_tl }
\cs_new_protected:Npn \tl_set_rescan:Nnn
@@ -3588,10 +3593,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \__kernel_tl_set:Nx }
\cs_new_protected:Npn \tl_greplace_all:Nnn
{ \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \__kernel_tl_gset:Nx }
-\cs_generate_variant:Nn \tl_replace_once:Nnn { c }
-\cs_generate_variant:Nn \tl_greplace_once:Nnn { c }
-\cs_generate_variant:Nn \tl_replace_all:Nnn { c }
-\cs_generate_variant:Nn \tl_greplace_all:Nnn { c }
+\cs_generate_variant:Nn \tl_replace_once:Nnn { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_greplace_once:Nnn { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_replace_all:Nnn { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_greplace_all:Nnn { Nxx , c , cxx }
\cs_new_protected:Npn \__tl_replace:NnNNNnn #1#2#3#4#5#6#7
{
\tl_if_empty:nTF {#6}
@@ -3652,14 +3657,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \tl_replace_once:Nnn #1 {#2} { } }
\cs_new_protected:Npn \tl_gremove_once:Nn #1#2
{ \tl_greplace_once:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_once:Nn { c }
-\cs_generate_variant:Nn \tl_gremove_once:Nn { c }
+\cs_generate_variant:Nn \tl_remove_once:Nn { Nx , c , cx }
+\cs_generate_variant:Nn \tl_gremove_once:Nn { Nx , c , cx }
\cs_new_protected:Npn \tl_remove_all:Nn #1#2
{ \tl_replace_all:Nnn #1 {#2} { } }
\cs_new_protected:Npn \tl_gremove_all:Nn #1#2
{ \tl_greplace_all:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_all:Nn { c }
-\cs_generate_variant:Nn \tl_gremove_all:Nn { c }
+\cs_generate_variant:Nn \tl_remove_all:Nn { Nx , c , cx }
+\cs_generate_variant:Nn \tl_gremove_all:Nn { Nx , c , cx }
\prg_new_conditional:Npnn \tl_if_empty:N #1 { p , T , F , TF }
{
\if_meaning:w #1 \c_empty_tl
@@ -3704,14 +3709,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\prg_generate_conditional_variant:Nnn \tl_if_blank:n
{ e , V , o } { p , T , F , TF }
-\prg_new_conditional:Npnn \tl_if_eq:NN #1#2 { p , T , F , TF }
- {
- \if_meaning:w #1 #2
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
+\prg_new_eq_conditional:NNn \tl_if_eq:NN \cs_if_eq:NN { p , T , F , TF }
\prg_generate_conditional_variant:Nnn \tl_if_eq:NN
{ Nc , c , cc } { p , TF , T , F }
\tl_new:N \l__tl_internal_a_tl
@@ -3801,39 +3799,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_return_false:
\fi:
}
-\cs_new:Npn \tl_case:Nn #1#2
- {
- \exp:w
- \__tl_case:NnTF #1 {#2} { } { }
- }
-\cs_new:Npn \tl_case:NnT #1#2#3
- {
- \exp:w
- \__tl_case:NnTF #1 {#2} {#3} { }
- }
-\cs_new:Npn \tl_case:NnF #1#2#3
- {
- \exp:w
- \__tl_case:NnTF #1 {#2} { } {#3}
- }
-\cs_new:Npn \tl_case:NnTF #1#2
- {
- \exp:w
- \__tl_case:NnTF #1 {#2}
- }
-\cs_new:Npn \__tl_case:NnTF #1#2#3#4
- { \__tl_case:Nw #1 #2 #1 { } \s__tl_mark {#3} \s__tl_mark {#4} \s__tl_stop }
-\cs_new:Npn \__tl_case:Nw #1#2#3
- {
- \tl_if_eq:NNTF #1 #2
- { \__tl_case_end:nw {#3} }
- { \__tl_case:Nw #1 }
- }
-\cs_generate_variant:Nn \tl_case:Nn { c }
-\prg_generate_conditional_variant:Nnn \tl_case:Nn
- { c } { T , F , TF }
-\cs_new:Npn \__tl_case_end:nw #1#2#3 \s__tl_mark #4#5 \s__tl_stop
- { \exp_end: #1 #4 }
\cs_new:Npn \tl_map_function:nN #1#2
{
\__tl_map_function:Nnnnnnnnn #2 #1
@@ -3909,7 +3874,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \prg_map_break:Nn \tl_map_break: { } }
\cs_new:Npn \tl_map_break:n
{ \prg_map_break:Nn \tl_map_break: }
-\cs_generate_variant:Nn \tl_to_str:n { V , v }
+\cs_generate_variant:Nn \tl_to_str:n { o , V , v }
\cs_new:Npn \tl_to_str:N #1 { \__kernel_tl_to_str:w \exp_after:wN {#1} }
\cs_generate_variant:Nn \tl_to_str:N { c }
\cs_new:Npn \tl_use:N #1
@@ -4402,6 +4367,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \tl_show:n #1
{ \iow_wrap:nnnN { >~ \tl_to_str:n {#1} . } { } { } \__tl_show:n }
+\cs_generate_variant:Nn \tl_show:n { x }
\cs_new_protected:Npn \__tl_show:n #1
{
\tl_set:Nf \l__tl_internal_a_tl { \__tl_show:w #1 \s__tl_stop }
@@ -4417,6 +4383,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__tl_show:w #1 > #2 . \s__tl_stop {#2}
\cs_new_protected:Npn \tl_log:n #1
{ \iow_wrap:nnnN { > ~ \tl_to_str:n {#1} . } { } { } \iow_log:n }
+\cs_generate_variant:Nn \tl_log:n { x }
\cs_new_protected:Npn \__kernel_chk_tl_type:NnnT #1#2#3#4
{
\__kernel_chk_defined:NT #1
@@ -7803,10 +7770,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
#2 \l__clist_internal_clist {#4}
#1 #3 \l__clist_internal_clist #3
}
-\cs_generate_variant:Nn \clist_put_left:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_put_left:Nn { c , cV , co , cx }
-\cs_generate_variant:Nn \clist_gput_left:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_gput_left:Nn { c , cV , co , cx }
+\cs_generate_variant:Nn \clist_put_left:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_put_left:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_gput_left:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_gput_left:Nn { c , cV , cv , co , cx }
\cs_new_protected:Npn \clist_put_right:Nn
{ \__clist_put_right:NNNn \clist_concat:NNN \clist_set:Nn }
\cs_new_protected:Npn \clist_gput_right:Nn
@@ -7816,10 +7783,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
#2 \l__clist_internal_clist {#4}
#1 #3 #3 \l__clist_internal_clist
}
-\cs_generate_variant:Nn \clist_put_right:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_put_right:Nn { c , cV , co , cx }
-\cs_generate_variant:Nn \clist_gput_right:Nn { NV , No , Nx }
-\cs_generate_variant:Nn \clist_gput_right:Nn { c , cV , co , cx }
+\cs_generate_variant:Nn \clist_put_right:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_put_right:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_gput_right:Nn { NV , Nv , No , Nx }
+\cs_generate_variant:Nn \clist_gput_right:Nn { c , cV , cv , co , cx }
\cs_new_protected:Npn \clist_get:NN #1#2
{
\if_meaning:w #1 \c_empty_clist
@@ -8777,11 +8744,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_catcode:w \exp_not:N #1 \c_catcode_active_tl
\prg_return_true: \else: \prg_return_false: \fi:
}
-\prg_new_conditional:Npnn \token_if_eq_meaning:NN #1#2 { p , T , F , TF }
- {
- \if_meaning:w #1 #2
- \prg_return_true: \else: \prg_return_false: \fi:
- }
+\prg_new_eq_conditional:NNn \token_if_eq_meaning:NN \cs_if_eq:NN
+ { p , T , F , TF }
\prg_new_conditional:Npnn \token_if_eq_catcode:NN #1#2 { p , T , F , TF }
{
\if_catcode:w \exp_not:N #1 \exp_not:N #2
@@ -9433,13 +9397,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 #2 { \exp_not:o {#2} \l__prop_internal_tl } }
}
\cs_generate_variant:Nn \prop_put:Nnn
- { NnV , Nno , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
+ { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
\cs_generate_variant:Nn \prop_put:Nnn
- { c , cnV , cno , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+ { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
\cs_generate_variant:Nn \prop_gput:Nnn
- { NnV , Nno , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
+ { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
\cs_generate_variant:Nn \prop_gput:Nnn
- { c , cnV , cno , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+ { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
\cs_new_protected:Npn \prop_put_if_new:Nnn
{ \__prop_put_if_new:NNnn \__kernel_tl_set:Nx }
\cs_new_protected:Npn \prop_gput_if_new:Nnn
@@ -10405,15 +10369,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
should~be~a~clist~variable,~but~it~includes~empty~or~blank~items~
without~braces.
}
-\msg_new:nnnn { debug } { enable-debug }
- { To~use~'#1'~set~the~'enable-debug'~option. }
- {
- The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
- some~internal~functions~in~expl3~have~been~appropriately~
- defined.~This~only~happens~if~one~of~the~options~
- 'enable-debug',~'check-declarations'~or~'log-functions'~was~
- given~as~an~option:~see~the~main~expl3~documentation.
- }
\msg_new:nnn { kernel } { bad-exp-end-f }
{ Misused~\exp_end_continue_f:w or~:nw }
\msg_new:nnn { kernel } { bad-variable }
@@ -10601,7 +10556,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\sys_if_shell:TF
{ \exp_args:No \__ior_shell_open:nN { \tl_to_str:n {#2} } #1 }
- { \msg_error:nn { ior } { pipe-failed } }
+ { \msg_error:nn { kernel } { pipe-failed } }
}
\cs_new_protected:Npn \__ior_shell_open:nN #1#2
{
@@ -10612,7 +10567,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{ \__kernel_ior_open:Nn #2 { |#1 } }
}
-\msg_new:nnnn { ior } { pipe-failed }
+\msg_new:nnnn { kernel } { pipe-failed }
{ Cannot~run~piped~system~commands. }
{
LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\
@@ -10840,6 +10795,21 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1 \__kernel_file_name_quote:n {#2} \scan_stop:
}
\cs_generate_variant:Nn \__iow_open_stream:Nn { NV }
+\cs_new_protected:Npn \iow_shell_open:Nn #1#2
+ {
+ \sys_if_shell:TF
+ { \exp_args:No \__iow_shell_open:nN { \tl_to_str:n {#2} } #1 }
+ { \msg_error:nn { kernel } { pipe-failed } }
+ }
+\cs_new_protected:Npn \__iow_shell_open:nN #1#2
+ {
+ \tl_if_in:nnTF {#1} { " }
+ {
+ \msg_error:nnx
+ { kernel } { quote-in-shell } {#1}
+ }
+ { \__kernel_iow_open:Nn #2 { |#1 } }
+ }
\cs_new_protected:Npn \iow_close:N #1
{
\int_compare:nT { \c_log_iow < #1 < \c_term_iow }
@@ -11435,18 +11405,35 @@ Type H <return> for immediate help}\def~{\errmessage{%
\tl_if_blank:nTF {#2}
{
\seq_map_tokens:Nn \l_file_search_path_seq
- { \__file_full_name_aux:Nnnn \seq_map_break:n {#1} { / } }
+ { \__file_full_name_aux:Nnn \seq_map_break:n {#1} }
\cs_if_exist:NT \input@path
{
\tl_map_tokens:Nn \input@path
- { \__file_full_name_aux:Nnnn \tl_map_break:n {#1} { } }
+ { \__file_full_name_aux:Nnn \tl_map_break:n {#1} }
}
\__file_name_end:
}
{ \__file_ext_check:nn {#1} {#2} }
}
-\cs_new:Npn \__file_full_name_aux:Nnnn #1#2#3#4
- { \exp_args:Ne \__file_full_name_aux:nN { \tl_to_str:n {#4} #3 #2 } #1 }
+\cs_new:Npn \__file_full_name_aux:Nnn #1#2#3
+ {
+ \exp_args:Ne \__file_full_name_aux:nN
+ {
+ \exp_args:Ne \__file_full_name_slash:n
+ { \tl_to_str:n {#3} } #2
+ }
+ #1
+ }
+\cs_new:Npn \__file_full_name_slash:n #1
+ {
+ \__file_full_name_slash:nw {#1} #1 \q_nil / \q_nil / \q_nil \q_stop
+ }
+\cs_new:Npn \__file_full_name_slash:nw #1#2 / \q_nil / #3 \q_stop
+ {
+ \quark_if_nil:nTF {#3}
+ { #1 / }
+ { #2 / }
+ }
\cs_new:Npn \__file_full_name_aux:nN #1
{ \exp_args:Nne \__file_full_name_aux:nnN {#1} { \__file_full_name_aux:n {#1} } }
\cs_new:Npn \__file_full_name_aux:nnN #1 #2 #3
@@ -11746,6 +11733,24 @@ Type H <return> for immediate help}\def~{\errmessage{%
\str_gset:Nn \g_file_curr_name_str {#2}
\str_gset:Nn \g_file_curr_ext_str {#3}
}
+\cs_new:Npn \file_input_raw:n #1
+ { \exp_args:Ne \__file_input_raw:nn { \file_full_name:n {#1} } {#1} }
+\cs_new:Npx \__file_input_raw:nn #1#2
+ {
+ \exp_not:N \tl_if_blank:nTF {#1}
+ {
+ \exp_not:N \exp_args:Nnne \exp_not:N \msg_expandable_error:nnn
+ { kernel } { file-not-found }
+ { \exp_not:N \__kernel_file_name_sanitize:n {#2} }
+ }
+ {
+ \exp_not:N \tex_input:D
+ \sys_if_engine_luatex:TF
+ { {#1} }
+ { \exp_not:N \__kernel_file_name_quote:n {#1} \scan_stop: }
+ }
+ }
+\exp_args_generate:n { nne }
\cs_new:Npn \file_parse_full_name:n #1
{
\file_parse_full_name_apply:nN {#1}
@@ -12384,12 +12389,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\token_if_eq_charcode:NNTF #1 -
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_get_remainder:w
- \int_eval:w ( 2 * #2 - #3 ) / ( 2 * #3 ) ;
+ \int_eval:n { ( 2 * #2 - #3 ) / ( 2 * #3 ) } ;
#2 ; #3 ; - ;
}
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_get_remainder:w
- \int_eval:w ( 2 * #1#2 - #3 ) / ( 2 * #3 ) ;
+ \int_eval:n { ( 2 * #1#2 - #3 ) / ( 2 * #3 ) } ;
#1#2 ; #3 ; ;
}
}
@@ -12397,13 +12402,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__dim_get_remainder:w #1;#2;#3;
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_convert_remainder:w
- \int_eval:w #2 - #1 * #3 ;
+ \int_eval:n { #2 - #1 * #3 } ;
#3 ; #1 ;
}
\cs_new:Npn \__dim_convert_remainder:w #1;#2;
{
\exp_after:wN \exp_after:wN \exp_after:wN \__dim_test_candidate:w
- \int_eval:w #1 * 65536 / #2 ;
+ \int_eval:n { #1 * 65536 / #2 } ;
#1 ; #2 ;
}
\cs_new:Npn \__dim_test_candidate:w #1;#2;#3;
@@ -12412,8 +12417,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \dim_to_decimal:n { #1sp } \__dim_eval:w #3sp \__dim_eval_end: }
{ \__dim_parse_decimal:w #1 ; }
{
- \exp_after:wN \__dim_parse_decimal:w
- \int_eval:w #1 + 1 ;
+ \__dim_parse_decimal:w \int_eval:n { #1 + 1 } ;
}
}
\cs_new:Npn \__dim_parse_decimal:w #1;#2;#3;
@@ -13081,7 +13085,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\l_keys_path_str \s__keys_stop
\l_keys_key_tl \l_keys_key_str
\tl_set_eq:NN \l_keys_key_tl \l_keys_key_str
- \__keys_execute:nn \l_keys_path_str {#1}
+ \tl_set:Nn \l_keys_value_tl {#1}
+ \__keys_execute:no \l_keys_path_str \l_keys_value_tl
}
}
}
@@ -13456,7 +13461,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp_not:o \l__keys_relative_tl }
}
}
-\cs_generate_variant:Nn \keys_set:nn { nV , nv , no }
+\cs_generate_variant:Nn \keys_set:nn { nV , nv , no , nx }
\cs_new_protected:Npn \__keys_set:nn #1#2
{ \exp_args:No \__keys_set:nnn \l__keys_module_str {#1} {#2} }
\cs_new_protected:Npn \__keys_set:nnn #1#2#3
@@ -20690,6 +20695,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
\cs_generate_variant:Nn \cctab_gset:Nn { c }
+\cs_new_protected:Npn \cctab_gsave_current:N #1
+ {
+ \__cctab_chk_if_valid:NT #1
+ { \__cctab_gset:n {#1} }
+ }
+\cs_generate_variant:Nn \cctab_gsave_current:N { c }
\sys_if_engine_luatex:T
{
\__cctab_new:N \g__cctab_internal_cctab
@@ -20949,6 +20960,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\char_set_catcode_active:n { 126 }
}
}
+\cctab_new:N \g_tmpa_cctab
+\cctab_new:N \g_tmpb_cctab
\msg_new:nnnn { cctab } { stack-full }
{ The~category~code~table~stack~is~exhausted. }
{
@@ -35642,6 +35655,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase:nn }
\cs_gset:Npn \tl_mixed_case:nn #1#2
{ \text_titlecase:nn {#1} {#2} }
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:Nn }
+\cs_gset:Npn \tl_case:Nn { \token_case_meaning:Nn }
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnT }
+\cs_gset:Npn \tl_case:NnT { \token_case_meaning:NnT }
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnF }
+\cs_gset:Npn \tl_case:NnF { \token_case_meaning:NnF }
+\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnTF }
+\cs_gset:Npn \tl_case:NnTF { \token_case_meaning:NnTF }
+\cs_generate_variant:Nn \tl_case:Nn { c }
+\prg_generate_conditional_variant:Nnn \tl_case:Nn
+ { c } { T , F , TF }
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { [ \codepoint_generate:n ] }
\cs_gset:Npn \char_to_utfviii_bytes:n { \__kernel_codepoint_to_bytes:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { \codepoint_to_nfd:n }