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.tex209
1 files changed, 158 insertions, 51 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index cc7f3c32b25..4d4e1a5e850 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -71,7 +71,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-06-05}%
+\def\ExplFileDate{2023-06-16}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -11418,10 +11418,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__file_full_name_aux:Nnn #1#2#3
{
\exp_args:Ne \__file_full_name_aux:nN
- {
- \exp_args:Ne \__file_full_name_slash:n
- { \tl_to_str:n {#3} } #2
- }
+ { \__file_full_name_slash:n {#3} #2 }
#1
}
\cs_new:Npn \__file_full_name_slash:n #1
@@ -32543,6 +32540,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_not:V \l_text_math_arg_tl
\exp_not:V \l_text_expand_exclude_tl
+ \exp_not:V \l_text_case_exclude_arg_tl
}
#1
}
@@ -33322,6 +33320,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1
}
\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
{
\__text_codepoint_compare:nNnTF {#4} = { "00DF }
@@ -33444,7 +33444,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\bool_lazy_or:nnTF
{ \__text_change_case_if_greek_accent_p:n {#6} }
- { \__text_change_case_if_greek_diacritic_p:n {#6} }
+ { \__text_change_case_if_greek_breathing_p:n {#6} }
{
\__text_change_case_upper_el_ypogegrammeni:nnnnnw
{#1} {#2} {#3} {#4#6} {#5}
@@ -33465,7 +33465,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__text_change_case_if_greek_accent:nTF {#4}
{ \__text_change_case_upper_el_hiatus:nnnw {#2} {#3} {#1} }
{
- \__text_change_case_if_greek_diacritic:nTF {#4}
+ \__text_change_case_if_greek_breathing:nTF {#4}
{ \__text_change_case_upper_el:nnn {#1} {#2} {#3} }
{
\__text_codepoint_compare:nNnTF {#4} = { "0345 }
@@ -33475,9 +33475,18 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__text_change_case_loop:nnw {#2} {#3}
}
{
- \__text_change_case_store:e
- { \__text_change_case_codepoint:nn { upper } {#1} }
- \__text_change_case_loop:nnw {#2} {#3} #4
+ \__text_change_case_if_greek_stress:nTF {#4}
+ {
+ \__text_change_case_store:e
+ { \__text_change_case_upper_el_stress:nn {#1} {#4} }
+ \__text_change_case_loop:nnw {#2} {#3}
+
+ }
+ {
+ \__text_change_case_store:e
+ { \__text_change_case_codepoint:nn { upper } {#1} }
+ \__text_change_case_loop:nnw {#2} {#3} #4
+ }
}
}
}
@@ -33548,26 +33557,60 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \__text_change_case_upper_el_ypogegrammeni:n #1
{
- \int_case:nnF
- { \__text_codepoint_from_chars:Nw #1 }
+ \exp_args:Ne \__text_change_case_generate:n
{
- { "0391 } { \__text_change_case_upper_el_ypogegrammeni_aux:n { "1FBC } }
- { "03B1 } { \__text_change_case_upper_el_ypogegrammeni_aux:n { "1FBC } }
- { "0397 } { \__text_change_case_upper_el_ypogegrammeni_aux:n { "1FCC } }
- { "03B7 } { \__text_change_case_upper_el_ypogegrammeni_aux:n { "1FCC } }
- { "03A9 } { \__text_change_case_upper_el_ypogegrammeni_aux:n { "1FFC } }
- { "03C9 } { \__text_change_case_upper_el_ypogegrammeni_aux:n { "1FFC } }
+ \int_case:nn
+ { \__text_codepoint_from_chars:Nw #1 }
+ {
+ { "0391 } { "1FBC }
+ { "03B1 } { "1FBC }
+ { "0397 } { "1FCC }
+ { "03B7 } { "1FCC }
+ { "03A9 } { "1FFC }
+ { "03C9 } { "1FFC }
+ }
}
- { \__text_change_case_upper_el_ypogegrammeni:n {#1} }
}
-\cs_new:Npn \__text_change_case_upper_el_ypogegrammeni_aux:n #1
- { \codepoint_generate:nn {#1} { \char_value_catcode:n {#1} } }
\cs_new:cpn { __text_change_case_upper_el-x-iota_ypogegrammeni:n } #1
{
\__text_change_case_codepoint:nn { upper } {#1}
\codepoint_generate:nn { "0399 }
{ \char_value_catcode:n { "0399 } }
}
+\cs_new:Npn \__text_change_case_upper_el_stress:nn #1#2
+ {
+ \exp_args:Ne \__text_change_case_generate:n
+ {
+ \int_case:nn
+ { \__text_codepoint_from_chars:Nw #2 }
+ {
+ { "0304 }
+ {
+ \int_case:nn { \__text_codepoint_from_chars:Nw #1 }
+ {
+ { "0391 } { "1FB9 }
+ { "03B1 } { "1FB9 }
+ { "0399 } { "1FD9 }
+ { "03B9 } { "1FD9 }
+ { "03A5 } { "1FE9 }
+ { "03C5 } { "1FE9 }
+ }
+ }
+ { "0306 }
+ {
+ \int_case:nn { \__text_codepoint_from_chars:Nw #1 }
+ {
+ { "0391 } { "1FB8 }
+ { "03B1 } { "1FB8 }
+ { "0399 } { "1FD8 }
+ { "03B9 } { "1FD8 }
+ { "03A5 } { "1FE8 }
+ { "03C5 } { "1FE8 }
+ }
+ }
+ }
+ }
+ }
\cs_new:Npn \__text_change_case_upper_el_gobble:nnw
#1#2#3 \q__text_recursion_stop
{
@@ -33590,7 +33633,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\bool_lazy_or:nnTF
{ \__text_change_case_if_greek_accent_p:n {#3} }
- { \__text_change_case_if_greek_diacritic_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 }
}
@@ -33734,13 +33777,31 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
}
-\prg_new_conditional:Npnn \__text_change_case_if_greek_diacritic:n
+\prg_new_conditional:Npnn \__text_change_case_if_greek_breathing:n
#1 { TF , p }
{
- \exp_args:Nf \__text_change_case_if_greek_diacritic:n
+ \exp_args:Nf \__text_change_case_if_greek_breathing:n
{ \int_eval:n { \__text_codepoint_from_chars:Nw #1 } }
}
-\cs_new:Npn \__text_change_case_if_greek_diacritic:n #1
+\cs_new:Npn \__text_change_case_if_greek_breathing:n #1
+ {
+ \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:
+ \prg_return_false:
+ \fi:
+ \fi:
+ }
+\prg_new_conditional:Npnn \__text_change_case_if_greek_stress:n
+ #1 { TF , p }
+ {
+ \exp_args:Nf \__text_change_case_if_greek_stress:n
+ { \int_eval:n { \__text_codepoint_from_chars:Nw #1 } }
+ }
+\cs_new:Npn \__text_change_case_if_greek_stress:n #1
{
\if_int_compare:w #1 = "0304 \exp_stop_f:
\prg_return_true:
@@ -33748,15 +33809,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\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:
- \prg_return_false:
- \fi:
- \fi:
+ \prg_return_false:
\fi:
\fi:
}
@@ -33836,42 +33889,96 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__text_codepoint_compare_p:nNn {#3} = { "1F2A } }
}
{ \__text_change_case_boundary_upper_el:nnnw {#1} {#2} {#3} }
- { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ { \__text_change_case_breathing:nnn {#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_loop:nnw {#1} {#2} #3 }
{
\__text_change_case_store:e
{
\codepoint_generate:nn { "0389 }
{ \__text_change_case_catcode:nn {#3} { "0389 } }
}
- \__text_change_case_loop:nnw
+ \__text_change_case_loop:nnw {#1} {#2}
}
- {#1} {#2} #4 \q__text_recursion_stop
+ #4 \q__text_recursion_stop
}
-\cs_new:Npn \__text_change_case_boundary_upper_el:nnnN #1#2#3#4
+\cs_new:Npn \__text_change_case_breathing:nnn #1#2#3
{
- \bool_lazy_or:nnTF
- { \token_if_letter_p:N #4 }
- {
- \bool_lazy_and_p:nn
- { \token_if_active_p:N #4 }
- { ! \int_compare_p:nNn {`#4} < { "80 } }
- }
- { \__text_change_case_loop:nnw {#2} {#3} #1#4 }
+ \__text_change_case_if_greek:nTF {#3}
{
- \__text_change_case_store:e
+ \exp_args:Ne \__text_change_case_breathing:nnnn
{
- \codepoint_generate:nn { "0389 }
- { \__text_change_case_catcode:nn {#1} { "0389 } }
+ \codepoint_to_nfd:n
+ { \__text_codepoint_from_chars:Nw #3 }
}
- \__text_change_case_loop:nnw {#2} {#3} #4
+ {#1} {#2} {#3}
+ }
+ { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ }
+\cs_new:Npn \__text_change_case_breathing:nnnn #1#2#3#4
+ {
+ \__text_codepoint_process:nN
+ { \__text_change_case_breathing:nnnnw {#2} {#3} {#4} }
+ #1 \q_mark
+ }
+\cs_new:Npn \__text_change_case_breathing:nnnnw #1#2#3#4#5 \q_mark
+ {
+ \tl_if_blank:nTF {#5}
+ { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ {
+ \__text_codepoint_process:nN
+ { \__text_change_case_breathing:nnnnnw {#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 {#6}
+ {
+ \__text_change_case_breathing_aux:nnnnn
+ {#1} {#2} {#3} {#4} {#5}
+ }
+ {
+ \__text_change_case_breathing_aux:nnnnn
+ {#1} {#2} {#3} {#4} {#6}
+ }
+ }
+\cs_new:Npn \__text_change_case_breathing_aux:nnnnn #1#2#3#4#5
+ {
+ \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 }
+ }
+\cs_new:Npn \__text_change_case_breathing_aux:nnnw #1#2#3#4
+ \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
+ }
+\cs_new:Npn \__text_change_case_breathing_aux:nnN #1#2#3
+ {
+ \__text_codepoint_process:nN
+ { \__text_change_case_breathing_dialytika:nnn {#1} {#2} } #3
+ }
+\cs_new:Npn \__text_change_case_breathing_dialytika:nnn #1#2#3
+ {
+ \__text_change_case_if_takes_dialytika:nTF {#3}
+ {
+ \__text_change_case_upper_el_dialytika:n {#3}
+ \__text_change_case_loop:nnw {#1} {#2}
+ }
+ { \__text_change_case_loop:nnw {#1} {#2} #3 }
+ }
\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