summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3kernel/l3text-case.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/l3kernel/l3text-case.dtx')
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx116
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