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.tex1742
1 files changed, 1186 insertions, 556 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 0b57711f157..2f6e2fda248 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -38,6 +38,9 @@
%% l3fp-trig.dtx (with options: `package')
%% l3fp-convert.dtx (with options: `package')
%% l3fp-random.dtx (with options: `package')
+%% l3fp-types.dtx (with options: `package')
+%% l3fp-symbolic.dtx (with options: `package')
+%% l3fp-functions.dtx (with options: `package')
%% l3fparray.dtx (with options: `package')
%% l3cctab.dtx (with options: `package')
%% l3sort.dtx (with options: `package')
@@ -71,7 +74,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-10-10}%
+\def\ExplFileDate{2023-10-23}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -8806,6 +8809,54 @@ Type H <return> for immediate help}\def~{\errmessage{%
\tl_const:Ne \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } }
\scan_new:N \s__token_mark
\scan_new:N \s__token_stop
+\cs_new:Npn \token_to_catcode:N
+ { \int_value:w \group_align_safe_begin: \__token_to_catcode:N }
+\cs_new:Npn \__token_to_catcode:N #1
+ {
+ \if_catcode:w \exp_not:N #1 \c_catcode_letter_token
+ 11
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_catcode_other_token
+ 12
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_math_toggle_token
+ 3
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_alignment_token
+ 4
+ \else:
+ \if_catcode:w \exp_not:N #1 ##
+ 6
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_math_superscript_token
+ 7
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_math_subscript_token
+ 8
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_group_begin_token
+ 1
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_group_end_token
+ 2
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_space_token
+ 10
+ \else:
+ \token_if_cs:NTF #1 { 16 } { 13 }
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \group_align_safe_end:
+ \exp_stop_f:
+ }
\group_begin:
\__kernel_chk_if_free_cs:N \c_group_begin_token
\tex_global:D \tex_let:D \c_group_begin_token {
@@ -16843,6 +16894,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_compare_back_any:ww
\exp:w \exp_end_continue_f:w \__fp_parse:n {#2} #1;
}
+\cs_new:Npn \__fp_compare_back:ww #1#2; #3#4;
+ {
+ \cs:w
+ __fp
+ \__fp_type_from_scan:N #1
+ _bcmp
+ \__fp_type_from_scan:N #3
+ :ww
+ \cs_end:
+ #1#2; #3#4;
+ }
\cs_new:Npn \__fp_compare_back_any:ww #1#2; #3
{
\__fp_if_type_fp:NTwFw
@@ -16860,7 +16922,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
#1#2 ; #3
}
-\cs_new:Npn \__fp_compare_back:ww
+\cs_new:Npn \__fp_bcmp:ww
\s__fp \__fp_chk:w #1 #2 #3;
\s__fp \__fp_chk:w #4 #5 #6;
{
@@ -20664,6 +20726,529 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
}
+%% File l3fp-types.dtx (C) Copyright 2012-2015,2017,2018,2020,2021,2023 The LaTeX Project
+\cs_new:Npe \__fp_types_cs_to_op:N #1
+ {
+ \exp_not:N \exp_after:wN \exp_not:N \__fp_types_cs_to_op_auxi:wwwn
+ \exp_not:N \token_to_str:N #1 \s__fp_mark
+ \exp_not:N \__fp_use_i_delimit_by_s_stop:nw
+ \tl_to_str:n { __fp_ _o:w } \s__fp_mark
+ { \exp_not:N \__fp_use_i_delimit_by_s_stop:nw ? }
+ \s__fp_stop
+ }
+\use:e
+ {
+ \cs_new:Npn \exp_not:N \__fp_types_cs_to_op_auxi:wwwn
+ #1 \tl_to_str:n { __fp_ } #2
+ \tl_to_str:n { _o:w } #3 \s__fp_mark #4 { #4 {#2} }
+ }
+\cs_new:Npn \__fp_types_unary:NNw #1
+ {
+ \exp_args:Nf \__fp_types_unary_auxi:nNw
+ { \__fp_types_cs_to_op:N #1 }
+ }
+\cs_new:Npn \__fp_types_unary_auxi:nNw #1#2#3
+ {
+ \exp_after:wN \__fp_types_unary_auxii:NnNw
+ \cs:w __fp_#1 \__fp_type_from_scan:N #3 _o:w \cs_end:
+ {#1}
+ #2#3
+ }
+\cs_new:Npn \__fp_types_unary_auxii:NnNw #1#2#3
+ {
+ \token_if_eq_meaning:NNTF \scan_stop: #1
+ { \__fp_invalid_operation_o:nw {#2} }
+ { #1 #3 }
+ }
+\cs_new:Npn \__fp_types_binary:Nww #1
+ {
+ \exp_last_unbraced:Nf \__fp_types_binary_auxi:Nww
+ { \__fp_types_cs_to_op:N #1 }
+ }
+\cs_new:Npn \__fp_types_binary_auxi:Nww #1#2#3; #4#5; @
+ {
+ \exp_after:wN \__fp_types_binary_auxii:NNww
+ \cs:w
+ __fp
+ \__fp_type_from_scan:N #2
+ _#1
+ \__fp_type_from_scan:N #4
+ _o:ww
+ \cs_end:
+ #1 #2#3; #4#5;
+ }
+\cs_new:Npn \__fp_types_binary_auxii:NNww #1#2
+ {
+ \token_if_eq_meaning:NNTF \scan_stop: #1
+ { \__fp_invalid_operation_o:Nww #2 }
+ {#1}
+ }
+%% File l3fp-symbolic.dtx (C) Copyright 2012-2015,2017,2018,2020,2021,2023 The LaTeX Project
+\fp_new:N \l__fp_symbolic_fp
+\scan_new:N \s__fp_symbolic
+\cs_new_protected:Npn \__fp_symbolic_chk:w #1,#2#3;
+ {
+ \msg_error:nne { fp } { misused-fp }
+ {
+ \__fp_to_tl_dispatch:w
+ \s__fp_symbolic \__fp_symbolic_chk:w #1,{#2};
+ }
+ }
+\cs_new:Npn \__fp_if_has_symbolic:nTF #1
+ {
+ \__fp_if_has_symbolic_aux:w
+ #1 \s__fp_mark \use_i:nn
+ \s__fp_symbolic \s__fp_mark \use_ii:nn
+ \s__fp_stop
+ }
+\cs_new:Npn \__fp_if_has_symbolic_aux:w
+ #1 \s__fp_symbolic #2 \s__fp_mark #3#4 \s__fp_stop { #3 }
+\cs_new:Npn \__fp_exp_after_symbolic_f:nw
+ #1 \s__fp_symbolic \__fp_symbolic_chk:w #2, #3#4;
+ {
+ \exp_after:wN \__fp_exp_after_symbolic_aux:w
+ \exp:w
+ \__fp_exp_after_symbolic_loop:N #2
+ { , \exp:w \use_none:nn }
+ \exp_after:wN \exp_end: \exp_after:wN
+ {
+ \exp:w \exp_end_continue_f:w
+ \__fp_exp_after_array_f:w #3 \s__fp_expr_stop
+ \exp_after:wN
+ }
+ \exp_after:wN ;
+ \exp:w \exp_end_continue_f:w #1
+ }
+\cs_new:Npn \__fp_exp_after_symbolic_aux:w #1, #2;
+ {
+ \__fp_if_has_symbolic:nTF {#2}
+ { \s__fp_symbolic \__fp_symbolic_chk:w #1, {#2} ; }
+ { #1 #2 @ \prg_do_nothing: }
+ }
+\cs_new:Npn \__fp_exp_after_symbolic_loop:N #1
+ {
+ \exp_after:wN \exp_end:
+ \exp_after:wN #1
+ \exp:w
+ \__fp_exp_after_symbolic_loop:N
+ }
+\cs_new:Npn \__fp_symbolic_binary_o:Nww #1 #2; #3;
+ {
+ \__fp_exp_after_symbolic_f:nw { \exp_after:wN \exp_stop_f: }
+ \s__fp_symbolic \__fp_symbolic_chk:w
+ \__fp_types_binary:Nww #1 , { #2; #3; } ;
+ }
+\cs_set:Npn \__fp_tmp:w #1#2
+ {
+ \cs_new_nopar:cpn
+ { __fp_symbolic_#2_symbolic_o:ww }
+ { \__fp_symbolic_binary_o:Nww #1 }
+ \cs_new_eq:cc
+ { __fp_symbolic_#2 _o:ww }
+ { __fp_symbolic_#2_symbolic_o:ww }
+ \cs_new_eq:cc
+ { __fp _#2_symbolic_o:ww }
+ { __fp_symbolic_#2_symbolic_o:ww }
+ }
+\tl_map_inline:nn { + - * / ^ & | }
+ { \exp_args:Nc \__fp_tmp:w { __fp_#1_o:ww } {#1} }
+\cs_new:Npn \__fp_symbolic_unary_o:NNw #1#2#3; @
+ {
+ \__fp_exp_after_symbolic_f:nw { \exp_after:wN \exp_stop_f: }
+ \s__fp_symbolic \__fp_symbolic_chk:w
+ \__fp_types_unary:NNw #1#2 , { #3; } ;
+ }
+\tl_map_inline:nn
+ {
+ {acos} {acsc} {asec} {asin} {cos} {cot} {csc} {exp} {ln}
+ {not} {sec} {set_sign} {sin} {sqrt} {tan}
+ }
+ {
+ \cs_new_nopar:cpe { __fp_symbolic_#1_o:w }
+ {
+ \exp_not:N \__fp_symbolic_unary_o:NNw
+ \exp_not:c { __fp_#1_o:w }
+ }
+ }
+\cs_set_protected:Npn \__fp_tmp:w #1#2#3
+ {
+ \cs_new_nopar:cpn { __fp_symbolic_to_#1:w }
+ {
+ \exp_after:wN \__fp_symbolic_convert:wnnN
+ \exp:w \exp_end_continue_f:w
+ \__fp_exp_after_symbolic_f:nw { { #2 } { fp_to_#1 } #3 }
+ }
+ }
+\__fp_tmp:w { decimal } { 0 } \__fp_to_decimal_dispatch:w
+\__fp_tmp:w { int } { 0 } \__fp_to_int_dispatch:w
+\__fp_tmp:w { scientific } { nan } \__fp_to_scientific_dispatch:w
+\cs_new:Npn \__fp_symbolic_convert:wnnN #1#2; #3#4#5
+ {
+ \str_if_eq:nnTF {#1} { \s__fp_symbolic }
+ { \__fp_invalid_operation:nnw {#3} {#4} #1#2; }
+ { #5 #1#2; }
+ }
+\cs_new:Npn \__fp_symbolic_cs_arg_to_fn:NN #1
+ {
+ \exp_args:Nf \__fp_symbolic_op_arg_to_fn:nN
+ { \__fp_types_cs_to_op:N #1 }
+ }
+\cs_new:Npn \__fp_symbolic_op_arg_to_fn:nN #1#2
+ {
+ \str_case:nnF { #1 #2 }
+ {
+ { not ? } { ! }
+ { set_sign 0 } { abs }
+ { set_sign 2 } { - }
+ }
+ {
+ \token_if_eq_meaning:NNTF #2 \use_ii:nn
+ { #1 d } {#1}
+ }
+ }
+\cs_new:Npn \__fp_symbolic_to_tl:w
+ \s__fp_symbolic \__fp_symbolic_chk:w #1#2, #3#4;
+ {
+ \str_case:nnTF {#1}
+ {
+ { \__fp_types_unary:NNw } { \__fp_symbolic_unary_to_tl:NNw }
+ { \__fp_types_binary:Nww } { \__fp_symbolic_binary_to_tl:Nww }
+ { \__fp_function_o:w } { \__fp_symbolic_function_to_tl:Nw }
+ }
+ { #2, #3 @ }
+ { \tl_to_str:n {#2} }
+ }
+\cs_new:Npn \__fp_symbolic_unary_to_tl:NNw #1#2 , #3 @
+ {
+ \use:e
+ {
+ \__fp_symbolic_cs_arg_to_fn:NN #1#2
+ ( \__fp_to_tl_dispatch:w #3 )
+ }
+ }
+\cs_new:Npn \__fp_symbolic_binary_to_tl:Nww #1, #2; #3; @
+ {
+ \use:e
+ {
+ ( \__fp_to_tl_dispatch:w #2; )
+ \__fp_types_cs_to_op:N #1
+ ( \__fp_to_tl_dispatch:w #3; )
+ }
+ }
+\cs_new:Npn \__fp_symbolic_function_to_tl:Nw #1, #2@
+ {
+ \use:e
+ {
+ \__fp_types_cs_to_op:N #1
+ ( \__fp_array_to_clist:n {#2} )
+ }
+ }
+\prg_new_protected_conditional:Npnn
+ \__fp_id_if_invalid:n #1 { T , F , TF }
+ {
+ \tl_if_empty:nTF {#1}
+ { \prg_return_true: }
+ {
+ \tl_if_in:onTF { \tl_to_str:n {#1} } { ~ }
+ { \prg_return_true: }
+ {
+ \exp_after:wN \__fp_id_if_invalid_aux:N \tl_to_str:n {#1}
+ { ? \prg_break:n \prg_return_false: }
+ \prg_break_point:
+ }
+ }
+ }
+\cs_new:Npn \__fp_id_if_invalid_aux:N #1
+ {
+ \use_none:n #1
+ \int_compare:nF { `a <= `#1 <= `z }
+ {
+ \int_compare:nF { `A <= `#1 <= `Z }
+ { \prg_break:n \prg_return_true: }
+ }
+ \__fp_id_if_invalid_aux:N
+ }
+\cs_new:Npn \__fp_variable_o:w #1 @ #2
+ {
+ \fp_if_exist:cTF { l__fp_variable_#1_fp }
+ {
+ \exp_last_unbraced:Nf \__fp_exp_after_array_f:w
+ { \use:c { l__fp_variable_#1_fp } } \s__fp_expr_stop
+ \exp_after:wN \exp_stop_f: #2
+ }
+ {
+ \token_if_eq_meaning:NNTF #2 \prg_do_nothing:
+ {
+ \s__fp_symbolic \__fp_symbolic_chk:w
+ \__fp_variable_o:w #1 , { } ;
+ }
+ {
+ \exp_after:wN \s__fp_symbolic
+ \exp_after:wN \__fp_symbolic_chk:w
+ \exp_after:wN \__fp_variable_o:w
+ \exp:w
+ \__fp_exp_after_symbolic_loop:N #1
+ { , \exp:w \use_none:nn }
+ \exp_after:wN \exp_end:
+ \exp_after:wN { \exp_after:wN } \exp_after:wN ;
+ #2
+ }
+ }
+ }
+\cs_new:Npn \__fp_variable_set_parsing:Nn #1#2
+ {
+ \cs_set_nopar:Npn \__fp_tmp:w
+ {
+ \__fp_exp_after_symbolic_f:nw { \__fp_parse_infix:NN }
+ \s__fp_symbolic \__fp_symbolic_chk:w
+ \__fp_variable_o:w #2 , { } ;
+ }
+ \exp_args:NNc \__fp_variable_set_parsing_aux:NNn #1
+ { __fp_parse_word_#2:N } {#2}
+ }
+\cs_new:Npn \__fp_variable_set_parsing_aux:NNn #1#2#3
+ {
+ \cs_if_eq:NNF #2 \__fp_tmp:w
+ {
+ \cs_if_exist:NTF #2
+ {
+ \msg_warning:nnnn
+ { fp } { id-used-elsewhere } {#3} { variable }
+ #1 #2 \__fp_tmp:w
+ }
+ {
+ \cs_new_eq:NN #2 \scan_stop: % to declare the function
+ #1 #2 \__fp_tmp:w
+ }
+ }
+ }
+\cs_new_protected:Npn \fp_clear_variable:n #1
+ {
+ \__fp_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
+ { \exp_args:No \__fp_clear_variable:n { \tl_to_str:n {#1} } }
+ }
+\cs_new_protected:Npn \__fp_clear_variable:n #1
+ {
+ \cs_undefine:c { l__fp_variable_#1_fp }
+ \__fp_variable_set_parsing:Nn \cs_set_eq:NN {#1}
+ }
+\cs_new_protected:Npn \fp_new_variable:n #1
+ {
+ \__fp_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
+ { \exp_args:No \__fp_new_variable:n { \tl_to_str:n {#1} } }
+ }
+\cs_new_protected:Npn \__fp_new_variable:n #1
+ {
+ \cs_if_exist:cT { __fp_parse_word_#1:N }
+ {
+ \msg_error:nnn
+ { fp } { id-already-defined } {#1}
+ \cs_undefine:c { __fp_parse_word_#1:N }
+ \cs_undefine:c { l__fp_variable_#1_fp }
+ }
+ \__fp_variable_set_parsing:Nn \cs_gset_eq:NN {#1}
+ }
+\flag_new:n { __fp_symbolic }
+\cs_new_protected:Npn \fp_set_variable:nn #1
+ {
+ \__fp_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
+ { \exp_args:No \__fp_set_variable:nn { \tl_to_str:n {#1} } }
+ }
+\cs_new_protected:Npn \__fp_set_variable:nn #1#2
+ {
+ \__fp_variable_set_parsing:Nn \cs_set_eq:NN {#1}
+ \fp_set:Nn \l__fp_symbolic_fp {#2}
+ \cs_set_nopar:cpn { l__fp_variable_#1_fp }
+ { \flag_ensure_raised:n { __fp_symbolic } \c_nan_fp }
+ \flag_clear:n { __fp_symbolic }
+ \fp_set:cn { l__fp_variable_#1_fp } { \l__fp_symbolic_fp }
+ \flag_if_raised:nT { __fp_symbolic }
+ {
+ \msg_error:nneee { fp } { id-loop }
+ { \tl_to_str:n {#1} }
+ { \tl_to_str:n {#2} }
+ { \fp_to_tl:N \l__fp_symbolic_fp }
+ }
+ }
+\msg_new:nnnn { fp } { id-invalid }
+ { Floating~point~identifier~'#1'~invalid. }
+ {
+ LaTeX~has~been~asked~to~create~a~new~floating~point~identifier~'#1'~
+ but~this~may~only~contain~ASCII~letters.
+ }
+\msg_new:nnnn { fp } { id-already-defined }
+ { Floating~point~identifier~'#1'~already~defined. }
+ {
+ LaTeX~has~been~asked~to~create~a~new~floating~point~identifier~'#1'~
+ but~this~name~has~already~been~used~elsewhere.
+ }
+\msg_new:nnnn { fp } { id-used-elsewhere }
+ { Floating~point~identifier~'#1'~already~used~for~something~else. }
+ {
+ LaTeX~has~been~asked~to~create~a~new~floating~point~identifier~'#1'~
+ but~this~name~is~used,~and~is~not~a~user-defined~#2.
+ }
+\msg_new:nnnn { fp } { id-loop }
+ { Variable~'#1'~used~in~the~definition~of~'#1'. }
+ {
+ LaTeX~has~been~asked~to~set~the~floating~point~identifier~'#1'~
+ to~the~expression~'#2'.~Evaluating~this~expression~yields~'#3',~
+ which~contains~'#1'~itself.
+ }
+%% File l3fp-functions.dtx (C) Copyright 2012-2018,2020,2021,2023 The LaTeX Project
+\cs_new_protected:Npn \fp_new_function:n #1
+ { \exp_args:No \__fp_new_function:n { \tl_to_str:n {#1} } }
+\cs_new_protected:Npn \__fp_new_function:n #1
+ {
+ \__fp_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { invalid-identifier } {#1} }
+ {
+ \cs_if_exist:cT { __fp_parse_word_#1:N }
+ {
+ \msg_error:nnn
+ { fp } { id-already-defined } {#1}
+ \cs_undefine:c { __fp_parse_word_#1:N }
+ \cs_undefine:c { __fp_#1_o:w }
+ }
+ \__fp_function_set_parsing:Nn \cs_gset_eq:NN {#1}
+ }
+ }
+\cs_new:Npn \__fp_function_set_parsing:Nn #1#2
+ {
+ \exp_args:NNc \__fp_function_set_parsing_aux:NNn #1
+ { __fp_parse_word_#2:N } {#2}
+ }
+\cs_new:Npn \__fp_function_set_parsing_aux:NNn #1#2#3
+ {
+ \cs_set:Npe \__fp_tmp:w
+ {
+ \exp_not:N \__fp_parse_function:NNN
+ \exp_not:N \__fp_function_o:w
+ \exp_not:c { __fp_#3_o:w }
+ }
+ \cs_if_eq:NNF #2 \__fp_tmp:w
+ {
+ \cs_if_exist:NTF #2
+ {
+ \msg_warning:nnnn
+ { fp } { id-used-elsewhere } {#3} { function }
+ #1 #2 \__fp_tmp:w
+ }
+ {
+ \cs_new_eq:NN #2 \scan_stop: % to declare the function
+ #1 #2 \__fp_tmp:w
+ }
+ }
+ }
+\cs_new:Npn \__fp_function_o:w #1#2 @
+ {
+ \cs_if_exist:NTF #1
+ { #1 #2 @ }
+ {
+ \exp_after:wN \s__fp_symbolic
+ \exp_after:wN \__fp_symbolic_chk:w
+ \exp_after:wN \__fp_function_o:w
+ \exp_after:wN #1
+ \exp_after:wN ,
+ \exp_after:wN {
+ \exp:w \exp_end_continue_f:w
+ \__fp_exp_after_array_f:w #2 \s__fp_expr_stop
+ \exp_after:wN
+ }
+ \exp_after:wN ;
+ }
+ }
+\int_new:N \l__fp_function_arg_int
+\cs_new_protected:Npn \fp_set_function:nnn #1
+ {
+ \exp_args:NNo \__fp_set_function:Nnnn \cs_set_eq:cN
+ { \tl_to_str:n {#1} }
+ }
+\cs_new_protected:Npn \__fp_set_function:Nnnn #1#2#3#4
+ {
+ \__fp_id_if_invalid:nTF {#2}
+ { \msg_error:nnn { fp } { invalid-identifier } {#2} }
+ {
+ \cs_if_exist:cF { __fp_parse_word_#2:N }
+ { \__fp_function_set_parsing:Nn \cs_set_eq:NN {#2} }
+ \group_begin:
+ \int_zero:N \l__fp_function_arg_int
+ \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#3} }
+ {
+ \int_incr:N \l__fp_function_arg_int
+ \exp_args:Ne \__fp_clear_variable:n
+ { _ \tex_romannumeral:D \l__fp_function_arg_int }
+ \fp_clear_variable:n {##1}
+ \cs_set_nopar:cpe { l__fp_variable_##1_fp }
+ {
+ \exp_not:N \s__fp_symbolic
+ \exp_not:N \__fp_symbolic_chk:w
+ \exp_not:N \__fp_function_arg_o:w
+ \int_use:N \l__fp_function_arg_int
+ ########1 , { } ;
+ }
+ }
+ \cs_set:Npn \__fp_function_arg_o:w ##1 @
+ {
+ \exp_after:wN \s__fp_symbolic
+ \exp_after:wN \__fp_symbolic_chk:w
+ \exp_after:wN \__fp_function_arg_o:w
+ \tex_romannumeral:D
+ \__fp_exp_after_symbolic_loop:N ##1
+ { , \tex_romannumeral:D \use_none:nn }
+ \exp_after:wN \c_zero_int
+ \exp_after:wN { \exp_after:wN } \exp_after:wN ;
+ }
+ \fp_set:Nn \l__fp_symbolic_fp {#4}
+ \use:e
+ {
+ \exp_not:n { \cs_gset:Npn \__fp_tmp:w ##1 }
+ { \exp_not:o { \l__fp_symbolic_fp } }
+ }
+ \use:e
+ {
+ \exp_not:n { \cs_gset:Npn \__fp_tmp:w ##1 @ }
+ {
+ \exp_not:N \__fp_exp_after_symbolic_f:nw
+ \exp_not:n { { \exp_after:wN \exp_stop_f: } }
+ \exp_not:o { \__fp_tmp:w { . , {##1} } }
+ }
+ }
+ \group_end:
+ #1 { __fp_#2_o:w } \__fp_tmp:w
+ }
+ }
+\cs_new:Npn \__fp_function_arg_o:w #1. #2
+ {
+ \if_meaning:w @ #2
+ \exp_after:wN \__fp_function_arg_few:w
+ \fi:
+ \if_int_compare:w #1 = \c_one_int
+ \exp_after:wN \__fp_function_arg_get:w
+ \fi:
+ \__fp_use_i_until_s:nw
+ {
+ \exp_after:wN \__fp_function_arg_o:w
+ \int_value:w \int_eval:n { #1 - 1 } .
+ }
+ #2
+ }
+\cs_new:Npn \__fp_function_arg_few:w #1 @ { \exp_after:wN \c_nan_fp }
+\cs_new:Npn \__fp_function_arg_get:w #1#2#3; #4 @
+ {
+ \__fp_exp_after_array_f:w #3; \s__fp_expr_stop
+ \exp_after:wN \exp_stop_f:
+ }
+\cs_new_protected:Npn \fp_clear_function:n #1
+ { \exp_args:No \__fp_clear_function:n { \tl_to_str:n {#1} } }
+\cs_new_protected:Npn \__fp_clear_function:n #1
+ {
+ \cs_undefine:c { __fp_parse_word_ #1 :N }
+ \__fp_function_set_parsing:Nn \cs_set_eq:NN {#1}
+ }
%% File: l3fparray.dtx
\int_new:N \g__fp_array_int
\int_new:N \l__fp_array_loop_int
@@ -23058,6 +23643,30 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
\group_end:
+\group_begin:
+ \char_set_catcode_active:N \^^@
+ \cs_new_protected:Npn \__tl_analysis_disable_char:N #1
+ {
+ \tex_lccode:D `#1 = 32 \exp_stop_f:
+ \tex_lowercase:D { \if_meaning:w #1 } \tex_undefined:D
+ \tex_let:D #1 \tex_undefined:D
+ \fi:
+ }
+ \bool_lazy_or:nnT
+ { \sys_if_engine_ptex_p: }
+ { \sys_if_engine_uptex_p: }
+ {
+ \cs_gset_protected:Npn \__tl_analysis_disable_char:N #1
+ {
+ \if_int_compare:w 256 > `#1 \exp_stop_f:
+ \tex_lccode:D `#1 = 32 \exp_stop_f:
+ \tex_lowercase:D { \if_meaning:w #1 } \tex_undefined:D
+ \tex_let:D #1 \tex_undefined:D
+ \fi:
+ \fi:
+ }
+ }
+\group_end:
\cs_new_protected:Npn \__tl_analysis_a:n #1
{
\__tl_analysis_disable:n { 32 }
@@ -23179,7 +23788,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \use_ii:nn
\fi:
{
- \__tl_analysis_disable:n { `#1 }
+ \__tl_analysis_disable_char:N #1
\int_incr:N \l__tl_analysis_normal_int
}
{ \__tl_analysis_cs_space_count:NN \__tl_analysis_a_cs:ww #1 }
@@ -33038,57 +33647,64 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__text_change_case:nnn { lower } { } {#1} }
\cs_new:Npn \text_uppercase:n #1
{ \__text_change_case:nnn { upper } { } {#1} }
-\cs_new:Npn \text_titlecase:n #1
+\cs_new:Npn \text_titlecase_all:n #1
{ \__text_change_case:nnn { title } { } {#1} }
\cs_new:Npn \text_titlecase_first:n #1
- { \__text_change_case:nnn { titleonly } { } {#1} }
+ { \__text_change_case:nnnn { title } { break } { } {#1} }
\cs_new:Npn \text_lowercase:nn #1#2
{ \__text_change_case:nnn { lower } {#1} {#2} }
\cs_new:Npn \text_uppercase:nn #1#2
{ \__text_change_case:nnn { upper } {#1} {#2} }
-\cs_new:Npn \text_titlecase:nn #1#2
+\cs_new:Npn \text_titlecase_all:nn #1#2
{ \__text_change_case:nnn { title } {#1} {#2} }
\cs_new:Npn \text_titlecase_first:nn #1#2
- { \__text_change_case:nnn { titleonly } {#1} {#2} }
+ { \__text_change_case:nnnn { title } { break } {#1} {#2} }
\cs_new:Npn \__text_change_case:nnn #1#2#3
+ { \__text_change_case:nnnn {#1} {#1} {#2} {#3} }
+\cs_new:Npn \__text_change_case:nnnn #1#2#3#4
{
\__kernel_exp_not:w \exp_after:wN
{
\exp:w
- \exp_args:Ne \__text_change_case_auxi:nnn
- { \text_expand:n {#3} }
- {#1} {#2}
+ \exp_args:Ne \__text_change_case_auxi:nnnn
+ { \text_expand:n {#4} }
+ {#1} {#2} {#3}
}
}
-\cs_new:Npn \__text_change_case_auxi:nnn #1#2#3
- { \exp_args:No \__text_change_case_BCP:nnn { \tl_to_str:n {#3} } {#1} {#2} }
-\cs_new:Npe \__text_change_case_BCP:nnn #1#2#3
+\cs_new:Npn \__text_change_case_auxi:nnnn #1#2#3#4
{
- \exp_not:N \__text_change_case_BCP:nnw
- {#2} {#3} #1 \tl_to_str:n { -x- -x- } \exp_not:N \q__text_stop
+ \exp_args:No \__text_change_case_BCP:nnnn
+ { \tl_to_str:n {#4} } {#1} {#2} {#3}
+ }
+\cs_new:Npe \__text_change_case_BCP:nnnn #1#2#3#4
+ {
+ \exp_not:N \__text_change_case_BCP:nnnw
+ {#2} {#3} {#4} #1 \tl_to_str:n { -x- -x- } \exp_not:N \q__text_stop
}
\use:e
{
- \cs_new:Npn \exp_not:N \__text_change_case_BCP:nnw
- #1#2#3 \tl_to_str:n { -x- } #4 \tl_to_str:n { -x- } #5
+ \cs_new:Npn \exp_not:N \__text_change_case_BCP:nnnw
+ #1#2#3#4 \tl_to_str:n { -x- } #5 \tl_to_str:n { -x- } #6
\exp_not:N \q__text_stop
}
- { \__text_change_case_BCP:nnnnw {#1} {#2} {#4} {#3} #3 - - \q__text_stop }
-\cs_new:Npn \__text_change_case_BCP:nnnnw #1#2#3#4#5 - #6 - #7 \q__text_stop
+ { \__text_change_case_BCP:nnnnnw {#1} {#2} {#3} {#5} {#4} #4 - \q__text_stop }
+\cs_new:Npn \__text_change_case_BCP:nnnnnw #1#2#3#4#5#6 - #7 \q__text_stop
{
- \cs_if_exist:cTF { __text_change_case_ #2 _ #5 -x- #3 :nnnn }
- { \__text_change_case_auxii:nnn {#1} {#2} { #5 -x- #3 } }
+ \bool_lazy_or:nnTF
+ { \cs_if_exist_p:c { __text_change_case_ #2 _ #6 -x- #4 :nnnnn } }
+ { \tl_if_exist_p:c { l__text_ #2 case_special_ #6 -x- #4 _tl } }
+ { \__text_change_case_auxii:nnnn {#1} {#2} {#3} { #6 -x- #4 } }
{
- \cs_if_exist:cTF { __text_change_case_ #2 _ #5 :nnnn }
- { \__text_change_case_auxii:nnn {#1} {#2} {#5} }
- { \__text_change_case_auxii:nnn {#1} {#2} {#4} }
+ \cs_if_exist:cTF { __text_change_case_ #2 _ #6 :nnnnn }
+ { \__text_change_case_auxii:nnnn {#1} {#2} {#3} {#6} }
+ { \__text_change_case_auxii:nnnn {#1} {#2} {#3} {#5} }
}
}
-\cs_new:Npn \__text_change_case_auxii:nnn #1#2#3
+\cs_new:Npn \__text_change_case_auxii:nnnn #1#2#3#4
{
\group_align_safe_begin:
- \cs_if_exist_use:c { __text_change_case_boundary_ #2 _ #3 :Nnnw }
- \__text_change_case_loop:nnw {#2} {#3} #1
+ \cs_if_exist_use:c { __text_change_case_boundary_ #2 _ #4 :Nnnnw }
+ \__text_change_case_loop:nnnw {#2} {#3} {#4} #1
\q__text_recursion_tail \q__text_recursion_stop
\__text_change_case_result:n { }
}
@@ -33103,378 +33719,387 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_end:
#2
}
-\cs_new:Npn \__text_change_case_loop:nnw #1#2#3 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_loop:nnnw #1#2#3#4 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#3}
- { \__text_change_case_N_type:nnN }
+ \tl_if_head_is_N_type:nTF {#4}
+ { \__text_change_case_N_type:nnnN }
{
- \tl_if_head_is_group:nTF {#3}
- { \use:c { __text_change_case_group_ #1 :nnn } }
- { \__text_change_case_space:nnw }
+ \tl_if_head_is_group:nTF {#4}
+ { \use:c { __text_change_case_group_ #1 :nnnn } }
+ { \__text_change_case_space:nnnw }
}
- {#1} {#2} #3 \q__text_recursion_stop
+ {#1} {#2} {#3} #4 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_break:w #1 \q__text_recursion_tail \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_break:w
+ { \__text_change_case_break_aux:w \prg_do_nothing: }
+\cs_new:Npn \__text_change_case_break_aux:w
+ #1 \q__text_recursion_tail \q__text_recursion_stop
{
- \__text_change_case_store:n {#1}
+ \__text_change_case_store:o {#1}
\__text_change_case_end:w
}
-\cs_new:Npn \__text_change_case_group_lower:nnn #1#2#3
- {
- \__text_change_case_store:o
- {
- \exp_after:wN
- {
- \exp:w
- \__text_change_case_auxii:nnn {#3} {#1} {#2}
- }
- }
- \__text_change_case_loop:nnw {#1} {#2}
- }
-\cs_new_eq:NN \__text_change_case_group_upper:nnn
- \__text_change_case_group_lower:nnn
-\cs_new:Npn \__text_change_case_group_title:nnn #1#2#3
+\cs_new:Npn \__text_change_case_group_lower:nnnn #1#2#3#4
{
\__text_change_case_store:o
{
\exp_after:wN
{
\exp:w
- \__text_change_case_auxii:nnn {#3} {#1} {#2}
+ \__text_change_case_auxii:nnnn {#4} {#1} {#2} {#3}
}
}
- \__text_change_case_loop:nnw { lower } {#2}
+ \__text_change_case_loop:nnnw {#1} {#2} {#3}
}
-\cs_new:Npn \__text_change_case_group_titleonly:nnn #1#2#3
+\cs_new_eq:NN \__text_change_case_group_upper:nnnn
+ \__text_change_case_group_lower:nnnn
+\cs_new:Npn \__text_change_case_group_title:nnnn #1#2#3#4
{
\__text_change_case_store:o
{
\exp_after:wN
{
\exp:w
- \__text_change_case_auxii:nnn {#3} {#1} {#2}
+ \__text_change_case_auxii:nnnn {#4} {#1} {#2} {#3}
}
}
- \__text_change_case_break:w
+ \__text_change_case_skip:nnw {#2} {#3}
}
\use:e
{
- \cs_new:Npn \exp_not:N \__text_change_case_space:nnw #1#2 \c_space_tl
+ \cs_new:Npn \exp_not:N \__text_change_case_space:nnnw #1#2#3 \c_space_tl
}
{
\__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_if_exist_use:cF { __text_change_case_space_ #2 :nnn }
+ {
+ \cs_if_exist_use:c { __text_change_case_boundary_ #1 _ #3 :Nnnnw }
+ \__text_change_case_loop:nnnw
+ }
+ {#2} {#2} {#3}
}
-\cs_new:Npn \__text_change_case_N_type:nnN #1#2#3
+\cs_new:Npn \__text_change_case_space_break:nnn #1#2#3
+ { \__text_change_case_break:w }
+\cs_new:Npn \__text_change_case_N_type:nnnN #1#2#3#4
{
- \__text_if_q_recursion_tail_stop_do:Nn #3
+ \__text_if_q_recursion_tail_stop_do:Nn #4
{ \__text_change_case_end:w }
- \__text_change_case_N_type_aux:nnN {#1} {#2} #3
+ \__text_change_case_N_type_aux:nnnN {#1} {#2} {#3} #4
}
-\cs_new:Npn \__text_change_case_N_type_aux:nnN #1#2#3
+\cs_new:Npn \__text_change_case_N_type_aux:nnnN #1#2#3#4
{
- \exp_args:NV \__text_change_case_N_type:nnnN
- \l_text_math_delims_tl {#1} {#2} #3
+ \exp_args:NV \__text_change_case_N_type:nnnnN
+ \l_text_math_delims_tl {#1} {#2} {#3} #4
}
-\cs_new:Npn \__text_change_case_N_type:nnnN #1#2#3#4
+\cs_new:Npn \__text_change_case_N_type:nnnnN #1#2#3#4#5
{
- \__text_change_case_math_search:nnNNN {#2} {#3} #4 #1
+ \__text_change_case_math_search:nnnNNN {#2} {#3} {#4} #5 #1
\q__text_recursion_tail \q__text_recursion_tail
\q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_math_search:nnNNN #1#2#3#4#5
+\cs_new:Npn \__text_change_case_math_search:nnnNNN #1#2#3#4#5#6
{
- \__text_if_q_recursion_tail_stop_do:Nn #4
- { \__text_change_case_cs_check:nnN {#1} {#2} #3 }
- \token_if_eq_meaning:NNTF #3 #4
+ \__text_if_q_recursion_tail_stop_do:Nn #5
+ { \__text_change_case_cs_check:nnnN {#1} {#2} {#3} #4 }
+ \token_if_eq_meaning:NNTF #4 #5
{
\__text_use_i_delimit_by_q_recursion_stop:nw
{
- \__text_change_case_store:n {#3}
- \__text_change_case_math_loop:nnNw {#1} {#2} #5
+ \__text_change_case_store:n {#4}
+ \__text_change_case_math_loop:nnnNw {#1} {#2} {#3} #6
}
}
- { \__text_change_case_math_search:nnNNN {#1} {#2} #3 }
+ { \__text_change_case_math_search:nnnNNN {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \__text_change_case_math_loop:nnNw #1#2#3#4 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_math_loop:nnnNw #1#2#3#4#5 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \__text_change_case_math_N_type:nnNN }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \__text_change_case_math_N_type:nnnNN }
{
- \tl_if_head_is_group:nTF {#4}
- { \__text_change_case_math_group:nnNn }
- { \__text_change_case_math_space:nnNw }
+ \tl_if_head_is_group:nTF {#5}
+ { \__text_change_case_math_group:nnnNn }
+ { \__text_change_case_math_space:nnnNw }
}
- {#1} {#2} #3 #4 \q__text_recursion_stop
+ {#1} {#2} {#3} #4 #5 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_math_N_type:nnNN #1#2#3#4
+\cs_new:Npn \__text_change_case_math_N_type:nnnNN #1#2#3#4#5
{
- \__text_if_q_recursion_tail_stop_do:Nn #4
+ \__text_if_q_recursion_tail_stop_do:Nn #5
{ \__text_change_case_end:w }
- \__text_change_case_store:n {#4}
- \token_if_eq_meaning:NNTF #4 #3
- { \__text_change_case_loop:nnw {#1} {#2} }
- { \__text_change_case_math_loop:nnNw {#1} {#2} #3 }
+ \__text_change_case_store:n {#5}
+ \token_if_eq_meaning:NNTF #5 #4
+ { \__text_change_case_loop:nnnw {#1} {#2} {#3} }
+ { \__text_change_case_math_loop:nnnNw {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \__text_change_case_math_group:nnNn #1#2#3#4
+\cs_new:Npn \__text_change_case_math_group:nnnNn #1#2#3#4#5
{
- \__text_change_case_store:n { {#4} }
- \__text_change_case_math_loop:nnNw {#1} {#2} #3
+ \__text_change_case_store:n { {#5} }
+ \__text_change_case_math_loop:nnnNw {#1} {#2} {#3} #4
}
\use:e
{
- \cs_new:Npn \exp_not:N \__text_change_case_math_space:nnNw #1#2#3
+ \cs_new:Npn \exp_not:N \__text_change_case_math_space:nnnNw #1#2#3#4
\c_space_tl
}
{
\__text_change_case_store:n { ~ }
- \__text_change_case_math_loop:nnNw {#1} {#2} #3
+ \__text_change_case_math_loop:nnnNw {#1} {#2} {#3} #4
}
-\cs_new:Npn \__text_change_case_cs_check:nnN #1#2#3
+\cs_new:Npn \__text_change_case_cs_check:nnnN #1#2#3#4
{
- \token_if_cs:NTF #3
- { \__text_change_case_exclude:nnN {#1} {#2} }
+ \token_if_cs:NTF #4
+ { \__text_change_case_exclude:nnnN {#1} {#2} {#3} }
{
\__text_codepoint_process:nN
- { \use:c { __text_change_case_custom_ #1 :nnn } {#1} {#2} }
+ { \use:c { __text_change_case_custom_ #1 :nnnn } {#1} {#2} {#3} }
}
- #3
+ #4
}
-\cs_new:Npn \__text_change_case_exclude:nnN #1#2#3
+\cs_new:Npn \__text_change_case_exclude:nnnN #1#2#3#4
{
- \exp_args:Ne \__text_change_case_exclude:nnnN
+ \exp_args:Ne \__text_change_case_exclude:nnnnN
{
\exp_not:V \l_text_math_arg_tl
\exp_not:V \l_text_case_exclude_arg_tl
}
- {#1} {#2} #3
+ {#1} {#2} {#3} #4
}
-\cs_new:Npn \__text_change_case_exclude:nnnN #1#2#3#4
+\cs_new:Npn \__text_change_case_exclude:nnnnN #1#2#3#4#5
{
- \__text_change_case_exclude:nnNN {#2} {#3} #4 #1
+ \__text_change_case_exclude:nnnNN {#2} {#3} {#4} #5 #1
\q__text_recursion_tail \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_exclude:nnNN #1#2#3#4
+\cs_new:Npn \__text_change_case_exclude:nnnNN #1#2#3#4#5
{
- \__text_if_q_recursion_tail_stop_do:Nn #4
- { \__text_change_case_replace:nnN {#1} {#2} #3 }
- \str_if_eq:nnTF {#3} {#4}
+ \__text_if_q_recursion_tail_stop_do:Nn #5
+ { \__text_change_case_replace:nnnN {#1} {#2} {#3} #4 }
+ \str_if_eq:nnTF {#4} {#5}
{
\__text_use_i_delimit_by_q_recursion_stop:nw
- { \__text_change_case_exclude:nnNw {#1} {#2} #3 }
+ { \__text_change_case_exclude:nnnNw {#1} {#2} {#3} #4 }
}
- { \__text_change_case_exclude:nnNN {#1} {#2} #3 }
+ { \__text_change_case_exclude:nnnNN {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \__text_change_case_exclude:nnNw #1#2#3#4#
- { \__text_change_case_exclude:nnNnn {#1} {#2} {#3} {#4} }
-\cs_new:Npn \__text_change_case_exclude:nnNnn #1#2#3#4#5
+\cs_new:Npn \__text_change_case_exclude:nnnNw #1#2#3#4#5#
+ { \__text_change_case_exclude:nnnNnn {#1} {#2} {#3} {#4} {#5} }
+\cs_new:Npn \__text_change_case_exclude:nnnNnn #1#2#3#4#5#6
{
- \tl_if_blank:nTF {#4}
- { \__text_change_case_store:n { #3 {#5} } }
+ \tl_if_blank:nTF {#5}
+ { \__text_change_case_store:n { #4 {#6} } }
{
\__text_change_case_store:o
{
- \exp_after:wN #3
- \exp:w \__text_change_case_auxii:nnn {#4} {#1} {#2}
- {#5}
+ \exp_after:wN #4
+ \exp:w \__text_change_case_auxii:nnnn {#5} {#1} {#2} {#3}
+ {#6}
}
}
- \__text_change_case_loop:nnw {#1} {#2}
+ \__text_change_case_loop:nnnw {#1} {#2} {#3}
}
-\cs_new:Npn \__text_change_case_replace:nnN #1#2#3
+\cs_new:Npn \__text_change_case_replace:nnnN #1#2#3#4
{
- \cs_if_exist:cTF { l__text_case_ \token_to_str:N #3 _tl }
+ \cs_if_exist:cTF { l__text_case_ \token_to_str:N #4 _tl }
{
- \__text_change_case_replace:vnn
- { l__text_case_ \token_to_str:N #3 _tl } {#1} {#2}
+ \__text_change_case_replace:vnnn
+ { l__text_case_ \token_to_str:N #4 _tl } {#1} {#2} {#3}
}
- { \__text_change_case_switch:nnN {#1} {#2} #3 }
+ { \__text_change_case_switch:nnnN {#1} {#2} {#3} #4 }
+ }
+\cs_new:Npn \__text_change_case_replace:nnnn #1#2#3#4
+ { \__text_change_case_loop:nnnw {#2} {#3} {#4} #1 }
+\cs_generate_variant:Nn \__text_change_case_replace:nnnn { v }
+\cs_new:Npn \__text_change_case_switch:nnnN #1#2#3#4
+ {
+ \cs_if_eq:NNTF #4 \text_case_switch:nnnn
+ { \use:c { __text_change_case_switch_ #1 :nnnNnnnn } }
+ { \use:c { __text_change_case_letterlike_ #1 :nnnN } }
+ {#1} {#2} {#3} #4
}
-\cs_new:Npn \__text_change_case_replace:nnn #1#2#3
- { \__text_change_case_loop:nnw {#2} {#3} #1 }
-\cs_generate_variant:Nn \__text_change_case_replace:nnn { v }
-\cs_new:Npn \__text_change_case_switch:nnN #1#2#3
+\cs_new:Npn \__text_change_case_switch_lower:nnnNnnnn #1#2#3#4#5#6#7#8
{
- \cs_if_eq:NNTF #3 \text_case_switch:nnnn
- { \use:c { __text_change_case_switch_ #1 :nnNnnnn } }
- { \use:c { __text_change_case_letterlike_ #1 :nnN } }
- {#1} {#2} #3
+ \__text_change_case_store:n {#7}
+ \__text_change_case_loop:nnnw {#1} {#2} {#3}
}
-\cs_new:Npn \__text_change_case_switch_lower:nnNnnnn #1#2#3#4#5#6#7
+\cs_new:Npn \__text_change_case_switch_upper:nnnNnnnn #1#2#3#4#5#6#7#8
{
\__text_change_case_store:n {#6}
- \__text_change_case_loop:nnw {#1} {#2}
+ \__text_change_case_loop:nnnw {#1} {#2} {#3}
}
-\cs_new:Npn \__text_change_case_switch_upper:nnNnnnn #1#2#3#4#5#6#7
+\cs_new:Npn \__text_change_case_switch_title:nnnNnnnn #1#2#3#4#5#6#7#8
{
- \__text_change_case_store:n {#5}
- \__text_change_case_loop:nnw {#1} {#2}
+ \__text_change_case_store:n {#8}
+ \__text_change_case_skip:nnw {#2} {#3}
}
-\cs_new:Npn \__text_change_case_switch_title:nnNnnnn #1#2#3#4#5#6#7
+\cs_new:Npn \__text_change_case_skip:nnw #1#2#3 \q__text_recursion_stop
{
- \__text_change_case_store:n {#7}
- \__text_change_case_loop:nnw {#1} {#2}
+ \tl_if_head_is_N_type:nTF {#3}
+ { \__text_change_case_skip_N_type:nnN }
+ {
+ \tl_if_head_is_group:nTF {#3}
+ { \__text_change_case_skip_group:nnn }
+ { \__text_change_case_skip_space:nnw }
+ }
+ {#1} {#2} #3 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_switch_titleonly:nnNnnnn #1#2#3#4#5#6#7
+\cs_new:Npn \__text_change_case_skip_N_type:nnN #1#2#3
{
- \__text_change_case_store:n {#7}
- \__text_change_case_break:w
+ \__text_if_q_recursion_tail_stop_do:Nn #3
+ { \__text_change_case_end:w }
+ \__text_change_case_store:n {#3}
+ \__text_change_case_skip:nnw {#1} {#2}
+ }
+\cs_new:Npn \__text_change_case_skip_group:nnn #1#2#3
+ {
+ \__text_change_case_store:n { {#3} }
+ \__text_change_case_skip:nnw {#1} {#2}
}
-\cs_new:Npn \__text_change_case_letterlike_lower:nnN #1#2#3
- { \__text_change_case_letterlike:nnnnN {#1} {#1} {#1} {#2} #3 }
-\cs_new_eq:NN \__text_change_case_letterlike_upper:nnN
- \__text_change_case_letterlike_lower:nnN
-\cs_new:Npn \__text_change_case_letterlike_title:nnN #1#2#3
- { \__text_change_case_letterlike:nnnnN { upper } { lower } {#1} {#2} #3 }
-\cs_new:Npn \__text_change_case_letterlike_titleonly:nnN #1#2#3
- { \__text_change_case_letterlike:nnnnN { upper } { end } {#1} {#2} #3 }
-\cs_new:Npn \__text_change_case_letterlike:nnnnN #1#2#3#4#5
+\cs_new:Npn \__text_change_case_skip_space:nnw #1#2
+ { \__text_change_case_space:nnnw {#1} {#1} {#2} }
+\cs_new:Npn \__text_change_case_letterlike_lower:nnnN #1#2#3#4
+ { \__text_change_case_letterlike:nnnnnN {#1} {#1} {#1} {#2} {#3} #4 }
+\cs_new_eq:NN \__text_change_case_letterlike_upper:nnnN
+ \__text_change_case_letterlike_lower:nnnN
+\cs_new:Npn \__text_change_case_letterlike_title:nnnN #1#2#3#4
+ { \__text_change_case_letterlike:nnnnnN { upper } { end } {#1} {#2} {#3} #4 }
+\cs_new:Npn \__text_change_case_letterlike:nnnnnN #1#2#3#4#5#6
{
- \cs_if_exist:cTF { c__text_ #1 case_ \token_to_str:N #5 _tl }
+ \cs_if_exist:cTF { c__text_ #1 case_ \token_to_str:N #6 _tl }
{
\__text_change_case_store:v
- { c__text_ #1 case_ \token_to_str:N #5 _tl }
- \use:c { __text_change_case_next_ #2 :nn } {#2} {#4}
+ { c__text_ #1 case_ \token_to_str:N #6 _tl }
+ \use:c { __text_change_case_next_ #2 :nnn } {#2} {#4} {#5}
}
{
- \__text_change_case_store:n {#5}
+ \__text_change_case_store:n {#6}
\cs_if_exist:cTF
{
c__text_
\str_if_eq:nnTF {#1} { lower } { upper } { lower }
- case_ \token_to_str:N #5 _tl
+ case_ \token_to_str:N #6 _tl
}
- { \use:c { __text_change_case_next_ #2 :nn } {#2} {#4} }
- { \__text_change_case_loop:nnw {#3} {#4} }
+ { \use:c { __text_change_case_next_ #2 :nnn } {#2} {#4} {#5} }
+ { \__text_change_case_loop:nnnw {#3} {#4} {#5} }
}
}
-\cs_new:Npn \__text_change_case_custom_lower:nnn #1#2#3
+\cs_new:Npn \__text_change_case_custom_lower:nnnn #1#2#3#4
{
- \__text_change_case_custom:nnnnn {#1} {#2} {#3} {#1}
- { \use:c { __text_change_case_codepoint_ #1 :nnn } {#1} {#2} {#3} }
+ \__text_change_case_custom:nnnnnn {#1} {#1} {#2} {#3} {#4}
+ { \use:c { __text_change_case_codepoint_ #1 :nnnn } {#1} {#2} {#3} {#4} }
}
-\cs_new_eq:NN \__text_change_case_custom_upper:nnn
- \__text_change_case_custom_lower:nnn
-\cs_new:Npn \__text_change_case_custom_title:nnn #1#2#3
+\cs_new_eq:NN \__text_change_case_custom_upper:nnnn
+ \__text_change_case_custom_lower:nnnn
+\cs_new:Npn \__text_change_case_custom_title:nnnn #1#2#3#4
{
- \__text_change_case_custom:nnnnn { title } {#2} {#3} {#1}
+ \__text_change_case_custom:nnnnnn { title } {#1} {#2} {#3} {#4}
{
- \__text_change_case_custom:nnnnn { upper } {#2} {#3} {#1}
- { \use:c { __text_change_case_codepoint_ #1 :nnn } {#1} {#2} {#3} }
+ \__text_change_case_custom:nnnnnn { upper } {#1} {#2} {#3} {#4}
+ { \use:c { __text_change_case_codepoint_ #1 :nnnn } {#1} {#2} {#3} {#4} }
}
}
-\cs_new_eq:NN \__text_change_case_custom_titleonly:nnn
- \__text_change_case_custom_title:nnn
-\cs_new:Npn \__text_change_case_custom:nnnnn #1#2#3#4#5
+\cs_new:Npn \__text_change_case_custom:nnnnnn #1#2#3#4#5#6
{
- \tl_if_exist:cTF { l__text_ #1 case _ \tl_to_str:n {#3} _ #2 _tl }
+ \tl_if_exist:cTF { l__text_ #1 case _ \tl_to_str:n {#5} _ #4 _tl }
{
- \__text_change_case_replace:vnn
- { l__text_ #1 case _ \tl_to_str:n {#3} _ #2 _tl } {#4} {#2}
+ \__text_change_case_replace:vnnn
+ { l__text_ #1 case _ \tl_to_str:n {#5} _ #4 _tl } {#2} {#3} {#4}
}
{
- \tl_if_exist:cTF { l__text_ #1 case _ \tl_to_str:n {#3} _tl }
+ \tl_if_exist:cTF { l__text_ #1 case _ \tl_to_str:n {#5} _tl }
{
- \__text_change_case_replace:vnn
- { l__text_ #1 case _ \tl_to_str:n {#3} _tl } {#4} {#2}
+ \__text_change_case_replace:vnnn
+ { l__text_ #1 case _ \tl_to_str:n {#5} _tl } {#2} {#3} {#4}
}
- {#5}
+ {#6}
}
}
-\cs_new:Npn \__text_change_case_codepoint_lower:nnn #1#2#3
+\cs_new:Npn \__text_change_case_codepoint_lower:nnnn #1#2#3#4
{
- \cs_if_exist_use:cF { __text_change_case_lower_ #2 :nnnn }
- { \__text_change_case_lower_sigma:nnnn }
- {#1} {#1} {#2} {#3}
+ \cs_if_exist_use:cF { __text_change_case_lower_ #3 :nnnnn }
+ { \__text_change_case_lower_sigma:nnnnn }
+ {#1} {#1} {#2} {#3} {#4}
}
-\cs_new:Npn \__text_change_case_codepoint_upper:nnn #1#2#3
+\cs_new:Npn \__text_change_case_codepoint_upper:nnnn #1#2#3#4
{
- \cs_if_exist_use:cF { __text_change_case_upper_ #2 :nnnn }
- { \__text_change_case_codepoint:nnnn }
- {#1} {#1} {#2} {#3}
+ \cs_if_exist_use:cF { __text_change_case_upper_ #3 :nnnnn }
+ { \__text_change_case_codepoint:nnnnn }
+ {#1} {#1} {#2} {#3} {#4}
}
-\cs_new:Npn \__text_change_case_lower_sigma:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_lower_sigma:nnnnn #1#2#3#4#5
{
- \__text_codepoint_compare:nNnTF {#4} = { "03A3 }
- { \__text_change_case_lower_sigma:nnnw {#2} }
- { \__text_change_case_codepoint:nnnn {#1} {#2} }
- {#3} {#4}
+ \__text_codepoint_compare:nNnTF {#5} = { "03A3 }
+ { \__text_change_case_lower_sigma:nnnnw {#2} }
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} }
+ {#3} {#4} {#5}
}
-\cs_new:Npn \__text_change_case_lower_sigma:nnnw #1#2#3#4 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_lower_sigma:nnnnw #1#2#3#4#5 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \__text_change_case_lower_sigma:nnnN {#3} }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \__text_change_case_lower_sigma:nnnnN {#4} }
{
\__text_change_case_store:e
- { \codepoint_generate:nn { "03C2 } { \__text_char_catcode:N #3 } }
- \__text_change_case_loop:nnw
+ { \codepoint_generate:nn { "03C2 } { \__text_char_catcode:N #4 } }
+ \__text_change_case_loop:nnnw
}
- {#1} {#2} #4 \q__text_recursion_stop
+ {#1} {#2} {#3} #5 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_lower_sigma:nnnN #1#2#3#4
+\cs_new:Npn \__text_change_case_lower_sigma:nnnnN #1#2#3#4#5
{
\__text_change_case_store:e
{
\bool_lazy_or:nnTF
- { \token_if_letter_p:N #4 }
+ { \token_if_letter_p:N #5 }
{
\bool_lazy_and_p:nn
- { \token_if_active_p:N #4 }
- { \int_compare_p:nNn {`#4} > { "80 } }
+ { \token_if_active_p:N #5 }
+ { \int_compare_p:nNn {`#5} > { "80 } }
}
{ \codepoint_generate:nn { "03C3 } { \__text_char_catcode:N #1 } }
{ \codepoint_generate:nn { "03C2 } { \__text_char_catcode:N #1 } }
}
- \__text_change_case_loop:nnw {#2} {#3} #4
+ \__text_change_case_loop:nnnw {#2} {#3} {#4} #5
}
-\cs_new:Npn \__text_change_case_codepoint_title:nnn #1#2#3
+\cs_new:Npn \__text_change_case_codepoint_title:nnnn #1#2#3#4
{
\bool_if:NTF \l_text_titlecase_check_letter_bool
{
- \tl_if_single:nTF {#3}
+ \tl_if_single:nTF {#4}
{
\bool_lazy_or:nnTF
- { \token_if_letter_p:N #3 }
+ { \token_if_letter_p:N #4 }
{
\bool_lazy_and_p:nn
- { \token_if_active_p:N #3 }
- { ! \int_compare_p:nNn {`#3} < { "80 } }
+ { \token_if_active_p:N #4 }
+ { ! \int_compare_p:nNn {`#4} < { "80 } }
}
- { \use:c { __text_change_case_codepoint_ #1 :nn } }
- { \__text_change_case_codepoint_title:nnnn { title } {#1} }
+ { \__text_change_case_codepoint_title:nnn }
+ { \__text_change_case_codepoint_title:nnnnn { title } {#1} }
}
- { \use:c { __text_change_case_codepoint_ #1 :nn } }
+ { \__text_change_case_codepoint_title:nnn }
}
- { \use:c { __text_change_case_codepoint_ #1 :nn } }
- {#2} {#3}
+ { \__text_change_case_codepoint_title:nnn }
+ {#2} {#3} {#4}
}
-\cs_new_eq:NN \__text_change_case_codepoint_titleonly:nnn
- \__text_change_case_codepoint_title:nnn
-\cs_new:Npn \__text_change_case_codepoint_title:nn #1#2
- { \__text_change_case_codepoint_title:nnnn { title } { lower } {#1} {#2} }
-\cs_new:Npn \__text_change_case_codepoint_titleonly:nn #1#2
- { \__text_change_case_codepoint_title:nnnn { title } { end } {#1} {#2} }
-\cs_new:Npn \__text_change_case_codepoint_title:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_codepoint_title:nnn #1#2#3
+ { \__text_change_case_codepoint_title:nnnnn { title } { end } {#1} {#2} {#3} }
+\cs_new:Npn \__text_change_case_codepoint_title:nnnnn #1#2#3#4#5
{
- \cs_if_exist_use:cF { __text_change_case_title_ #3 :nnnn }
+ \cs_if_exist_use:cF { __text_change_case_title_ #4 :nnnnn }
{
- \cs_if_exist_use:cF { __text_change_case_upper_ #3 :nnnn }
- { \__text_change_case_codepoint:nnnn }
+ \cs_if_exist_use:cF { __text_change_case_upper_ #4 :nnnnn }
+ { \__text_change_case_codepoint:nnnnn }
}
- {#1} {#2} {#3} {#4}
+ {#1} {#2} {#3} {#4} {#5}
}
-\cs_new:Npn \__text_change_case_codepoint:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_codepoint:nnnnn #1#2#3#4#5
{
\bool_lazy_and:nnTF
- { \tl_if_single_p:n {#4} }
- { \token_if_active_p:N #4 }
- { \__text_change_case_store:n {#4} }
+ { \tl_if_single_p:n {#5} }
+ { \token_if_active_p:N #5 }
+ { \__text_change_case_store:n {#5} }
{
\__text_change_case_store:e
- { \__text_change_case_codepoint:nn {#1} {#4} }
+ { \__text_change_case_codepoint:nn {#1} {#5} }
}
- \use:c { __text_change_case_next_ #2 :nn } {#2} {#3}
+ \use:c { __text_change_case_next_ #2 :nnn } {#2} {#3} {#4}
}
\cs_new:Npn \__text_change_case_codepoint:nn #1#2
{
@@ -33540,16 +34165,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\cs_new:Npn \__text_change_case_next_lower:nn #1#2
- { \__text_change_case_loop:nnw {#1} {#2} }
-\cs_new_eq:NN \__text_change_case_next_upper:nn
- \__text_change_case_next_lower:nn
-\cs_new_eq:NN \__text_change_case_next_title:nn
- \__text_change_case_next_lower:nn
-\cs_new_eq:NN \__text_change_case_next_titleonly:nn
- \__text_change_case_next_lower:nn
-\cs_new:Npn \__text_change_case_next_end:nn #1#2
- { \__text_change_case_break:w }
+\cs_new:Npn \__text_change_case_next_lower:nnn #1#2#3
+ { \__text_change_case_loop:nnnw {#1} {#2} {#3} }
+\cs_new_eq:NN \__text_change_case_next_upper:nnn
+ \__text_change_case_next_lower:nnn
+\cs_new_eq:NN \__text_change_case_next_title:nnn
+ \__text_change_case_next_lower:nnn
+\cs_new:Npn \__text_change_case_next_end:nnn #1#2#3
+ { \__text_change_case_skip:nnw {#2} {#3} }
\cs_new_protected:Npn \text_declare_case_equivalent:Nn #1#2
{
\tl_clear_new:c { l__text_case_ \token_to_str:N #1 _tl }
@@ -33586,6 +34209,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\tl_clear_new:c { l__text_ #2 case _ #1 _ #3 _tl }
\tl_set:cn { l__text_ #2 case _ #1 _ #3 _ tl } {#4}
+ \tl_clear_new:c { l__text_ #2 case_special_ #3 _tl }
}
\cs_new:Npn \text_case_switch:nnnn #1#2#3#4
{
@@ -33595,185 +34219,185 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__text_case_switch_marker: { }
\cs_new:Npn \__text_change_case_generate:n #1
{ \codepoint_generate:nn {#1} { \char_value_catcode:n {#1} } }
-\cs_new:cpn { __text_change_case_upper_de-x-eszett:nnnn } #1#2#3#4
+\cs_new:cpn { __text_change_case_upper_de-x-eszett:nnnnn } #1#2#3#4#5
{
- \__text_codepoint_compare:nNnTF {#4} = { "00DF }
+ \__text_codepoint_compare:nNnTF {#5} = { "00DF }
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "1E9E }
- { \__text_change_case_catcode:nn {#4} { "1E9E } }
+ { \__text_change_case_catcode:nn {#5} { "1E9E } }
}
- \use:c { __text_change_case_next_ #2 :nn }
- {#2} {#3}
+ \use:c { __text_change_case_next_ #2 :nnn }
+ {#2} {#3} {#4}
}
- { \__text_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new_eq:cc { __text_change_case_upper_de-alt:nnnn }
- { __text_change_case_upper_de-x-eszett:nnnn }
-\cs_new:Npn \__text_change_case_upper_el:nnnn #1#2#3#4
+\cs_new_eq:cc { __text_change_case_upper_de-alt:nnnnn }
+ { __text_change_case_upper_de-x-eszett:nnnnn }
+\cs_new:Npn \__text_change_case_upper_el:nnnnn #1#2#3#4#5
{
\bool_lazy_and:nnTF
- { \__text_change_case_if_greek_p:n {#4} }
+ { \__text_change_case_if_greek_p:n {#5} }
{
! \bool_lazy_or_p:nn
- { \__text_codepoint_compare_p:nNn {#4} = { "0374 } }
- { \__text_codepoint_compare_p:nNn {#4} = { "037E } }
+ { \__text_codepoint_compare_p:nNn {#5} = { "0374 } }
+ { \__text_codepoint_compare_p:nNn {#5} = { "037E } }
}
{
- \__text_change_case_if_greek_spacing_diacritic:nTF {#4}
+ \__text_change_case_if_greek_spacing_diacritic:nTF {#5}
{
- \__text_change_case_store:n {#4}
- \__text_change_case_loop:nnw
+ \__text_change_case_store:n {#5}
+ \__text_change_case_loop:nnnw
}
{
- \exp_args:Ne \__text_change_case_upper_el:nnn
+ \exp_args:Ne \__text_change_case_upper_el:nnnn
{
\codepoint_to_nfd:n
- { \__text_codepoint_from_chars:Nw #4 }
+ { \__text_codepoint_from_chars:Nw #5 }
}
}
- {#2} {#3}
+ {#2} {#3} {#4}
}
{
- \__text_codepoint_compare:nNnTF {#4} = { "0345 }
+ \__text_codepoint_compare:nNnTF {#5} = { "0345 }
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "0399 }
{ \char_value_catcode:n { "0399 } }
}
- \__text_change_case_loop:nnw {#2} {#3}
+ \__text_change_case_loop:nnnw {#2} {#3} {#4}
}
- { \__text_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
}
-\cs_new_eq:cN { __text_change_case_upper_el-x-iota:nnnn }
- \__text_change_case_upper_el:nnnn
-\cs_new:Npn \__text_change_case_upper_el:nnn #1#2#3
+\cs_new_eq:cN { __text_change_case_upper_el-x-iota:nnnnn }
+ \__text_change_case_upper_el:nnnnn
+\cs_new:Npn \__text_change_case_upper_el:nnnn #1#2#3#4
{
\__text_codepoint_process:nN
- { \__text_change_case_upper_el:nnnw {#2} {#3} } #1
+ { \__text_change_case_upper_el:nnnnw {#2} {#3} {#4} } #1
}
-\cs_new:Npn \__text_change_case_upper_el:nnnw #1#2#3#4 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_upper_el:nnnnw #1#2#3#4#5 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \__text_change_case_upper_el:nnnN {#3} }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \__text_change_case_upper_el:nnnnN {#4} }
{
\__text_change_case_store:e
- { \__text_change_case_codepoint:nn { upper } {#3} }
- \__text_change_case_loop:nnw
+ { \__text_change_case_codepoint:nn { upper } {#4} }
+ \__text_change_case_loop:nnnw
}
- {#1} {#2} #4 \q__text_recursion_stop
+ {#1} {#2} {#3} #5 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_upper_el:nnnN #1#2#3#4
+\cs_new:Npn \__text_change_case_upper_el:nnnnN #1#2#3#4#5
{
- \token_if_cs:NTF #4
+ \token_if_cs:NTF #5
{
\__text_change_case_store:e
{ \__text_change_case_codepoint:nn { upper } {#1} }
- \__text_change_case_loop:nnw {#2} {#3} #4
+ \__text_change_case_loop:nnnw {#2} {#3} {#4} #5
}
{
\__text_change_case_if_takes_ypogegrammeni:nTF {#1}
{
- \__text_change_case_upper_el_ypogegrammeni:nnnnnw
- {#1} {#2} {#3} { } { } #4
+ \__text_change_case_upper_el_ypogegrammeni:nnnnnnw
+ {#1} {#2} {#3} {#4} { } { } #5
}
- { \__text_change_case_upper_el_aux:nnnN {#1} {#2} {#3} #4 }
+ { \__text_change_case_upper_el_aux:nnnnN {#1} {#2} {#3} {#4} #5 }
}
}
-\cs_new:Npn \__text_change_case_upper_el_ypogegrammeni:nnnnnw
- #1#2#3#4#5#6 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_upper_el_ypogegrammeni:nnnnnnw
+ #1#2#3#4#5#6#7 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#6}
+ \tl_if_head_is_N_type:nTF {#7}
{
- \__text_change_case_upper_el_ypogegrammeni:nnnnnN
- {#1} {#2} {#3} {#4} {#5}
+ \__text_change_case_upper_el_ypogegrammeni:nnnnnnN
+ {#1} {#2} {#3} {#4} {#5} {#6}
}
- { \__text_change_case_upper_el_aux:nnnN {#1} {#2} {#3} #4#5 }
- #6 \q__text_recursion_stop
+ { \__text_change_case_upper_el_aux:nnnnN {#1} {#2} {#3} {#4} #5#6 }
+ #7 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_upper_el_ypogegrammeni:nnnnnN #1#2#3#4#5#6
+\cs_new:Npn \__text_change_case_upper_el_ypogegrammeni:nnnnnnN #1#2#3#4#5#6#7
{
- \token_if_cs:NTF #6
- { \__text_change_case_upper_el_aux:nnnN {#1} {#2} {#3} #4#5 }
+ \token_if_cs:NTF #7
+ { \__text_change_case_upper_el_aux:nnnnN {#1} {#2} {#3} {#4} #5#6 }
{
\__text_codepoint_process:nN
{
- \__text_change_case_upper_el_ypogegrammeni:nnnnnn
- {#1} {#2} {#3} {#4} {#5}
+ \__text_change_case_upper_el_ypogegrammeni:nnnnnnn
+ {#1} {#2} {#3} {#4} {#5} {#6}
}
}
- #6
+ #7
}
-\cs_new:Npn \__text_change_case_upper_el_ypogegrammeni:nnnnnn #1#2#3#4#5#6
+\cs_new:Npn \__text_change_case_upper_el_ypogegrammeni:nnnnnnn #1#2#3#4#5#6#7
{
- \__text_codepoint_compare:nNnTF {#6} = { "0345 }
+ \__text_codepoint_compare:nNnTF {#7} = { "0345 }
{
- \__text_change_case_upper_el_ypogegrammeni:nnnnnw
- {#1} {#2} {#3} {#4} {#6}
+ \__text_change_case_upper_el_ypogegrammeni:nnnnnnw
+ {#1} {#2} {#3} {#4} {#5} {#7}
}
{
\bool_lazy_or:nnTF
- { \__text_change_case_if_greek_accent_p:n {#6} }
- { \__text_change_case_if_greek_breathing_p:n {#6} }
+ { \__text_change_case_if_greek_accent_p:n {#7} }
+ { \__text_change_case_if_greek_breathing_p:n {#7} }
{
- \__text_change_case_upper_el_ypogegrammeni:nnnnnw
- {#1} {#2} {#3} {#4#6} {#5}
+ \__text_change_case_upper_el_ypogegrammeni:nnnnnnw
+ {#1} {#2} {#3} {#4} {#5#7} {#6}
}
- { \__text_change_case_upper_el_aux:nnnN {#1} {#2} {#3} #4#5 #6 }
+ { \__text_change_case_upper_el_aux:nnnnN {#1} {#2} {#3} {#4} #5#6 #7 }
}
}
-\cs_new:Npn \__text_change_case_upper_el_aux:nnnN #1#2#3#4
+\cs_new:Npn \__text_change_case_upper_el_aux:nnnnN #1#2#3#4#5
{
\__text_codepoint_process:nN
- { \__text_change_case_upper_el_aux:nnnn {#1} {#2} {#3} } #4
+ { \__text_change_case_upper_el_aux:nnnnn {#1} {#2} {#3} {#4} } #5
}
-\cs_new:Npn \__text_change_case_upper_el_aux:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_upper_el_aux:nnnnn #1#2#3#4#5
{
- \__text_codepoint_compare:nNnTF {#4} = { "0308 }
- { \__text_change_case_upper_el_dialytika:nnn {#2} {#3} {#1} }
+ \__text_codepoint_compare:nNnTF {#5} = { "0308 }
+ { \__text_change_case_upper_el_dialytika:nnnn {#2} {#3} {#4} {#1} }
{
- \__text_change_case_if_greek_accent:nTF {#4}
- { \__text_change_case_upper_el_hiatus:nnnw {#2} {#3} {#1} }
+ \__text_change_case_if_greek_accent:nTF {#5}
+ { \__text_change_case_upper_el_hiatus:nnnnw {#2} {#3} {#4} {#1} }
{
- \__text_change_case_if_greek_breathing:nTF {#4}
- { \__text_change_case_upper_el:nnn {#1} {#2} {#3} }
+ \__text_change_case_if_greek_breathing:nTF {#5}
+ { \__text_change_case_upper_el:nnnn {#1} {#2} {#3} {#4} }
{
- \__text_codepoint_compare:nNnTF {#4} = { "0345 }
+ \__text_codepoint_compare:nNnTF {#5} = { "0345 }
{
\__text_change_case_store:e
- { \use:c { __text_change_case_upper_ #3 _ypogegrammeni:n } {#1} }
- \__text_change_case_loop:nnw {#2} {#3}
+ { \use:c { __text_change_case_upper_ #4 _ypogegrammeni:n } {#1} }
+ \__text_change_case_loop:nnnw {#2} {#3} {#4}
}
{
- \__text_change_case_if_greek_stress:nTF {#4}
+ \__text_change_case_if_greek_stress:nTF {#5}
{
\__text_change_case_store:e
- { \__text_change_case_upper_el_stress:nn {#1} {#4} }
- \__text_change_case_loop:nnw {#2} {#3}
+ { \__text_change_case_upper_el_stress:nn {#1} {#5} }
+ \__text_change_case_loop:nnnw {#2} {#3} {#4}
}
{
\__text_change_case_store:e
{ \__text_change_case_codepoint:nn { upper } {#1} }
- \__text_change_case_loop:nnw {#2} {#3} #4
+ \__text_change_case_loop:nnnw {#2} {#3} {#4} #5
}
}
}
}
}
}
-\cs_new:Npn \__text_change_case_upper_el_dialytika:nnn #1#2#3
+\cs_new:Npn \__text_change_case_upper_el_dialytika:nnnn #1#2#3#4
{
- \__text_change_case_if_takes_dialytika:nTF {#3}
- { \__text_change_case_upper_el_dialytika:n {#3} }
+ \__text_change_case_if_takes_dialytika:nTF {#4}
+ { \__text_change_case_upper_el_dialytika:n {#4} }
{
\__text_change_case_store:e
- { \__text_change_case_codepoint:nn { upper } {#3} }
+ { \__text_change_case_codepoint:nn { upper } {#4} }
}
- \__text_change_case_upper_el_gobble:nnw {#1} {#2}
+ \__text_change_case_upper_el_gobble:nnnw {#1} {#2} {#3}
}
\cs_new:Npn \__text_change_case_upper_el_dialytika:n #1
{
@@ -33792,41 +34416,41 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\cs_new:Npn \__text_change_case_upper_el_hiatus:nnnw
- #1#2#3#4 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_upper_el_hiatus:nnnnw
+ #1#2#3#4#5 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \__text_change_case_upper_el_hiatus:nnnN {#3} }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \__text_change_case_upper_el_hiatus:nnnnN {#4} }
{
\__text_change_case_store:e
- { \__text_change_case_codepoint:nn { upper } {#3} }
- \__text_change_case_loop:nnw
+ { \__text_change_case_codepoint:nn { upper } {#4} }
+ \__text_change_case_loop:nnnw
}
- {#1} {#2} #4 \q__text_recursion_stop
+ {#1} {#2} {#3} #5 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_upper_el_hiatus:nnnN #1#2#3#4
+\cs_new:Npn \__text_change_case_upper_el_hiatus:nnnnN #1#2#3#4#5
{
- \token_if_cs:NTF #4
+ \token_if_cs:NTF #5
{
\__text_change_case_store:e
{ \__text_change_case_codepoint:nn { upper } {#1} }
- \__text_change_case_loop:nnw {#2} {#3} #4
+ \__text_change_case_loop:nnnw {#2} {#3} {#4} #5
}
{
\__text_codepoint_process:nN
- { \__text_change_case_upper_el_hiatus:nnnn {#1} {#2} {#3} } #4
+ { \__text_change_case_upper_el_hiatus:nnnnn {#1} {#2} {#3} {#4} } #5
}
}
-\cs_new:Npn \__text_change_case_upper_el_hiatus:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_upper_el_hiatus:nnnnn #1#2#3#4#5
{
- \__text_change_case_if_takes_dialytika:nTF {#4}
+ \__text_change_case_if_takes_dialytika:nTF {#5}
{
\__text_change_case_store:e
{ \__text_change_case_codepoint:nn { upper } {#1} }
- \__text_change_case_upper_el_dialytika:n {#4}
- \__text_change_case_upper_el_gobble:nnw {#2} {#3}
+ \__text_change_case_upper_el_dialytika:n {#5}
+ \__text_change_case_upper_el_gobble:nnnw {#2} {#3} {#4}
}
- { \__text_change_case_upper_el:nnn {#1} {#2} {#3} #4 }
+ { \__text_change_case_upper_el:nnnn {#1} {#2} {#3} {#4} #5 }
}
\cs_new:Npn \__text_change_case_upper_el_ypogegrammeni:n #1
{
@@ -33884,31 +34508,31 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\cs_new:Npn \__text_change_case_upper_el_gobble:nnw
- #1#2#3 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_upper_el_gobble:nnnw
+ #1#2#3#4 \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
+ \tl_if_head_is_N_type:nTF {#4}
+ { \__text_change_case_upper_el_gobble:nnnN }
+ { \__text_change_case_loop:nnnw }
+ {#1} {#2} {#3} #4 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_upper_el_gobble:nnN #1#2#3
+\cs_new:Npn \__text_change_case_upper_el_gobble:nnnN #1#2#3#4
{
- \token_if_cs:NTF #3
- { \__text_change_case_loop:nnw {#1} {#2} }
+ \token_if_cs:NTF #4
+ { \__text_change_case_loop:nnnw {#1} {#2} {#3} }
{
\__text_codepoint_process:nN
- { \__text_change_case_upper_el_gobble:nnn {#1} {#2} }
+ { \__text_change_case_upper_el_gobble:nnnn {#1} {#2} {#3} }
}
- #3
+ #4
}
-\cs_new:Npn \__text_change_case_upper_el_gobble:nnn #1#2#3
+\cs_new:Npn \__text_change_case_upper_el_gobble:nnnn #1#2#3#4
{
\bool_lazy_or:nnTF
- { \__text_change_case_if_greek_accent_p:n {#3} }
- { \__text_change_case_if_greek_breathing_p:n {#3} }
- { \__text_change_case_upper_el_gobble:nnw {#1} {#2} }
- { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ { \__text_change_case_if_greek_accent_p:n {#4} }
+ { \__text_change_case_if_greek_breathing_p:n {#4} }
+ { \__text_change_case_upper_el_gobble:nnnw {#1} {#2} {#3} }
+ { \__text_change_case_loop:nnnw {#1} {#2} {#3} #4 }
}
\prg_new_conditional:Npnn \__text_change_case_if_greek:n #1 { p , TF }
{
@@ -34132,422 +34756,422 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
}
-\cs_new:Npn \__text_change_case_boundary_upper_el:Nnnw
- #1#2#3#4 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_boundary_upper_el:Nnnnw
+ #1#2#3#4#5 \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
+ \tl_if_head_is_N_type:nTF {#5}
+ { \__text_change_case_boundary_upper_el:nnnN }
+ { \__text_change_case_loop:nnnw }
+ {#2} {#3} {#4} #5 \q__text_recursion_stop
}
-\cs_new_eq:cN { __text_change_case_boundary_upper_el-x-iota:Nnnw }
- \__text_change_case_boundary_upper_el:Nnnw
-\cs_new:Npn \__text_change_case_boundary_upper_el:nnN #1#2#3
+\cs_new_eq:cN { __text_change_case_boundary_upper_el-x-iota:Nnnnw }
+ \__text_change_case_boundary_upper_el:Nnnnw
+\cs_new:Npn \__text_change_case_boundary_upper_el:nnnN #1#2#3#4
{
- \token_if_cs:NTF #3
- { \__text_change_case_loop:nnw {#1} {#2} }
+ \token_if_cs:NTF #4
+ { \__text_change_case_loop:nnnw {#1} {#2} {#3} }
{
\__text_codepoint_process:nN
- { \__text_change_case_boundary_upper_el:nnn {#1} {#2} }
+ { \__text_change_case_boundary_upper_el:nnnn {#1} {#2} {#3} }
}
- #3
+ #4
}
-\cs_new:Npn \__text_change_case_boundary_upper_el:nnn #1#2#3
+\cs_new:Npn \__text_change_case_boundary_upper_el:nnnn #1#2#3#4
{
\bool_lazy_any:nTF
{
- { \__text_codepoint_compare_p:nNn {#3} = { "0389 } }
- { \__text_codepoint_compare_p:nNn {#3} = { "03AE } }
- { \__text_codepoint_compare_p:nNn {#3} = { "1F22 } }
- { \__text_codepoint_compare_p:nNn {#3} = { "1F2A } }
+ { \__text_codepoint_compare_p:nNn {#4} = { "0389 } }
+ { \__text_codepoint_compare_p:nNn {#4} = { "03AE } }
+ { \__text_codepoint_compare_p:nNn {#4} = { "1F22 } }
+ { \__text_codepoint_compare_p:nNn {#4} = { "1F2A } }
}
- { \__text_change_case_boundary_upper_el:nnnw {#1} {#2} {#3} }
- { \__text_change_case_breathing:nnn {#1} {#2} {#3} }
+ { \__text_change_case_boundary_upper_el:nnnnw {#1} {#2} {#3} {#4} }
+ { \__text_change_case_breathing:nnnn {#1} {#2} {#3} {#4} }
}
-\cs_new:Npn \__text_change_case_boundary_upper_el:nnnw
- #1#2#3#4 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_boundary_upper_el:nnnnw
+ #1#2#3#4#5 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \__text_change_case_loop:nnnw {#1} {#2} {#3} #4 }
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "0389 }
- { \__text_change_case_catcode:nn {#3} { "0389 } }
+ { \__text_change_case_catcode:nn {#4} { "0389 } }
}
- \__text_change_case_loop:nnw {#1} {#2}
+ \__text_change_case_loop:nnnw {#1} {#2} {#3}
}
- #4 \q__text_recursion_stop
+ #5 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_breathing:nnn #1#2#3
+\cs_new:Npn \__text_change_case_breathing:nnnn #1#2#3#4
{
- \__text_change_case_if_greek:nTF {#3}
+ \__text_change_case_if_greek:nTF {#4}
{
- \exp_args:Ne \__text_change_case_breathing:nnnn
+ \exp_args:Ne \__text_change_case_breathing:nnnnn
{
\codepoint_to_nfd:n
- { \__text_codepoint_from_chars:Nw #3 }
+ { \__text_codepoint_from_chars:Nw #4 }
}
- {#1} {#2} {#3}
+ {#1} {#2} {#3} {#4}
}
- { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ { \__text_change_case_loop:nnnw {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \__text_change_case_breathing:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_breathing:nnnnn #1#2#3#4#5
{
\__text_codepoint_process:nN
- { \__text_change_case_breathing:nnnnw {#2} {#3} {#4} }
+ { \__text_change_case_breathing:nnnnnw {#2} {#3} {#4} {#5} }
#1 \q_mark
}
-\cs_new:Npn \__text_change_case_breathing:nnnnw #1#2#3#4#5 \q_mark
+\cs_new:Npn \__text_change_case_breathing:nnnnnw #1#2#3#4#5#6 \q_mark
{
- \tl_if_blank:nTF {#5}
- { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ \tl_if_blank:nTF {#6}
+ { \__text_change_case_loop:nnnw {#1} {#2} {#3} #4 }
{
\__text_codepoint_process:nN
- { \__text_change_case_breathing:nnnnnw {#1} {#2} {#3} {#4} }
- #5 \q_mark
+ { \__text_change_case_breathing:nnnnnnw {#1} {#2} {#3} {#4} {#5} }
+ #6 \q_mark
}
}
-\cs_new:Npn \__text_change_case_breathing:nnnnnw #1#2#3#4#5#6 \q_mark
+\cs_new:Npn \__text_change_case_breathing:nnnnnnw #1#2#3#4#5#6#7 \q_mark
{
- \tl_if_blank:nTF {#6}
+ \tl_if_blank:nTF {#7}
{
- \__text_change_case_breathing_aux:nnnnn
- {#1} {#2} {#3} {#4} {#5}
+ \__text_change_case_breathing_aux:nnnnnn
+ {#1} {#2} {#3} {#4} {#5} {#6}
}
{
\__text_codepoint_process:nN
- { \__text_change_case_breathing:nnnnnw {#1} {#2} {#3} {#4} }
- #6 \q_mark
+ { \__text_change_case_breathing:nnnnnnw {#1} {#2} {#3} {#4} {#5} }
+ #7 \q_mark
}
}
-\cs_new:Npn \__text_change_case_breathing_aux:nnnnn #1#2#3#4#5
+\cs_new:Npn \__text_change_case_breathing_aux:nnnnnn #1#2#3#4#5#6
{
\bool_lazy_or:nnTF
- { \__text_codepoint_compare_p:nNn {#5} = { "0313 } }
- { \__text_codepoint_compare_p:nNn {#5} = { "0314 } }
- { \__text_change_case_breathing_aux:nnnw {#1} {#2} {#4} }
- { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ { \__text_codepoint_compare_p:nNn {#6} = { "0313 } }
+ { \__text_codepoint_compare_p:nNn {#6} = { "0314 } }
+ { \__text_change_case_breathing_aux:nnnnw {#1} {#2} {#3} {#5} }
+ { \__text_change_case_loop:nnnw {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \__text_change_case_breathing_aux:nnnw #1#2#3#4
+\cs_new:Npn \__text_change_case_breathing_aux:nnnnw #1#2#3#4#5
\q__text_recursion_stop
{
\__text_change_case_store:e
- { \__text_change_case_codepoint:nn { upper } {#3} }
- \tl_if_head_is_N_type:nTF {#4}
- { \__text_change_case_breathing_aux:nnN }
- { \__text_change_case_loop:nnw }
- {#1} {#2} #4 \q__text_recursion_stop
+ { \__text_change_case_codepoint:nn { upper } {#4} }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \__text_change_case_breathing_aux:nnnN }
+ { \__text_change_case_loop:nnnw }
+ {#1} {#2} {#3} #5 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_breathing_aux:nnN #1#2#3
+\cs_new:Npn \__text_change_case_breathing_aux:nnnN #1#2#3#4
{
\__text_codepoint_process:nN
- { \__text_change_case_breathing_dialytika:nnn {#1} {#2} } #3
+ { \__text_change_case_breathing_dialytika:nnnn {#1} {#2} {#3} } #4
}
-\cs_new:Npn \__text_change_case_breathing_dialytika:nnn #1#2#3
+\cs_new:Npn \__text_change_case_breathing_dialytika:nnnn #1#2#3#4
{
- \__text_change_case_if_takes_dialytika:nTF {#3}
+ \__text_change_case_if_takes_dialytika:nTF {#4}
{
- \__text_change_case_upper_el_dialytika:n {#3}
- \__text_change_case_loop:nnw {#1} {#2}
+ \__text_change_case_upper_el_dialytika:n {#4}
+ \__text_change_case_loop:nnnw {#1} {#2} {#3}
}
- { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ { \__text_change_case_loop:nnnw {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \__text_change_case_title_el:nnnn #1#2#3#4
- { \__text_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
-\cs_new:Npn \__text_change_case_upper_hy:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_title_el:nnnnn #1#2#3#4#5
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
+\cs_new:Npn \__text_change_case_upper_hy:nnnnn #1#2#3#4#5
{
- \__text_codepoint_compare:nNnTF {#4} = { "0587 }
+ \__text_codepoint_compare:nNnTF {#5} = { "0587 }
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "0535 }
- { \__text_change_case_catcode:nn {#4} { "0535 } }
+ { \__text_change_case_catcode:nn {#5} { "0535 } }
\codepoint_generate:nn { "054E }
- { \__text_change_case_catcode:nn {#4} { "054E } }
+ { \__text_change_case_catcode:nn {#5} { "054E } }
}
- \use:c { __text_change_case_next_ #2 :nn }
- {#2} {#3}
+ \use:c { __text_change_case_next_ #2 :nnn }
+ {#2} {#3} {#4}
}
- { \__text_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new:Npn \__text_change_case_title_hy:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_title_hy:nnnnn #1#2#3#4#5
{
- \__text_codepoint_compare:nNnTF {#4} = { "0587 }
+ \__text_codepoint_compare:nNnTF {#5} = { "0587 }
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "0535 }
- { \__text_change_case_catcode:nn {#4} { "0535 } }
+ { \__text_change_case_catcode:nn {#5} { "0535 } }
\codepoint_generate:nn { "057E }
- { \__text_change_case_catcode:nn {#4} { "057E } }
+ { \__text_change_case_catcode:nn {#5} { "057E } }
}
- \use:c { __text_change_case_next_ #2 :nn }
- {#2} {#3}
+ \use:c { __text_change_case_next_ #2 :nnn }
+ {#2} {#3} {#4}
}
- { \__text_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new:cpn { __text_change_case_upper_hy-x-yiwn:nnnn } #1#2#3#4
- { \__text_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
-\cs_new_eq:cc { __text_change_case_title_hy-x-yiwn:nnnn }
- { __text_change_case_upper_hy-x-yiwn:nnnn }
-\cs_new:cpn { __text_change_case_lower_la-x-medieval:nnnn } #1#2#3#4
+\cs_new:cpn { __text_change_case_upper_hy-x-yiwn:nnnnn } #1#2#3#4#5
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
+\cs_new_eq:cc { __text_change_case_title_hy-x-yiwn:nnnnn }
+ { __text_change_case_upper_hy-x-yiwn:nnnnn }
+\cs_new:cpn { __text_change_case_lower_la-x-medieval:nnnnn } #1#2#3#4#5
{
- \__text_codepoint_compare:nNnTF {#4} = { "0056 }
+ \__text_codepoint_compare:nNnTF {#5} = { "0056 }
{
\__text_change_case_store:e
- { \char_generate:nn { "0075 } { \__text_char_catcode:N #4 } }
- \use:c { __text_change_case_next_ #2 :nn }
- {#2} {#3}
+ { \char_generate:nn { "0075 } { \__text_char_catcode:N #5 } }
+ \use:c { __text_change_case_next_ #2 :nnn }
+ {#2} {#3} {#4}
}
- { \__text_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new:cpn { __text_change_case_upper_la-x-medieval:nnnn } #1#2#3#4
+\cs_new:cpn { __text_change_case_upper_la-x-medieval:nnnnn } #1#2#3#4#5
{
- \__text_codepoint_compare:nNnTF {#4} = { "0075 }
+ \__text_codepoint_compare:nNnTF {#5} = { "0075 }
{
\__text_change_case_store:e
- { \char_generate:nn { "0056 } { \__text_char_catcode:N #4 } }
- \use:c { __text_change_case_next_ #2 :nn }
- {#2} {#3}
+ { \char_generate:nn { "0056 } { \__text_char_catcode:N #5 } }
+ \use:c { __text_change_case_next_ #2 :nnn }
+ {#2} {#3} {#4}
}
- { \__text_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new:Npn \__text_change_case_lower_lt:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_lower_lt:nnnnn #1#2#3#4#5
{
- \exp_args:Ne \__text_change_case_lower_lt_auxi:nnnn
+ \exp_args:Ne \__text_change_case_lower_lt_auxi:nnnnn
{
- \int_case:nn { \__text_codepoint_from_chars:Nw #4 }
+ \int_case:nn { \__text_codepoint_from_chars:Nw #5 }
{
{ "00CC } { "0300 }
{ "00CD } { "0301 }
{ "0128 } { "0303 }
}
}
- {#2} {#3} {#4}
+ {#2} {#3} {#4} {#5}
}
-\cs_new:Npn \__text_change_case_lower_lt_auxi:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_lower_lt_auxi:nnnnn #1#2#3#4#5
{
\tl_if_blank:nTF {#1}
{
- \exp_args:Ne \__text_change_case_lower_lt_auxii:nnnn
+ \exp_args:Ne \__text_change_case_lower_lt_auxii:nnnnn
{
- \int_case:nn { \__text_codepoint_from_chars:Nw #4 }
+ \int_case:nn { \__text_codepoint_from_chars:Nw #5 }
{
{ "0049 } { "0069 }
{ "004A } { "006A }
{ "012E } { "012F }
}
}
- {#2} {#3} {#4}
+ {#2} {#3} {#4} {#5}
}
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "0069 }
- { \__text_change_case_catcode:nn {#4} { "0069 } }
+ { \__text_change_case_catcode:nn {#5} { "0069 } }
\codepoint_generate:nn { "0307 }
- { \__text_change_case_catcode:nn {#4} { "0307 } }
+ { \__text_change_case_catcode:nn {#5} { "0307 } }
\codepoint_generate:nn {#1}
- { \__text_change_case_catcode:nn {#4} {#1} }
+ { \__text_change_case_catcode:nn {#5} {#1} }
}
- \__text_change_case_loop:nnw {#2} {#3}
+ \__text_change_case_loop:nnnw {#2} {#3} {#4}
}
}
-\cs_new:Npn \__text_change_case_lower_lt_auxii:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_lower_lt_auxii:nnnnn #1#2#3#4#5
{
\tl_if_blank:nTF {#1}
- { \__text_change_case_codepoint:nnnn {#2} {#2} {#3} {#4} }
+ { \__text_change_case_codepoint:nnnnn {#2} {#2} {#3} {#4} {#5} }
{
\__text_change_case_store:e
{
\codepoint_generate:nn {#1}
- { \__text_change_case_catcode:nn {#4} {#1} }
+ { \__text_change_case_catcode:nn {#5} {#1} }
}
- \__text_change_case_lower_lt:nnw {#2} {#3}
+ \__text_change_case_lower_lt:nnnw {#2} {#3} {#4}
}
}
-\cs_new:Npn \__text_change_case_lower_lt:nnw #1#2#3 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_lower_lt:nnnw #1#2#3#4 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#3}
- { \__text_change_case_lower_lt:nnN }
- { \__text_change_case_loop:nnw }
- {#1} {#2} #3 \q__text_recursion_stop
+ \tl_if_head_is_N_type:nTF {#4}
+ { \__text_change_case_lower_lt:nnnN }
+ { \__text_change_case_loop:nnnw }
+ {#1} {#2} {#3} #4 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_lower_lt:nnN #1#2#3
+\cs_new:Npn \__text_change_case_lower_lt:nnnN #1#2#3#4
{
\__text_codepoint_process:nN
- { \__text_change_case_lower_lt:nnn {#1} {#2} } #3
+ { \__text_change_case_lower_lt:nnnn {#1} {#2} {#3} } #4
}
-\cs_new:Npn \__text_change_case_lower_lt:nnn #1#2#3
+\cs_new:Npn \__text_change_case_lower_lt:nnnn #1#2#3#4
{
\bool_lazy_and:nnT
{
\bool_lazy_or_p:nn
- { ! \tl_if_single_p:n {#3} }
- { ! \token_if_cs_p:N #3 }
+ { ! \tl_if_single_p:n {#4} }
+ { ! \token_if_cs_p:N #4 }
}
{
\bool_lazy_any_p:n
{
- { \__text_codepoint_compare_p:nNn {#3} = { "0300 } }
- { \__text_codepoint_compare_p:nNn {#3} = { "0301 } }
- { \__text_codepoint_compare_p:nNn {#3} = { "0303 } }
+ { \__text_codepoint_compare_p:nNn {#4} = { "0300 } }
+ { \__text_codepoint_compare_p:nNn {#4} = { "0301 } }
+ { \__text_codepoint_compare_p:nNn {#4} = { "0303 } }
}
}
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "0307 }
- { \__text_change_case_catcode:nn {#3} { "0307 } }
+ { \__text_change_case_catcode:nn {#4} { "0307 } }
}
}
- \__text_change_case_loop:nnw {#1} {#2} #3
+ \__text_change_case_loop:nnnw {#1} {#2} {#3} #4
}
-\cs_new:Npn \__text_change_case_upper_lt:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_upper_lt:nnnnn #1#2#3#4#5
{
- \exp_args:Ne \__text_change_case_upper_lt_aux:nnnn
+ \exp_args:Ne \__text_change_case_upper_lt_aux:nnnnn
{
- \int_case:nn { \__text_codepoint_from_chars:Nw #4 }
+ \int_case:nn { \__text_codepoint_from_chars:Nw #5 }
{
{ "0069 } { "0049 }
{ "006A } { "004A }
{ "012F } { "012E }
}
}
- {#2} {#3} {#4}
+ {#2} {#3} {#4} {#5}
}
-\cs_new:Npn \__text_change_case_upper_lt_aux:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_upper_lt_aux:nnnnn #1#2#3#4#5
{
\tl_if_blank:nTF {#1}
- { \__text_change_case_codepoint:nnnn { upper } {#2} {#3} {#4} }
+ { \__text_change_case_codepoint:nnnnn { upper } {#2} {#3} {#4} {#5} }
{
\__text_change_case_store:e
{
\codepoint_generate:nn {#1}
- { \__text_change_case_catcode:nn {#4} {#1} }
+ { \__text_change_case_catcode:nn {#5} {#1} }
}
- \__text_change_case_upper_lt:nnw {#2} {#3}
+ \__text_change_case_upper_lt:nnnw {#2} {#3} {#4}
}
}
-\cs_new:Npn \__text_change_case_upper_lt:nnw #1#2#3 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_upper_lt:nnnw #1#2#3#4 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#3}
- { \__text_change_case_upper_lt:nnN }
- { \use:c { __text_change_case_next_ #1 :nn } }
- {#1} {#2} #3 \q__text_recursion_stop
+ \tl_if_head_is_N_type:nTF {#4}
+ { \__text_change_case_upper_lt:nnnN }
+ { \use:c { __text_change_case_next_ #1 :nnn } }
+ {#1} {#2} {#3} #4 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_upper_lt:nnN #1#2#3
+\cs_new:Npn \__text_change_case_upper_lt:nnnN #1#2#3#4
{
\__text_codepoint_process:nN
- { \__text_change_case_upper_lt:nnn {#1} {#2} } #3
+ { \__text_change_case_upper_lt:nnnn {#1} {#2} {#3} } #4
}
-\cs_new:Npn \__text_change_case_upper_lt:nnn #1#2#3
+\cs_new:Npn \__text_change_case_upper_lt:nnnn #1#2#3#4
{
\bool_lazy_and:nnTF
{
\bool_lazy_or_p:nn
- { ! \tl_if_single_p:n {#3} }
- { ! \token_if_cs_p:N #3 }
+ { ! \tl_if_single_p:n {#4} }
+ { ! \token_if_cs_p:N #4 }
}
- { \__text_codepoint_compare_p:nNn {#3} = { "0307 } }
- { \use:c { __text_change_case_next_ #1 :nn } {#1} {#2} }
- { \use:c { __text_change_case_next_ #1 :nn } {#1} {#2} #3 }
+ { \__text_codepoint_compare_p:nNn {#4} = { "0307 } }
+ { \use:c { __text_change_case_next_ #1 :nnn } {#1} {#2} {#3} }
+ { \use:c { __text_change_case_next_ #1 :nnn } {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \__text_change_case_title_nl:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_title_nl:nnnnn #1#2#3#4#5
{
- \tl_if_single:nTF {#4}
- { \__text_change_case_title_nl_aux:nnnn }
- { \__text_change_case_codepoint:nnnn }
- {#1} {#2} {#3} {#4}
+ \tl_if_single:nTF {#5}
+ { \__text_change_case_title_nl_aux:nnnnn }
+ { \__text_change_case_codepoint:nnnnn }
+ {#1} {#2} {#3} {#4} {#5}
}
-\cs_new:Npn \__text_change_case_title_nl_aux:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_title_nl_aux:nnnnn #1#2#3#4#5
{
\bool_lazy_or:nnTF
- { \int_compare_p:nNn {`#4} = { "0049 } }
- { \int_compare_p:nNn {`#4} = { "0069 } }
+ { \int_compare_p:nNn {`#5} = { "0049 } }
+ { \int_compare_p:nNn {`#5} = { "0069 } }
{
\__text_change_case_store:e
- { \char_generate:nn { "0049 } { \__text_char_catcode:N #4 } }
- \__text_change_case_title_nl:nnw {#2} {#3}
+ { \char_generate:nn { "0049 } { \__text_char_catcode:N #5 } }
+ \__text_change_case_title_nl:nnnw {#2} {#3} {#4}
}
- { \__text_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new:Npn \__text_change_case_title_nl:nnw #1#2#3 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_title_nl:nnnw #1#2#3#4 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#3}
- { \__text_change_case_title_nl:nnN }
- { \use:c { __text_change_case_next_ #1 :nn } }
- {#1} {#2} #3 \q__text_recursion_stop
+ \tl_if_head_is_N_type:nTF {#4}
+ { \__text_change_case_title_nl:nnnN }
+ { \use:c { __text_change_case_next_ #1 :nnn } }
+ {#1} {#2} {#3} #4 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_title_nl:nnN #1#2#3
+\cs_new:Npn \__text_change_case_title_nl:nnnN #1#2#3#4
{
\bool_lazy_and:nnTF
- { ! \token_if_cs_p:N #3 }
+ { ! \token_if_cs_p:N #4 }
{
\bool_lazy_or_p:nn
- { \int_compare_p:nNn {`#3} = { "004A } }
- { \int_compare_p:nNn {`#3} = { "006A } }
+ { \int_compare_p:nNn {`#4} = { "004A } }
+ { \int_compare_p:nNn {`#4} = { "006A } }
}
{
\__text_change_case_store:e
- { \char_generate:nn { "004A } { \__text_char_catcode:N #3 } }
- \use:c { __text_change_case_next_ #1 :nn } {#1} {#2}
+ { \char_generate:nn { "004A } { \__text_char_catcode:N #4 } }
+ \use:c { __text_change_case_next_ #1 :nnn } {#1} {#2} {#3}
}
- { \use:c { __text_change_case_next_ #1 :nn } {#1} {#2} #3 }
+ { \use:c { __text_change_case_next_ #1 :nnn } {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \__text_change_case_lower_tr:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_lower_tr:nnnnn #1#2#3#4#5
{
- \__text_codepoint_compare:nNnTF {#4} = { "0049 }
- { \__text_change_case_lower_tr:nnNw {#1} {#3} #4 }
+ \__text_codepoint_compare:nNnTF {#5} = { "0049 }
+ { \__text_change_case_lower_tr:nnnNw {#1} {#3} {#4} #5 }
{
- \__text_codepoint_compare:nNnTF {#4} = { "0130 }
+ \__text_codepoint_compare:nNnTF {#5} = { "0130 }
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "0069 }
- { \__text_change_case_catcode:nn {#4} { "0069 } }
+ { \__text_change_case_catcode:nn {#5} { "0069 } }
}
- \__text_change_case_loop:nnw {#1} {#3}
+ \__text_change_case_loop:nnnw {#1} {#3} {#4}
}
- { \__text_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
}
-\cs_new:Npn \__text_change_case_lower_tr:nnNw #1#2#3#4 \q__text_recursion_stop
+\cs_new:Npn \__text_change_case_lower_tr:nnnNw #1#2#3#4#5 \q__text_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \__text_change_case_lower_tr:NnnN #3 {#1} {#2} }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \__text_change_case_lower_tr:NnnnN #4 {#1} {#2} {#3} }
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "0131 }
- { \__text_change_case_catcode:nn {#3} { "0131 } }
+ { \__text_change_case_catcode:nn {#4} { "0131 } }
}
- \__text_change_case_loop:nnw {#1} {#2}
+ \__text_change_case_loop:nnnw {#1} {#2} {#3}
}
- #4 \q__text_recursion_stop
+ #5 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_lower_tr:NnnN #1#2#3#4
+\cs_new:Npn \__text_change_case_lower_tr:NnnnN #1#2#3#4#5
{
\__text_codepoint_process:nN
- { \__text_change_case_lower_tr:Nnnn #1 {#2} {#3} } #4
+ { \__text_change_case_lower_tr:Nnnnn #1 {#2} {#3} {#4} } #5
}
-\cs_new:Npn \__text_change_case_lower_tr:Nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_lower_tr:Nnnnn #1#2#3#4#5
{
\bool_lazy_or:nnTF
{
\bool_lazy_and_p:nn
- { \tl_if_single_p:n {#4} }
- { \token_if_cs_p:N #4 }
+ { \tl_if_single_p:n {#5} }
+ { \token_if_cs_p:N #5 }
}
- { ! \__text_codepoint_compare_p:nNn {#4} = { "0307 } }
+ { ! \__text_codepoint_compare_p:nNn {#5} = { "0307 } }
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "0131 }
{ \__text_change_case_catcode:nn {#1} { "0131 } }
}
- \__text_change_case_loop:nnw {#2} {#3} #4
+ \__text_change_case_loop:nnnw {#2} {#3} {#4} #5
}
{
\__text_change_case_store:e
@@ -34555,26 +35179,26 @@ Type H <return> for immediate help}\def~{\errmessage{%
\codepoint_generate:nn { "0069 }
{ \__text_change_case_catcode:nn {#1} { "0069 } }
}
- \__text_change_case_loop:nnw {#2} {#3}
+ \__text_change_case_loop:nnnw {#2} {#3} {#4}
}
}
-\cs_new:Npn \__text_change_case_upper_tr:nnnn #1#2#3#4
+\cs_new:Npn \__text_change_case_upper_tr:nnnnn #1#2#3#4#5
{
- \__text_codepoint_compare:nNnTF {#4} = { "0069 }
+ \__text_codepoint_compare:nNnTF {#5} = { "0069 }
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "0130 }
- { \__text_change_case_catcode:nn {#4} { "0130 } }
+ { \__text_change_case_catcode:nn {#5} { "0130 } }
}
- \use:c { __text_change_case_next_ #2 :nn } {#2} {#3}
+ \use:c { __text_change_case_next_ #2 :nnn } {#2} {#3} {#4}
}
- { \__text_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \__text_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new_eq:NN \__text_change_case_lower_az:nnnn
- \__text_change_case_lower_tr:nnnn
-\cs_new_eq:NN \__text_change_case_upper_az:nnnn
- \__text_change_case_upper_tr:nnnn
+\cs_new_eq:NN \__text_change_case_lower_az:nnnnn
+ \__text_change_case_lower_tr:nnnnn
+\cs_new_eq:NN \__text_change_case_upper_az:nnnnn
+ \__text_change_case_upper_tr:nnnnn
\group_begin:
\cs_set_protected:Npn \__text_change_case_setup:NN #1#2
{
@@ -36010,6 +36634,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_gset:Npn \seq_mapthread_function:NNN { \seq_map_pairwise_function:NNN }
\__kernel_patch_deprecation:nnNNpn { 2021-01-11 } { (no~longer~required) }
\cs_gset_protected:Npn \sys_load_deprecation: { }
+\__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:n }
+\cs_gset:Npn \text_titlecase:n #1
+ { \text_titlecase_first:n { \text_lowercase:n {#1} } }
+\__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:nn }
+\cs_gset:Npn \text_titlecase:nn #1#2
+ { \text_titlecase_first:nn {#1} { \text_lowercase:n {#2} } }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n }
\cs_gset:Npn \tl_lower_case:n #1
{ \text_lowercase:n {#1} }
@@ -36022,12 +36652,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:nn }
\cs_gset:Npn \tl_upper_case:nn #1#2
{ \text_uppercase:nn {#1} {#2} }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase:n }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n }
\cs_gset:Npn \tl_mixed_case:n #1
- { \text_titlecase:n {#1} }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase:nn }
+ { \text_titlecase_first:n {#1} }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:nn }
\cs_gset:Npn \tl_mixed_case:nn #1#2
- { \text_titlecase:nn {#1} {#2} }
+ { \text_titlecase_first: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 }
@@ -36049,8 +36679,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_gset:Npn \char_lower_case:N { \text_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:n }
\cs_gset:Npn \char_upper_case:N { \text_uppercase:n }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase:n }
-\cs_gset:Npn \char_mixed_case:N { \text_titlecase:n }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n }
+\cs_gset:Npn \char_mixed_case:N { \text_titlecase_first:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:n }
\cs_gset:Npn \char_fold_case:N { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:n }