diff options
Diffstat (limited to 'macros/latex/contrib/l3kernel/l3text-case.dtx')
-rw-r--r-- | macros/latex/contrib/l3kernel/l3text-case.dtx | 116 |
1 files changed, 98 insertions, 18 deletions
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx index 887071e393..f236813b89 100644 --- a/macros/latex/contrib/l3kernel/l3text-case.dtx +++ b/macros/latex/contrib/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-04-29} +% \date{Released 2022-05-04} % % \maketitle % @@ -110,7 +110,15 @@ % \end{macro} % \end{macro} % -% \begin{macro}[EXP]{\@@_change_case:nnn, \@@_change_case_aux:nnn} +% \begin{macro}[EXP] +% { +% \@@_change_case:nnn , +% \@@_change_case_auxi:nnn , +% \@@_change_case_auxii:nnn +% } +% \begin{macro}[EXP]{\@@_change_case_BCP:nnn} +% \begin{macro}[EXP]{\@@_change_case_BCP:nnw} +% \begin{macro}[EXP]{\@@_change_case_BCP:nnnnw} % \begin{macro}[EXP] % { % \@@_change_case_store:n, \@@_change_case_store:o, @@ -207,12 +215,32 @@ \__kernel_exp_not:w \exp_after:wN { \exp:w - \exp_args:Ne \@@_change_case_aux:nnn + \exp_args:Ne \@@_change_case_auxi:nnn { \text_expand:n {#3} } {#1} {#2} } } -\cs_new:Npn \@@_change_case_aux:nnn #1#2#3 +\cs_new:Npn \@@_change_case_auxi:nnn #1#2#3 + { \exp_args:No \@@_change_case_BCP:nnn { \tl_to_str:n {#3} } {#1} {#2} } +\cs_new:Npx \@@_change_case_BCP:nnn #1#2#3 + { + \exp_not:N \@@_change_case_BCP:nnw + {#2} {#3} #1 \tl_to_str:n { -x- -x- } \exp_not:N \q_@@_stop + } +\use:x + { + \cs_new:Npn \exp_not:N \@@_change_case_BCP:nnw + ##1##2##3 \tl_to_str:n { -x- } ##4 \tl_to_str:n { -x- } ##5 + \exp_not:N \q_@@_stop + } + { \@@_change_case_BCP:nnnnw {#1} {#2} {#4} {#3} #3 - - \q_@@_stop } +\cs_new:Npn \@@_change_case_BCP:nnnnw #1#2#3#4#5 - #6 - #7 \q_@@_stop + { + \cs_if_exist:cTF { @@_change_case_ #2 _ #5 -x- #3 :nnnN } + { \@@_change_case_auxii:nnn {#1} {#2} { #5 -x- #3 } } + { \@@_change_case_auxii:nnn {#1} {#2} {#4} } + } +\cs_new:Npn \@@_change_case_auxii:nnn #1#2#3 { \group_align_safe_begin: \cs_if_exist_use:c { @@_change_case_boundary_ #2 _ #3 :Nnnw } @@ -269,7 +297,7 @@ \exp_after:wN { \exp:w - \@@_change_case_aux:nnn {#3} {#1} {#2} + \@@_change_case_auxii:nnn {#3} {#1} {#2} } } \@@_change_case_loop:nnw {#1} {#2} @@ -283,7 +311,7 @@ \exp_after:wN { \exp:w - \@@_change_case_aux:nnn {#3} {#1} {#2} + \@@_change_case_auxii:nnn {#3} {#1} {#2} } } \@@_change_case_loop:nnw { lower } {#2} @@ -295,7 +323,7 @@ \exp_after:wN { \exp:w - \@@_change_case_aux:nnn {#3} {#1} {#2} + \@@_change_case_auxii:nnn {#3} {#1} {#2} } } \@@_change_case_break:w @@ -731,16 +759,19 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % -% \begin{macro}[EXP]{\@@_change_case_upper_de-xeszett:nnnN, \@@_change_case_upper_de-alt:nnnN} -% \begin{macro}[EXP]{\@@_change_case_upper_de-xeszett:nnnNN} +% \begin{macro}[EXP]{\@@_change_case_upper_de-x-eszett:nnnN, \@@_change_case_upper_de-alt:nnnN} +% \begin{macro}[EXP]{\@@_change_case_upper_de-x-eszett:nnnNN} % A simple alternative version for German. % \begin{macrocode} \bool_lazy_or:nnTF { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: } { - \cs_new:cpn { @@_change_case_upper_de-xeszett:nnnN } #1#2#3#4 + \cs_new:cpn { @@_change_case_upper_de-x-eszett:nnnN } #1#2#3#4 { \int_compare:nNnTF { `#4 } = { "00DF } { @@ -753,16 +784,16 @@ } } { - \cs_new:cpx { @@_change_case_upper_de-xeszett:nnnN } #1#2#3#4 + \cs_new:cpx { @@_change_case_upper_de-x-eszett:nnnN } #1#2#3#4 { \exp_not:N \int_compare:nNnTF { `#4 } = { "00C3 } { - \exp_not:c { @@_change_case_upper_de-xeszett:nnnNN } + \exp_not:c { @@_change_case_upper_de-x-eszett:nnnNN } {#1} {#2} {#3} #4 } { \exp_not:N \@@_change_case_char:nnnN {#1} {#2} {#3} #4 } } - \cs_new:cpn { @@_change_case_upper_de-xeszett:nnnNN } #1#2#3#4#5 + \cs_new:cpn { @@_change_case_upper_de-x-eszett:nnnNN } #1#2#3#4#5 { \int_compare:nNnTF { `#5 } = { "009F } { @@ -773,15 +804,15 @@ } } \cs_new_eq:cc { @@_change_case_upper_de-alt:nnnN } - { @@_change_case_upper_de-xeszett:nnnN } + { @@_change_case_upper_de-x-eszett:nnnN } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}[EXP] -% {\@@_change_case_upper_el:nnnN, \@@_change_case_upper_el-xiota:nnnN} +% {\@@_change_case_upper_el:nnnN, \@@_change_case_upper_el-x-iota:nnnN} % \begin{macro}[EXP] -% {\@@_change_case_upper_el:N, \@@_change_case_upper_el-xiota:N} +% {\@@_change_case_upper_el:N, \@@_change_case_upper_el-x-iota:N} % \begin{macro}[EXP]{\@@_change_case_upper_el:nnn} % \begin{macro}[EXP]{\@@_change_case_upper_el:nnNw} % \begin{macro}[EXP]{\@@_change_case_upper_el:NnnN} @@ -833,14 +864,14 @@ { \@@_change_case_char:nnnN {#1} {#2} {#3} #4 } } } - \cs_new_eq:cN { @@_change_case_upper_el-xiota:nnnN } + \cs_new_eq:cN { @@_change_case_upper_el-x-iota:nnnN } \@@_change_case_upper_el:nnnN \cs_new:Npn \@@_change_case_upper_el:N #1 { \char_generate:nn { "0399 } { \char_value_catcode:n { "0399 } } } - \cs_new:cpn { @@_change_case_upper_el-xiota:N } #1 + \cs_new:cpn { @@_change_case_upper_el-x-iota:N } #1 { \exp_not:n {#1} } \cs_new:Npn \@@_change_case_upper_el:nnn #1#2#3 { \@@_change_case_upper_el:nnNw {#2} {#3} #1 } @@ -1228,6 +1259,55 @@ % % \begin{macro}[EXP] % { +% \@@_change_case_upper_hy:nnnN , +% \@@_change_case_title_hy:nnNN , +% \@@_change_case_upper_hy-x-yiwn:nnnN , +% \@@_change_case_title_hy-x-yiwn:nnNN +% } +% See \url{https://www.unicode.org/L2/L2020/20143-armenian-ech-yiwn.pdf}. +% \begin{macrocode} +\bool_lazy_or:nnT + { \sys_if_engine_luatex_p: } + { \sys_if_engine_xetex_p: } + { + \cs_new:cpn { @@_change_case_upper_hy:nnnN } #1#2#3#4 + { + \int_compare:nNnTF { `#4 } = { "0587 } + { + \@@_change_case_store:e + { + \char_generate:nn { "0535 } { \@@_char_catcode:N #4 } + \char_generate:nn { "054E } { \@@_char_catcode:N #4 } + } + \use:c { @@_change_case_char_next_ #2 :nn } + {#2} {#3} + } + { \@@_change_case_char:nnnN {#1} {#2} {#3} #4 } + } + \cs_new:cpn { @@_change_case_title_hy:nnnN } #1#2#3#4 + { + \int_compare:nNnTF { `#4 } = { "0587 } + { + \@@_change_case_store:e + { + \char_generate:nn { "0535 } { \@@_char_catcode:N #4 } + \char_generate:nn { "057E } { \@@_char_catcode:N #4 } + } + \use:c { @@_change_case_char_next_ #2 :nn } + {#2} {#3} + } + { \@@_change_case_char:nnnN {#1} {#2} {#3} #4 } + } + \cs_new:cpn { @@_change_case_upper_hy-x-yiwn:nnnN } #1#2#3#4 + { \@@_change_case_char:nnnN {#1} {#2} {#3} #4 } + \cs_new_eq:cc { @@_change_case_title_hy-x-yiwn:nnnN } + { @@_change_case_upper_hy-x-yiwm:nnnN } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[EXP] +% { % \@@_change_cases_lower_lt:nnnN , % \@@_change_cases_lower_lt_auxi:nnnN , % \@@_change_cases_lower_lt_auxii:nnnN |