summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-10-27 20:55:42 +0000
committerKarl Berry <karl@freefriends.org>2020-10-27 20:55:42 +0000
commit36afb13206c5cf659854dce54a7e001273ca71e9 (patch)
tree90d4e2f8ef42745efdd76bd20c83c9158d7d6628 /Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
parent5fbdfcab78ba7e1bbb32f4e9b1db06f68d6f3de4 (diff)
l3 (27oct20)
git-svn-id: svn://tug.org/texlive/trunk@56785 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex1283
1 files changed, 909 insertions, 374 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 14b325957ff..ef1d0a3732c 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -69,7 +69,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-10-05}%
+\def\ExplFileDate{2020-10-27}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -3626,6 +3626,8 @@
}
\cs_new:Npn \use_none_delimit_by_s_stop:w #1 \s_stop { }
%% File: l3tl.dtx
+\cs_new_eq:NN \__kernel_tl_set:Nx \cs_set_nopar:Npx
+\cs_new_eq:NN \__kernel_tl_gset:Nx \cs_gset_nopar:Npx
\cs_new_protected:Npn \tl_new:N #1
{
\__kernel_chk_if_free_cs:N #1
@@ -3635,7 +3637,7 @@
\cs_new_protected:Npn \tl_const:Nn #1#2
{
\__kernel_chk_if_free_cs:N #1
- \cs_gset_nopar:Npx #1 { \exp_not:n {#2} }
+ \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w {#2} }
}
\cs_new_protected:Npn \tl_const:Nx #1#2
{
@@ -3661,9 +3663,21 @@
\cs_generate_variant:Nn \tl_set_eq:NN { cN, Nc, cc }
\cs_generate_variant:Nn \tl_gset_eq:NN { cN, Nc, cc }
\cs_new_protected:Npn \tl_concat:NNN #1#2#3
- { \tl_set:Nx #1 { \exp_not:o {#2} \exp_not:o {#3} } }
+ {
+ \__kernel_tl_set:Nx #1
+ {
+ \__kernel_exp_not:w \exp_after:wN {#2}
+ \__kernel_exp_not:w \exp_after:wN {#3}
+ }
+ }
\cs_new_protected:Npn \tl_gconcat:NNN #1#2#3
- { \tl_gset:Nx #1 { \exp_not:o {#2} \exp_not:o {#3} } }
+ {
+ \__kernel_tl_gset:Nx #1
+ {
+ \__kernel_exp_not:w \exp_after:wN {#2}
+ \__kernel_exp_not:w \exp_after:wN {#3}
+ }
+ }
\cs_generate_variant:Nn \tl_concat:NNN { ccc }
\cs_generate_variant:Nn \tl_gconcat:NNN { ccc }
\prg_new_eq_conditional:NNn \tl_if_exist:N \cs_if_exist:N { TF , T , F , p }
@@ -3680,17 +3694,17 @@
}
\tl_const:Nn \c_space_tl { ~ }
\cs_new_protected:Npn \tl_set:Nn #1#2
- { \cs_set_nopar:Npx #1 { \exp_not:n {#2} } }
+ { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w {#2} } }
\cs_new_protected:Npn \tl_set:No #1#2
- { \cs_set_nopar:Npx #1 { \exp_not:o {#2} } }
+ { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
\cs_new_protected:Npn \tl_set:Nx #1#2
- { \cs_set_nopar:Npx #1 {#2} }
+ { \__kernel_tl_set:Nx #1 {#2} }
\cs_new_protected:Npn \tl_gset:Nn #1#2
- { \cs_gset_nopar:Npx #1 { \exp_not:n {#2} } }
+ { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w {#2} } }
\cs_new_protected:Npn \tl_gset:No #1#2
- { \cs_gset_nopar:Npx #1 { \exp_not:o {#2} } }
+ { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
\cs_new_protected:Npn \tl_gset:Nx #1#2
- { \cs_gset_nopar:Npx #1 {#2} }
+ { \__kernel_tl_gset:Nx #1 {#2} }
\cs_generate_variant:Nn \tl_set:Nn { NV , Nv , Nf }
\cs_generate_variant:Nn \tl_set:Nx { c }
\cs_generate_variant:Nn \tl_set:Nn { c, co , cV , cv , cf }
@@ -3698,21 +3712,45 @@
\cs_generate_variant:Nn \tl_gset:Nx { c }
\cs_generate_variant:Nn \tl_gset:Nn { c, co , cV , cv , cf }
\cs_new_protected:Npn \tl_put_left:Nn #1#2
- { \cs_set_nopar:Npx #1 { \exp_not:n {#2} \exp_not:o #1 } }
+ {
+ \__kernel_tl_set:Nx #1
+ { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+ }
\cs_new_protected:Npn \tl_put_left:NV #1#2
- { \cs_set_nopar:Npx #1 { \exp_not:V #2 \exp_not:o #1 } }
+ {
+ \__kernel_tl_set:Nx #1
+ { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} }
+ }
\cs_new_protected:Npn \tl_put_left:No #1#2
- { \cs_set_nopar:Npx #1 { \exp_not:o {#2} \exp_not:o #1 } }
+ {
+ \__kernel_tl_set:Nx #1
+ {
+ \__kernel_exp_not:w \exp_after:wN {#2}
+ \__kernel_exp_not:w \exp_after:wN {#1}
+ }
+ }
\cs_new_protected:Npn \tl_put_left:Nx #1#2
- { \cs_set_nopar:Npx #1 { #2 \exp_not:o #1 } }
+ { \__kernel_tl_set:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } }
\cs_new_protected:Npn \tl_gput_left:Nn #1#2
- { \cs_gset_nopar:Npx #1 { \exp_not:n {#2} \exp_not:o #1 } }
+ {
+ \__kernel_tl_gset:Nx #1
+ { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+ }
\cs_new_protected:Npn \tl_gput_left:NV #1#2
- { \cs_gset_nopar:Npx #1 { \exp_not:V #2 \exp_not:o #1 } }
+ {
+ \__kernel_tl_gset:Nx #1
+ { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} }
+ }
\cs_new_protected:Npn \tl_gput_left:No #1#2
- { \cs_gset_nopar:Npx #1 { \exp_not:o {#2} \exp_not:o #1 } }
+ {
+ \__kernel_tl_gset:Nx #1
+ {
+ \__kernel_exp_not:w \exp_after:wN {#2}
+ \__kernel_exp_not:w \exp_after:wN {#1}
+ }
+ }
\cs_new_protected:Npn \tl_gput_left:Nx #1#2
- { \cs_gset_nopar:Npx #1 { #2 \exp_not:o {#1} } }
+ { \__kernel_tl_gset:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } }
\cs_generate_variant:Nn \tl_put_left:Nn { c }
\cs_generate_variant:Nn \tl_put_left:NV { c }
\cs_generate_variant:Nn \tl_put_left:No { c }
@@ -3722,21 +3760,39 @@
\cs_generate_variant:Nn \tl_gput_left:No { c }
\cs_generate_variant:Nn \tl_gput_left:Nx { c }
\cs_new_protected:Npn \tl_put_right:Nn #1#2
- { \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:n {#2} } }
+ { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
\cs_new_protected:Npn \tl_put_right:NV #1#2
- { \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:V #2 } }
+ {
+ \__kernel_tl_set:Nx #1
+ { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 }
+ }
\cs_new_protected:Npn \tl_put_right:No #1#2
- { \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:o {#2} } }
+ {
+ \__kernel_tl_set:Nx #1
+ {
+ \__kernel_exp_not:w \exp_after:wN {#1}
+ \__kernel_exp_not:w \exp_after:wN {#2}
+ }
+ }
\cs_new_protected:Npn \tl_put_right:Nx #1#2
- { \cs_set_nopar:Npx #1 { \exp_not:o #1 #2 } }
+ { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } }
\cs_new_protected:Npn \tl_gput_right:Nn #1#2
- { \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:n {#2} } }
+ { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
\cs_new_protected:Npn \tl_gput_right:NV #1#2
- { \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:V #2 } }
+ {
+ \__kernel_tl_gset:Nx #1
+ { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 }
+ }
\cs_new_protected:Npn \tl_gput_right:No #1#2
- { \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:o {#2} } }
+ {
+ \__kernel_tl_gset:Nx #1
+ {
+ \__kernel_exp_not:w \exp_after:wN {#1}
+ \__kernel_exp_not:w \exp_after:wN {#2}
+ }
+ }
\cs_new_protected:Npn \tl_gput_right:Nx #1#2
- { \cs_gset_nopar:Npx #1 { \exp_not:o {#1} #2 } }
+ { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } }
\cs_generate_variant:Nn \tl_put_right:Nn { c }
\cs_generate_variant:Nn \tl_put_right:NV { c }
\cs_generate_variant:Nn \tl_put_right:No { c }
@@ -3756,9 +3812,11 @@
\cs_new_protected:Npn \tl_rescan:nn #1#2
{
\tl_set_rescan:Nnn \l__tl_internal_a_tl {#1} {#2}
- \exp_after:wN \tl_clear:N \exp_after:wN \l__tl_internal_a_tl
+ \exp_after:wN \__tl_rescan_aux:
\l__tl_internal_a_tl
}
+\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
{ \__tl_set_rescan:NNnn \tl_set:No }
\cs_new_protected:Npn \tl_gset_rescan:Nnn
@@ -3777,7 +3835,7 @@
}
\cs_new_protected:Npn \__tl_set_rescan_multi:nNN #1#2#3
{
- \exp_args:No \tex_everyeof:D { \c__tl_rescan_marker_tl }
+ \tex_everyeof:D \exp_after:wN { \c__tl_rescan_marker_tl }
\exp_after:wN \__tl_rescan:NNw
\exp_after:wN #2
\exp_after:wN #3
@@ -3850,13 +3908,13 @@
\c__tl_rescan_marker_tl #2
{ \use_i:nn \exp_end: #1 }
\cs_new_protected:Npn \tl_replace_once:Nnn
- { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_wrap:w \tl_set:Nx }
+ { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_wrap:w \__kernel_tl_set:Nx }
\cs_new_protected:Npn \tl_greplace_once:Nnn
- { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_wrap:w \tl_gset:Nx }
+ { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_wrap:w \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \tl_replace_all:Nnn
- { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \tl_set:Nx }
+ { \__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 \tl_gset:Nx }
+ { \__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 }
@@ -3893,7 +3951,7 @@
{
\group_align_safe_begin:
\cs_set:Npn \__tl_replace_wrap:w ##1 #1 ##2
- { \exp_not:o { \use_none:nn ##1 } ##2 }
+ { \__kernel_exp_not:w \exp_after:wN { \use_none:nn ##1 } ##2 }
\cs_set:Npx \__tl_replace_next:w ##1 #5
{
\exp_not:N \__tl_replace_wrap:w ##1
@@ -3903,9 +3961,7 @@
}
#3 #4
{
- \exp_after:wN \__tl_replace_next:w
- \exp_after:wN { \exp_after:wN }
- \exp_after:wN { \exp_after:wN }
+ \exp_after:wN \__tl_replace_next_aux:w
#4
#1
{
@@ -3916,6 +3972,7 @@
}
\group_align_safe_end:
}
+\cs_new:Npn \__tl_replace_next_aux:w { \__tl_replace_next:w { } { } }
\cs_new_eq:NN \__tl_replace_wrap:w ?
\cs_new_eq:NN \__tl_replace_next:w ?
\cs_new_protected:Npn \tl_remove_once:Nn #1#2
@@ -3930,16 +3987,6 @@
{ \tl_greplace_all:Nnn #1 {#2} { } }
\cs_generate_variant:Nn \tl_remove_all:Nn { c }
\cs_generate_variant:Nn \tl_gremove_all:Nn { c }
-\prg_new_conditional:Npnn \tl_if_blank:n #1 { p , T , F , TF }
- {
- \__tl_if_empty_if:o { \use_none:n #1 ? }
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
-\prg_generate_conditional_variant:Nnn \tl_if_blank:n
- { e , V , o } { p , T , F , TF }
\prg_new_conditional:Npnn \tl_if_empty:N #1 { p , T , F , TF }
{
\if_meaning:w #1 \c_empty_tl
@@ -3952,8 +3999,7 @@
{ c } { p , T , F , TF }
\prg_new_conditional:Npnn \tl_if_empty:n #1 { p , TF , T , F }
{
- \exp_after:wN \if_meaning:w \exp_after:wN \q__tl_nil
- \tl_to_str:n {#1} \q__tl_nil
+ \if:w \scan_stop: \tl_to_str:n {#1} \scan_stop:
\prg_return_true:
\else:
\prg_return_false:
@@ -3963,10 +4009,10 @@
{ V } { p , TF , T , F }
\cs_new:Npn \__tl_if_empty_if:o #1
{
- \exp_after:wN \if_meaning:w \exp_after:wN \q__tl_nil
- \__kernel_tl_to_str:w \exp_after:wN {#1} \q__tl_nil
+ \if:w \scan_stop: \__kernel_tl_to_str:w \exp_after:wN {#1} \scan_stop:
}
-\prg_new_conditional:Npnn \tl_if_empty:o #1 { p , TF , T , F }
+\exp_args:Nno \use:n
+ { \prg_new_conditional:Npnn \tl_if_empty:o #1 { p , TF , T , F } }
{
\__tl_if_empty_if:o {#1}
\prg_return_true:
@@ -3974,6 +4020,17 @@
\prg_return_false:
\fi:
}
+\exp_args:Nno \use:n
+ { \prg_new_conditional:Npnn \tl_if_blank:n #1 { p , T , F , TF } }
+ {
+ \__tl_if_empty_if:o { \use_none:n #1 ? }
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+\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
@@ -4048,9 +4105,9 @@
\cs_new:Npn \tl_if_single:NTF { \exp_args:No \tl_if_single:nTF }
\prg_new_conditional:Npnn \tl_if_single:n #1 { p , T , F , TF }
{
- \if_catcode:w ^ \exp_after:wN \__tl_if_single:nnw
+ \if:w \scan_stop: \exp_after:wN \__tl_if_single:nnw
\__kernel_tl_to_str:w
- \exp_after:wN { \use_none:nn #1 ?? } ^ ? \s__tl_stop
+ \exp_after:wN { \use_none:nn #1 ?? } \scan_stop: ? \s__tl_stop
\prg_return_true:
\else:
\prg_return_false:
@@ -4196,18 +4253,16 @@
{
\int_eval:n
{
- \__tl_act:NNNnn
- \__tl_act_count_normal:nN
- \__tl_act_count_group:nn
- \__tl_act_count_space:n
- { }
+ \__tl_act:NNNn
+ \__tl_act_count_normal:N
+ \__tl_act_count_group:n
+ \__tl_act_count_space:
{#1}
}
}
-\cs_new:Npn \__tl_act_count_normal:nN #1 #2 { 1 + }
-\cs_new:Npn \__tl_act_count_space:n #1 { 1 + }
-\cs_new:Npn \__tl_act_count_group:nn #1 #2
- { 2 + \tl_count_tokens:n {#2} + }
+\cs_new:Npn \__tl_act_count_normal:N #1 { 1 + }
+\cs_new:Npn \__tl_act_count_space: { 1 + }
+\cs_new:Npn \__tl_act_count_group:n #1 { 2 + \tl_count_tokens:n {#1} + }
\cs_new:Npn \tl_reverse_items:n #1
{
\__tl_reverse_items:nwNwn #1 ?
@@ -4223,43 +4278,48 @@
\s__tl_stop { {#1} #5 }
}
\cs_new:Npn \__tl_reverse_items:wn #1 \s__tl_stop #2
- { \exp_not:o { \use_none:nn #2 } }
+ { \__kernel_exp_not:w \exp_after:wN { \use_none:nn #2 } }
\cs_new:Npn \tl_trim_spaces:n #1
- { \__tl_trim_spaces:nn { \s__tl_mark #1 } \exp_not:o }
+ {
+ \__tl_trim_spaces:nn
+ { \__tl_trim_mark: #1 }
+ { \__kernel_exp_not:w \exp_after:wN }
+ }
\cs_generate_variant:Nn \tl_trim_spaces:n { o }
\cs_new:Npn \tl_trim_spaces_apply:nN #1#2
- { \__tl_trim_spaces:nn { \s__tl_mark #1 } { \exp_args:No #2 } }
+ { \__tl_trim_spaces:nn { \__tl_trim_mark: #1 } { \exp_args:No #2 } }
\cs_generate_variant:Nn \tl_trim_spaces_apply:nN { o }
\cs_new_protected:Npn \tl_trim_spaces:N #1
- { \tl_set:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
+ { \__kernel_tl_set:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
\cs_new_protected:Npn \tl_gtrim_spaces:N #1
- { \tl_gset:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
+ { \__kernel_tl_gset:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
\cs_generate_variant:Nn \tl_trim_spaces:N { c }
\cs_generate_variant:Nn \tl_gtrim_spaces:N { c }
-\cs_set:Npn \__tl_tmp:w #1
+\cs_set_protected:Npn \__tl_tmp:w #1
{
\cs_new:Npn \__tl_trim_spaces:nn ##1
{
\__tl_trim_spaces_auxi:w
##1
\s__tl_nil
- \s__tl_mark #1 { }
- \s__tl_mark \__tl_trim_spaces_auxii:w
+ \__tl_trim_mark: #1 { }
+ \__tl_trim_mark: \__tl_trim_spaces_auxii:w
\__tl_trim_spaces_auxiii:w
#1 \s__tl_nil
\__tl_trim_spaces_auxiv:w
\s__tl_stop
}
- \cs_new:Npn \__tl_trim_spaces_auxi:w ##1 \s__tl_mark #1 ##2 \s__tl_mark ##3
+ \cs_new:Npn
+ \__tl_trim_spaces_auxi:w ##1 \__tl_trim_mark: #1 ##2 \__tl_trim_mark: ##3
{
##3
\__tl_trim_spaces_auxi:w
- \s__tl_mark
+ \__tl_trim_mark:
##2
- \s__tl_mark #1 {##1}
+ \__tl_trim_mark: #1 {##1}
}
\cs_new:Npn \__tl_trim_spaces_auxii:w
- \__tl_trim_spaces_auxi:w \s__tl_mark \s__tl_mark ##1
+ \__tl_trim_spaces_auxi:w \__tl_trim_mark: \__tl_trim_mark: ##1
{
\__tl_trim_spaces_auxiii:w
##1
@@ -4271,111 +4331,52 @@
\__tl_trim_spaces_auxiii:w
}
\cs_new:Npn \__tl_trim_spaces_auxiv:w ##1 \s__tl_nil ##2 \s__tl_stop ##3
- { ##3 { \use_none:n ##1 } }
+ { ##3 { ##1 } }
+ \cs_new:Npn \__tl_trim_mark: {}
}
\__tl_tmp:w { ~ }
-\quark_new:N \q__tl_act_mark
-\quark_new:N \q__tl_act_stop
-\cs_new:Npn \__tl_act:NNNnn #1#2#3#4#5
- {
- \group_align_safe_begin:
- \__tl_act_loop:w #5 \q__tl_act_mark \q__tl_act_stop
- {#4} #1 #2 #3
- \__tl_act_result:n { }
- }
-\cs_new:Npn \__tl_act_loop:w #1 \q__tl_act_stop
+\cs_if_exist:NTF \tex_expanded:D
{
- \tl_if_head_is_N_type:nTF {#1}
- { \__tl_act_normal:NwnNNN }
+ \cs_new:Npn \tl_head:n #1
{
- \tl_if_head_is_group:nTF {#1}
- { \__tl_act_group:nwnNNN }
- { \__tl_act_space:wwnNNN }
+ \__kernel_exp_not:w \tex_expanded:D
+ { { \if_false: { \fi: \__tl_head_aux:n #1 { } } } }
+ }
+ \cs_new:Npn \__tl_head_aux:n #1
+ {
+ \__kernel_exp_not:w {#1}
+ \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
}
- #1 \q__tl_act_stop
- }
-\cs_new:Npn \__tl_act_normal:NwnNNN #1 #2 \q__tl_act_stop #3#4
- {
- \if_meaning:w \q__tl_act_mark #1
- \exp_after:wN \__tl_act_end:wn
- \fi:
- #4 {#3} #1
- \__tl_act_loop:w #2 \q__tl_act_stop
- {#3} #4
- }
-\cs_new:Npn \__tl_act_end:wn #1 \__tl_act_result:n #2
- { \group_align_safe_end: \exp_end: #2 }
-\cs_new:Npn \__tl_act_group:nwnNNN #1 #2 \q__tl_act_stop #3#4#5
- {
- #5 {#3} {#1}
- \__tl_act_loop:w #2 \q__tl_act_stop
- {#3} #4 #5
- }
-\exp_last_unbraced:NNo
- \cs_new:Npn \__tl_act_space:wwnNNN \c_space_tl #1 \q__tl_act_stop #2#3#4#5
- {
- #5 {#2}
- \__tl_act_loop:w #1 \q__tl_act_stop
- {#2} #3 #4 #5
}
-\cs_new:Npn \__tl_act_output:n #1 #2 \__tl_act_result:n #3
- { #2 \__tl_act_result:n { #3 #1 } }
-\cs_new:Npn \__tl_act_reverse_output:n #1 #2 \__tl_act_result:n #3
- { #2 \__tl_act_result:n { #1 #3 } }
-\cs_new:Npn \tl_reverse:n #1
{
- \__kernel_exp_not:w \exp_after:wN
+ \cs_new:Npn \tl_head:n #1
{
- \exp:w
- \__tl_act:NNNnn
- \__tl_reverse_normal:nN
- \__tl_reverse_group_preserve:nn
- \__tl_reverse_space:n
- { }
+ \__kernel_exp_not:w
+ \if_false: { \fi: \__tl_head_auxi:nw #1 { } \s__tl_stop }
+ }
+ \cs_new:Npn \__tl_head_auxi:nw #1#2 \s__tl_stop
+ {
+ \exp_after:wN \__tl_head_auxii:n \exp_after:wN {
+ \if_false: } \fi: {#1}
+ }
+ \exp_args:Nno \use:n
+ { \cs_new:Npn \__tl_head_auxii:n #1 }
+ {
+ \__tl_if_empty_if:o { \use_none:n #1 }
+ \exp_after:wN \use_ii:nnn
+ \fi:
+ \use_ii:nn
{#1}
+ { \if_false: { \fi: \__tl_head_auxi:nw #1 } }
}
}
-\cs_generate_variant:Nn \tl_reverse:n { o , V }
-\cs_new:Npn \__tl_reverse_normal:nN #1#2
- { \__tl_act_reverse_output:n {#2} }
-\cs_new:Npn \__tl_reverse_group_preserve:nn #1#2
- { \__tl_act_reverse_output:n { {#2} } }
-\cs_new:Npn \__tl_reverse_space:n #1
- { \__tl_act_reverse_output:n { ~ } }
-\cs_new_protected:Npn \tl_reverse:N #1
- { \tl_set:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
-\cs_new_protected:Npn \tl_greverse:N #1
- { \tl_gset:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
-\cs_generate_variant:Nn \tl_reverse:N { c }
-\cs_generate_variant:Nn \tl_greverse:N { c }
-\cs_new:Npn \tl_head:n #1
- {
- \__kernel_exp_not:w
- \if_false: { \fi: \__tl_head_auxi:nw #1 { } \s__tl_stop }
- }
-\cs_new:Npn \__tl_head_auxi:nw #1#2 \s__tl_stop
- {
- \exp_after:wN \__tl_head_auxii:n \exp_after:wN {
- \if_false: } \fi: {#1}
- }
-\cs_new:Npn \__tl_head_auxii:n #1
- {
- \exp_after:wN \if_meaning:w \exp_after:wN \q__tl_nil
- \__kernel_tl_to_str:w \exp_after:wN { \use_none:n #1 } \q__tl_nil
- \exp_after:wN \use_i:nn
- \else:
- \exp_after:wN \use_ii:nn
- \fi:
- {#1}
- { \if_false: { \fi: \__tl_head_auxi:nw #1 } }
- }
\cs_generate_variant:Nn \tl_head:n { V , v , f }
\cs_new:Npn \tl_head:w #1#2 \q_stop {#1}
\cs_new:Npn \__tl_tl_head:w #1#2 \s__tl_stop {#1}
\cs_new:Npn \tl_head:N { \exp_args:No \tl_head:n }
-\cs_new:Npn \tl_tail:n #1
+\exp_args:Nno \use:n { \cs_new:Npn \tl_tail:n #1 }
{
- \__kernel_exp_not:w
+ \exp_after:wN \__kernel_exp_not:w
\tl_if_blank:nTF {#1}
{ { } }
{ \exp_after:wN { \use_none:n #1 } }
@@ -4385,13 +4386,10 @@
\prg_new_conditional:Npnn \tl_if_head_eq_charcode:nN #1#2 { p , T , F , TF }
{
\if_charcode:w
- \exp_not:N #2
\tl_if_head_is_N_type:nTF { #1 ? }
- {
- \exp_after:wN \exp_not:N
- \__tl_tl_head:w #1 { ? \use_none:nn } \s__tl_stop
- }
+ { \__tl_head_exp_not:w #1 { ^ \__tl_if_head_eq_empty_arg:w } \s__tl_stop }
{ \str_head:n {#1} }
+ \exp_not:N #2
\prg_return_true:
\else:
\prg_return_false:
@@ -4402,17 +4400,14 @@
\prg_new_conditional:Npnn \tl_if_head_eq_catcode:nN #1 #2 { p , T , F , TF }
{
\if_catcode:w
- \exp_not:N #2
\tl_if_head_is_N_type:nTF { #1 ? }
- {
- \exp_after:wN \exp_not:N
- \__tl_tl_head:w #1 { ? \use_none:nn } \s__tl_stop
- }
+ { \__tl_head_exp_not:w #1 { ^ \__tl_if_head_eq_empty_arg:w } \s__tl_stop }
{
\tl_if_head_is_group:nTF {#1}
- { \c_group_begin_token }
- { \c_space_token }
+ \c_group_begin_token
+ \c_space_token
}
+ \exp_not:N #2
\prg_return_true:
\else:
\prg_return_false:
@@ -4423,8 +4418,8 @@
\prg_new_conditional:Npnn \tl_if_head_eq_meaning:nN #1#2 { p , T , F , TF }
{
\tl_if_head_is_N_type:nTF { #1 ? }
- { \__tl_if_head_eq_meaning_normal:nN }
- { \__tl_if_head_eq_meaning_special:nN }
+ \__tl_if_head_eq_meaning_normal:nN
+ \__tl_if_head_eq_meaning_special:nN
{#1} #2
}
\cs_new:Npn \__tl_if_head_eq_meaning_normal:nN #1 #2
@@ -4439,11 +4434,11 @@
\cs_new:Npn \__tl_if_head_eq_meaning_special:nN #1 #2
{
\if_charcode:w \str_head:n {#1} \exp_not:N #2
- \exp_after:wN \use:n
+ \exp_after:wN \use_ii:nn
\else:
\prg_return_false:
- \exp_after:wN \use_none:n
\fi:
+ \use_none:n
{
\if_catcode:w \exp_not:N #2
\tl_if_head_is_group:nTF {#1}
@@ -4455,46 +4450,148 @@
\fi:
}
}
+\cs_new:Npn \__tl_head_exp_not:w #1 #2 \s__tl_stop
+ { \exp_not:N #1 }
+\cs_new:Npn \__tl_if_head_eq_empty_arg:w \exp_not:N #1
+ { ? }
\prg_new_conditional:Npnn \tl_if_head_is_N_type:n #1 { p , T , F , TF }
{
- \if_catcode:w
- \if_false: { \fi: \__tl_if_head_is_N_type:w ? #1 ~ }
- \exp_after:wN \use_none:n
- \exp_after:wN { \exp_after:wN { \token_to_str:N #1 ? } }
- * *
+ \if:w
+ \if_false: { \fi: \__tl_if_head_is_N_type_auxi:w \prg_do_nothing: #1 ~ }
+ { \exp_after:wN { \token_to_str:N #1 } }
+ \scan_stop: \scan_stop:
\prg_return_true:
\else:
\prg_return_false:
\fi:
}
-\cs_new:Npn \__tl_if_head_is_N_type:w #1 ~
+\exp_args:Nno \use:n { \cs_new:Npn \__tl_if_head_is_N_type_auxi:w #1 ~ }
{
- \tl_if_empty:oTF { \use_none:n #1 } { ^ } { }
- \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
+ \tl_if_empty:oTF { #1 }
+ { f \exp_after:wN \use_none:nn }
+ { \exp_after:wN \__tl_if_head_is_N_type_auxii:n }
+ \exp_after:wN { \if_false: } \fi:
}
+\cs_new:Npn \__tl_if_head_is_N_type_auxii:n #1
+ { \exp_after:wN \use_none:n \exp_after:wN }
\prg_new_conditional:Npnn \tl_if_head_is_group:n #1 { p , T , F , TF }
{
- \if_catcode:w
+ \if:w
\exp_after:wN \use_none:n
\exp_after:wN { \exp_after:wN { \token_to_str:N #1 ? } }
- * *
- \prg_return_false:
- \else:
+ \scan_stop: \scan_stop:
+ \__tl_if_head_is_group_fi_false:w
+ \fi:
+ \if_true:
\prg_return_true:
+ \else:
+ \prg_return_false:
\fi:
}
+\cs_new:Npn \__tl_if_head_is_group_fi_false:w \fi: \if_true: { \fi: \if_false: }
\prg_new_conditional:Npnn \tl_if_head_is_space:n #1 { p , T , F , TF }
{
- \exp:w \if_false: { \fi:
- \__tl_if_head_is_space:w ? #1 ? ~ }
+ \if:w
+ \if_false: { \fi: \__tl_if_head_is_space:w \prg_do_nothing: #1 ? ~ }
+ \scan_stop: \scan_stop:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
}
-\cs_new:Npn \__tl_if_head_is_space:w #1 ~
+\exp_args:Nno \use:n { \cs_new:Npn \__tl_if_head_is_space:w #1 ~ }
{
- \tl_if_empty:oTF { \use_none:n #1 }
- { \exp_after:wN \exp_end: \exp_after:wN \prg_return_true: }
- { \exp_after:wN \exp_end: \exp_after:wN \prg_return_false: }
+ \__tl_if_empty_if:o {#1} \else: f \fi:
\exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
}
+\scan_new:N \s__tl_act_stop
+\cs_set_protected:Npn \__tl_tmp:w #1
+ {
+ \cs_new:Npn \__tl_act_if_head_is_space:nTF ##1
+ {
+ \__tl_act_if_head_is_space:w
+ \s__tl_act_stop ##1 \s__tl_act_stop \__tl_act_if_head_is_space_true:w
+ \s__tl_act_stop #1 \s__tl_act_stop \use_ii:nn
+ }
+ \cs_new:Npn \__tl_act_if_head_is_space:w
+ ##1 \s__tl_act_stop #1 ##2 \s__tl_act_stop
+ {}
+ \cs_new:Npn \__tl_act_if_head_is_space_true:w
+ \s__tl_act_stop #1 \s__tl_act_stop \use_ii:nn ##1 ##2
+ {##1}
+ }
+\__tl_tmp:w { ~ }
+\exp_args:Nnx \use:n { \cs_new:Npn \__tl_act_loop:w #1 \s__tl_act_stop }
+ {
+ \exp_not:o { \__tl_act_if_head_is_space:nTF {#1} }
+ \exp_not:N \__tl_act_space:wwNNN
+ {
+ \exp_not:o { \tl_if_head_is_group:nTF {#1} }
+ \exp_not:N \__tl_act_group:nwNNN
+ \exp_not:N \__tl_act_normal:NwNNN
+ }
+ \exp_not:n {#1} \s__tl_act_stop
+ }
+\cs_undefine:N \__tl_act_if_head_is_space:nTF
+\cs_new:Npn \__tl_act_normal:NwNNN #1 #2 \s__tl_act_stop #3
+ {
+ #3 #1
+ \__tl_act_loop:w #2 \s__tl_act_stop
+ #3
+ }
+\cs_new:Npn \__tl_use_none_delimit_by_s_act_stop:w #1 \s__tl_act_stop { }
+\cs_new:Npn \__tl_act_end:wn #1 \__tl_act_result:n #2
+ { \group_align_safe_end: \exp_end: #2 }
+\cs_new:Npn \__tl_act_group:nwNNN #1 #2 \s__tl_act_stop #3#4#5
+ {
+ \__tl_use_none_delimit_by_s_act_stop:w #1 \__tl_act_end:wn \s__tl_act_stop
+ #5 {#1}
+ \__tl_act_loop:w #2 \s__tl_act_stop
+ #3 #4 #5
+ }
+\exp_last_unbraced:NNo
+ \cs_new:Npn \__tl_act_space:wwNNN \c_space_tl #1 \s__tl_act_stop #2#3
+ {
+ #3
+ \__tl_act_loop:w #1 \s__tl_act_stop
+ #2 #3
+ }
+\cs_new:Npn \__tl_act:NNNn #1#2#3#4
+ {
+ \group_align_safe_begin:
+ \__tl_act_loop:w #4 { \s__tl_act_stop } ? \s__tl_act_stop
+ #1 #3 #2
+ \__tl_act_result:n { }
+ }
+\cs_new:Npn \__tl_act_output:n #1 #2 \__tl_act_result:n #3
+ { #2 \__tl_act_result:n { #3 #1 } }
+\cs_new:Npn \__tl_act_reverse_output:n #1 #2 \__tl_act_result:n #3
+ { #2 \__tl_act_result:n { #1 #3 } }
+\cs_new:Npn \tl_reverse:n #1
+ {
+ \__kernel_exp_not:w \exp_after:wN
+ {
+ \exp:w
+ \__tl_act:NNNn
+ \__tl_reverse_normal:N
+ \__tl_reverse_group_preserve:n
+ \__tl_reverse_space:
+ {#1}
+ }
+ }
+\cs_generate_variant:Nn \tl_reverse:n { o , V }
+\cs_new:Npn \__tl_reverse_normal:N
+ { \__tl_act_reverse_output:n }
+\cs_new:Npn \__tl_reverse_group_preserve:n #1
+ { \__tl_act_reverse_output:n { {#1} } }
+\cs_new:Npn \__tl_reverse_space:
+ { \__tl_act_reverse_output:n { ~ } }
+\cs_new_protected:Npn \tl_reverse:N #1
+ { \__kernel_tl_set:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
+\cs_new_protected:Npn \tl_greverse:N #1
+ { \__kernel_tl_gset:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
+\cs_generate_variant:Nn \tl_reverse:N { c }
+\cs_generate_variant:Nn \tl_greverse:N { c }
\cs_new:Npn \tl_item:nn #1#2
{
\exp_args:Nf \__tl_item:nn
@@ -4630,7 +4727,10 @@
\cs_new_protected:Npn \__tl_show:NN #1#2
{
\__kernel_chk_defined:NT #2
- { \exp_args:Nx #1 { \token_to_str:N #2 = \exp_not:o {#2} } }
+ {
+ \exp_args:Ne #1
+ { \token_to_str:N #2 = \__kernel_exp_not:w \exp_after:wN {#2} }
+ }
}
\cs_new_protected:Npn \tl_show:n #1
{ \iow_wrap:nnnN { >~ \tl_to_str:n {#1} . } { } { } \__tl_show:n }
@@ -4656,6 +4756,7 @@
\tl_new:N \g_tmpb_tl
\tl_new:N \l_tmpa_tl
\tl_new:N \l_tmpb_tl
+\cs_undefine:N \__tl_tmp:w
%% File: l3str.dtx
\scan_new:N \s__str_mark
\scan_new:N \s__str_stop
@@ -4717,13 +4818,13 @@
{ }
\group_end:
\cs_new_protected:Npn \str_replace_once:Nnn
- { \__str_replace:NNNnn \prg_do_nothing: \tl_set:Nx }
+ { \__str_replace:NNNnn \prg_do_nothing: \__kernel_tl_set:Nx }
\cs_new_protected:Npn \str_greplace_once:Nnn
- { \__str_replace:NNNnn \prg_do_nothing: \tl_gset:Nx }
+ { \__str_replace:NNNnn \prg_do_nothing: \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \str_replace_all:Nnn
- { \__str_replace:NNNnn \__str_replace_next:w \tl_set:Nx }
+ { \__str_replace:NNNnn \__str_replace_next:w \__kernel_tl_set:Nx }
\cs_new_protected:Npn \str_greplace_all:Nnn
- { \__str_replace:NNNnn \__str_replace_next:w \tl_gset:Nx }
+ { \__str_replace:NNNnn \__str_replace_next:w \__kernel_tl_gset:Nx }
\cs_generate_variant:Nn \str_replace_once:Nnn { c }
\cs_generate_variant:Nn \str_greplace_once:Nnn { c }
\cs_generate_variant:Nn \str_replace_all:Nnn { c }
@@ -5318,22 +5419,22 @@
\cs_new_eq:NN \seq_gset_eq:cc \tl_gset_eq:cc
\cs_new_protected:Npn \seq_set_from_clist:NN #1#2
{
- \tl_set:Nx #1
+ \__kernel_tl_set:Nx #1
{ \s__seq \clist_map_function:NN #2 \__seq_wrap_item:n }
}
\cs_new_protected:Npn \seq_set_from_clist:Nn #1#2
{
- \tl_set:Nx #1
+ \__kernel_tl_set:Nx #1
{ \s__seq \clist_map_function:nN {#2} \__seq_wrap_item:n }
}
\cs_new_protected:Npn \seq_gset_from_clist:NN #1#2
{
- \tl_gset:Nx #1
+ \__kernel_tl_gset:Nx #1
{ \s__seq \clist_map_function:NN #2 \__seq_wrap_item:n }
}
\cs_new_protected:Npn \seq_gset_from_clist:Nn #1#2
{
- \tl_gset:Nx #1
+ \__kernel_tl_gset:Nx #1
{ \s__seq \clist_map_function:nN {#2} \__seq_wrap_item:n }
}
\cs_generate_variant:Nn \seq_set_from_clist:NN { Nc }
@@ -5349,9 +5450,9 @@
}
\cs_generate_variant:Nn \seq_const_from_clist:Nn { c }
\cs_new_protected:Npn \seq_set_split:Nnn
- { \__seq_set_split:NNnn \tl_set:Nx }
+ { \__seq_set_split:NNnn \__kernel_tl_set:Nx }
\cs_new_protected:Npn \seq_gset_split:Nnn
- { \__seq_set_split:NNnn \tl_gset:Nx }
+ { \__seq_set_split:NNnn \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__seq_set_split:NNnn #1#2#3#4
{
\tl_if_empty:nTF {#3}
@@ -5371,7 +5472,7 @@
\__seq_set_split_end:
\__seq_set_split_auxi:w \prg_do_nothing:
}
- \tl_set:Nx \l__seq_internal_a_tl { \l__seq_internal_a_tl }
+ \__kernel_tl_set:Nx \l__seq_internal_a_tl { \l__seq_internal_a_tl }
}
#1 #2 { \s__seq \l__seq_internal_a_tl }
}
@@ -5397,7 +5498,7 @@
{ TF , T , F , p }
\cs_new_protected:Npn \seq_put_left:Nn #1#2
{
- \tl_set:Nx #1
+ \__kernel_tl_set:Nx #1
{
\exp_not:n { \s__seq \__seq_item:n {#2} }
\exp_not:f { \exp_after:wN \__seq_put_left_aux:w #1 }
@@ -5405,7 +5506,7 @@
}
\cs_new_protected:Npn \seq_gput_left:Nn #1#2
{
- \tl_gset:Nx #1
+ \__kernel_tl_gset:Nx #1
{
\exp_not:n { \s__seq \__seq_item:n {#2} }
\exp_not:f { \exp_after:wN \__seq_put_left_aux:w #1 }
@@ -5443,9 +5544,9 @@
\cs_generate_variant:Nn \seq_remove_duplicates:N { c }
\cs_generate_variant:Nn \seq_gremove_duplicates:N { c }
\cs_new_protected:Npn \seq_remove_all:Nn
- { \__seq_remove_all_aux:NNn \tl_set:Nx }
+ { \__seq_remove_all_aux:NNn \__kernel_tl_set:Nx }
\cs_new_protected:Npn \seq_gremove_all:Nn
- { \__seq_remove_all_aux:NNn \tl_gset:Nx }
+ { \__seq_remove_all_aux:NNn \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__seq_remove_all_aux:NNn #1#2#3
{
\__seq_push_item_def:n
@@ -5469,9 +5570,9 @@
\cs_generate_variant:Nn \seq_remove_all:Nn { c }
\cs_generate_variant:Nn \seq_gremove_all:Nn { c }
\cs_new_protected:Npn \seq_reverse:N
- { \__seq_reverse:NN \tl_set:Nx }
+ { \__seq_reverse:NN \__kernel_tl_set:Nx }
\cs_new_protected:Npn \seq_greverse:N
- { \__seq_reverse:NN \tl_gset:Nx }
+ { \__seq_reverse:NN \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__seq_reverse:NN #1 #2
{
\cs_set_eq:NN \__seq_tmp:w \__seq_item:n
@@ -5584,7 +5685,7 @@
}
\cs_new_protected:Npn \seq_get_left:NN #1#2
{
- \tl_set:Nx #2
+ \__kernel_tl_set:Nx #2
{
\exp_after:wN \__seq_get_left:wnw
#1 \__seq_item:n { \q_no_value } \s__seq_stop
@@ -5609,7 +5710,7 @@
\cs_generate_variant:Nn \seq_gpop_left:NN { c }
\cs_new_protected:Npn \seq_get_right:NN #1#2
{
- \tl_set:Nx #2
+ \__kernel_tl_set:Nx #2
{
\exp_after:wN \use_i_ii:nnn
\exp_after:wN \__seq_get_right_loop:nw
@@ -5626,9 +5727,9 @@
\cs_new:Npn \__seq_get_right_end:NnN #1#2#3 { \exp_not:n {#2} }
\cs_generate_variant:Nn \seq_get_right:NN { c }
\cs_new_protected:Npn \seq_pop_right:NN
- { \__seq_pop:NNNN \__seq_pop_right:NNN \tl_set:Nx }
+ { \__seq_pop:NNNN \__seq_pop_right:NNN \__kernel_tl_set:Nx }
\cs_new_protected:Npn \seq_gpop_right:NN
- { \__seq_pop:NNNN \__seq_pop_right:NNN \tl_gset:Nx }
+ { \__seq_pop:NNNN \__seq_pop_right:NNN \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__seq_pop_right:NNN #1#2#3
{
\cs_set_eq:NN \__seq_tmp:w \__seq_item:n
@@ -5640,7 +5741,7 @@
#2
{
\if_false: { \fi: }
- \tl_set:Nx #3
+ \__kernel_tl_set:Nx #3
}
{ } \use_none:nn
\cs_set_eq:NN \__seq_item:n \__seq_tmp:w
@@ -5668,10 +5769,10 @@
{ \__seq_pop_TF:NNNN \__seq_pop_left:NNN \tl_gset:Nn #1 #2 }
\prg_new_protected_conditional:Npnn \seq_pop_right:NN #1#2
{ T , F , TF }
- { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \tl_set:Nx #1 #2 }
+ { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \__kernel_tl_set:Nx #1 #2 }
\prg_new_protected_conditional:Npnn \seq_gpop_right:NN #1#2
{ T , F , TF }
- { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \tl_gset:Nx #1 #2 }
+ { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \__kernel_tl_gset:Nx #1 #2 }
\prg_generate_conditional_variant:Nnn \seq_pop_left:NN { c }
{ T , F , TF }
\prg_generate_conditional_variant:Nnn \seq_gpop_left:NN { c }
@@ -5819,9 +5920,9 @@
\int_value:w \int_eval:w 1 + #2 ;
}
\cs_new_protected:Npn \seq_set_map_x:NNn
- { \__seq_set_map_x:NNNn \tl_set:Nx }
+ { \__seq_set_map_x:NNNn \__kernel_tl_set:Nx }
\cs_new_protected:Npn \seq_gset_map_x:NNn
- { \__seq_set_map_x:NNNn \tl_gset:Nx }
+ { \__seq_set_map_x:NNNn \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__seq_set_map_x:NNNn #1#2#3#4
{
\__seq_push_item_def:n { \exp_not:N \__seq_item:n {#4} }
@@ -5829,9 +5930,9 @@
\__seq_pop_item_def:
}
\cs_new_protected:Npn \seq_set_map:NNn
- { \__seq_set_map:NNNn \tl_set:Nx }
+ { \__seq_set_map:NNNn \__kernel_tl_set:Nx }
\cs_new_protected:Npn \seq_gset_map:NNn
- { \__seq_set_map:NNNn \tl_gset:Nx }
+ { \__seq_set_map:NNNn \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__seq_set_map:NNNn #1#2#3#4
{
\__seq_push_item_def:n { \exp_not:n { \__seq_item:n {#4} } }
@@ -7478,7 +7579,7 @@
\tl_new:N \g__sys_backend_tl
\__sys_finalise:n
{
- \tl_gset:Nx \g__sys_backend_tl
+ \__kernel_tl_gset:Nx \g__sys_backend_tl
{
\sys_if_engine_xetex:TF
{ xdvipdfmx }
@@ -7594,9 +7695,9 @@
\cs_new_eq:NN \clist_gset_eq:cN \tl_gset_eq:cN
\cs_new_eq:NN \clist_gset_eq:cc \tl_gset_eq:cc
\cs_new_protected:Npn \clist_set_from_seq:NN
- { \__clist_set_from_seq:NNNN \clist_clear:N \tl_set:Nx }
+ { \__clist_set_from_seq:NNNN \clist_clear:N \__kernel_tl_set:Nx }
\cs_new_protected:Npn \clist_gset_from_seq:NN
- { \__clist_set_from_seq:NNNN \clist_gclear:N \tl_gset:Nx }
+ { \__clist_set_from_seq:NNNN \clist_gclear:N \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__clist_set_from_seq:NNNN #1#2#3#4
{
\seq_if_empty:NTF #4
@@ -7621,9 +7722,9 @@
\cs_generate_variant:Nn \clist_gset_from_seq:NN { Nc }
\cs_generate_variant:Nn \clist_gset_from_seq:NN { c , cc }
\cs_new_protected:Npn \clist_concat:NNN
- { \__clist_concat:NNNN \tl_set:Nx }
+ { \__clist_concat:NNNN \__kernel_tl_set:Nx }
\cs_new_protected:Npn \clist_gconcat:NNN
- { \__clist_concat:NNNN \tl_gset:Nx }
+ { \__clist_concat:NNNN \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__clist_concat:NNNN #1#2#3#4
{
#1 #2
@@ -7640,9 +7741,9 @@
\prg_new_eq_conditional:NNn \clist_if_exist:c \cs_if_exist:c
{ TF , T , F , p }
\cs_new_protected:Npn \clist_set:Nn #1#2
- { \tl_set:Nx #1 { \__clist_sanitize:n {#2} } }
+ { \__kernel_tl_set:Nx #1 { \__clist_sanitize:n {#2} } }
\cs_new_protected:Npn \clist_gset:Nn #1#2
- { \tl_gset:Nx #1 { \__clist_sanitize:n {#2} } }
+ { \__kernel_tl_gset:Nx #1 { \__clist_sanitize:n {#2} } }
\cs_generate_variant:Nn \clist_set:Nn { NV , No , Nx , c , cV , co , cx }
\cs_generate_variant:Nn \clist_gset:Nn { NV , No , Nx , c , cV , co , cx }
\cs_new_protected:Npn \clist_put_left:Nn
@@ -7683,9 +7784,9 @@
{ \tl_set:Nn #3 {#1} }
\cs_generate_variant:Nn \clist_get:NN { c }
\cs_new_protected:Npn \clist_pop:NN
- { \__clist_pop:NNN \tl_set:Nx }
+ { \__clist_pop:NNN \__kernel_tl_set:Nx }
\cs_new_protected:Npn \clist_gpop:NN
- { \__clist_pop:NNN \tl_gset:Nx }
+ { \__clist_pop:NNN \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__clist_pop:NNN #1#2#3
{
\if_meaning:w #2 \c_empty_clist
@@ -7719,9 +7820,9 @@
}
\prg_generate_conditional_variant:Nnn \clist_get:NN { c } { T , F , TF }
\prg_new_protected_conditional:Npnn \clist_pop:NN #1#2 { T , F , TF }
- { \__clist_pop_TF:NNN \tl_set:Nx #1 #2 }
+ { \__clist_pop_TF:NNN \__kernel_tl_set:Nx #1 #2 }
\prg_new_protected_conditional:Npnn \clist_gpop:NN #1#2 { T , F , TF }
- { \__clist_pop_TF:NNN \tl_gset:Nx #1 #2 }
+ { \__clist_pop_TF:NNN \__kernel_tl_gset:Nx #1 #2 }
\cs_new_protected:Npn \__clist_pop_TF:NNN #1#2#3
{
\if_meaning:w #2 \c_empty_clist
@@ -7768,9 +7869,9 @@
\cs_generate_variant:Nn \clist_remove_duplicates:N { c }
\cs_generate_variant:Nn \clist_gremove_duplicates:N { c }
\cs_new_protected:Npn \clist_remove_all:Nn
- { \__clist_remove_all:NNNn \clist_set_from_seq:NN \tl_set:Nx }
+ { \__clist_remove_all:NNNn \clist_set_from_seq:NN \__kernel_tl_set:Nx }
\cs_new_protected:Npn \clist_gremove_all:Nn
- { \__clist_remove_all:NNNn \clist_gset_from_seq:NN \tl_gset:Nx }
+ { \__clist_remove_all:NNNn \clist_gset_from_seq:NN \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__clist_remove_all:NNNn #1#2#3#4
{
\__clist_if_wrap:nTF {#4}
@@ -7807,9 +7908,9 @@
\cs_generate_variant:Nn \clist_remove_all:Nn { c }
\cs_generate_variant:Nn \clist_gremove_all:Nn { c }
\cs_new_protected:Npn \clist_reverse:N #1
- { \tl_set:Nx #1 { \exp_args:No \clist_reverse:n {#1} } }
+ { \__kernel_tl_set:Nx #1 { \exp_args:No \clist_reverse:n {#1} } }
\cs_new_protected:Npn \clist_greverse:N #1
- { \tl_gset:Nx #1 { \exp_args:No \clist_reverse:n {#1} } }
+ { \__kernel_tl_gset:Nx #1 { \exp_args:No \clist_reverse:n {#1} } }
\cs_generate_variant:Nn \clist_reverse:N { c }
\cs_generate_variant:Nn \clist_greverse:N { c }
\cs_new:Npn \clist_reverse:n #1
@@ -8306,7 +8407,7 @@
\tl_put_right:Nn \l__char_tmp_tl { ^^@ \if_false: } }
\char_set_catcode_group_end:n { 0 }
\tl_put_right:Nn \l__char_tmp_tl { { \fi: \exp_not:N \or: ^^@ } % }
- \tl_set:Nx \l__char_tmp_tl { \l__char_tmp_tl }
+ \__kernel_tl_set:Nx \l__char_tmp_tl { \l__char_tmp_tl }
\char_set_catcode_math_toggle:n { 0 }
\tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ }
\char_set_catcode_alignment:n { 0 }
@@ -8725,6 +8826,7 @@
\__token_tmp:w { char" }
\__token_tmp:w { count }
\__token_tmp:w { dimen }
+\__token_tmp:w { ~ font }
\__token_tmp:w { macro }
\__token_tmp:w { muskip }
\__token_tmp:w { skip }
@@ -8772,6 +8874,7 @@
{ \tl_to_str:n { \protected } macro }
\__token_tmp:w { protected_long_macro } { macro }
{ \token_to_str:N \protected \tl_to_str:n { \long } macro }
+\__token_tmp:w { font_selection } { ~ font } { select ~ font }
\__token_tmp:w { dim_register } { dimen } { \token_to_str:N \dimen }
\__token_tmp:w { int_register } { count } { \token_to_str:N \count }
\__token_tmp:w { muskip_register } { muskip } { \token_to_str:N \muskip }
@@ -9237,8 +9340,8 @@
}
\prg_generate_conditional_variant:Nnn \prop_pop:NnN { c } { T , F , TF }
\prg_generate_conditional_variant:Nnn \prop_gpop:NnN { c } { T , F , TF }
-\cs_new_protected:Npn \prop_put:Nnn { \__prop_put:NNnn \tl_set:Nx }
-\cs_new_protected:Npn \prop_gput:Nnn { \__prop_put:NNnn \tl_gset:Nx }
+\cs_new_protected:Npn \prop_put:Nnn { \__prop_put:NNnn \__kernel_tl_set:Nx }
+\cs_new_protected:Npn \prop_gput:Nnn { \__prop_put:NNnn \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__prop_put:NNnn #1#2#3#4
{
\tl_set:Nn \l__prop_internal_tl
@@ -9259,9 +9362,9 @@
\cs_generate_variant:Nn \prop_gput:Nnn
{ c , cnV , cno , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
\cs_new_protected:Npn \prop_put_if_new:Nnn
- { \__prop_put_if_new:NNnn \tl_set:Nx }
+ { \__prop_put_if_new:NNnn \__kernel_tl_set:Nx }
\cs_new_protected:Npn \prop_gput_if_new:Nnn
- { \__prop_put_if_new:NNnn \tl_gset:Nx }
+ { \__prop_put_if_new:NNnn \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__prop_put_if_new:NNnn #1#2#3#4
{
\tl_set:Nn \l__prop_internal_tl
@@ -10402,7 +10505,7 @@
{ \__ior_open_stream:Nn #1 {#2} }
{
\__ior_new:N #1
- \tl_set:Nx \l__ior_stream_tl { \int_eval:n {#1} }
+ \__kernel_tl_set:Nx \l__ior_stream_tl { \int_eval:n {#1} }
\__ior_open_stream:Nn #1 {#2}
}
}
@@ -10592,14 +10695,14 @@
\tl_new:N \l__iow_file_name_tl
\cs_new_protected:Npn \iow_open:Nn #1#2
{
- \tl_set:Nx \l__iow_file_name_tl
+ \__kernel_tl_set:Nx \l__iow_file_name_tl
{ \__kernel_file_name_sanitize:n {#2} }
\iow_close:N #1
\seq_gpop:NNTF \g__iow_streams_seq \l__iow_stream_tl
{ \__iow_open_stream:NV #1 \l__iow_file_name_tl }
{
\__iow_new:N #1
- \tl_set:Nx \l__iow_stream_tl { \int_eval:n {#1} }
+ \__kernel_tl_set:Nx \l__iow_stream_tl { \int_eval:n {#1} }
\__iow_open_stream:NV #1 \l__iow_file_name_tl
}
}
@@ -10675,7 +10778,7 @@
\cs_new:Npn \__iow_unindent:w { }
\cs_new_protected:Npn \__iow_set_indent:n #1
{
- \tl_set:Nx \l__iow_one_indent_tl
+ \__kernel_tl_set:Nx \l__iow_one_indent_tl
{ \exp_args:No \__kernel_str_to_other_fast:n { \tl_to_str:n {#1} } }
\int_set:Nn \l__iow_one_indent_int
{ \str_count:N \l__iow_one_indent_tl }
@@ -10750,11 +10853,11 @@
\cs_set_eq:NN \iow_indent:n \__iow_indent:n
#3
\cs_set_eq:NN \protect \token_to_str:N
- \tl_set:Nx \l__iow_wrap_tl {#1}
+ \__kernel_tl_set:Nx \l__iow_wrap_tl {#1}
\cs_set_eq:NN \iow_allow_break: \__iow_allow_break_error:
\cs_set_eq:NN \iow_indent:n \__iow_indent_error:n
- \tl_set:Nx \l__iow_newline_tl { \iow_newline: #2 }
- \tl_set:Nx \l__iow_newline_tl { \tl_to_str:N \l__iow_newline_tl }
+ \__kernel_tl_set:Nx \l__iow_newline_tl { \iow_newline: #2 }
+ \__kernel_tl_set:Nx \l__iow_newline_tl { \tl_to_str:N \l__iow_newline_tl }
\int_set:Nn \l__iow_line_target_int
{ \l_iow_line_count_int - \str_count:N \l__iow_newline_tl + 1 }
\int_compare:nNnT { \l__iow_line_target_int } < 0
@@ -10770,12 +10873,12 @@
\cs_generate_variant:Nn \iow_wrap:nnnN { nx }
\cs_new_protected:Npn \__iow_wrap_do:
{
- \tl_set:Nx \l__iow_wrap_tl
+ \__kernel_tl_set:Nx \l__iow_wrap_tl
{
\exp_args:No \__kernel_str_to_other_fast:n \l__iow_wrap_tl
\c__iow_wrap_end_marker_tl
}
- \tl_set:Nx \l__iow_wrap_tl
+ \__kernel_tl_set:Nx \l__iow_wrap_tl
{
\exp_after:wN \__iow_wrap_fix_newline:w \l__iow_wrap_tl
^^J \q__iow_nil ^^J \s__iow_stop
@@ -10933,7 +11036,7 @@
}
\cs_new_protected:Npn \__iow_wrap_allow_break:n #1
{
- \tl_set:Nx \l__iow_line_tl
+ \__kernel_tl_set:Nx \l__iow_line_tl
{ \l__iow_line_tl \__iow_wrap_trim:N \l__iow_line_part_tl }
\bool_set_false:N \l__iow_line_break_bool
\tl_if_empty:NTF \l__iow_line_part_tl
@@ -10953,7 +11056,7 @@
\tl_put_right:Nx \l__iow_line_tl { \l__iow_line_part_tl }
\bool_set_false:N \l__iow_line_break_bool
\int_sub:Nn \l__iow_indent_int { \l__iow_one_indent_int }
- \tl_set:Nx \l__iow_indent_tl
+ \__kernel_tl_set:Nx \l__iow_indent_tl
{ \exp_after:wN \__iow_unindent:w \l__iow_indent_tl }
\__iow_wrap_chunk:nw {#1}
}
@@ -10972,9 +11075,9 @@
}
\cs_new_protected:Npn \__iow_wrap_store_do:n #1
{
- \tl_set:Nx \l__iow_line_tl
+ \__kernel_tl_set:Nx \l__iow_line_tl
{ \l__iow_line_tl \l__iow_line_part_tl }
- \tl_set:Nx \l__iow_wrap_tl
+ \__kernel_tl_set:Nx \l__iow_wrap_tl
{
\l__iow_wrap_tl
\l__iow_newline_tl
@@ -11268,7 +11371,7 @@
\cs_generate_variant:Nn \file_get_full_name:nN { V }
\prg_new_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF }
{
- \tl_set:Nx #2
+ \__kernel_tl_set:Nx #2
{ \file_full_name:n {#1} }
\tl_if_empty:NTF #2
{ \prg_return_false: }
@@ -11281,7 +11384,7 @@
{
\prg_set_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF }
{
- \tl_set:Nx \l__file_base_name_tl
+ \__kernel_tl_set:Nx \l__file_base_name_tl
{ \__kernel_file_name_sanitize:n {#1} }
\__file_get_full_name_search:nN { } \use:n
\seq_map_inline:Nn \l_file_search_path_seq
@@ -11316,7 +11419,7 @@
}
\cs_new_protected:Npn \__file_get_full_name_search:nN #1#2
{
- \tl_set:Nx \l__file_full_name_tl
+ \__kernel_tl_set:Nx \l__file_full_name_tl
{ \tl_to_str:n {#1} \l__file_base_name_tl }
\__kernel_ior_open:No \g__file_internal_ior \l__file_full_name_tl
\ior_if_eof:NF \g__file_internal_ior { #2 { \prg_break: } }
@@ -11423,7 +11526,7 @@
{ \__file_get_details:nnN {#1} { timestamp } #2 }
\cs_new_protected:Npn \__file_get_details:nnN #1#2#3
{
- \tl_set:Nx #3
+ \__kernel_tl_set:Nx #3
{ \use:c { file_ #2 :n } {#1} }
\tl_if_empty:NTF #3
{ \prg_return_false: }
@@ -11457,7 +11560,7 @@
\prg_new_protected_conditional:Npnn \file_get_hex_dump:nnnN #1#2#3#4
{ T , F , TF }
{
- \tl_set:Nx #4
+ \__kernel_tl_set:Nx #4
{ \file_hex_dump:nnn {#1} {#2} {#3} }
\tl_if_empty:NTF #4
{ \prg_return_false: }
@@ -13083,7 +13186,7 @@
{
\clist_clear:N \l__keys_unused_clist
\__keys_set_known:nnn {#2} {#3} {#4}
- \tl_set:Nx #5 { \exp_not:o \l__keys_unused_clist }
+ \__kernel_tl_set:Nx #5 { \exp_not:o \l__keys_unused_clist }
\tl_set:Nn \l__keys_unused_clist {#1}
}
\cs_new_protected:Npn \keys_set_known:nn #1#2
@@ -13125,7 +13228,7 @@
{
\clist_clear:N \l__keys_unused_clist
\__keys_set_filter:nnnn {#2} {#3} {#4} {#5}
- \tl_set:Nx #6 { \exp_not:o \l__keys_unused_clist }
+ \__kernel_tl_set:Nx #6 { \exp_not:o \l__keys_unused_clist }
\tl_set:Nn \l__keys_unused_clist {#1}
}
\cs_new_protected:Npn \keys_set_filter:nnn #1#2#3
@@ -13191,7 +13294,7 @@
}
\cs_new_protected:Npn \__keys_set_keyval:nnn #1#2#3
{
- \tl_set:Nx \l_keys_path_str
+ \__kernel_tl_set:Nx \l_keys_path_str
{
\tl_if_blank:nF {#1}
{ #1 / }
@@ -13389,7 +13492,7 @@
}
\cs_new_protected:Npn \__keys_store_unused_aux:
{
- \tl_set:Nx \l__keys_relative_tl
+ \__kernel_tl_set:Nx \l__keys_relative_tl
{ \exp_args:No \__keys_trim_spaces:n \l__keys_relative_tl }
\use:x
{
@@ -16027,9 +16130,9 @@
{ \cs_new_eq:NN #1 \c_zero_fp }
\cs_generate_variant:Nn \fp_new:N {c}
\cs_new_protected:Npn \fp_set:Nn #1#2
- { \tl_set:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } }
+ { \__kernel_tl_set:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } }
\cs_new_protected:Npn \fp_gset:Nn #1#2
- { \tl_gset:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } }
+ { \__kernel_tl_gset:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } }
\cs_new_protected:Npn \fp_const:Nn #1#2
{ \tl_const:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } }
\cs_generate_variant:Nn \fp_set:Nn {c}
@@ -20461,6 +20564,9 @@
\char_set_catcode_group_end:n { 125 } % right brace
\char_set_catcode_space:n { 126 } % tilde
\char_set_catcode_invalid:n { 127 } % ^^?
+ \bool_lazy_or:nnF
+ { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
+ { \int_step_function:nnN { 128 } { 255 } \char_set_catcode_active:n }
\__cctab_gset:n { \c_code_cctab }
\group_end:
\cctab_const:Nn \c_document_cctab
@@ -20629,7 +20735,7 @@
{
\group_begin:
\__sort_main:NNNn \tl_map_inline:Nn \tl_map_break:n #2 {#3}
- \tl_gset:Nx \g__sort_internal_tl
+ \__kernel_tl_gset:Nx \g__sort_internal_tl
{ \__sort_tl_toks:w \l__sort_min_int ; }
\group_end:
#1 #2 \g__sort_internal_tl
@@ -21012,7 +21118,7 @@
\fi:
}
\group_begin:
- \tl_set:Nx \l__str_internal_tl { \tl_to_str:n { 0123456789ABCDEF } }
+ \__kernel_tl_set:Nx \l__str_internal_tl { \tl_to_str:n { 0123456789ABCDEF } }
\tl_map_inline:Nn \l__str_internal_tl
{
\tl_map_inline:Nn \l__str_internal_tl
@@ -21057,7 +21163,7 @@
}
\cs_new_protected:Npn \__str_convert_gmap:N #1
{
- \tl_gset:Nx \g__str_result_tl
+ \__kernel_tl_gset:Nx \g__str_result_tl
{
\exp_after:wN \__str_convert_gmap_loop:NN
\exp_after:wN #1
@@ -21073,7 +21179,7 @@
}
\cs_new_protected:Npn \__str_convert_gmap_internal:N #1
{
- \tl_gset:Nx \g__str_result_tl
+ \__kernel_tl_gset:Nx \g__str_result_tl
{
\exp_after:wN \__str_convert_gmap_internal_loop:Nww
\exp_after:wN #1
@@ -21123,7 +21229,7 @@
{
\group_begin:
#1
- \tl_gset:Nx \g__str_result_tl { \__kernel_str_to_other_fast:n {#4} }
+ \__kernel_tl_gset:Nx \g__str_result_tl { \__kernel_str_to_other_fast:n {#4} }
\exp_after:wN \__str_convert:wwwnn
\tl_to_str:n {#5} /// \s__str_stop
{ decode } { unescape }
@@ -21269,7 +21375,7 @@
\cs_new_protected:Npn \__str_convert_unescape_:
{
\flag_clear:n { str_byte }
- \tl_gset:Nx \g__str_result_tl
+ \__kernel_tl_gset:Nx \g__str_result_tl
{ \exp_args:No \__str_filter_bytes:n \g__str_result_tl }
\__str_if_flag_error:nnx { str_byte } { non-byte } { bytes }
}
@@ -21321,7 +21427,7 @@
\cs_new_protected:Npn \__str_convert_decode_clist:
{
\clist_gset:No \g__str_result_tl \g__str_result_tl
- \tl_gset:Nx \g__str_result_tl
+ \__kernel_tl_gset:Nx \g__str_result_tl
{
\exp_args:No \clist_map_function:nN
\g__str_result_tl \__str_decode_clist_char:n
@@ -21332,7 +21438,7 @@
\cs_new_protected:Npn \__str_convert_encode_clist:
{
\__str_convert_gmap_internal:N \__str_encode_clist_char:n
- \tl_gset:Nx \g__str_result_tl { \tl_tail:N \g__str_result_tl }
+ \__kernel_tl_gset:Nx \g__str_result_tl { \tl_tail:N \g__str_result_tl }
}
\cs_new:Npn \__str_encode_clist_char:n #1 { , #1 }
\cs_new_protected:Npn \__str_declare_eight_bit_encoding:nnnn #1
@@ -21490,7 +21596,7 @@
\group_begin:
\flag_clear:n { str_error }
\int_set:Nn \tex_escapechar:D { 92 }
- \tl_gset:Nx \g__str_result_tl
+ \__kernel_tl_gset:Nx \g__str_result_tl
{
\__str_output_byte:w "
\exp_last_unbraced:Nf \__str_unescape_hex_auxi:N
@@ -21539,7 +21645,7 @@
\flag_clear:n { str_byte }
\flag_clear:n { str_error }
\int_set:Nn \tex_escapechar:D { 92 }
- \tl_gset:Nx \g__str_result_tl
+ \__kernel_tl_gset:Nx \g__str_result_tl
{
\exp_after:wN #3 \g__str_result_tl
#1 ? { ? \prg_break: }
@@ -21592,13 +21698,13 @@
\flag_clear:n { str_byte }
\flag_clear:n { str_error }
\int_set:Nn \tex_escapechar:D { 92 }
- \tl_gset:Nx \g__str_result_tl
+ \__kernel_tl_gset:Nx \g__str_result_tl
{
\exp_after:wN \__str_unescape_string_newlines:wN
\g__str_result_tl \prg_break: ^^M ?
\prg_break_point:
}
- \tl_gset:Nx \g__str_result_tl
+ \__kernel_tl_gset:Nx \g__str_result_tl
{
\exp_after:wN \__str_unescape_string_loop:wNNN
\g__str_result_tl #1 ?? { ? \prg_break: }
@@ -21829,7 +21935,7 @@
\flag_clear:n { str_extra }
\flag_clear:n { str_overlong }
\flag_clear:n { str_overflow }
- \tl_gset:Nx \g__str_result_tl
+ \__kernel_tl_gset:Nx \g__str_result_tl
{
\exp_after:wN \__str_decode_utf_viii_start:N \g__str_result_tl
{ \prg_break: \__str_decode_utf_viii_end: }
@@ -22029,7 +22135,7 @@
\flag_clear:n { str_extra }
\flag_clear:n { str_end }
\cs_set:Npn \__str_tmp:w ##1 ##2 { ` ## #1 }
- \tl_gset:Nx \g__str_result_tl
+ \__kernel_tl_gset:Nx \g__str_result_tl
{
\exp_after:wN \__str_decode_utf_xvi_pair:NN
#2 \q__str_nil \q__str_nil
@@ -22186,7 +22292,7 @@
\flag_clear:n { str_end }
\flag_clear:n { str_error }
\cs_set:Npn \__str_tmp:w ##1 ##2 { ` ## #1 }
- \tl_gset:Nx \g__str_result_tl
+ \__kernel_tl_gset:Nx \g__str_result_tl
{
\exp_after:wN \__str_decode_utf_xxxii_loop:NNNN
#2 \s__str_stop \s__str_stop \s__str_stop \s__str_stop
@@ -22466,7 +22572,7 @@
}
\cs_new_protected:Npn \__tl_analysis_b:n #1
{
- \tl_gset:Nx \g__tl_analysis_result_tl
+ \__kernel_tl_gset:Nx \g__tl_analysis_result_tl
{
\__tl_analysis_b_loop:w 0; #1
\prg_break_point:
@@ -22867,7 +22973,7 @@
{
\int_compare:nNnTF \l__regex_curr_catcode_int = 0
{
- \tl_set:Nx \l__regex_internal_a_tl
+ \__kernel_tl_set:Nx \l__regex_internal_a_tl
{ \scan_stop: \__regex_curr_cs_to_str: \scan_stop: }
\tl_if_in:noTF { \scan_stop: #1 \scan_stop: }
\l__regex_internal_a_tl
@@ -22880,7 +22986,7 @@
\int_compare:nNnT \l__regex_curr_catcode_int = 0
{
\group_begin:
- \tl_set:Nx \l__regex_cs_name_tl { \__regex_curr_cs_to_str: }
+ \__kernel_tl_set:Nx \l__regex_cs_name_tl { \__regex_curr_cs_to_str: }
\__regex_single_match:
\__regex_disable_submatches:
\__regex_build_for_cs:n {#1}
@@ -22978,7 +23084,7 @@
\cs_set:Npn \__regex_escape_escaped:N ##1 { #2 }
\cs_set:Npn \__regex_escape_raw:N ##1 { #3 }
\__regex_standard_escapechar:
- \tl_gset:Nx \g__regex_internal_tl
+ \__kernel_tl_gset:Nx \g__regex_internal_tl
{ \__kernel_str_to_other_fast:n {#4} }
\tl_put_right:Nx \l__regex_internal_a_tl
{
@@ -23736,12 +23842,12 @@
\__regex_two_if_eq:NNNNTF #5 #6 \__regex_compile_special:N ^
{
\bool_set_false:N \l__regex_internal_bool
- \tl_set:Nx \l__regex_internal_a_tl { \if_false: } \fi:
+ \__kernel_tl_set:Nx \l__regex_internal_a_tl { \if_false: } \fi:
\__regex_compile_class_posix_loop:w
}
{
\bool_set_true:N \l__regex_internal_bool
- \tl_set:Nx \l__regex_internal_a_tl { \if_false: } \fi:
+ \__kernel_tl_set:Nx \l__regex_internal_a_tl { \if_false: } \fi:
\__regex_compile_class_posix_loop:w #5 #6
}
}
@@ -24006,7 +24112,7 @@
{
\__regex_compile_end:
\flag_clear:n { __regex_cs }
- \tl_set:Nx \l__regex_internal_a_tl
+ \__kernel_tl_set:Nx \l__regex_internal_a_tl
{
\exp_after:wN \__regex_compile_cs_aux:Nn \l__regex_internal_regex
\q__regex_nil \q__regex_nil \q__regex_recursion_stop
@@ -24067,7 +24173,7 @@
{
\__regex_two_if_eq:NNNNTF #1 #2 \__regex_compile_special:N \c_left_brace_str
{
- \tl_set:Nx \l__regex_internal_a_tl { \if_false: } \fi:
+ \__kernel_tl_set:Nx \l__regex_internal_a_tl { \if_false: } \fi:
\__regex_compile_u_loop:NN
}
{
@@ -24106,7 +24212,7 @@
}
\cs_new_protected:Npn \__regex_compile_u_in_cs:
{
- \tl_gset:Nx \g__regex_internal_tl
+ \__kernel_tl_gset:Nx \g__regex_internal_tl
{
\exp_args:No \__kernel_str_to_other_fast:n
{ \l__regex_internal_a_tl }
@@ -25531,7 +25637,7 @@
\__regex_replacement_balance_one_match:n
{ \l__regex_zeroth_submatch_int }
}
- \tl_set:Nx \l__regex_internal_a_tl
+ \__kernel_tl_set:Nx \l__regex_internal_a_tl
{
\__regex_replacement_do_one_match:n
{ \l__regex_zeroth_submatch_int }
@@ -25561,7 +25667,7 @@
{ \l__regex_submatch_int - 1 }
\__regex_replacement_balance_one_match:n
}
- \tl_set:Nx \l__regex_internal_a_tl
+ \__kernel_tl_set:Nx \l__regex_internal_a_tl
{
\int_step_function:nnnN
{ \l__regex_min_submatch_int }
@@ -27635,7 +27741,7 @@
{ \AtBeginDocument }
{ \use:n }
{
- \tl_set:Nx \l__coffin_display_font_tl
+ \__kernel_tl_set:Nx \l__coffin_display_font_tl
{
\cs_if_exist:NT \sffamily { \exp_not:N \sffamily }
\cs_if_exist:NT \tiny { \exp_not:N \tiny }
@@ -28554,6 +28660,7 @@
\cs_new:Npn \__text_change_case_aux:nnn #1#2#3
{
\group_align_safe_begin:
+ \cs_if_exist_use:c { __text_change_case_boundary_ #2 _ #3 :Nnnw }
\__text_change_case_loop:nnw {#2} {#3} #1
\q__text_recursion_tail \q__text_recursion_stop
\__text_change_case_result:n { }
@@ -28629,6 +28736,7 @@
}
{
\__text_change_case_store:n { ~ }
+ \cs_if_exist_use:c { __text_change_case_boundary_ #1 _ #2 :Nnnw }
\__text_change_case_loop:nnw {#1} {#2}
}
\cs_new:Npn \__text_change_case_N_type:nnN #1#2#3
@@ -28761,16 +28869,10 @@
{ \__text_change_case_loop:nnw {#3} {#4} }
}
}
-\cs_new:Npx \__text_change_case_char_lower:nnN #1#2#3
+\cs_new:Npn \__text_change_case_char_lower:nnN #1#2#3
{
- \exp_not:N \cs_if_exist_use:cF { __text_change_case_lower_ #2 :nnnN }
- {
- \bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- { \exp_not:N \__text_change_case_lower_sigma:nnnN }
- { \exp_not:N \__text_change_case_char:nnnN }
- }
+ \cs_if_exist_use:cF { __text_change_case_lower_ #2 :nnnN }
+ { \__text_change_case_lower_sigma:nnnN }
{#1} {#1} {#2} #3
}
\cs_new:Npn \__text_change_case_char_upper:nnN #1#2#3
@@ -28779,7 +28881,7 @@
{ \__text_change_case_char:nnnN }
{#1} {#1} {#2} #3
}
-\bool_lazy_or:nnT
+\bool_lazy_or:nnTF
{ \sys_if_engine_luatex_p: }
{ \sys_if_engine_xetex_p: }
{
@@ -28811,6 +28913,44 @@
\__text_change_case_loop:nnw {#2} {#3} #4
}
}
+ {
+ \cs_new:Npn \__text_change_case_lower_sigma:nnnN #1#2#3#4
+ {
+ \int_compare:nNnTF { `#4 } = { "CE }
+ { \__text_change_case_lower_sigma:nnnNN }
+ { \__text_change_case_char:nnnN }
+ {#1} {#2} {#3} #4
+ }
+ \cs_new:Npn \__text_change_case_lower_sigma:nnnNN #1#2#3#4#5
+ {
+ \int_compare:nNnTF { `#5 } = { "A3 }
+ { \__text_change_case_lower_sigma:nnw {#2} {#3} }
+ { \__text_change_case_char:nnnN {#1} {#2} {#3} #4#5 }
+ }
+ \cs_new:Npn \__text_change_case_lower_sigma:nnw #1#2#3 \q__text_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#3}
+ { \__text_change_case_lower_sigma:nnN }
+ {
+ \__text_change_case_store:V \c__text_final_sigma_tl
+ \__text_change_case_loop:nnw
+ }
+ {#1} {#2} #3 \q__text_recursion_stop
+ }
+ \cs_new:Npn \__text_change_case_lower_sigma:nnN #1#2#3
+ {
+ \bool_lazy_or:nnTF
+ { \token_if_letter_p:N #3 }
+ {
+ \bool_lazy_and_p:nn
+ { \token_if_active_p:N #3 }
+ { \int_compare_p:nNn { `#3 } > { "80 } }
+ }
+ { \__text_change_case_store:V \c__text_sigma_tl }
+ { \__text_change_case_store:V \c__text_final_sigma_tl }
+ \__text_change_case_loop:nnw {#1} {#2} #3
+ }
+ }
\cs_new:Npx \__text_change_case_char_title:nnN #1#2#3
{
\exp_not:N \bool_if:NTF \l_text_titlecase_check_letter_bool
@@ -28947,90 +29087,250 @@
{
\__text_change_case_if_greek:nTF { `#4 }
{
- \exp_args:Ne \__text_change_case_upper_el:nnnn
- { \char_to_nfd:N #4 } {#1} {#2} {#3}
+ \exp_args:Ne \__text_change_case_upper_el:nnn
+ { \char_to_nfd:N #4 } {#2} {#3}
}
{ \__text_change_case_char:nnnN {#1} {#2} {#3} #4 }
}
- \cs_new:Npn \__text_change_case_upper_el:nnnn #1#2#3#4
- { \__text_change_case_upper_el_aux:nnnN {#2} {#3} {#4} #1 }
- \cs_new:Npn \__text_change_case_upper_el_aux:nnnN #1#2#3#4
- {
- \__text_change_case_store:e { \use:c { char_ #1 case:N } #4 }
- \__text_change_case_upper_el_loop:nnw {#2} {#3}
- }
- \cs_new:Npn \__text_change_case_upper_el_loop:nnw
- #1#2#3 \q__text_recursion_stop
+ \cs_new:Npn \__text_change_case_upper_el:nnn #1#2#3
+ { \__text_change_case_upper_el:nnNw {#2} {#3} #1 }
+ \cs_new:Npn \__text_change_case_upper_el:nnNw #1#2#3#4 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#3}
- { \__text_change_case_upper_el:nnN }
- { \__text_change_case_loop:nnw }
- {#1} {#2} #3 \q__text_recursion_stop
+ \tl_if_head_is_N_type:nTF {#4}
+ { \__text_change_case_upper_el:NnnN #3 }
+ {
+ \__text_change_case_store:e { \char_uppercase:N #3 }
+ \__text_change_case_loop:nnw
+ }
+ {#1} {#2} #4 \q__text_recursion_stop
}
- \cs_new:Npn \__text_change_case_upper_el:nnN #1#2#3
+ \cs_new:Npn \__text_change_case_upper_el:NnnN #1#2#3#4
{
- \token_if_cs:NTF #3
- { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ \token_if_cs:NTF #4
{
- \int_compare:nNnTF { `#3 } = { "0308 }
- {
- \__text_change_case_store:n {#3}
- \__text_change_case_upper_el_loop:nnw {#1} {#2}
- }
+ \__text_change_case_store:e { \char_uppercase:N #1 }
+ \__text_change_case_loop:nnw {#2} {#3} #4
+ }
+ {
+ \int_compare:nNnTF { `#4 } = { "0308 }
+ { \__text_change_case_upper_el_dialytika:nnN {#2} {#3} #1 }
{
- \bool_lazy_any:nTF
- {
- { \int_compare_p:nNn { `#3 } = { "0300 } }
- { \int_compare_p:nNn { `#3 } = { "0301 } }
- { \int_compare_p:nNn { `#3 } = { "0304 } }
- { \int_compare_p:nNn { `#3 } = { "0306 } }
- { \int_compare_p:nNn { `#3 } = { "0308 } }
- { \int_compare_p:nNn { `#3 } = { "0313 } }
- { \int_compare_p:nNn { `#3 } = { "0314 } }
- { \int_compare_p:nNn { `#3 } = { "0342 } }
- { \int_compare_p:nNn { `#3 } = { "0340 } }
- { \int_compare_p:nNn { `#3 } = { "0341 } }
- { \int_compare_p:nNn { `#3 } = { "0343 } }
- }
- { \__text_change_case_upper_el_loop:nnw {#1} {#2} }
+ \__text_change_case_if_greek_accent:nTF { `#4 }
+ { \__text_change_case_upper_el_hiatus:nnNw {#2} {#3} #1 }
{
- \int_compare:nNnTF { `#3 } = { "0344 }
+ \__text_change_case_if_greek_diacritic:nTF { `#4 }
{
- \__text_change_case_store:e
- {
- \char_generate:nn { "0308 }
- { \__text_char_catcode:N #3 }
- }
- \__text_change_case_upper_el_loop:nnw {#1} {#2}
+ \__text_change_case_store:e { \char_uppercase:N #1 }
+ \__text_change_case_loop:nnw {#2} {#3}
}
{
- \int_compare:nNnTF { `#3 } = { "0345 }
- { \__text_change_case_loop:nnw {#1} {#2} }
- { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ \__text_change_case_store:e { \char_uppercase:N #1 }
+ \__text_change_case_loop:nnw {#2} {#3} #4
}
}
}
}
}
- \prg_new_conditional:Npnn \__text_change_case_if_greek:n #1 { TF }
+ \cs_new:Npn \__text_change_case_upper_el_dialytika:nnN #1#2#3
+ {
+ \__text_change_case_if_takes_dialytika:nTF { `#3 }
+ { \__text_change_case_upper_el_dialytika:N #3 }
+ { \__text_change_case_store:e { \char_uppercase:N #3 } }
+ \__text_change_case_upper_el_gobble:nnw {#1} {#2}
+ }
+ \cs_new:Npn \__text_change_case_upper_el_dialytika:N #1
+ {
+ \__text_change_case_store:e
+ {
+ \bool_lazy_or:nnTF
+ { \int_compare_p:nNn { `#1 } = { "0399 } }
+ { \int_compare_p:nNn { `#1 } = { "03B9 } }
+ { \char_generate:nn { "03AA } { \__text_char_catcode:N #1 } }
+ { \char_generate:nn { "03AB } { \__text_char_catcode:N #1 } }
+ }
+ }
+ \cs_new:Npn \__text_change_case_upper_el_hiatus:nnNw
+ #1#2#3#4 \q__text_recursion_stop
+ {
+ \__text_change_case_store:e { \char_uppercase:N #3 }
+ \tl_if_head_is_N_type:nTF {#4}
+ { \__text_change_case_upper_el_hiatus:nnN }
+ { \__text_change_case_loop:nnw }
+ {#1} {#2} #4 \q__text_recursion_stop
+ }
+ \cs_new:Npn \__text_change_case_upper_el_hiatus:nnN #1#2#3
+ {
+ \token_if_cs:NTF #3
+ { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ {
+ \__text_change_case_if_takes_dialytika:nTF { `#3 }
+ {
+ \__text_change_case_upper_el_dialytika:N #3
+ \__text_change_case_upper_el_gobble:nnw {#1} {#2}
+ }
+ { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ }
+ }
+ \cs_new:Npn \__text_change_case_upper_el_gobble:nnw
+ #1#2#3 \q__text_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#3}
+ { \__text_change_case_upper_el_gobble:nnN }
+ { \__text_change_case_loop:nnw }
+ {#1} {#2} #3 \q__text_recursion_stop
+ }
+ \cs_new:Npn \__text_change_case_upper_el_gobble:nnN #1#2#3
{
- \if_int_compare:w #1 < "0370 \exp_stop_f:
+ \bool_lazy_or:nnTF
+ { \token_if_cs_p:N #3 }
+ {
+ ! \bool_lazy_or_p:nn
+ { \__text_change_case_if_greek_accent_p:n { `#3 } }
+ { \__text_change_case_if_greek_diacritic_p:n { `#3 } }
+ }
+ { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ { \__text_change_case_upper_el_gobble:nnw {#1} {#2} }
+ }
+ }
+\prg_new_conditional:Npnn \__text_change_case_if_greek:n #1 { TF }
+ {
+ \if_int_compare:w #1 < "0370 \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \if_int_compare:w #1 > "03FF \exp_stop_f:
+ \if_int_compare:w #1 < "1F00 \exp_stop_f:
\prg_return_false:
\else:
- \if_int_compare:w #1 > "03FF \exp_stop_f:
- \if_int_compare:w #1 < "1F00 \exp_stop_f:
- \prg_return_false:
+ \if_int_compare:w #1 > "1FFF \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \prg_return_true:
+ \fi:
+ \fi:
+ \else:
+ \prg_return_true:
+ \fi:
+ \fi:
+ }
+\prg_new_conditional:Npnn \__text_change_case_if_greek_accent:n #1 { TF , p }
+ {
+ \if_int_compare:w #1 = "0300 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "0301 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "0342 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "0302 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "0303 \exp_stop_f:
+ \prg_return_true:
\else:
- \if_int_compare:w #1 > "1FFF \exp_stop_f:
- \prg_return_false:
- \else:
+ \if_int_compare:w #1 = "0311 \exp_stop_f:
\prg_return_true:
+ \else:
+ \prg_return_false:
\fi:
\fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ }
+\prg_new_conditional:Npnn \__text_change_case_if_greek_diacritic:n
+ #1 { TF , p }
+ {
+ \if_int_compare:w #1 = "0304 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "0306 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "0313 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "0314 \exp_stop_f:
+ \prg_return_true:
\else:
+ \if_int_compare:w #1 = "0343 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ }
+\prg_new_conditional:Npnn \__text_change_case_if_takes_dialytika:n #1 { TF }
+ {
+ \if_int_compare:w #1 = "0399 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "03B9 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "03A5 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "03C5 \exp_stop_f:
\prg_return_true:
+ \else:
+ \prg_return_false:
\fi:
\fi:
+ \fi:
+ \fi:
+ }
+\bool_lazy_or:nnT
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_new:Npn \__text_change_case_boundary_upper_el:Nnnw
+ #1#2#3#4 \q__text_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#4}
+ { \__text_change_case_boundary_upper_el:nnN }
+ { \__text_change_case_loop:nnw }
+ {#2} {#3} #4 \q__text_recursion_stop
+ }
+ \cs_new:Npn \__text_change_case_boundary_upper_el:nnN #1#2#3
+ {
+ \bool_lazy_or:nnTF
+ { \token_if_cs_p:N #3 }
+ {
+ ! \bool_lazy_or_p:nn
+ { \int_compare_p:nNn { `#3 } = { "03AE } }
+ { \int_compare_p:nNn { `#3 } = { "1F22 } }
+ }
+ { \__text_change_case_loop:nnw }
+ { \__text_change_case_boundary_upper_el:nnNw }
+ {#1} {#2} #3
+ }
+ \cs_new:Npn \__text_change_case_boundary_upper_el:nnNw
+ #1#2#3#4 \q__text_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#4}
+ { \__text_change_case_boundary_upper_el:NnnN #3 }
+ {
+ \__text_change_case_store:e
+ { \char_generate:nn { "0389 } { \__text_char_catcode:N #3 } }
+ \__text_change_case_loop:nnw
+ }
+ {#1} {#2} #4 \q__text_recursion_stop
+ }
+ \cs_new:Npn \__text_change_case_boundary_upper_el:NnnN #1#2#3#4
+ {
+ \token_if_letter:NTF #4
+ { \__text_change_case_loop:nnw {#2} {#3} #1#4 }
+ {
+ \__text_change_case_store:e
+ { \char_generate:nn { "0389 } { \__text_char_catcode:N #1 } }
+ \__text_change_case_loop:nnw {#2} {#3} #4
+ }
}
}
\bool_lazy_or:nnT
@@ -29327,6 +29627,8 @@
\__text_tmp:w \c__text_dotted_I_tl { 0130 }
\__text_tmp:w \c__text_i_ogonek_tl { 012F }
\__text_tmp:w \c__text_I_ogonek_tl { 012E }
+ \__text_tmp:w \c__text_final_sigma_tl { 03C2 }
+ \__text_tmp:w \c__text_sigma_tl { 03C3 }
\__text_tmp:w \c__text_grosses_Eszett_tl { 1E9E }
}
\group_end:
@@ -29529,6 +29831,16 @@
{ 042D } { 044D }
{ 042E } { 044E }
{ 042F } { 044F }
+ { 0370 } { 0371 }
+ { 0372 } { 0373 }
+ { 0376 } { 0377 }
+ { 03FD } { 037B }
+ { 03FE } { 037C }
+ { 03FF } { 037D }
+ { 0386 } { 03AC }
+ { 0388 } { 03AD }
+ { 0389 } { 03AE }
+ { 038A } { 03AF }
{ 0391 } { 03B1 }
{ 0392 } { 03B2 }
{ 0393 } { 03B3 }
@@ -29553,17 +29865,34 @@
{ 03A7 } { 03C7 }
{ 03A8 } { 03C8 }
{ 03A9 } { 03C9 }
+ { 03AA } { 03CA }
+ { 03AB } { 03CB }
+ { 038C } { 03CC }
+ { 038E } { 03CD }
+ { 038F } { 03CE }
+ { 03CF } { 03D7 }
{ 03D8 } { 03D9 }
{ 03DA } { 03DB }
{ 03DC } { 03DD }
{ 03DE } { 03DF }
{ 03E0 } { 03E1 }
+ { 03E2 } { 03E3 }
+ { 03E4 } { 03E5 }
+ { 03E6 } { 03E7 }
+ { 03E8 } { 03E9 }
+ { 03EA } { 03EB }
+ { 03EC } { 03ED }
+ { 03EE } { 03EF }
+ { 03F9 } { 03F2 }
+ { 037F } { 03F3 }
+ { 03F7 } { 03F8 }
+ { 03FA } { 03FB }
\q_recursion_tail ?
\q_recursion_stop
\cs_set_protected:Npn \__text_tmp:w #1#2#3
{
\group_begin:
- \cs_set_protected:Npn \__text_tmp:w ##1##2##3##4
+ \cs_set_protected:Npn \__text_tmp:w ##1##2##3##4##5##6##7##8
{
\tl_const:cx
{
@@ -29572,6 +29901,43 @@
\char_generate:nn {##2} { 12 }
_tl
}
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {##5} { 13 }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {##6} { 13 }
+ }
+ }
+ \use:x
+ {
+ \__text_tmp:w
+ \char_to_utfviii_bytes:n { "#1 }
+ \char_to_utfviii_bytes:n { "#2 }
+ }
+ \group_end:
+ }
+ \__text_tmp:w { 0345 } { 0399 } { upper }
+ \__text_tmp:w { 03C2 } { 03A3 } { upper }
+ \__text_tmp:w { 03D0 } { 0392 } { upper }
+ \__text_tmp:w { 03D1 } { 0398 } { upper }
+ \__text_tmp:w { 03D5 } { 03A6 } { upper }
+ \__text_tmp:w { 03D6 } { 03A0 } { upper }
+ \__text_tmp:w { 03F0 } { 039A } { upper }
+ \__text_tmp:w { 03F1 } { 03A1 } { upper }
+ \__text_tmp:w { 03F4 } { 03B8 } { lower }
+ \__text_tmp:w { 03F5 } { 0395 } { upper }
+ \cs_set_protected:Npn \__text_tmp:w #1#2#3
+ {
+ \group_begin:
+ \cs_set_protected:Npn \__text_tmp:w ##1##2##3##4
+ {
+ \tl_const:cn
+ {
+ c__text_ #3 case_
+ \char_generate:nn {##1} { 12 }
+ \char_generate:nn {##2} { 12 }
+ _tl
+ }
{#2}
}
\use:x
@@ -29581,8 +29947,176 @@
\__text_tmp:w { 00DF } { SS } { upper }
\__text_tmp:w { 00DF } { Ss } { title }
\__text_tmp:w { 0131 } { I } { upper }
- }
- \group_end:
+ \cs_set_protected:Npn \__text_tmp:nnnnnn #1#2#3#4#5#6#7
+ {
+ \tl_const:cx
+ {
+ c__text_ #1 case_
+ \char_generate:nn {#2} { 12 }
+ \char_generate:nn {#3} { 12 }
+ \char_generate:nn {#4} { 12 }
+ _tl
+ }
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#5} { 13 }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#6} { 13 }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#7} { 13 }
+ }
+ }
+ \cs_set_protected:Npn \__text_tmp:w #1#2#3#4#5#6#7#8
+ {
+ \tl_const:cx
+ {
+ c__text_lowercase_
+ \char_generate:nn {#1} { 12 }
+ \char_generate:nn {#2} { 12 }
+ \char_generate:nn {#3} { 12 }
+ _tl
+ }
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#5} { 13 }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#6} { 13 }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#7} { 13 }
+ }
+ \__text_tmp:nnnnnn { upper } {#5} {#6} {#7} {#1} {#2} {#3}
+ \__text_tmp:nnnnnn { title } {#5} {#6} {#7} {#1} {#2} {#3}
+ }
+ \__text_loop:nn
+ { 1F08 } { 1F00 }
+ { 1F09 } { 1F01 }
+ { 1F0A } { 1F02 }
+ { 1F0B } { 1F03 }
+ { 1F0C } { 1F04 }
+ { 1F0D } { 1F05 }
+ { 1F0E } { 1F06 }
+ { 1F0F } { 1F07 }
+ { 1F18 } { 1F10 }
+ { 1F19 } { 1F11 }
+ { 1F1A } { 1F12 }
+ { 1F1B } { 1F13 }
+ { 1F1C } { 1F14 }
+ { 1F1D } { 1F15 }
+ { 1F28 } { 1F20 }
+ { 1F29 } { 1F21 }
+ { 1F2A } { 1F22 }
+ { 1F2B } { 1F23 }
+ { 1F2C } { 1F24 }
+ { 1F2D } { 1F25 }
+ { 1F2E } { 1F26 }
+ { 1F2F } { 1F27 }
+ { 1F38 } { 1F30 }
+ { 1F39 } { 1F31 }
+ { 1F3A } { 1F32 }
+ { 1F3B } { 1F33 }
+ { 1F3C } { 1F34 }
+ { 1F3D } { 1F35 }
+ { 1F3E } { 1F36 }
+ { 1F3F } { 1F37 }
+ { 1F48 } { 1F40 }
+ { 1F49 } { 1F41 }
+ { 1F4A } { 1F42 }
+ { 1F4B } { 1F43 }
+ { 1F4C } { 1F44 }
+ { 1F4D } { 1F45 }
+ { 1F59 } { 1F51 }
+ { 1F5B } { 1F53 }
+ { 1F5D } { 1F55 }
+ { 1F5F } { 1F57 }
+ { 1F68 } { 1F60 }
+ { 1F69 } { 1F61 }
+ { 1F6A } { 1F62 }
+ { 1F6B } { 1F63 }
+ { 1F6C } { 1F64 }
+ { 1F6D } { 1F65 }
+ { 1F6E } { 1F66 }
+ { 1F6F } { 1F67 }
+ { 1FBA } { 1F70 }
+ { 1FBB } { 1F71 }
+ { 1FC8 } { 1F72 }
+ { 1FC9 } { 1F73 }
+ { 1FCA } { 1F74 }
+ { 1FCB } { 1F75 }
+ { 1FDA } { 1F76 }
+ { 1FDB } { 1F77 }
+ { 1FF8 } { 1F78 }
+ { 1FF9 } { 1F79 }
+ { 1FEA } { 1F7A }
+ { 1FEB } { 1F7B }
+ { 1FFA } { 1F7C }
+ { 1FFB } { 1F7D }
+ { 1F88 } { 1F80 }
+ { 1F89 } { 1F81 }
+ { 1F8A } { 1F82 }
+ { 1F8B } { 1F83 }
+ { 1F8C } { 1F84 }
+ { 1F8D } { 1F85 }
+ { 1F8E } { 1F86 }
+ { 1F8F } { 1F87 }
+ { 1F98 } { 1F90 }
+ { 1F99 } { 1F91 }
+ { 1F9A } { 1F92 }
+ { 1F9B } { 1F93 }
+ { 1F9C } { 1F94 }
+ { 1F9D } { 1F95 }
+ { 1F9E } { 1F96 }
+ { 1F9F } { 1F97 }
+ { 1FA8 } { 1FA0 }
+ { 1FA9 } { 1FA1 }
+ { 1FAA } { 1FA2 }
+ { 1FAB } { 1FA3 }
+ { 1FAC } { 1FA4 }
+ { 1FAD } { 1FA5 }
+ { 1FAE } { 1FA6 }
+ { 1FAF } { 1FA7 }
+ { 1FB8 } { 1FB0 }
+ { 1FB9 } { 1FB1 }
+ { 1FBC } { 1FB3 }
+ { 1FCC } { 1FC3 }
+ { 1FD8 } { 1FD0 }
+ { 1FD9 } { 1FD1 }
+ { 1FE8 } { 1FE0 }
+ { 1FE9 } { 1FE1 }
+ { 1FEC } { 1FE5 }
+ { 1FFC } { 1FF3 }
+ \q_recursion_tail ?
+ \q_recursion_stop
+ \cs_set_protected:Npn \__text_tmp:w #1#2#3
+ {
+ \group_begin:
+ \cs_set_protected:Npn \__text_tmp:w ##1##2##3##4##5##6##7##8
+ {
+ \tl_const:cx
+ {
+ c__text_ #3 case_
+ \char_generate:nn {##1} { 12 }
+ \char_generate:nn {##2} { 12 }
+ \char_generate:nn {##3} { 12 }
+ _tl
+ }
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {##5} { 13 }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {##6} { 13 }
+ }
+ }
+ \use:x
+ {
+ \__text_tmp:w
+ \char_to_utfviii_bytes:n { "#1 }
+ \char_to_utfviii_bytes:n { "#2 }
+ }
+ \group_end:
+ }
+ \__text_tmp:w { 1FBE } { 0399 } { upper }
+ }
+\group_end:
\group_begin:
\cs_set_protected:Npn \__text_change_case_setup:NN #1#2
{
@@ -29881,7 +30415,8 @@
}
{ \text_declare_purify_equivalent:Nn #1 { } }
\text_declare_purify_equivalent:Nn \begin { \use:c }
-\text_declare_purify_equivalent:Nn \end { \use:c }
+\text_declare_purify_equivalent:Nn \end { \__text_end_env:n }
+\cs_new:Npn \__text_end_env:n #1 { \cs:w end #1 \cs_end: }
\text_declare_purify_equivalent:Nn \\ { }
\tl_map_inline:nn
{ \{ \} \# \$ \% \_ }
@@ -30469,9 +31004,9 @@
}
\cs_generate_variant:Nn \seq_mapthread_function:NNN { Nc , c , cc }
\cs_new_protected:Npn \seq_set_filter:NNn
- { \__seq_set_filter:NNNn \tl_set:Nx }
+ { \__seq_set_filter:NNNn \__kernel_tl_set:Nx }
\cs_new_protected:Npn \seq_gset_filter:NNn
- { \__seq_set_filter:NNNn \tl_gset:Nx }
+ { \__seq_set_filter:NNNn \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__seq_set_filter:NNNn #1#2#3#4
{
\__seq_push_item_def:n { \bool_if:nT {#4} { \__seq_wrap_item:n {##1} } }
@@ -30479,9 +31014,9 @@
\__seq_pop_item_def:
}
\cs_new_protected:Npn \seq_set_from_inline_x:Nnn
- { \__seq_set_from_inline_x:NNnn \tl_set:Nx }
+ { \__seq_set_from_inline_x:NNnn \__kernel_tl_set:Nx }
\cs_new_protected:Npn \seq_gset_from_inline_x:Nnn
- { \__seq_set_from_inline_x:NNnn \tl_gset:Nx }
+ { \__seq_set_from_inline_x:NNnn \__kernel_tl_gset:Nx }
\cs_new_protected:Npn \__seq_set_from_inline_x:NNnn #1#2#3#4
{
\__seq_push_item_def:n { \exp_not:N \__seq_item:n {#4} }
@@ -30641,7 +31176,7 @@
}
}
\cs_new_protected:Npn \tl_build_get:NN
- { \__tl_build_get:NNN \tl_set:Nx }
+ { \__tl_build_get:NNN \__kernel_tl_set:Nx }
\cs_new_protected:Npn \__tl_build_get:NNN #1#2#3
{ #1 #3 { \if_false: { \fi: \exp_after:wN \__tl_build_get:w #2 } } }
\cs_new:Npn \__tl_build_get:w #1 \__tl_build_last:NNn #2#3#4
@@ -30656,12 +31191,12 @@
{ \exp_after:wN \exp_not:n \exp_after:wN { \if_false: } \fi: }
\cs_new_protected:Npn \tl_build_end:N #1
{
- \__tl_build_get:NNN \tl_set:Nx #1 #1
+ \__tl_build_get:NNN \__kernel_tl_set:Nx #1 #1
\exp_args:Nc \__tl_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_clear:N
}
\cs_new_protected:Npn \tl_build_gend:N #1
{
- \__tl_build_get:NNN \tl_gset:Nx #1 #1
+ \__tl_build_get:NNN \__kernel_tl_gset:Nx #1 #1
\exp_args:Nc \__tl_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_gclear:N
}
\cs_new_protected:Npn \__tl_build_end_loop:NN #1#2