[latex3-commits] [git/LaTeX3-latex3-hyperref] cleanup-patches: use locale in casing if babel is loaded (c7fa4bd)

Ulrike Fischer fischer at troubleshooting-tex.de
Sun Feb 5 17:22:27 CET 2023


Repository : https://github.com/latex3/hyperref
On branch  : cleanup-patches
Link       : https://github.com/latex3/hyperref/commit/c7fa4bdb2e797f582973f3f941f431bc999097f0

>---------------------------------------------------------------

commit c7fa4bdb2e797f582973f3f941f431bc999097f0
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date:   Sun Feb 5 17:22:27 2023 +0100

    use locale in casing if babel is loaded


>---------------------------------------------------------------

c7fa4bdb2e797f582973f3f941f431bc999097f0
 ChangeLog.txt                                      |   3 +
 hyperref.dtx                                       |  16 +++
 ...on.etex.tlg => makeuppercase-language.etex.tlg} |  70 ++++++++---
 testfiles/makeuppercase-language.luatex.tlg        | 133 +++++++++++++++++++++
 testfiles/makeuppercase-language.lvt               |  13 ++
 testfiles/makeuppercase-language.tlg               |  93 ++++++++++++++
 6 files changed, 310 insertions(+), 18 deletions(-)

diff --git a/ChangeLog.txt b/ChangeLog.txt
index 8a5face..6f189d4 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,6 @@
+2023-02-05 Ulrike Fischer/David Carlisle
+    * if babel is loaded \MakeUppercase respects the locale rules in the bookmarks.
+
 2023-02-04 Yukai Chou
     * change puenc-greek.def to puenc-greekbasic.def in docs, to sync with file
     renaming, issue #269
diff --git a/hyperref.dtx b/hyperref.dtx
index bc8d936..80d32ad 100644
--- a/hyperref.dtx
+++ b/hyperref.dtx
@@ -1038,6 +1038,7 @@
 %
 %    \cs{MakeUppercase} and \cs{MakeLowercase} do not work by expansion in
 %    legacy code but if the expl3 code is available we can handle them.
+%    If babel is used we can also make use of the language.
 %
 %    \begin{macro}{\MakeUppercaseUnsupportedInPdfStrings}
 %    \begin{macro}{\MakeLowercaseUnsupportedInPdfStrings}
