diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex | 209 |
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 |