diff options
Diffstat (limited to 'Master')
90 files changed, 471 insertions, 212 deletions
diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md index 2ad6244fbd3..1be2493081d 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md @@ -7,6 +7,18 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2023-06-16] + +### Changed +- Exclude entries in `\l_text_case_exclude_arg_tl` from expansion in `\text_expand:n` + (latex3/latex2e\#904) +- Generate _dialytika_ if appropriate when uppercasing Greek words starting with a + vowel taking a breathing mark (issue \#1228) +- Retain stress diacritics when uppercasing Greek (issue \#1230) +- Expand (partial) paths in `\l_file_search_path_seq` and `\input@path` + (see latex3/latex2e\#1086) + + ## [2023-06-05] ### Added @@ -1451,7 +1463,8 @@ this project uses date-based 'snapshot' version identifiers. - Step functions have been added for dim variables, e.g. `\dim_step_inline:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2023-06-05...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2023-06-16...HEAD +[2023-06-16]: https://github.com/latex3/latex3/compare/2023-06-05...2023-06-16 [2023-06-05]: https://github.com/latex3/latex3/compare/2023-05-22...2023-06-05 [2023-05-22]: https://github.com/latex3/latex3/compare/2023-05-15...2023-05-22 [2023-05-15]: https://github.com/latex3/latex3/compare/2023-05-11...2023-05-15 diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md index e340b712e07..28b328f366b 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/README.md +++ b/Master/texmf-dist/doc/latex/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2023-06-05 +Release 2023-06-16 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf Binary files differindex abe1806c378..cdb6b5dd999 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf Binary files differindex 4c97703ecea..4071671ac9b 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex index 48deef820b2..b64664d912e 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex @@ -62,7 +62,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2023-06-05} +\date{Released 2023-06-16} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf Binary files differindex 4de407b4bf0..75c197361dc 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf Binary files differindex cd86234a1be..e50d3bcbec3 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf Binary files differindex 9c485f66f18..85243324946 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf Binary files differindex 50bb4103ffa..a6a5db123e5 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf Binary files differindex a0c6f3f6e4c..697d13b8fa3 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf Binary files differindex 2ebae6016e5..cb6dd5cde74 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf Binary files differindex a61d3e009f0..63dac876c02 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf Binary files differindex b750ca4d87c..d000bb7371f 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf Binary files differindex 5e01a63e751..cab18a2c4c6 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf Binary files differindex 6e0298e5a2e..39467cdce56 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf Binary files differindex 35b0094b1d3..be0e010f72c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf Binary files differindex dcf4d4ed808..3072a506c04 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf Binary files differindex aff50d892be..38375df8965 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf Binary files differindex 7d4d2e520ef..04070b2e150 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf Binary files differindex 86ef749e1ec..ac8097cb3a6 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf Binary files differindex bde496ca75c..7aed5611003 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf Binary files differindex 07265313965..a0751c9b369 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex index 8840a0aca60..d1a85b937e5 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2023-06-05} +\date{Released 2023-06-16} \begin{document} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf Binary files differindex 3fef1f71e03..f0dbdcdba5c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex index 7dc2f1b9bfb..8c8d338096f 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2023-06-05} +\date{Released 2023-06-16} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf Binary files differindex abcc44bc3a3..d740b82b462 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex index 5fe65ecce40..aa996351fe6 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2023-06-05} +\date{Released 2023-06-16} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf Binary files differindex 5657c614fb7..e16a458212e 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex index 5e66150ee13..1d7c4a54182 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex @@ -53,7 +53,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2023-06-05} +\date{Released 2023-06-16} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 9066920e355..d95bda9fa94 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2023-06-05}% +\def\ExplFileDate{2023-06-16}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index da72c5cba95..309f26d5991 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 152ace24f6c..e1b8e779ee6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index 093a1b23cd6..966e1b29e3e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index fb60287e470..272f93e92cf 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx index f4e8088e3d8..da533ae3097 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index 4d712152b5e..42825a59f5b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index 39fdb7700e4..737538a75e0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx index fd20fd79038..ec2010b1323 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx index fe3e669c560..ca462b79d8d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index 806c62670e7..7fb8e5c631c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 58778973a49..938715c87aa 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -85,7 +85,7 @@ and all files in that bundle must be distributed together. % require you to do updates, if the class changes.}} % % \author{\Team} -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % \maketitle % \tableofcontents % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index 3d4536d5a43..f2a689c3d96 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 8e52b526595..76bb8b0605d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 5e2d8ba74d5..0fce245ddaf 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % @@ -690,12 +690,11 @@ % |--jobname|, for example). % \end{variable} % -% \begin{variable}[added = 2017-06-18]{\l_file_search_path_seq} +% \begin{variable}[added = 2017-06-18, updated = 2023-06-15] +% {\l_file_search_path_seq} % Each entry is the path to a directory which should be searched when -% seeking a file. Each path can be relative or absolute, and should -% not include the trailing slash. The entries are not expanded when -% used so may contain active characters but should not feature any -% variable content. Spaces need not be quoted. +% seeking a file. Each path can be relative or absolute, and need +% not include the trailing slash. Spaces need not be quoted. % % \begin{texnote} % When working as a package in \LaTeXe{}, \pkg{expl3} will @@ -2962,10 +2961,7 @@ \cs_new:Npn \@@_full_name_aux:Nnn #1#2#3 { \exp_args:Ne \@@_full_name_aux:nN - { - \exp_args:Ne \@@_full_name_slash:n - { \tl_to_str:n {#3} } #2 - } + { \@@_full_name_slash:n {#3} #2 } #1 } \cs_new:Npn \@@_full_name_slash:n #1 diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index 9640a6d2db6..02543c36e5a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index ae30092b63f..abcfead9949 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx index 025a0af647a..99aa9279baf 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index 875027466d0..dc6a92e10cc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index 6651d7931c6..4cf841cf235 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index 42a6ebbbf1b..df680daaff1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index 6e57dbc01b9..39f16674c9d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index 4f58336b126..09d901bd195 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 84ca08a5459..afaa7a6218b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index 0bb4a9209a0..e8a5274cfb0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index 1ceeb011efc..65f7d3e99a3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index d8c7b6aef56..8273fa4ef4d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx index 6cd98b62d9b..6bfab36b219 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index 3c7144eb284..9a2069c11d8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index afc55ae4af8..bba4b879be4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index a5bf5279a2a..9be9793d931 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index 1eeec96a3d4..bfe8307d049 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index 471c3c52dca..765ed7fd957 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index d8cec60f8fc..086ee85b9c7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx index 5e199990a48..62e88766bbb 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index 2735f6efa26..19e2adde955 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 88bf2d8b554..311f82e58eb 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index 9158270a84b..31e4154a38e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx index c223938d2a6..9f21d2a4105 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index 27a383899b1..d82d8a4eed9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index d254e432808..96c629fcbf5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index bc18bd95a90..a0a27fa857a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index a87896011a8..c3642680123 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index 25b316dfcdf..718d14fd5ee 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 23d32a1b871..875acbcc279 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index bab6a36448e..774bdb0ab47 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx index ed4e866d736..43116a29e41 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 473e55f6d04..98839638462 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index 6b7aab34889..b27cc1d8235 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx index a69a695f493..f761831a6b7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % @@ -935,6 +935,14 @@ % \end{macro} % \end{macro} % +% \begin{macro}[EXP]{\@@_change_case_generate:n} +% A utility. +% \begin{macrocode} +\cs_new:Npn \@@_change_case_generate:n #1 + { \codepoint_generate:nn {#1} { \char_value_catcode:n {#1} } } +% \end{macrocode} +% \end{macro} +% % \begin{macro}[EXP] % {\@@_change_case_upper_de-x-eszett:nnnn, \@@_change_case_upper_de-alt:nnnn} % A simple alternative version for German. @@ -979,25 +987,22 @@ % \begin{macro}[EXP] % { % \@@_change_case_upper_el_ypogegrammeni:n , -% \@@_change_case_upper_el-x-iota_ypogegrammeni:n , -% \@@_change_case_upper_el_ypogegrammeni_aux:n +% \@@_change_case_upper_el-x-iota_ypogegrammeni:n % } +% \begin{macro}[EXP]{\@@_change_case_upper_el_stress:nn} % \begin{macro}[EXP]{\@@_change_case_upper_el_gobble:nnw} % \begin{macro}[EXP]{\@@_change_case_upper_el_gobble:nnN} % \begin{macro}[EXP]{\@@_change_case_upper_el_gobble:nnn} -% \begin{macro}[EXP,pTF]{\@@_change_case_if_greek:n} -% \begin{macro}[EXP]{\@@_change_case_if_greek:n} -% \begin{macro}[EXP,pTF]{\@@_change_case_if_greek:n} -% \begin{macro}[EXP,pTF]{\@@_change_case_if_greek_spacing_diacritic:n} -% \begin{macro}[EXP]{\@@_change_case_if_greek_spacing_diacritic:n} -% \begin{macro}[EXP,pTF]{\@@_change_case_if_greek_accent:n} -% \begin{macro}[EXP]{\@@_change_case_if_greek_accent:n} -% \begin{macro}[EXP,pTF]{\@@_change_case_if_greek_diacritic:n} -% \begin{macro}[EXP]{\@@_change_case_if_greek_diacritic:n} -% \begin{macro}[EXP,TF]{\@@_change_case_if_takes_dialytika:n} -% \begin{macro}[EXP]{\@@_change_case_if_takes_dialytika:n} -% \begin{macro}[EXP,TF]{\@@_change_case_if_takes_ypogegrammeni:n} -% \begin{macro}[EXP]{\@@_change_case_if_takes_ypogegrammeni:n} +% \begin{macro}[EXP,noTF] +% { +% \@@_change_case_if_greek:n , +% \@@_change_case_if_greek_spacing_diacritic:n , +% \@@_change_case_if_greek_accent:n , +% \@@_change_case_if_greek_breathing:n , +% \@@_change_case_if_greek_stress:n , +% \@@_change_case_if_takes_dialytika:n , +% \@@_change_case_if_takes_ypogegrammeni:n +% } % For Greek uppercasing, we need to know if characters \emph{in the Greek % range} have accents. That means doing a \textsc{nfd} conversion first, then % starting a search. As described by the Unicode \textsc{cldr}, Greek accents @@ -1131,7 +1136,7 @@ { \bool_lazy_or:nnTF { \@@_change_case_if_greek_accent_p:n {#6} } - { \@@_change_case_if_greek_diacritic_p:n {#6} } + { \@@_change_case_if_greek_breathing_p:n {#6} } { \@@_change_case_upper_el_ypogegrammeni:nnnnnw {#1} {#2} {#3} {#4#6} {#5} @@ -1152,7 +1157,7 @@ \@@_change_case_if_greek_accent:nTF {#4} { \@@_change_case_upper_el_hiatus:nnnw {#2} {#3} {#1} } { - \@@_change_case_if_greek_diacritic:nTF {#4} + \@@_change_case_if_greek_breathing:nTF {#4} { \@@_change_case_upper_el:nnn {#1} {#2} {#3} } { \@@_codepoint_compare:nNnTF {#4} = { "0345 } @@ -1162,15 +1167,24 @@ \@@_change_case_loop:nnw {#2} {#3} } { - \@@_change_case_store:e - { \@@_change_case_codepoint:nn { upper } {#1} } - \@@_change_case_loop:nnw {#2} {#3} #4 + \@@_change_case_if_greek_stress:nTF {#4} + { + \@@_change_case_store:e + { \@@_change_case_upper_el_stress:nn {#1} {#4} } + \@@_change_case_loop:nnw {#2} {#3} + + } + { + \@@_change_case_store:e + { \@@_change_case_codepoint:nn { upper } {#1} } + \@@_change_case_loop:nnw {#2} {#3} #4 + } } } } } } -% \end{macrocode} +% \end{macrocode} % We handle \emph{dialytika} in parts as it's also needed for the hiatus. % We know only two letters take it, so we can shortcut here on the second % part of the tests. @@ -1247,20 +1261,20 @@ % \begin{macrocode} \cs_new:Npn \@@_change_case_upper_el_ypogegrammeni:n #1 { - \int_case:nnF - { \@@_codepoint_from_chars:Nw #1 } + \exp_args:Ne \@@_change_case_generate:n { - { "0391 } { \@@_change_case_upper_el_ypogegrammeni_aux:n { "1FBC } } - { "03B1 } { \@@_change_case_upper_el_ypogegrammeni_aux:n { "1FBC } } - { "0397 } { \@@_change_case_upper_el_ypogegrammeni_aux:n { "1FCC } } - { "03B7 } { \@@_change_case_upper_el_ypogegrammeni_aux:n { "1FCC } } - { "03A9 } { \@@_change_case_upper_el_ypogegrammeni_aux:n { "1FFC } } - { "03C9 } { \@@_change_case_upper_el_ypogegrammeni_aux:n { "1FFC } } + \int_case:nn + { \@@_codepoint_from_chars:Nw #1 } + { + { "0391 } { "1FBC } + { "03B1 } { "1FBC } + { "0397 } { "1FCC } + { "03B7 } { "1FCC } + { "03A9 } { "1FFC } + { "03C9 } { "1FFC } + } } - { \@@_change_case_upper_el_ypogegrammeni:n {#1} } } -\cs_new:Npn \@@_change_case_upper_el_ypogegrammeni_aux:n #1 - { \codepoint_generate:nn {#1} { \char_value_catcode:n {#1} } } \cs_new:cpn { @@_change_case_upper_el-x-iota_ypogegrammeni:n } #1 { \@@_change_case_codepoint:nn { upper } {#1} @@ -1268,6 +1282,44 @@ { \char_value_catcode:n { "0399 } } } % \end{macrocode} +% We choose to retain stress diacritics, but we also need to recombine +% them for pdf\TeX{}. That is handled here. +% \begin{macrocode} +\cs_new:Npn \_@@_change_case_upper_el_stress:nn #1#2 + { + \exp_args:Ne \@@_change_case_generate:n + { + \int_case:nn + { \@@_codepoint_from_chars:Nw #2 } + { + { "0304 } + { + \int_case:nn { \@@_codepoint_from_chars:Nw #1 } + { + { "0391 } { "1FB9 } + { "03B1 } { "1FB9 } + { "0399 } { "1FD9 } + { "03B9 } { "1FD9 } + { "03A5 } { "1FE9 } + { "03C5 } { "1FE9 } + } + } + { "0306 } + { + \int_case:nn { \@@_codepoint_from_chars:Nw #1 } + { + { "0391 } { "1FB8 } + { "03B1 } { "1FB8 } + { "0399 } { "1FD8 } + { "03B9 } { "1FD8 } + { "03A5 } { "1FE8 } + { "03C5 } { "1FE8 } + } + } + } + } + } +% \end{macrocode} % For clearing out trailing combining marks after we have dealt with % the first one. % \begin{macrocode} @@ -1293,7 +1345,7 @@ { \bool_lazy_or:nnTF { \@@_change_case_if_greek_accent_p:n {#3} } - { \@@_change_case_if_greek_diacritic_p:n {#3} } + { \@@_change_case_if_greek_breathing_p:n {#3} } { \@@_change_case_upper_el_gobble:nnw {#1} {#2} } { \@@_change_case_loop:nnw {#1} {#2} #3 } } @@ -1443,13 +1495,31 @@ \fi: \fi: } -\prg_new_conditional:Npnn \@@_change_case_if_greek_diacritic:n +\prg_new_conditional:Npnn \@@_change_case_if_greek_breathing:n #1 { TF , p } { - \exp_args:Nf \@@_change_case_if_greek_diacritic:n + \exp_args:Nf \@@_change_case_if_greek_breathing:n { \int_eval:n { \@@_codepoint_from_chars:Nw #1 } } } -\cs_new:Npn \@@_change_case_if_greek_diacritic:n #1 +\cs_new:Npn \@@_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 \@@_change_case_if_greek_stress:n + #1 { TF , p } + { + \exp_args:Nf \@@_change_case_if_greek_stress:n + { \int_eval:n { \@@_codepoint_from_chars:Nw #1 } } + } +\cs_new:Npn \@@_change_case_if_greek_stress:n #1 { \if_int_compare:w #1 = "0304 \exp_stop_f: \prg_return_true: @@ -1457,15 +1527,7 @@ \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: } @@ -1534,26 +1596,15 @@ % \end{macro} % \end{macro} % \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} % \begin{macro}[EXP] % {\@@_change_case_boundary_upper_el:Nnnw, \@@_change_case_boundary_upper_el-x-iota:Nnnw} % \begin{macro}[EXP]{\@@_change_case_boundary_upper_el:nnN} % \begin{macro}[EXP]{\@@_change_case_boundary_upper_el:nnn} % \begin{macro}[EXP]{\@@_change_case_boundary_upper_el:nnnw} -% \begin{macro}[EXP]{\@@_change_case_boundary_upper_el:nnnN} -% There is one special case in Greek that needs to be picked up based on -% being an isolated letter. We do that using a test similar to final sigma, -% but it has to fire off from the space grabber. +% There is one things that need special treatment at start start of +% words in Greek. For an isolated accent \emph{eta}, +% which is handled by seeing if we have exactly one of the affected +% codepoints followed by a space or brace group. % \begin{macrocode} \cs_new:Npn \@@_change_case_boundary_upper_el:Nnnw #1#2#3#4 \q_@@_recursion_stop @@ -1585,43 +1636,133 @@ { \@@_codepoint_compare_p:nNn {#3} = { "1F2A } } } { \@@_change_case_boundary_upper_el:nnnw {#1} {#2} {#3} } - { \@@_change_case_loop:nnw {#1} {#2} #3 } + { \@@_change_case_breathing:nnn {#1} {#2} {#3} } } \cs_new:Npn \@@_change_case_boundary_upper_el:nnnw #1#2#3#4 \q_@@_recursion_stop { \tl_if_head_is_N_type:nTF {#4} - { \@@_change_case_boundary_upper_el:nnnN {#3} } + { \@@_change_case_loop:nnw {#1} {#2} #3 } { \@@_change_case_store:e { \codepoint_generate:nn { "0389 } { \@@_change_case_catcode:nn {#3} { "0389 } } } - \@@_change_case_loop:nnw + \@@_change_case_loop:nnw {#1} {#2} } - {#1} {#2} #4 \q_@@_recursion_stop + #4 \q_@@_recursion_stop } -\cs_new:Npn \@@_change_case_boundary_upper_el:nnnN #1#2#3#4 +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}[EXP]{\@@_change_case_breathing:nnn} +% \begin{macro}[EXP]{\@@_change_case_breathing:nnnn} +% \begin{macro}[EXP]{\@@_change_case_breathing:nnnnw} +% \begin{macro}[EXP]{\@@_change_case_breathing:nnnnnw} +% \begin{macro}[EXP]{\@@_change_case_breathing_aux:nnnnn} +% \begin{macro}[EXP]{\@@_change_case_breathing_aux:nnnw} +% \begin{macro}[EXP]{\@@_change_case_breathing_aux:nnN} +% \begin{macro}[EXP]{\@@_change_case_breathing_dialytika:nnn} +% In Greek, breathing diacritics are normally dropped when uppercasing: +% see the code for the general case. However, for the first character +% of a word, if there is a breather \emph{and} the next character takes +% a \emph{dialytika}, it needs to be added. We start by checking if +% the current codepoint is in the Greek range, then decomposing. +% \begin{macrocode} +\cs_new:Npn \@@_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 } } - } - { \@@_change_case_loop:nnw {#2} {#3} #1#4 } + \@@_change_case_if_greek:nTF {#3} { - \@@_change_case_store:e + \exp_args:Ne \@@_change_case_breathing:nnnn { - \codepoint_generate:nn { "0389 } - { \@@_change_case_catcode:nn {#1} { "0389 } } + \codepoint_to_nfd:n + { \@@_codepoint_from_chars:Nw #3 } } - \@@_change_case_loop:nnw {#2} {#3} #4 + {#1} {#2} {#3} } + { \@@_change_case_loop:nnw {#1} {#2} #3 } + } +\cs_new:Npn \@@_change_case_breathing:nnnn #1#2#3#4 + { + \@@_codepoint_process:nN + { \@@_change_case_breathing:nnnnw {#2} {#3} {#4} } + #1 \q_mark } % \end{macrocode} +% Normal form decomposition will always give between one and three +% codepoints. Luckily, the two breathing marks (\emph{psili} and +% \emph{dasia}) will be in a predictable position: last. So we can +% quickly establish first that there was a change on decomposition, +% and second if the final resulting codepoint is one of the two we +% care about. +% \begin{macrocode} +\cs_new:Npn \@@_change_case_breathing:nnnnw #1#2#3#4#5 \q_mark + { + \tl_if_blank:nTF {#5} + { \@@_change_case_loop:nnw {#1} {#2} #3 } + { + \@@_codepoint_process:nN + { \@@_change_case_breathing:nnnnnw {#1} {#2} {#3} {#4} } + #5 \q_mark + } + } +\cs_new:Npn \@@_change_case_breathing:nnnnnw #1#2#3#4#5#6 \q_mark + { + \tl_if_blank:nTF {#6} + { + \@@_change_case_breathing_aux:nnnnn + {#1} {#2} {#3} {#4} {#5} + } + { + \@@_change_case_breathing_aux:nnnnn + {#1} {#2} {#3} {#4} {#6} + } + } +\cs_new:Npn \@@_change_case_breathing_aux:nnnnn #1#2#3#4#5 + { + \bool_lazy_or:nnTF + { \@@_codepoint_compare_p:nNn {#5} = { "0313 } } + { \@@_codepoint_compare_p:nNn {#5} = { "0314 } } + { \@@_change_case_breathing_aux:nnnw {#1} {#2} {#4} } + { \@@_change_case_loop:nnw {#1} {#2} #3 } + } +% \end{macrocode} +% Now the lookahead can be fired: check the next codepoint and assess +% whether it takes a \emph{dialytika}. Drop the +% breathing mark or generate the \emph{dialytika}: the +% latter is code shared with the general mechanism. +% \begin{macrocode} +\cs_new:Npn \@@_change_case_breathing_aux:nnnw #1#2#3#4 + \q_@@_recursion_stop + { + \@@_change_case_store:e + { \@@_change_case_codepoint:nn { upper } {#3} } + \tl_if_head_is_N_type:nTF {#4} + { \@@_change_case_breathing_aux:nnN } + { \@@_change_case_loop:nnw } + {#1} {#2} #4 \q_@@_recursion_stop + } +\cs_new:Npn \@@_change_case_breathing_aux:nnN #1#2#3 + { + \@@_codepoint_process:nN + { \@@_change_case_breathing_dialytika:nnn {#1} {#2} } #3 + } +\cs_new:Npn \@@_change_case_breathing_dialytika:nnn #1#2#3 + { + \@@_change_case_if_takes_dialytika:nTF {#3} + { + \@@_change_case_upper_el_dialytika:n {#3} + \@@_change_case_loop:nnw {#1} {#2} + } + { \@@_change_case_loop:nnw {#1} {#2} #3 } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} % \end{macro} % \end{macro} % \end{macro} @@ -1744,7 +1885,7 @@ % \end{macrocode} % If there was a hit, output the result with the dot-above and move on. % Otherwise, look for one of the three letters that can take a combining -% accent: I, J and I-ogonek. +% accent: I, J nd I-ogonek. % \begin{macrocode} \cs_new:Npn \@@_change_case_lower_lt_auxi:nnnn #1#2#3#4 { diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx index a2f9e5fae77..787c3f9dfc3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx index d3e8e099fb5..e2bac1b756b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx index bcdfa869f27..47341eeea41 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % @@ -58,7 +58,7 @@ % % \section{Expanding text} % -% \begin{function}[EXP, added = 2020-01-02, updated = 2023-02-07] +% \begin{function}[EXP, added = 2020-01-02, updated = 2023-06-09] % {\text_expand:n} % \begin{syntax} % \cs{text_expand:n} \Arg{text} @@ -71,7 +71,8 @@ % in \cs{l_text_math_arg_tl}). Commands which are neither engine- % nor \LaTeX{} protected are expanded exhaustively. % Any commands listed in \cs{l_text_expand_exclude_tl} are excluded from -% expansion. +% expansion, as are those in \cs{l_text_case_exclude_arg_tl} and +% \cs{l_text_math_arg_tl}. % \end{function} % % \begin{function}[added = 2020-01-22] @@ -1142,6 +1143,7 @@ { \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 } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 7519981f52e..116be7de53a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 67154547b7f..58d4276197d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index 818018d10ef..bedbb2e2a53 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index 48b121f20a1..b44b307bbf1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-05} +% \date{Released 2023-06-16} % % \maketitle % @@ -479,8 +479,8 @@ % \end{macrocode} % Parse the main Unicode data file and pull out the NFD and case changing % data. The NFD data is stored on using the hash table approach and can yield -% a predictable number of code points: one or two. We also need the case data, -% which will be modified further below. To allow for finding rangs, the +% a predictable number of codepoints: one or two. We also need the case data, +% which will be modified further below. To allow for finding ranges, the % description of the codepoint needs to be carried forward. % \begin{macrocode} \cs_set_protected:Npn \@@_data_auxi:w @@ -601,7 +601,7 @@ % \end{macrocode} % Here we want to do three things: add to and possibly complete the current % block, add complete blocks quickly, then finish up the range in a final -% open block. We need to avoid as far as possible avoid dealing with ever +% open block. We need to avoid as far as possible avoid dealing with every % single codepoint, so the middle step is optimised. % \begin{macrocode} \cs_set_protected:Npn \@@_range:nnnn #1#2#3#4 @@ -668,7 +668,7 @@ % \end{macrocode} % Close out the final block, rename the first stage table, then combine all % of the block comma-lists into one large second-stage table with offsets. -% As we use an index not an offet, there is a little back-and-forward to do. +% As we use an index not an offset, there is a little back-and-forward to do. % \begin{macrocode} \cs_set_protected:Npn \@@_finalise_blocks: { 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 diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index 80c60e571c3..9e6bce78818 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2023-06-05}% +\def\ExplFileDate{2023-06-16}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx index 8b7ed14e8f7..acdb94412d4 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2023-06-05}% +\def\ExplFileDate{2023-06-16}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 41c154b892d..34b05bb0e77 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2023-06-05}% +\def\ExplFileDate{2023-06-16}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% |