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.dtx43
1 files changed, 31 insertions, 12 deletions
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index 0b32e63997..691d6a8f06 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-01}
+% \date{Released 2021-06-18}
%
% \maketitle
%
@@ -163,10 +163,15 @@
% \begin{macro}[EXP]
% {\@@_change_case_char_title:nN, \@@_change_case_char_titleonly:nN}
% \begin{macro}[EXP]{\@@_change_case_char_title:nnnN}
-% \begin{macro}[EXP]{\@@_change_case_char:nnnN, \@@_change_case_char_aux:nnnN}
+% \begin{macro}[EXP]
+% {
+% \@@_change_case_char:nnnN ,
+% \@@_change_case_char_auxi:nnnN ,
+% \@@_change_case_char_auxii:nnnN
+% }
% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nnnNN}
% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nnnNNN}
-% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nnnNNNNN}
+% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nnnNNNN}
% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nnnn}
% \begin{macro}[EXP]
% {
@@ -608,6 +613,7 @@
% are to deal with. Those can then be grabbed to reconstruct the full
% Unicode character, which is then used in a lookup. (As will become
% obvious below, there is no intention here of covering all of Unicode.)
+% For (u)p-\TeX{} there are a limited number of tokens we can touch.
% \begin{macrocode}
\cs_new:Npn \@@_change_case_char:nnnN #1#2#3#4
{
@@ -623,7 +629,7 @@
{ \sys_if_engine_luatex_p: }
{ \sys_if_engine_xetex_p: }
{
- \cs_new_eq:NN \@@_change_case_char_aux:nnnN
+ \cs_new_eq:NN \@@_change_case_char_auxi:nnnN
\@@_change_case_char:nnnN
\cs_gset:Npn \@@_change_case_char:nnnN #1#2#3#4
{
@@ -631,20 +637,33 @@
{
\int_compare:nNnTF { `#4 } < { "E0 }
{ \@@_change_case_char_UTFviii:nnnNN }
- {
- \int_compare:nNnTF { `#4 } < { "F0 }
- { \@@_change_case_char_UTFviii:nnnNNN }
- { \@@_change_case_char_UTFviii:nnnNNNN }
- }
- {#1} {#2} {#3} #4
+ { \@@_change_case_char_auxii:nnnN }
}
- { \@@_change_case_char_aux:nnnN {#1} {#2} {#3} #4 }
+ { \@@_change_case_char_auxi:nnnN }
+ {#1} {#2} {#3} #4
}
+ \sys_if_engine_pdftex:TF
+ {
+ \cs_new:Npn \@@_change_case_char_auxii:nnnN #1#2#3#4
+ {
+ \int_compare:nNnTF { `#4 } < { "F0 }
+ { \@@_change_case_char_UTFviii:nnnNNN }
+ { \@@_change_case_char_UTFviii:nnnNNNN }
+ {#1} {#2} {#3} #4
+ }
+ }
+ {
+ \cs_new:Npn \@@_change_case_char_auxii:nnnN #1#2#3#4
+ {
+ \@@_change_case_store:n {#4}
+ \use:c { @@_change_case_char_next_ #2 :nn } {#2} {#3}
+ }
+ }
\cs_new:Npn \@@_change_case_char_UTFviii:nnnNN #1#2#3#4#5
{ \@@_change_case_char_UTFviii:nnnn {#1} {#2} {#3} {#4#5} }
\cs_new:Npn \@@_change_case_char_UTFviii:nnnNNN #1#2#3#4#5#6
{ \@@_change_case_char_UTFviii:nnnn {#1} {#2} {#3} {#4#5#6} }
- \cs_new:Npn \@@_change_case_char_UTFviii:nnnNNNNN #1#2#3#4#5#6#7
+ \cs_new:Npn \@@_change_case_char_UTFviii:nnnNNNN #1#2#3#4#5#6#7
{ \@@_change_case_char_UTFviii:nnnn {#1} {#2} {#3} {#4#5#6#7} }
\cs_new:Npn \@@_change_case_char_UTFviii:nnnn #1#2#3#4
{