From 2cf53968f130744e9fe88bef59c11d80218cbb45 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Fri, 15 May 2020 03:02:03 +0000 Subject: CTAN sync 202005150302 --- macros/latex/contrib/l3kernel/CHANGELOG.md | 8 +- macros/latex/contrib/l3kernel/README.md | 2 +- macros/latex/contrib/l3kernel/expl3.dtx | 4 +- macros/latex/contrib/l3kernel/expl3.pdf | Bin 584772 -> 584879 bytes macros/latex/contrib/l3kernel/interface3.pdf | Bin 1544205 -> 1544503 bytes macros/latex/contrib/l3kernel/interface3.tex | 2 +- macros/latex/contrib/l3kernel/l3alloc.dtx | 2 +- macros/latex/contrib/l3kernel/l3basics.dtx | 2 +- macros/latex/contrib/l3kernel/l3bootstrap.dtx | 2 +- macros/latex/contrib/l3kernel/l3box.dtx | 2 +- macros/latex/contrib/l3kernel/l3candidates.dtx | 2 +- macros/latex/contrib/l3kernel/l3clist.dtx | 2 +- macros/latex/contrib/l3kernel/l3coffins.dtx | 2 +- macros/latex/contrib/l3kernel/l3color-base.dtx | 2 +- macros/latex/contrib/l3kernel/l3debug.dtx | 2 +- macros/latex/contrib/l3kernel/l3deprecation.dtx | 2 +- macros/latex/contrib/l3kernel/l3doc.dtx | 2 +- macros/latex/contrib/l3kernel/l3docstrip.dtx | 2 +- macros/latex/contrib/l3kernel/l3docstrip.pdf | Bin 263360 -> 263493 bytes macros/latex/contrib/l3kernel/l3expan.dtx | 2 +- macros/latex/contrib/l3kernel/l3file.dtx | 2 +- macros/latex/contrib/l3kernel/l3final.dtx | 2 +- macros/latex/contrib/l3kernel/l3flag.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-assign.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-aux.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-basics.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-convert.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-expo.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-extended.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-logic.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-parse.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-random.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-round.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-traps.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp-trig.dtx | 2 +- macros/latex/contrib/l3kernel/l3fp.dtx | 2 +- macros/latex/contrib/l3kernel/l3fparray.dtx | 2 +- macros/latex/contrib/l3kernel/l3int.dtx | 2 +- macros/latex/contrib/l3kernel/l3intarray.dtx | 2 +- .../latex/contrib/l3kernel/l3kernel-functions.dtx | 2 +- macros/latex/contrib/l3kernel/l3keys.dtx | 385 +++++++++++++-------- macros/latex/contrib/l3kernel/l3legacy.dtx | 2 +- macros/latex/contrib/l3kernel/l3luatex.dtx | 2 +- macros/latex/contrib/l3kernel/l3msg.dtx | 2 +- macros/latex/contrib/l3kernel/l3names.dtx | 2 +- macros/latex/contrib/l3kernel/l3news.pdf | Bin 379248 -> 379248 bytes macros/latex/contrib/l3kernel/l3news01.pdf | Bin 113529 -> 113529 bytes macros/latex/contrib/l3kernel/l3news02.pdf | Bin 140776 -> 140776 bytes macros/latex/contrib/l3kernel/l3news03.pdf | Bin 144784 -> 144784 bytes macros/latex/contrib/l3kernel/l3news04.pdf | Bin 107117 -> 107117 bytes macros/latex/contrib/l3kernel/l3news05.pdf | Bin 105090 -> 105090 bytes macros/latex/contrib/l3kernel/l3news06.pdf | Bin 140797 -> 140797 bytes macros/latex/contrib/l3kernel/l3news07.pdf | Bin 119092 -> 119092 bytes macros/latex/contrib/l3kernel/l3news08.pdf | Bin 152413 -> 152413 bytes macros/latex/contrib/l3kernel/l3news09.pdf | Bin 235323 -> 235323 bytes macros/latex/contrib/l3kernel/l3news10.pdf | Bin 147096 -> 147096 bytes macros/latex/contrib/l3kernel/l3news11.pdf | Bin 165956 -> 165956 bytes macros/latex/contrib/l3kernel/l3news12.pdf | Bin 199153 -> 199153 bytes macros/latex/contrib/l3kernel/l3prefixes.csv | 3 + macros/latex/contrib/l3kernel/l3prefixes.pdf | Bin 75066 -> 75377 bytes macros/latex/contrib/l3kernel/l3prg.dtx | 2 +- macros/latex/contrib/l3kernel/l3prop.dtx | 2 +- macros/latex/contrib/l3kernel/l3quark.dtx | 2 +- macros/latex/contrib/l3kernel/l3regex.dtx | 2 +- macros/latex/contrib/l3kernel/l3seq.dtx | 2 +- macros/latex/contrib/l3kernel/l3skip.dtx | 2 +- macros/latex/contrib/l3kernel/l3sort.dtx | 2 +- macros/latex/contrib/l3kernel/l3str-convert.dtx | 2 +- macros/latex/contrib/l3kernel/l3str.dtx | 2 +- macros/latex/contrib/l3kernel/l3styleguide.pdf | Bin 280109 -> 280191 bytes macros/latex/contrib/l3kernel/l3styleguide.tex | 2 +- macros/latex/contrib/l3kernel/l3syntax-changes.pdf | Bin 228403 -> 228503 bytes macros/latex/contrib/l3kernel/l3syntax-changes.tex | 2 +- macros/latex/contrib/l3kernel/l3sys.dtx | 2 +- macros/latex/contrib/l3kernel/l3term-glossary.pdf | Bin 186619 -> 186719 bytes macros/latex/contrib/l3kernel/l3term-glossary.tex | 2 +- macros/latex/contrib/l3kernel/l3text-case.dtx | 2 +- macros/latex/contrib/l3kernel/l3text-purify.dtx | 2 +- macros/latex/contrib/l3kernel/l3text.dtx | 2 +- macros/latex/contrib/l3kernel/l3tl-analysis.dtx | 2 +- macros/latex/contrib/l3kernel/l3tl.dtx | 2 +- macros/latex/contrib/l3kernel/l3token.dtx | 2 +- macros/latex/contrib/l3kernel/l3unicode.dtx | 2 +- macros/latex/contrib/l3kernel/source3.pdf | Bin 5890263 -> 5898773 bytes macros/latex/contrib/l3kernel/source3.tex | 2 +- 85 files changed, 312 insertions(+), 208 deletions(-) (limited to 'macros/latex/contrib/l3kernel') diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md index 5baa671d01..41cffac254 100644 --- a/macros/latex/contrib/l3kernel/CHANGELOG.md +++ b/macros/latex/contrib/l3kernel/CHANGELOG.md @@ -7,6 +7,11 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2020-05-14] + +### Changed +- Performance improvements in keyval processing + ## [2020-05-11] ### Changed @@ -678,7 +683,8 @@ this project uses date-based 'snapshot' version identifiers. - Step func­tions have been added for dim vari­ables, e.g. `\dim_step_in­line:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2020-05-11...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2020-05-14...HEAD +[2020-05-14]: https://github.com/latex3/latex3/compare/2020-05-11...2020-05-14 [2020-05-11]: https://github.com/latex3/latex3/compare/2020-05-05...2020-05-11 [2020-05-05]: https://github.com/latex3/latex3/compare/2020-04-06...2020-05-05 [2020-04-06]: https://github.com/latex3/latex3/compare/2020-03-06...2020-04-06 diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md index 3a7c3730b9..99f233c0e8 100644 --- a/macros/latex/contrib/l3kernel/README.md +++ b/macros/latex/contrib/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2020-05-11 +Release 2020-05-14 Overview -------- diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx index a24e520f45..c03cfc436e 100644 --- a/macros/latex/contrib/l3kernel/expl3.dtx +++ b/macros/latex/contrib/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> % -\def\ExplFileDate{2020-05-11}% +\def\ExplFileDate{2020-05-14}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf index b16b80e0c7..454be4b399 100644 Binary files a/macros/latex/contrib/l3kernel/expl3.pdf and b/macros/latex/contrib/l3kernel/expl3.pdf differ diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf index f91da62ed4..5914895ef1 100644 Binary files a/macros/latex/contrib/l3kernel/interface3.pdf and b/macros/latex/contrib/l3kernel/interface3.pdf differ diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex index e1b46c0897..5007307c17 100644 --- a/macros/latex/contrib/l3kernel/interface3.tex +++ b/macros/latex/contrib/l3kernel/interface3.tex @@ -54,7 +54,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2020-05-11} +\date{Released 2020-05-14} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3kernel/l3alloc.dtx b/macros/latex/contrib/l3kernel/l3alloc.dtx index 188477adcf..4e3ffdbe20 100644 --- a/macros/latex/contrib/l3kernel/l3alloc.dtx +++ b/macros/latex/contrib/l3kernel/l3alloc.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx index 22b7a75d15..8069dbafa8 100644 --- a/macros/latex/contrib/l3kernel/l3basics.dtx +++ b/macros/latex/contrib/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx index 4ff6267be1..88682ead64 100644 --- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx +++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx index 7c6b12dd78..9279b3a1da 100644 --- a/macros/latex/contrib/l3kernel/l3box.dtx +++ b/macros/latex/contrib/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx index c97fb26e25..90d433dcd9 100644 --- a/macros/latex/contrib/l3kernel/l3candidates.dtx +++ b/macros/latex/contrib/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx index 0b011f80e0..b6c9390cee 100644 --- a/macros/latex/contrib/l3kernel/l3clist.dtx +++ b/macros/latex/contrib/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx index 47fca97465..2dd3f49c12 100644 --- a/macros/latex/contrib/l3kernel/l3coffins.dtx +++ b/macros/latex/contrib/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3color-base.dtx b/macros/latex/contrib/l3kernel/l3color-base.dtx index 0555edc19c..5f0d01d420 100644 --- a/macros/latex/contrib/l3kernel/l3color-base.dtx +++ b/macros/latex/contrib/l3kernel/l3color-base.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx index df79d6a031..d3be8e5fd0 100644 --- a/macros/latex/contrib/l3kernel/l3debug.dtx +++ b/macros/latex/contrib/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx index f84e9faea3..3143cbcd9f 100644 --- a/macros/latex/contrib/l3kernel/l3deprecation.dtx +++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx index 9ef8771afb..1f9bb20394 100644 --- a/macros/latex/contrib/l3kernel/l3doc.dtx +++ b/macros/latex/contrib/l3kernel/l3doc.dtx @@ -79,7 +79,7 @@ and all files in that bundle must be distributed together. % % \title{The \cls{l3doc} class} % \author{\Team} -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % \maketitle % \tableofcontents % diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx index 044e3fbab5..8177c56ddc 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.dtx +++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf index 870f43aacb..c01f5c6666 100644 Binary files a/macros/latex/contrib/l3kernel/l3docstrip.pdf and b/macros/latex/contrib/l3kernel/l3docstrip.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx index 0841f43fc4..6357eb7317 100644 --- a/macros/latex/contrib/l3kernel/l3expan.dtx +++ b/macros/latex/contrib/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx index c816d771fb..2aba70b29e 100644 --- a/macros/latex/contrib/l3kernel/l3file.dtx +++ b/macros/latex/contrib/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3final.dtx b/macros/latex/contrib/l3kernel/l3final.dtx index d48aac03f5..79b816bfd8 100644 --- a/macros/latex/contrib/l3kernel/l3final.dtx +++ b/macros/latex/contrib/l3kernel/l3final.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx index 7a76d29386..301f78a340 100644 --- a/macros/latex/contrib/l3kernel/l3flag.dtx +++ b/macros/latex/contrib/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx index 725abc23b9..64e67f8fad 100644 --- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % \maketitle % % \begin{documentation} diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx index 0281772275..85a31450c9 100644 --- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx index 55823ba7fb..b634f3a949 100644 --- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx index fc629937c4..9ede33c378 100644 --- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx index a1defe9889..8f2c090d5b 100644 --- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx index 8904c44200..28b2eaca4f 100644 --- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx index a503e3a3d4..a76ba25fb4 100644 --- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx index 978d4dfe7f..bc0a4c1e64 100644 --- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx index 11bf7d311d..61e8d09b8f 100644 --- a/macros/latex/contrib/l3kernel/l3fp-random.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx index a5b0bc6485..0edd5bf20c 100644 --- a/macros/latex/contrib/l3kernel/l3fp-round.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx index 51d25a090e..093fdccffe 100644 --- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % \maketitle % % \begin{documentation} diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx index 156485e628..1d4ce7f6a6 100644 --- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx index f9bcbee467..4dd9a6815c 100644 --- a/macros/latex/contrib/l3kernel/l3fp.dtx +++ b/macros/latex/contrib/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx index d41c366b73..9295a0d05a 100644 --- a/macros/latex/contrib/l3kernel/l3fparray.dtx +++ b/macros/latex/contrib/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx index faab276e44..6b58e379da 100644 --- a/macros/latex/contrib/l3kernel/l3int.dtx +++ b/macros/latex/contrib/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx index 1c68482f55..c8ea3e3172 100644 --- a/macros/latex/contrib/l3kernel/l3intarray.dtx +++ b/macros/latex/contrib/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx index d5cc6170ad..52dd498f57 100644 --- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx +++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx index b3630af0b1..621f3776de 100644 --- a/macros/latex/contrib/l3kernel/l3keys.dtx +++ b/macros/latex/contrib/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % @@ -939,13 +939,13 @@ % % \subsection{Low-level interface} % -% The low-level key parser is based heavily on \pkg{keyval}, but with a number -% of additional \enquote{safety} requirements and with the idea that the -% parsed list of key--value pairs can be processed in a variety of ways. -% The net result is that this code needs around twice the amount of time -% as \pkg{keyval} to parse the same list of keys. To optimise speed as far -% as reasonably practical, a number of lower-level approaches are taken -% rather than using the higher-level \pkg{expl3} interfaces. +% The low-level key parser's implementation is based heavily on \pkg{expkv}. +% Compared to \pkg{keyval} it adds a number of additional \enquote{safety} +% requirements and allows to process the parsed list of key--value pairs in a +% variety of ways. The net result is that this code needs around one and a half +% the amount of time as \pkg{keyval} to parse the same list of keys. To optimise +% speed as far as reasonably practical, a number of lower-level approaches are +% taken rather than using the higher-level \pkg{expl3} interfaces. % % \begin{macrocode} %<@@=keyval> @@ -970,9 +970,9 @@ % \end{macrocode} % % \begin{macro}[EXP]{\keyval_parse:NNn} -% The main function starts the first of two input loops. The outer loop splits -% the key--value list at active commas, the inner loop will do so at other -% commas. The use of \cs{s_@@_mark} here prevents loss of braces from the key +% The main function starts the first of two loops. The outer loop splits the +% key--value list at active commas, the inner loop will do so at other commas. +% The use of \cs{s_@@_mark} here prevents loss of braces from the key % argument. % \begin{macrocode} \cs_new:Npn \keyval_parse:NNn ##1 ##2 ##3 @@ -982,157 +982,267 @@ % % \begin{macro}[EXP]{\@@_loop_active:NNw} % First a fast test for the end of the loop is done, it'll gobble everything -% up to an \cs{s_@@_mark} immediately followed by an \cs{s_@@_tail}. The loop -% ending macro will gobble everything to the last \cs{s_@@_mark} in this -% definition. +% up to a \cs{s_@@_tail}. The loop ending macro will gobble everything to the +% last \cs{s_@@_mark} in this definition. % If the end isn't reached yet, start the second loop splitting at other -% comments, and after that one iterate the current loop. +% commas, and after that one iterate the current loop. % \begin{macrocode} \cs_new:Npn \@@_loop_active:NNw ##1 ##2 ##3 #1 { \@@_if_recursion_tail:w ##3 - \@@_end_loop_active:w \s_@@_mark \s_@@_tail + \@@_end_loop_active:w \s_@@_tail \@@_loop_other:NNw ##1 ##2 ##3 , \s_@@_tail , \@@_loop_active:NNw ##1 ##2 \s_@@_mark } % \end{macrocode} % \end{macro} % +% \begin{macro}[EXP]{\@@_split_other:w, \@@_split_active:w} +% These two macros allow to split at the first equals sign of category 12 or +% 13. At the same time they also execute branching by inserting the first +% token following \cs{s_@@_mark} that followed the equals sign. Hence they +% also test for the presence of such an equals sign simultaneously. +% \begin{macrocode} + \cs_new:Npn \@@_split_other:w ##1 = ##2 \s_@@_mark ##3 ##4 \s_@@_stop + { ##3 ##1 \s_@@_stop \s_@@_mark ##2 } + \cs_new:Npn \@@_split_active:w ##1 #2 ##2 \s_@@_mark ##3 ##4 \s_@@_stop + { ##3 ##1 \s_@@_stop \s_@@_mark ##2 } +% \end{macrocode} +% \end{macro} +% % \begin{macro}[EXP]{\@@_loop_other:NNw} % The second loop uses the same test for its end as the first loop, next it -% tests whether there are other or active equals signs, throwing an error if -% there are both. If there are none, test whether the argument is blank or is -% a single key. If there are only active equals signs split at those, else -% split at others. Finally, iterate the loop. +% splits at the first active equals sign using \cs{@@_split_active:w}. The +% \cs{s_@@_nil} prevents accidental brace stripping and acts as a delimiter in +% the next steps. First testing for an active equals sign will reduce the +% number of necessary expansion steps for the expected average use case of +% other equals signs and hence perform better on average. % \begin{macrocode} \cs_new:Npn \@@_loop_other:NNw ##1 ##2 ##3 , { \@@_if_recursion_tail:w ##3 - \@@_end_loop_other:w \s_@@_mark \s_@@_tail - \@@_if_has_equal_other:w ##3 = \s_@@_stop - \@@_has_false:w \s_@@_mark \s_@@_stop \use_i:nn - { - \@@_if_has_equal_active:w ##3 #2 \s_@@_stop - \@@_has_false:w \s_@@_mark \s_@@_stop \use_i:nn - \@@_misplaced_equal_error: - { \@@_split_other:w ##3 = \s_@@_stop ##2 } - } - { - \@@_if_has_equal_active:w ##3 #2 \s_@@_stop - \@@_has_false:w \s_@@_mark \s_@@_stop \use_i:nn - { \@@_split_active:w ##3 #2 \s_@@_stop ##2 } - { - \@@_if_blank:w ##3 \s_@@_nil \s_@@_stop - \@@_blank_true:w \s_@@_mark \s_@@_stop \use:n - { \@@_trim:nN { ##3 } \@@_key:nN ##1 } - } - } + \@@_end_loop_other:w \s_@@_tail + \@@_split_active:w ##3 \s_@@_nil + \s_@@_mark \@@_split_active_auxi:w + #2 \s_@@_mark \@@_clean_up_active:w + \s_@@_stop + ##1 ##2 \@@_loop_other:NNw ##1 ##2 \s_@@_mark } % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP]{\@@_split_active:w} -% \begin{macro}[EXP]{\@@_split_active:nw} -% Splits at the first active equals sign and trims the key. Next test whether -% there are any more valid split points, if so throw an error and gobble the -% remaining \meta{function_2}, which will not yet be gobbled. If there was -% only one active equals sign start trimming the spaces off the value and give -% control to \cs[no-index]{@@_key_val:nnN}. +% \begin{macro}[EXP]{\@@_split_active_auxi:w} +% \begin{macro}[EXP]{\@@_split_active_auxii:w} +% \begin{macro}[EXP]{\@@_split_active_auxiii:w} +% \begin{macro}[EXP]{\@@_split_active_auxiv:w} +% \begin{macro}[EXP]{\@@_split_active_auxv:w} +% After \cs{@@_split_active:w} the following will only be called if there was +% at least one active equals sign in the current key--value pair. Therefore +% this is the execution branch for a key--value pair with an active equals +% sign. |##1| will be everything up to the first active equals sign. First it +% tests for other equals signs in the key name, which will eventually throw an +% error via \cs{@@_misplaced_equal_after_active_error:w}. If none was found we +% forward the key to \cs{@@_split_active_auxii:w}. +% \begin{macrocode} + \cs_new:Npn \@@_split_active_auxi:w ##1 \s_@@_stop + { + \@@_split_other:w ##1 \s_@@_nil + \s_@@_mark \@@_misplaced_equal_after_active_error:w + = \s_@@_mark \@@_split_active_auxii:w + \s_@@_stop + } +% \end{macrocode} +% \cs{@@_split_active_auxii:w} gets the correct key name with a leading +% \cs{s_@@_mark} as |##1|. It has to sanitise the remainder of the previous +% test and trims the key name which will be forwarded to +% \cs{@@_split_active_auxiii:w}. +% \begin{macrocode} + \cs_new:Npn \@@_split_active_auxii:w + ##1 \s_@@_nil \s_@@_mark \@@_misplaced_equal_after_active_error:w + \s_@@_stop \s_@@_mark + { \@@_trim:nN { ##1 } \@@_split_active_auxiii:w } +% \end{macrocode} +% Next we test for a misplaced active equals sign in the value, if none is +% found \cs{@@_split_active_auxiv:w} will be called. +% \begin{macrocode} + \cs_new:Npn \@@_split_active_auxiii:w ##1 ##2 \s_@@_nil + { + \@@_split_active:w ##2 \s_@@_nil + \s_@@_mark \@@_misplaced_equal_in_split_error:w + #2 \s_@@_mark \@@_split_active_auxiv:w + \s_@@_stop + { ##1 } + } +% \end{macrocode} +% This runs the last test after sanitising the remainder of the previous one. +% This time test for a misplaced equals sign of category 12 in the value. +% Finally the last auxiliary macro will be called. % \begin{macrocode} - \cs_new:Npn \@@_split_active:w ##1 #2 - { \@@_trim:nN { ##1 } \@@_split_active:nw \s_@@_mark } - \cs_new:Npn \@@_split_active:nw ##1 ##2 #2 ##3 \s_@@_stop + \cs_new:Npn \@@_split_active_auxiv:w + ##1 \s_@@_nil \s_@@_mark \@@_misplaced_equal_in_split_error:w + \s_@@_stop \s_@@_mark { - \@@_if_empty:w \s_@@_mark ##3 \s_@@_stop - \@@_has_false:w \s_@@_mark \s_@@_stop \use_i:nn - { \@@_misplaced_equal_error: \use_none:n } - { \@@_trim:nN { ##2 } \@@_key_val:nnN { ##1 } } + \@@_split_other:w ##1 \s_@@_nil + \s_@@_mark \@@_misplaced_equal_in_split_error:w + = \s_@@_mark \@@_split_active_auxv:w + \s_@@_stop } % \end{macrocode} +% This last macro in this execution branch sanitises the last test, trims the +% value and passes it to \cs{@@_pair:nnNN}. +% \begin{macrocode} + \cs_new:Npn \@@_split_active_auxv:w + ##1 \s_@@_nil \s_@@_mark \@@_misplaced_equal_in_split_error:w + \s_@@_stop \s_@@_mark + { \@@_trim:nN { ##1 } \@@_pair:nnNN } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} % \end{macro} % \end{macro} % -% \begin{macro}[EXP]{\@@_if_has_equal_active:w} -% The test for an active equals sign just gobbles tokens until the first -% active equals sign and then runs the test for an empty argument. +% \begin{macro}[EXP]{\@@_clean_up_active:w} +% The following is the branch taken if the key--value pair doesn't contain an +% active equals sign. The remainder of that test will be cleaned up by +% \cs{@@_clean_up_active:w} which will then split at an equals sign of +% category other. % \begin{macrocode} - \cs_new:Npn \@@_if_has_equal_active:w ##1 #2 - { \@@_if_empty:w \s_@@_mark } + \cs_new:Npn \@@_clean_up_active:w + ##1 \s_@@_nil \s_@@_mark \@@_split_active_auxi:w \s_@@_stop \s_@@_mark + { + \@@_split_other:w ##1 \s_@@_nil + \s_@@_mark \@@_split_other_auxi:w + = \s_@@_mark \@@_clean_up_other:w + \s_@@_stop + } % \end{macrocode} % \end{macro} % -% We're done with the macros which need active equals signs or commas in their -% definition, so we can end that scope and call the temporary macro which will -% do the definitions. +% \begin{macro}[EXP]{\@@_split_other_auxi:w} +% \begin{macro}[EXP]{\@@_split_other_auxii:w} +% \begin{macro}[EXP]{\@@_split_other_auxiii:w} +% This is executed if the key--value pair doesn't contain an active equals +% sign but at least one other. |##1| of \cs{@@_split_other_auxi:w} will +% contain the complete key name, which is trimmed and forwarded to the next +% auxiliary macro. % \begin{macrocode} - } - \char_set_catcode_active:n { `\, } - \char_set_catcode_active:n { `\= } - \@@_tmp:NN , = -\group_end: + \cs_new:Npn \@@_split_other_auxi:w ##1 \s_@@_stop + { \@@_trim:nN { ##1 } \@@_split_other_auxii:w } +% \end{macrocode} +% We know that the value doesn't contain misplaced active equals signs but we +% have to test for others. +% \begin{macrocode} + \cs_new:Npn \@@_split_other_auxii:w ##1 ##2 \s_@@_nil + { + \@@_split_other:w ##2 \s_@@_nil + \s_@@_mark \@@_misplaced_equal_in_split_error:w + = \s_@@_mark \@@_split_other_auxiii:w + \s_@@_stop + { ##1 } + } +% \end{macrocode} +% \cs{@@_split_other_auxiii:w} sanitises the test for other equals signs, +% trims the value and forwards it to \cs{@@_pair:nnNN}. +% \begin{macrocode} + \cs_new:Npn \@@_split_other_auxiii:w + ##1 \s_@@_nil \s_@@_mark \@@_misplaced_equal_in_split_error:w + \s_@@_stop \s_@@_mark + { \@@_trim:nN { ##1 } \@@_pair:nnNN } % \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} % -% \begin{macro}[EXP]{\@@_end_loop_active:w,\@@_end_loop_other:w} -% Both of these macros just have to gobble a few tokens to remove the reminder -% of the loops current iteration. We do this in a pretty static manner, -% explicitly stating every token we know beforehand because this is slightly -% faster. +% \begin{macro}[EXP]{\@@_clean_up_other:w} +% \cs{@@_clean_up_other:w} is the last branch that might exist. It is called +% if no equals sign was found, hence the only possibilities left are a blank +% list element, which is to be skipped, or a lonely key. If it's no empty list +% element this will trim the key name and forward it to \cs{@@_key:nNN}. % \begin{macrocode} -\cs_new:Npn \@@_end_loop_active:w - \s_@@_mark \s_@@_tail - \@@_loop_other:NNw #1 , \s_@@_tail , - \@@_loop_active:NNw #2 \s_@@_mark - { } -\cs_new:Npn \@@_end_loop_other:w - \s_@@_mark \s_@@_tail - \@@_if_has_equal_other:w #1 = \s_@@_stop - \@@_has_false:w \s_@@_mark \s_@@_stop \use_i:nn - #2 - \@@_loop_other:NNw #3 \s_@@_mark - { } + \cs_new:Npn \@@_clean_up_other:w + ##1 \s_@@_nil \s_@@_mark \@@_split_other_auxi:w \s_@@_stop \s_@@_mark + { + \@@_if_blank:w ##1 \s_@@_nil \s_@@_stop \@@_blank_true:w + \s_@@_mark \s_@@_stop \use:n + { \@@_trim:nN { ##1 } \@@_key:nNN } + } % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP]{\@@_split_other:w} -% \begin{macro}[EXP]{\@@_split_other:nw} -% These work exactly as \cs[no-index]{@@_split_active:wN}, just for -% equals signs of category other. +% \begin{macro}[EXP]{\@@_misplaced_equal_after_active_error:w} +% \begin{macro}[EXP]{\@@_misplaced_equal_in_split_error:w} +% All these two macros do is gobble the remainder of the current other loop +% execution and throw an error. % \begin{macrocode} -\cs_new:Npn \@@_split_other:w #1 = - { \@@_trim:nN { #1 } \@@_split_other:nw \s_@@_mark } -\cs_new:Npn \@@_split_other:nw #1 #2 = #3 \s_@@_stop - { - \@@_if_empty:w \s_@@_mark #3 \s_@@_stop - \@@_has_false:w \s_@@_mark \s_@@_stop \use_i:nn - { \@@_misplaced_equal_error: \use_none:n } - { \@@_trim:nN { #2 } \@@_key_val:nnN { #1 } } - } + \cs_new:Npn \@@_misplaced_equal_after_active_error:w + \s_@@_mark ##1 \s_@@_stop \s_@@_mark ##2 \s_@@_nil + \s_@@_mark ##3 \s_@@_nil ##4 ##5 + { + \__kernel_msg_expandable_error:nn + { kernel } { misplaced-equals-sign } + } + \cs_new:Npn \@@_misplaced_equal_in_split_error:w + \s_@@_mark ##1 \s_@@_stop \s_@@_mark ##2 \s_@@_nil + ##3 ##4 ##5 + { + \__kernel_msg_expandable_error:nn + { kernel } { misplaced-equals-sign } + } % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}[EXP]{\@@_key:nN} -% This will get the current key with spaces trimmed and \meta{function_1} as -% its arguments. All it has to do is put them in an \cs{exp_not:n} and reorder -% them. +% \begin{macro}[EXP]{\@@_end_loop_other:w, \@@_end_loop_active:w} +% All that's left for the parsing loops are the macros which end the +% recursion. Both just gobble the remaining tokens of the respective loop +% including the next recursion call. % \begin{macrocode} -\cs_new:Npn \@@_key:nN #1 #2 - { \exp_not:n { #2 { #1 } } } + \cs_new:Npn \@@_end_loop_other:w + \s_@@_tail + \@@_split_active:w ##1 \s_@@_nil + \s_@@_mark \@@_split_active_auxi:w + #2 \s_@@_mark \@@_clean_up_active:w + \s_@@_stop + ##2 ##3 + \@@_loop_other:NNw ##4 \s_@@_mark + { } + \cs_new:Npn \@@_end_loop_active:w + \s_@@_tail + \@@_loop_other:NNw ##1 , \s_@@_tail , + \@@_loop_active:NNw ##2 \s_@@_mark + { } % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP]{\@@_key_val:nnN} -% This will get the key name and value with spaces trimmed. It has to -% assert that the key name isn't empty. Afterwards put them into an -% \cs{exp_not:n} together with \meta{function_2}. If the key is empty they are -% gobbled instead. +% The parsing loops are done, so here ends the definition of \cs{@@_tmp:NN}, +% which will finally set up the macros. % \begin{macrocode} -\cs_new:Npn \@@_key_val:nnN #1 #2 #3 + } + \char_set_catcode_active:n { `\, } + \char_set_catcode_active:n { `\= } + \@@_tmp:NN , = +\group_end: +% \end{macrocode} +% +% \begin{macro}[EXP]{\@@_pair:nnNN, \@@_key:nNN} +% These macros will be called on the parsed keys and values of the key--value +% list. All arguments are completely trimmed. They test for blank key names +% and call the functions passed to \cs{keyval_parse:NNn} inside of +% \cs{exp_not:n} with the correct arguments. +% \begin{macrocode} +\cs_new:Npn \@@_pair:nnNN #1 #2 #3 #4 + { + \@@_if_blank:w \s_@@_mark #2 \s_@@_nil \s_@@_stop \@@_blank_key_error:w + \s_@@_mark \s_@@_stop + \exp_not:n { #4 { #2 } { #1 } } + } +\cs_new:Npn \@@_key:nNN #1 #2 #3 { - \@@_if_empty:w \s_@@_mark #2 \s_@@_stop - \@@_empty_key:w \s_@@_mark \s_@@_stop - \exp_not:n { #3 { #2 } { #1 } } + \@@_if_blank:w \s_@@_mark #1 \s_@@_nil \s_@@_stop \@@_blank_key_error:w + \s_@@_mark \s_@@_stop + \exp_not:n { #2 { #1 } } } % \end{macrocode} % \end{macro} @@ -1143,46 +1253,31 @@ % with an arbitrary token following the argument. Each of these utilize the % fact that the argument will contain a leading \cs{s_@@_mark}. % \begin{macrocode} -\cs_new:Npn \@@_if_empty:w #1 \s_@@_mark \s_@@_stop {} +\cs_new:Npn \@@_if_empty:w #1 \s_@@_mark \s_@@_stop { } \cs_new:Npn \@@_if_blank:w \s_@@_mark #1 { \@@_if_empty:w \s_@@_mark } -\cs_new:Npn \@@_if_recursion_tail:w #1 \s_@@_mark \s_@@_tail {} +\cs_new:Npn \@@_if_recursion_tail:w \s_@@_mark #1 \s_@@_tail { } % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP]{\@@_has_false:w,\@@_blank_true:w,\@@_empty_key:w} +% \begin{macro}[EXP]{\@@_blank_true:w,\@@_blank_key_error:w} % These macros will be called if the tests above didn't gobble them, they % execute the branching. % \begin{macrocode} -\cs_new:Npn \@@_has_false:w \s_@@_mark \s_@@_stop \use_i:nn #1 #2 { #2 } -\cs_new:Npn \@@_blank_true:w \s_@@_mark \s_@@_stop \use:n #1 {} -\cs_new:Npn \@@_empty_key:w \s_@@_mark \s_@@_stop \exp_not:n #1 - { \@@_misplaced_equal_error: } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP]{\@@_if_has_equal_other:w} -% Another test that works by gobbling tokens until a specific one is hit. -% \begin{macrocode} -\cs_new:Npn \@@_if_has_equal_other:w #1 = - { \@@_if_empty:w \s_@@_mark } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP]{\@@_misplaced_equal_error:} -% Just throw an error expandably. This is hid inside a macro so that other -% macros don't have to gobble so many tokens, which increases speed for -% correct input. This will marginally slow down the error case, but that -% doesn't have to be fast anyway. -% \begin{macrocode} -\cs_new:Npn \@@_misplaced_equal_error: - { \__kernel_msg_expandable_error:nn { kernel } { misplaced-equals-sign } } +\cs_new:Npn \@@_blank_true:w \s_@@_mark \s_@@_stop \use:n #1 #2 #3 { } +\cs_new:Npn \@@_blank_key_error:w \s_@@_mark \s_@@_stop \exp_not:n #1 + { + \__kernel_msg_expandable_error:nn + { kernel } { blank-key-name } + } % \end{macrocode} % \end{macro} % -% One message for the low level parsing system. +% Two messages for the low level parsing system. % \begin{macrocode} \__kernel_msg_new:nnn { kernel } { misplaced-equals-sign } { Misplaced~equals~sign~in~key-value~input~\msg_line_context: } +\__kernel_msg_new:nnn { kernel } { blank-key-name } + { Blank~key~name~in~key-value~input~\msg_line_context: } % \end{macrocode} % % \begin{macro}[EXP]{\@@_trim:nN} @@ -1203,7 +1298,7 @@ \@@_trim_auxi:w ##1 \s_@@_nil - \s_@@_mark #1 {} + \s_@@_mark #1 { } \s_@@_mark \@@_trim_auxii:w \@@_trim_auxiii:w #1 \s_@@_nil @@ -1482,11 +1577,11 @@ \cs_if_exist:cTF { \c_@@_props_root_str \l_@@_property_str } { \@@_define_code:n {#2} } { - \str_if_empty:NF \l_@@_property_str - { - \__kernel_msg_error:nnxx { kernel } { key-property-unknown } - { \l_@@_property_str } { \l_keys_path_str } - } + \str_if_empty:NF \l_@@_property_str + { + \__kernel_msg_error:nnxx { kernel } { key-property-unknown } + { \l_@@_property_str } { \l_keys_path_str } + } } } % \end{macrocode} @@ -2729,7 +2824,7 @@ } { \__kernel_msg_error:nnxx { kernel } { key-unknown } - { \l_keys_path_str } { \l_@@_module_str } + { \l_keys_path_str } { \l_@@_module_str } } } } diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx index 1c017035de..b491255503 100644 --- a/macros/latex/contrib/l3kernel/l3legacy.dtx +++ b/macros/latex/contrib/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx index 5b3c8243fe..fd8c5ed6e0 100644 --- a/macros/latex/contrib/l3kernel/l3luatex.dtx +++ b/macros/latex/contrib/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx index feb233bf54..5547c3ddc7 100644 --- a/macros/latex/contrib/l3kernel/l3msg.dtx +++ b/macros/latex/contrib/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx index 2878654f58..3f9a7309c9 100644 --- a/macros/latex/contrib/l3kernel/l3names.dtx +++ b/macros/latex/contrib/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf index d3d8cd3d8a..5d5f7c9e6e 100644 Binary files a/macros/latex/contrib/l3kernel/l3news.pdf and b/macros/latex/contrib/l3kernel/l3news.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf index e7e64883a3..214fd413d7 100644 Binary files a/macros/latex/contrib/l3kernel/l3news01.pdf and b/macros/latex/contrib/l3kernel/l3news01.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf index 54d75387b2..3842c435e3 100644 Binary files a/macros/latex/contrib/l3kernel/l3news02.pdf and b/macros/latex/contrib/l3kernel/l3news02.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf index 60aa4d7d5d..b8be0aefda 100644 Binary files a/macros/latex/contrib/l3kernel/l3news03.pdf and b/macros/latex/contrib/l3kernel/l3news03.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf index 2165c12d76..a63902984d 100644 Binary files a/macros/latex/contrib/l3kernel/l3news04.pdf and b/macros/latex/contrib/l3kernel/l3news04.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf index 56d2d5f600..db82fc240e 100644 Binary files a/macros/latex/contrib/l3kernel/l3news05.pdf and b/macros/latex/contrib/l3kernel/l3news05.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf index 4c0f81e8cb..cfd3bd38e4 100644 Binary files a/macros/latex/contrib/l3kernel/l3news06.pdf and b/macros/latex/contrib/l3kernel/l3news06.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf index f90ddaf6b1..d78833f8b5 100644 Binary files a/macros/latex/contrib/l3kernel/l3news07.pdf and b/macros/latex/contrib/l3kernel/l3news07.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf index 0061ae2c85..5757976cef 100644 Binary files a/macros/latex/contrib/l3kernel/l3news08.pdf and b/macros/latex/contrib/l3kernel/l3news08.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf index 149274576f..6be892cf79 100644 Binary files a/macros/latex/contrib/l3kernel/l3news09.pdf and b/macros/latex/contrib/l3kernel/l3news09.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf index c6b222cbb4..b79ce66624 100644 Binary files a/macros/latex/contrib/l3kernel/l3news10.pdf and b/macros/latex/contrib/l3kernel/l3news10.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf index ea68c02321..a6e2878426 100644 Binary files a/macros/latex/contrib/l3kernel/l3news11.pdf and b/macros/latex/contrib/l3kernel/l3news11.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf index d8e0127011..4988c454a7 100644 Binary files a/macros/latex/contrib/l3kernel/l3news12.pdf and b/macros/latex/contrib/l3kernel/l3news12.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv index bf6e968edc..ad48bfaa10 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.csv +++ b/macros/latex/contrib/l3kernel/l3prefixes.csv @@ -40,6 +40,7 @@ csvsim,csvsimple,Thomas F. Sturm,https://github.com/T-F-S/csvsimple,https://gith ctex,ctex,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/CTeX-org/ctex-kit.git,https://github.com/CTeX-org/ctex-kit/issues,2014-03-08,2014-03-08, ctuthesis,ctuthesis,Tom Hejda,https://github.com/tohecz/ctuthesis,https://github.com/tohecz/ctuthesis.git,https://github.com/tohecz/ctuthesis/issues,2015-07-26,2015-07-26, debug,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2017-07-15,2017-07-15, +denisbdoc,denisbdoc,Denis Bitouzé,https://github.com/dbitouze/denisbdoc,git@github.com:dbitouze/denisbdoc.git,2020-05-13,2020-05-13, deriv,derivative,Simon Jensen,,,,2019-07-24,2019-07-24, diffcoeff,diffcoeff,Andrew Parsloe,,,,2019-08-26,2019-08-26, dim,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, @@ -81,6 +82,7 @@ ghsystem,ghsystem,Clemens Niederberger,https://github.com/cgnieder/ghsystem/,htt graph,lt3graph,Michiel Helvensteijn,,,,2014-02-05,2014-02-05, group,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, gtl,gtl,Bruno Le Floch,https://github.com/blefloch/latex-gtl,https://github.com/blefloch/latex-gtl.git,https://github.com/blefloch/latex-gtl/issues,2015-09-22,2015-09-22, +gzt,gzt,Denis Bitouzé,https://github.com/dbitouze/gzt,git@github.com:dbitouze/gzt.git,2020-05-13,2020-05-13, hash,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, hbox,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, hcoffin,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-28,2012-09-28, @@ -123,6 +125,7 @@ nil,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https: no,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, notestobib,notes2bib,Joseph Wright,https://github.com/josephwright/notes2bib,https://github.com/josephwright/notes2bib.git,https://github.com/josephwright/notes2bib/issues,2012-11-07,2012-11-07, novalue,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, +nwejm,nwejm,Denis Bitouzé,https://github.com/dbitouze/nwejm,git@github.com:dbitouze/nwejm.git,2020-05-13,2020-05-13, ocgbase,ocgx2,Alexander Grahn,,https://gitlab.com/agrahn/ocgx2,https://gitlab.com/agrahn/ocgx2/issues,2016-02-26,2020-04-15, ocgxii,ocgx2,Alexander Grahn,,https://gitlab.com/agrahn/ocgx2,https://gitlab.com/agrahn/ocgx2/issues,2016-02-26,2020-04-15, one,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf index fbf3f14164..3b412e4338 100644 Binary files a/macros/latex/contrib/l3kernel/l3prefixes.pdf and b/macros/latex/contrib/l3kernel/l3prefixes.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx index d14576f08c..34a14829c7 100644 --- a/macros/latex/contrib/l3kernel/l3prg.dtx +++ b/macros/latex/contrib/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx index c586164260..33741fecf0 100644 --- a/macros/latex/contrib/l3kernel/l3prop.dtx +++ b/macros/latex/contrib/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx index f513fcb026..9068f7bbec 100644 --- a/macros/latex/contrib/l3kernel/l3quark.dtx +++ b/macros/latex/contrib/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx index 7c2d8e7504..80e2ffa896 100644 --- a/macros/latex/contrib/l3kernel/l3regex.dtx +++ b/macros/latex/contrib/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx index 56c4bc1fda..830adba2cb 100644 --- a/macros/latex/contrib/l3kernel/l3seq.dtx +++ b/macros/latex/contrib/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx index 8cfd78d6f1..a4973652c1 100644 --- a/macros/latex/contrib/l3kernel/l3skip.dtx +++ b/macros/latex/contrib/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx index 6b41acfe3e..89c085f778 100644 --- a/macros/latex/contrib/l3kernel/l3sort.dtx +++ b/macros/latex/contrib/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx index 4620342091..88bf391f25 100644 --- a/macros/latex/contrib/l3kernel/l3str-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx index d4cbc2bb49..d15ee54ed1 100644 --- a/macros/latex/contrib/l3kernel/l3str.dtx +++ b/macros/latex/contrib/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf index eb0878701d..caccebc3f6 100644 Binary files a/macros/latex/contrib/l3kernel/l3styleguide.pdf and b/macros/latex/contrib/l3kernel/l3styleguide.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex index 16d5983a04..0f04182896 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.tex +++ b/macros/latex/contrib/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2020-05-11} +\date{Released 2020-05-14} \begin{document} diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf index 44c75ca2e3..5366e6446b 100644 Binary files a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf and b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex index 0bc6adc9ac..c11fe2002f 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex +++ b/macros/latex/contrib/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 2020-05-11} +\date{Released 2020-05-14} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx index feef711735..fe96f7aec5 100644 --- a/macros/latex/contrib/l3kernel/l3sys.dtx +++ b/macros/latex/contrib/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf index 974430a84b..06e770e291 100644 Binary files a/macros/latex/contrib/l3kernel/l3term-glossary.pdf and b/macros/latex/contrib/l3kernel/l3term-glossary.pdf differ diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex index eab4b9053c..3e35a2e3b8 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.tex +++ b/macros/latex/contrib/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 2020-05-11} +\date{Released 2020-05-14} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx index ad71e49319..51819ed514 100644 --- a/macros/latex/contrib/l3kernel/l3text-case.dtx +++ b/macros/latex/contrib/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx index 070e41956f..54266ba72c 100644 --- a/macros/latex/contrib/l3kernel/l3text-purify.dtx +++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx index 5113e03cc9..0f8f24cafd 100644 --- a/macros/latex/contrib/l3kernel/l3text.dtx +++ b/macros/latex/contrib/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx index 6fbe2f1bbb..2a6b31f537 100644 --- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx +++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx index 53f61e9750..b3d6c3ddac 100644 --- a/macros/latex/contrib/l3kernel/l3tl.dtx +++ b/macros/latex/contrib/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx index 0608820bba..0ed1350b03 100644 --- a/macros/latex/contrib/l3kernel/l3token.dtx +++ b/macros/latex/contrib/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx index bc0466eeca..6f2d533f58 100644 --- a/macros/latex/contrib/l3kernel/l3unicode.dtx +++ b/macros/latex/contrib/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-11} +% \date{Released 2020-05-14} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf index 21358a14f7..af4dac1c7d 100644 Binary files a/macros/latex/contrib/l3kernel/source3.pdf and b/macros/latex/contrib/l3kernel/source3.pdf differ diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex index 91b33318e5..4209a7e724 100644 --- a/macros/latex/contrib/l3kernel/source3.tex +++ b/macros/latex/contrib/l3kernel/source3.tex @@ -53,7 +53,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2020-05-11} +\date{Released 2020-05-14} \pagenumbering{roman} \maketitle -- cgit v1.2.3