@@ -1047,6 +1048,21 @@
  {
    \def\MakeUppercaseUnsupportedInPdfStrings#1{\use:e {\text_uppercase:n {#1}}}
    \def\MakeLowercaseUnsupportedInPdfStrings#1{\use:e {\text_lowercase:n {#1}}}
+   \AddToHook{package/babel/after}
+     {
+      \def\MakeUppercaseUnsupportedInPdfStrings#1
+         {\use:e 
+           {\exp_args:Ne
+              \text_uppercase:nn{\localeinfo*{tag.bcp47}}{#1}
+           }
+         }
+      \def\MakeLowercaseUnsupportedInPdfStrings#1
+         {\use:e 
+           {\exp_args:Ne
+              \text_lowercase:nn{\localeinfo*{tag.bcp47}}{#1}
+           }
+         }         
+     }
  }
 \ExplSyntaxOff
 %    \end{macrocode}
diff --git a/testfiles/38-pdfminorversion.etex.tlg b/testfiles/makeuppercase-language.etex.tlg
similarity index 50%
copy from testfiles/38-pdfminorversion.etex.tlg
copy to testfiles/makeuppercase-language.etex.tlg
index 5f4e7ea..4a075a4 100644
--- a/testfiles/38-pdfminorversion.etex.tlg
+++ b/testfiles/makeuppercase-language.etex.tlg
@@ -31,42 +31,76 @@ Completed box being shipped out [1]
 .....\hbox(0.0+0.0)x345.0
 ...\glue 25.0
 ...\glue(\lineskip) 0.0
-...\vbox(550.0+0.0)x345.0, glue set 527.9436fil
+...\vbox(550.0+0.0)x345.0, glue set 505.49962fil
 ....\write-{}
+....\write1{\babel at aux{greek}{}}
+....\special{ps:SDict begin [/Count -0/Dest (subsection.0.1) cvn/Title (\376\377\0\ETC.}
 ....\special{ps:SDict begin [/PageMode /UseOutlines/Page 1/View [/Fit] /DOCVIEW pd\ETC.}
 ....\special{ps:SDict begin [ {Catalog}<<>> /PUT pdfmark end}
 ....\special{ps:SDict begin H.S end}
 ....\special{ps:SDict begin 12 H.A end}
 ....\special{ps:SDict begin [/View [/XYZ H.V]/Dest (Doc-Start) cvn /DEST pdfmark e\ETC.}
-....\glue(\topskip) 3.55556
-....\hbox(6.44444+0.0)x345.0, glue set 324.99998fil
+....\glue(\topskip) 3.05725
+....\hbox(6.94275+2.49939)x345.0, glue set 315.83679fil
 .....\hbox(0.0+0.0)x15.0
-.....\OT1/cmr/m/n/10 5
+.....\LGR/cmr/m/n/10 x
+.....\LGR/cmr/m/n/10 x
+.....\LGR/cmr/m/n/10 x
 .....\penalty 10000
 .....\glue(\parfillskip) 0.0 plus 1.0fil
 .....\glue(\rightskip) 0.0
+....\penalty -300
+....\glue 13.98964 plus 4.3045 minus 0.86089
+....\special{ps:SDict begin H.S end}
+....\special{ps:SDict begin 12 H.A end}
+....\special{ps:SDict begin [/View [/XYZ H.V]/Dest (subsection.0.1) cvn /DEST pdfm\ETC.}
+....\penalty 10000
+....\glue -13.98964 plus -4.3045 minus -0.86089
+....\glue 13.98964 plus 4.3045 minus 0.86089
 ....\glue(\parskip) 0.0 plus 1.0
 ....\glue(\parskip) 0.0
-....\glue(\baselineskip) 5.05556
-....\hbox(6.94444+0.0)x345.0, glue set 310.5555fil
-.....\hbox(0.0+0.0)x15.0
-.....\OT1/cmr/m/n/10 b
-.....\OT1/cmr/m/n/10 l
-.....\OT1/cmr/m/n/10 u
-.....\OT1/cmr/m/n/10 b
+....\glue(\baselineskip) 3.28041
+....\hbox(8.2202+0.0)x345.0, glue set 133.49611fil
+.....\hbox(7.73145+0.0)x33.26964
+......\glue 0.0
+......\LGR/cmr/bx/n/12 0
+......\LGR/cmr/bx/n/12 .
+......\LGR/cmr/bx/n/12 1
+......\glue 14.55199
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\glue 4.94324 plus 2.33043 minus 1.55672
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
 .....\penalty 10000
 .....\glue(\parfillskip) 0.0 plus 1.0fil
 .....\glue(\rightskip) 0.0
+....\write3{\protect \BOOKMARK [2][-]{subsection.0.1}{\376\377\003\221\003\221\00\ETC.}
+....\write1{\@writefile{toc}{\protect \contentsline {subsection}{\protect \numberline \ETC.}
+....\penalty 10000
+....\glue 6.45676 plus 0.86089
 ....\glue 0.0 plus 1.0fil
 ....\glue 0.0
 ....\glue 0.0 plus 0.0001fil
-...\glue(\baselineskip) 23.55556
-...\hbox(6.44444+0.0)x345.0
-....\hbox(6.44444+0.0)x345.0, glue set 170.0fil
+...\glue(\baselineskip) 23.55713
+...\hbox(6.44287+0.0)x345.0
+....\hbox(6.44287+0.0)x345.0, glue set 170.00061fil
 .....\glue 0.0 plus 1.0fil
-.....\OT1/cmr/m/n/10 1
+.....\LGR/cmr/m/n/10 1
 .....\glue 0.0 plus 1.0fil
 .\kern 0.0
-(38-pdfminorversion.aux)
-Package rerunfilecheck Info: File `38-pdfminorversion.out' has not changed.
-(rerunfilecheck)             Checksum: D41D8CD98F00B204E9800998ECF8427E;0.
+(makeuppercase-language.aux)
+Package rerunfilecheck Info: File `makeuppercase-language.out' has not changed.
+(rerunfilecheck)             Checksum: 4C7D49BA2A1A998DB05A3F610C59B0F3;184.
diff --git a/testfiles/makeuppercase-language.luatex.tlg b/testfiles/makeuppercase-language.luatex.tlg
new file mode 100644
index 0000000..b37e5ca
--- /dev/null
+++ b/testfiles/makeuppercase-language.luatex.tlg
@@ -0,0 +1,133 @@
+This is a generated file for the l3build validation system.
+Don't change this file in any respect.
+Completed box being shipped out [1]
+\vbox(633.0+0.0)x407.0, direction TLT
+.\hbox(0.0+0.0)x0.0, direction TLT
+.\vbox(0.0+0.0)x0.0, glue set - 14.99626fil, direction TLT
+..\kern0.0
+..\kern16.0
+..\kern-1.00374
+..\hbox(0.0+0.0)x0.0, glue set - 60.99626fil, direction TLT
+...\kern0.0
+...\kern62.0
+...\kern-1.00374
+...\pdfdest name{page.1} xyz
+...\penalty 10000
+...\glue 0.0 plus 1.0fil minus 1.0fil
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\glue(\lineskip) 0.0
+.\vbox(633.0+0.0)x407.0, direction TLT
+..\glue 16.0
+..\vbox(617.0+0.0)x345.0, shifted 62.0, direction TLT
+...\vbox(12.0+0.0)x345.0, glue set 12.0fil, direction TLT
+....\glue 0.0 plus 1.0fil
+....\hbox(0.0+0.0)x345.0, direction TLT
+.....\hbox(0.0+0.0)x345.0, direction TLT
+...\glue 25.0
+...\glue(\lineskip) 0.0
+...\vbox(550.0+0.0)x345.0, glue set 505.47351fil, direction TLT
+....\write-{}
+....\write1{\babel at aux{greek}{}}
+....\pdfdest name{Doc-Start} xyz
+....\glue(\topskip) 5.69
+....\hbox(4.31+0.0)x345.0, glue set 314.16fil, direction TLT
+.....\localpar
+......\localinterlinepenalty=0
+......\localbrokenpenalty=0
+......\localleftbox=null
+......\localrightbox=null
+.....\hbox(0.0+0.0)x15.0, direction TLT
+.....\TU/lmr/m/n/10 x
+.....\TU/lmr/m/n/10 x
+.....\TU/lmr/m/n/10 x
+.....\penalty 10000
+.....\glue(\parfillskip) 0.0 plus 1.0fil
+.....\glue(\rightskip) 0.0
+....\penalty -300
+....\glue 14.00749 plus 4.31 minus 0.86198
+....\pdfdest name{subsection.0.1} xyz
+....\penalty 10000
+....\glue -14.00749 plus -4.31 minus -0.86198
+....\glue 14.00749 plus 4.31 minus 0.86198
+....\glue(\parskip) 0.0 plus 1.0
+....\glue(\parskip) 0.0
+....\glue(\baselineskip) 5.6
+....\hbox(8.4+0.144)x345.0, glue set 148.03206fil, direction TLT
+.....\localpar
+......\localinterlinepenalty=0
+......\localbrokenpenalty=0
+......\localleftbox=null
+......\localrightbox=null
+.....\hbox(7.872+0.144)x29.26799, direction TLT
+......\glue 0.0
+......\TU/lmr/bx/n/12 0
+......\TU/lmr/bx/n/12 .
+......\TU/lmr/bx/n/12 1
+......\glue 12.0
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\glue(\spaceskip) 4.5 plus 2.24774 minus 1.5015
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\discretionary (penalty 50)
+......< \TU/lmr/bx/n/12 -
+.....\TU/lmr/bx/n/12 Α
+.....\penalty 10000
+.....\glue(\parfillskip) 0.0 plus 1.0fil
+.....\glue(\rightskip) 0.0
+....\write3{\protect \BOOKMARK [2][-]{subsection.0.1}{\376\377\003\221\003\221\00\ETC.}
+....\write1{\@writefile{toc}{\protect \contentsline {subsection}{\protect \numberline \ETC.}
+....\penalty 10000
+....\glue 6.465 plus 0.86198
+....\glue -0.144
+....\glue 0.0 plus 1.0fil
+....\glue 0.0
+....\glue 0.0 plus 0.0001fil
+...\glue(\baselineskip) 23.34
+...\hbox(6.66+0.0)x345.0, direction TLT
+....\hbox(6.66+0.0)x345.0, glue set 170.0fil, direction TLT
+.....\glue 0.0 plus 1.0fil
+.....\TU/lmr/m/n/10 1
+.....\glue 0.0 plus 1.0fil
+.\kern0.0
+(makeuppercase-language.aux
+LaTeX Font Info:    Trying to load font information for OT1+lmr on input line ....
+Package rerunfilecheck Info: File `makeuppercase-language.out' has not changed.
+(rerunfilecheck)             Checksum: 4C7D49BA2A1A998DB05A3F610C59B0F3;184.
diff --git a/testfiles/makeuppercase-language.lvt b/testfiles/makeuppercase-language.lvt
new file mode 100644
index 0000000..1161741
--- /dev/null
+++ b/testfiles/makeuppercase-language.lvt
@@ -0,0 +1,13 @@
+\documentclass{article}
+\input{regression-test}
+\usepackage[greek]{babel}
+
+\usepackage{hyperref}
+
+\begin{document}
+\showoutput
+xxx
+\START
+\subsection{\MakeUppercase{ἀἁἂἃἄἅἆἇ ἈἉἊἋἌἍἎἏ}}
+
+\end{document}
\ No newline at end of file
diff --git a/testfiles/makeuppercase-language.tlg b/testfiles/makeuppercase-language.tlg
new file mode 100644
index 0000000..a2b16c2
--- /dev/null
+++ b/testfiles/makeuppercase-language.tlg
@@ -0,0 +1,93 @@
+This is a generated file for the l3build validation system.
+Don't change this file in any respect.
+Completed box being shipped out [1]
+\vbox(633.0+0.0)x407.0
+.\hbox(0.0+0.0)x0.0
+.\vbox(0.0+0.0)x0.0, glue set - 14.99626fil
+..\kern 0.0
+..\kern 16.0
+..\kern -1.00374
+..\hbox(0.0+0.0)x0.0, glue set - 60.99626fil
+...\kern 0.0
+...\kern 62.0
+...\kern -1.00374
+...\pdfdest name{page.1} xyz
+...\penalty 10000
+...\glue 0.0 plus 1.0fil minus 1.0fil
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\glue(\lineskip) 0.0
+.\vbox(633.0+0.0)x407.0
+..\glue 16.0
+..\vbox(617.0+0.0)x345.0, shifted 62.0
+...\vbox(12.0+0.0)x345.0, glue set 12.0fil
+....\glue 0.0 plus 1.0fil
+....\hbox(0.0+0.0)x345.0
+.....\hbox(0.0+0.0)x345.0
+...\glue 25.0
+...\glue(\lineskip) 0.0
+...\vbox(550.0+0.0)x345.0, glue set 505.49962fil
+....\write-{}
+....\write1{\babel at aux{greek}{}}
+....\pdfdest name{Doc-Start} xyz
+....\glue(\topskip) 3.05725
+....\hbox(6.94275+2.49939)x345.0, glue set 315.83679fil
+.....\hbox(0.0+0.0)x15.0
+.....\LGR/cmr/m/n/10 x
+.....\LGR/cmr/m/n/10 x
+.....\LGR/cmr/m/n/10 x
+.....\penalty 10000
+.....\glue(\parfillskip) 0.0 plus 1.0fil
+.....\glue(\rightskip) 0.0
+....\penalty -300
+....\glue 13.98964 plus 4.3045 minus 0.86089
+....\pdfdest name{subsection.0.1} xyz
+....\penalty 10000
+....\glue -13.98964 plus -4.3045 minus -0.86089
+....\glue 13.98964 plus 4.3045 minus 0.86089
+....\glue(\parskip) 0.0 plus 1.0
+....\glue(\parskip) 0.0
+....\glue(\baselineskip) 3.28041
+....\hbox(8.2202+0.0)x345.0, glue set 133.49611fil
+.....\hbox(7.73145+0.0)x33.26964
+......\glue 0.0
+......\LGR/cmr/bx/n/12 0
+......\LGR/cmr/bx/n/12 .
+......\LGR/cmr/bx/n/12 1
+......\glue 14.55199
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\glue 4.94324 plus 2.33043 minus 1.55672
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\LGR/cmr/bx/n/12 A
+.....\penalty 10000
+.....\glue(\parfillskip) 0.0 plus 1.0fil
+.....\glue(\rightskip) 0.0
+....\write3{\protect \BOOKMARK [2][-]{subsection.0.1}{\376\377\003\221\003\221\00\ETC.}
+....\write1{\@writefile{toc}{\protect \contentsline {subsection}{\protect \numberline \ETC.}
+....\penalty 10000
+....\glue 6.45676 plus 0.86089
+....\glue 0.0 plus 1.0fil
+....\glue 0.0
+....\glue 0.0 plus 0.0001fil
+...\glue(\baselineskip) 23.55713
+...\hbox(6.44287+0.0)x345.0
+....\hbox(6.44287+0.0)x345.0, glue set 170.00061fil
+.....\glue 0.0 plus 1.0fil
+.....\LGR/cmr/m/n/10 1
+.....\glue 0.0 plus 1.0fil
+.\kern 0.0
+(makeuppercase-language.aux)
+Package rerunfilecheck Info: File `makeuppercase-language.out' has not changed.
+(rerunfilecheck)             Checksum: 4C7D49BA2A1A998DB05A3F610C59B0F3;184.





More information about the latex3-commits mailing list.