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 +- macros/latex/contrib/l3packages/CHANGELOG.md | 8 +- macros/latex/contrib/l3packages/README.md | 2 +- macros/latex/contrib/l3packages/l3keys2e.dtx | 8 +- macros/latex/contrib/l3packages/l3keys2e.pdf | Bin 347543 -> 347720 bytes macros/latex/contrib/l3packages/xfp.dtx | 4 +- macros/latex/contrib/l3packages/xfp.pdf | Bin 309887 -> 310099 bytes macros/latex/contrib/l3packages/xfrac.dtx | 4 +- macros/latex/contrib/l3packages/xfrac.pdf | Bin 454318 -> 454527 bytes macros/latex/contrib/l3packages/xparse.dtx | 148 ++++++-- macros/latex/contrib/l3packages/xparse.ins | 5 +- macros/latex/contrib/l3packages/xparse.pdf | Bin 505893 -> 506103 bytes macros/latex/contrib/l3packages/xtemplate.dtx | 52 ++- macros/latex/contrib/l3packages/xtemplate.pdf | Bin 416401 -> 416612 bytes macros/xetex/latex/bidi/README | 10 +- macros/xetex/latex/bidi/bidi-doc-intro.ltx | 5 +- macros/xetex/latex/bidi/bidi-doc-title.ltx | 10 +- macros/xetex/latex/bidi/bidi-doc.ltx | 2 +- macros/xetex/latex/bidi/bidi-doc.pdf | Bin 170125 -> 172895 bytes macros/xetex/latex/bidi/bidi.dtx | 39 ++- macros/xetex/latex/bidi/bidi.pdf | Bin 3106410 -> 3110998 bytes macros/xetex/latex/xepersian/README | 30 ++ macros/xetex/latex/xepersian/README.txt | 31 -- .../xetex/latex/xepersian/xepersian-doc-intro.ltx | 8 +- .../latex/xepersian/xepersian-doc-preamble.ltx | 11 +- .../xetex/latex/xepersian/xepersian-doc-title.ltx | 16 +- macros/xetex/latex/xepersian/xepersian-doc.ltx | 2 +- macros/xetex/latex/xepersian/xepersian-doc.pdf | Bin 280501 -> 234742 bytes macros/xetex/latex/xepersian/xepersian-logo.pdf | Bin 17869 -> 0 bytes macros/xetex/latex/xepersian/xepersian.dtx | 155 +++++---- macros/xetex/latex/xepersian/xepersian.pdf | Bin 655918 -> 761568 bytes 115 files changed, 667 insertions(+), 403 deletions(-) create mode 100644 macros/xetex/latex/xepersian/README delete mode 100644 macros/xetex/latex/xepersian/README.txt delete mode 100644 macros/xetex/latex/xepersian/xepersian-logo.pdf (limited to 'macros') 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 diff --git a/macros/latex/contrib/l3packages/CHANGELOG.md b/macros/latex/contrib/l3packages/CHANGELOG.md index 515f5d001b..ee88f4780f 100644 --- a/macros/latex/contrib/l3packages/CHANGELOG.md +++ b/macros/latex/contrib/l3packages/CHANGELOG.md @@ -7,6 +7,11 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2020-05-14] + +### Changed +- Internal packaging of `xparse` in advance of changes to the LaTeX2e kernel + ## [2020-03-06] ### Added @@ -92,7 +97,8 @@ this project uses date-based 'snapshot' version identifiers. - Switch to ISO date format - Improve cross-module use of internal functions -[Unreleased]: https://github.com/latex3/latex3/compare/2020-03-06...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2020-05-14...HEAD +[2020-05-14]: https://github.com/latex3/latex3/compare/2020-03-06...2020-05-14 [2020-03-06]: https://github.com/latex3/latex3/compare/2020-03-03...2020-03-06 [2020-03-03]: https://github.com/latex3/latex3/compare/2020-02-25...2020-03-03 [2020-02-25]: https://github.com/latex3/latex3/compare/2020-02-14...2020-02-25 diff --git a/macros/latex/contrib/l3packages/README.md b/macros/latex/contrib/l3packages/README.md index dbfd91cf34..8f505b0141 100644 --- a/macros/latex/contrib/l3packages/README.md +++ b/macros/latex/contrib/l3packages/README.md @@ -1,7 +1,7 @@ LaTeX3 High-Level Concepts ========================== -Release 2020-03-06 +Release 2020-05-14 Overview -------- diff --git a/macros/latex/contrib/l3packages/l3keys2e.dtx b/macros/latex/contrib/l3packages/l3keys2e.dtx index d6701c4519..6a09bb18bd 100644 --- a/macros/latex/contrib/l3packages/l3keys2e.dtx +++ b/macros/latex/contrib/l3packages/l3keys2e.dtx @@ -62,7 +62,7 @@ % }^^A % } % -% \date{Released 2020-03-06} +% \date{Released 2020-05-14} % % \maketitle % @@ -139,7 +139,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3keys2e}{2020-03-06}{} +\ProvidesExplPackage{l3keys2e}{2020-05-14}{} {LaTeX2e option processing using LaTeX3 keys} % \end{macrocode} % @@ -299,8 +299,8 @@ % so that there will always be a sign available. % \begin{macrocode} \cs_new:Npn \@@_latexe_remove_equals:n #1 - { \@@_latexe_remove_equals:w #1 = \q_stop } -\cs_new:Npn \@@_latexe_remove_equals:w #1 = #2 \q_stop { \exp_not:n {#1} } + { \@@_latexe_remove_equals:w #1 = \s_@@_stop } +\cs_new:Npn \@@_latexe_remove_equals:w #1 = #2 \s_@@_stop { \exp_not:n {#1} } % \end{macrocode} % \end{macro} % \end{macro} diff --git a/macros/latex/contrib/l3packages/l3keys2e.pdf b/macros/latex/contrib/l3packages/l3keys2e.pdf index 497301bdf7..0611a9b979 100644 Binary files a/macros/latex/contrib/l3packages/l3keys2e.pdf and b/macros/latex/contrib/l3packages/l3keys2e.pdf differ diff --git a/macros/latex/contrib/l3packages/xfp.dtx b/macros/latex/contrib/l3packages/xfp.dtx index afdd9e189c..e0ebede0f9 100644 --- a/macros/latex/contrib/l3packages/xfp.dtx +++ b/macros/latex/contrib/l3packages/xfp.dtx @@ -64,7 +64,7 @@ % }^^A % } % -% \date{Released 2020-03-06} +% \date{Released 2020-05-14} % % \maketitle % @@ -167,7 +167,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfp}{2020-03-06}{} +\ProvidesExplPackage{xfp}{2020-05-14}{} {L3 Floating point unit} % \end{macrocode} % diff --git a/macros/latex/contrib/l3packages/xfp.pdf b/macros/latex/contrib/l3packages/xfp.pdf index 2191564816..96c91d897d 100644 Binary files a/macros/latex/contrib/l3packages/xfp.pdf and b/macros/latex/contrib/l3packages/xfp.pdf differ diff --git a/macros/latex/contrib/l3packages/xfrac.dtx b/macros/latex/contrib/l3packages/xfrac.dtx index 7be07c978e..275aa6859a 100644 --- a/macros/latex/contrib/l3packages/xfrac.dtx +++ b/macros/latex/contrib/l3packages/xfrac.dtx @@ -65,7 +65,7 @@ % }^^A % } % -% \date{Released 2020-03-06} +% \date{Released 2020-05-14} % % \maketitle % @@ -535,7 +535,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfrac}{2020-03-06}{} +\ProvidesExplPackage{xfrac}{2020-05-14}{} {L3 Experimental split-level fractions} % \end{macrocode} % diff --git a/macros/latex/contrib/l3packages/xfrac.pdf b/macros/latex/contrib/l3packages/xfrac.pdf index a6b5f6a7c9..9454c240a2 100644 Binary files a/macros/latex/contrib/l3packages/xfrac.pdf and b/macros/latex/contrib/l3packages/xfrac.pdf differ diff --git a/macros/latex/contrib/l3packages/xparse.dtx b/macros/latex/contrib/l3packages/xparse.dtx index f56bcdf5e9..c700434903 100644 --- a/macros/latex/contrib/l3packages/xparse.dtx +++ b/macros/latex/contrib/l3packages/xparse.dtx @@ -67,7 +67,7 @@ % }^^A % } % -% \date{Released 2020-03-06} +% \date{Released 2020-05-14} % % \maketitle % @@ -304,7 +304,7 @@ % follow such a command. The most common example is the use of \cmd{\\} in % \pkg{amsmath} environments. In \pkg{xparse} terms it has signature % \begin{verbatim} -% \DeclareDocumentCommad \\ { !s !o } { ... } +% \DeclareDocumentCommand \\ { !s !o } { ... } % \end{verbatim} % % \subsection{Required delimited arguments} @@ -993,7 +993,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xparse}{2020-03-06}{} +\ProvidesExplPackage{xparse}{2020-05-14}{} {L3 Experimental document command parser} % \end{macrocode} % @@ -1019,22 +1019,31 @@ % \end{variable} % \end{variable} % +% \begin{macrocode} +% +% \end{macrocode} +% % \subsection{Reload check} % % A simple reload check. % \begin{macrocode} +%<*core> \cs_if_exist:NT \NewDocumentCommand { \file_input_stop: } +% % \end{macrocode} % +% Load the core code. % \begin{macrocode} -% +%<*2ekernel|package> +\file_input:n { xparse-generic.tex } +% % \end{macrocode} % % \subsection{Variables and constants} % % \begin{macrocode} -%<*package|2ekernel> +%<*!package> % \end{macrocode} % % \begin{variable}{\c_@@_special_chars_seq} @@ -1049,6 +1058,17 @@ % \end{macrocode} % \end{variable} % +% \begin{macrocode} +%<*core> +\if_charcode:w xx + \cs_new:Npn \@@_file_end_hook: { } +\else + \ExplSyntaxOn + \cs_new:Npn \@@_file_end_hook: { \ExplSyntaxOff } +\fi: +% +% \end{macrocode} +% % \begin{variable}{\l_@@_arg_spec_tl} % Holds the argument specification after normalization of shorthands. % \begin{macrocode} @@ -1477,9 +1497,9 @@ %<*initex> \cs_if_exist:cTF { environment~ \l_@@_environment_str } % -%<*package|2ekernel> +%<*core> \cs_if_exist:cTF { \l_@@_environment_str } -% +% { \__kernel_msg_info:nnxx { xparse } { redefine-environment } { \l_@@_environment_str } { \tl_to_str:n {#2} } @@ -1525,10 +1545,10 @@ \cs_generate_from_arg_count:cNnn { environment~ #1 ~end~aux~ } \cs_set:Npn \l_@@_current_arg_int {#4} -%<*package|2ekernel> +%<*core> \cs_set_eq:cc {#1} { environment~ #1 } \cs_set_eq:cc { end #1 } { environment~ #1 ~end } -% +% } } % \end{macrocode} @@ -1548,9 +1568,9 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_start_env:nnnnn #1#2 { -%<*package|2ekernel> +%<*core> \cs_if_exist_use:N \conditionally@traceoff -% +% \str_set:Nn \l_@@_environment_str {#2} \bool_set_true:N \l_@@_environment_bool \@@_start_aux:ccnnnn @@ -1560,9 +1580,9 @@ } \cs_new_protected:Npx \@@_start:nNNnnn #1#2#3 { -%<*package|2ekernel> +%<*core> \exp_not:n { \cs_if_exist_use:N \conditionally@traceoff } -% +% \exp_not:c { xparse~function~is~not~expandable } \exp_not:n { \bool_set_false:N \l_@@_environment_bool } \exp_not:N \@@_start_aux:NNnnnn @@ -1599,9 +1619,9 @@ { \tl_if_empty:NF \l_@@_defaults_tl { \@@_defaults: } \tl_if_empty:NF \l_@@_process_all_tl { \@@_args_process: } -%<*package|2ekernel> +%<*core> \cs_if_exist_use:N \conditionally@traceon -% +% \exp_after:wN \l_@@_fn_code_tl \l_@@_args_tl } % \end{macrocode} @@ -1880,6 +1900,32 @@ { \bool_set_false:N \l_@@_grab_expandably_bool } } \cs_new_protected:Npn \@@_normalize_arg_spec_loop:n #1 + { + \quark_if_recursion_tail_stop:n {#1} + \int_incr:N \l_@@_current_arg_int + \cs_if_exist_use:cF { @@_normalize_type_ \tl_to_str:n {#1} :w } + { + \bool_lazy_any:nTF + { + { \str_if_eq_p:nn {#1} { G } } + { \str_if_eq_p:nn {#1} { g } } + { \str_if_eq_p:nn {#1} { l } } + { \str_if_eq_p:nn {#1} { u } } + } + { + \__kernel_msg_error:nnxx { xparse } { xparse-argument-type } + { \@@_environment_or_command: } { \tl_to_str:n {#1} } + } + { + \__kernel_msg_error:nnxx { xparse } { unknown-argument-type } + { \@@_environment_or_command: } { \tl_to_str:n {#1} } + } + \@@_bad_def:wn + } + } +% +%<*package> +\cs_gset_protected:Npn \@@_normalize_arg_spec_loop:n #1 { \quark_if_recursion_tail_stop:n {#1} \int_incr:N \l_@@_current_arg_int @@ -1890,6 +1936,8 @@ \@@_bad_def:wn } } +% +%<*!package> % \end{macrocode} % \end{macro} % \end{macro} @@ -1923,8 +1971,6 @@ \quark_if_recursion_tail_stop_do:nn {##1} { \@@_bad_arg_spec:wn } \@@_normalize_type_E:w {##1} { } } - \cs_new_protected:Npn \@@_normalize_type_g:w - { \@@_normalize_type_G:w {#1} } \cs_new_protected:Npn \@@_normalize_type_o:w { \@@_normalize_type_D:w [ ] {#1} } \cs_new_protected:Npn \@@_normalize_type_O:w @@ -1938,6 +1984,12 @@ { \@@_normalize_type_t:w * } } \exp_args:No \@@_tmp:w { \c_novalue_tl } +% +%<*package> +\cs_new_protected:Npx \@@_normalize_type_g:w + { \exp_not:N \@@_normalize_type_G:w { \exp_not:V \c_novalue_tl } } +% +%<*!package> % \end{macrocode} % \end{macro} % @@ -2051,6 +2103,8 @@ \@@_normalize_E_unique_check:w #2 \q_stop } } +% +%<*package> \cs_new_protected:Npn \@@_normalize_type_G:w #1 { \quark_if_recursion_tail_stop_do:nn {#1} { \@@_bad_arg_spec:wn } @@ -2059,6 +2113,8 @@ \tl_put_right:Nn \l_@@_last_delimiters_tl { { } } \@@_normalize_arg_spec_loop:n } +% +%<*!package> \cs_new_protected:Npn \@@_normalize_type_t:w #1 { \quark_if_recursion_tail_stop_do:Nn #1 { \@@_bad_arg_spec:wn } @@ -2095,12 +2151,16 @@ % \cs{l_@@_arg_spec_tl}, count the mandatory argument, and empty the % list of last delimiters. % \begin{macrocode} +% +%<*package> \cs_new_protected:Npn \@@_normalize_type_l:w { \@@_normalize_check_lu:N l \@@_add_arg_spec_mandatory:n { l } \@@_normalize_arg_spec_loop:n } +% +%<*!package> \cs_new_protected:Npn \@@_normalize_type_m:w { \@@_delimiter_check:nnn { } { m } { \iow_char:N \{ } @@ -2117,6 +2177,8 @@ \@@_add_arg_spec_mandatory:n { R #1 #2 {#3} } \@@_normalize_arg_spec_loop:n } +% +%<*package> \cs_new_protected:Npn \@@_normalize_type_u:w #1 { \quark_if_recursion_tail_stop_do:nn {#1} { \@@_bad_arg_spec:wn } @@ -2124,6 +2186,8 @@ \@@_add_arg_spec_mandatory:n { u {#1} } \@@_normalize_arg_spec_loop:n } +% +%<*!package> \cs_new_protected:Npn \@@_normalize_type_v:w { \@@_normalize_check_gv:N v @@ -2482,6 +2546,8 @@ % For the \texttt{G} type, the grabber and the default are added to the % signature. % \begin{macrocode} +% +%<*package> \cs_new_protected:Npn \@@_add_type_G:w #1 { \@@_flush_m_args: @@ -2503,6 +2569,8 @@ \@@_add_grabber:N l \@@_prepare_signature:N } +% +%<*!package> % \end{macrocode} % \end{macro} % @@ -2558,6 +2626,8 @@ % At the set up stage, the \texttt{u} type argument is identical to the % \texttt{G} type except for the name of the grabber function. % \begin{macrocode} +% +%<*package> \cs_new_protected:Npn \@@_add_type_u:w #1 { \@@_flush_m_args: @@ -2566,6 +2636,8 @@ \tl_put_right:Nn \l_@@_signature_tl { {#1} } \@@_prepare_signature:N } +% +%<*!package> % \end{macrocode} % \end{macro} % @@ -2784,8 +2856,12 @@ % parameter text ends with |#| in fact end up being delimited by an % open brace. % \begin{macrocode} +% +%<*package> \cs_new_protected:Npn \@@_add_expandable_type_l:w { \@@_add_expandable_type_u:w ## } +% +%<*!package> % \end{macrocode} % \end{macro} % @@ -2834,6 +2910,8 @@ % Define an auxiliary that will be used directly in the signature. It % grabs one argument delimited by |#1| and places it before \cs{q_@@}. % \begin{macrocode} +% +%<*package> \cs_new_protected:Npn \@@_add_expandable_type_u:w #1 { \@@_add_default: @@ -2846,6 +2924,8 @@ { \exp_not:c { \l_@@_expandable_aux_name_tl } } \@@_prepare_signature:N } +% +%<*!package> % \end{macrocode} % \end{macro} % @@ -3249,6 +3329,8 @@ % Optional groups are checked by meaning, so that the same code will % work with, for example, \ConTeXt{}-like input. % \begin{macrocode} +% +%<*package> \cs_new_protected:Npn \@@_grab_G:w #1 \@@_run_code: { \@@_grab_G_aux:nNN {#1} \cs_set_protected_nopar:Npn @@ -3278,6 +3360,8 @@ { \l_@@_fn_tl } { \@@_add_arg:o \c_novalue_tl } } +% +%<*!package> % \end{macrocode} % \end{macro} % \end{macro} @@ -3290,6 +3374,8 @@ % \begin{macro}{\@@_grab_l_aux:nN} % Argument grabbers for mandatory \TeX{} arguments are pretty simple. % \begin{macrocode} +% +%<*package> \cs_new_protected:Npn \@@_grab_l:w #1 \@@_run_code: { \@@_grab_l_aux:nN {#1} \cs_set_protected_nopar:Npn } \cs_new_protected:Npn \@@_grab_l_long:w #1 \@@_run_code: @@ -3301,6 +3387,8 @@ { \@@_add_arg:n {##1} } \l_@@_fn_tl } +% +%<*!package> % \end{macrocode} % \end{macro} % \end{macro} @@ -3472,6 +3560,8 @@ % Grabbing up to a list of tokens is quite easy: define the grabber, % and then collect. % \begin{macrocode} +% +%<*package> \cs_new_protected:Npn \@@_grab_u:w #1#2 \@@_run_code: { \@@_grab_u_aux:nnN {#1} {#2} \cs_set_protected_nopar:Npn } \cs_new_protected:Npn \@@_grab_u_long:w #1#2 \@@_run_code: @@ -3483,6 +3573,8 @@ { \@@_add_arg:n {##1} } \l_@@_fn_tl } +% +%<*!package> % \end{macrocode} % \end{macro} % \end{macro} @@ -3694,10 +3786,10 @@ \c_@@_special_chars_seq \char_set_catcode_other:N % -%<*package|2ekernel> +%<*core> \cs_set_eq:NN \do \char_set_catcode_other:N \dospecials -% +% \tex_endlinechar:D = `\^^M \scan_stop: \bool_if:NTF \l_@@_long_bool { \char_set_catcode_other:n { \tex_endlinechar:D } } @@ -4762,6 +4854,13 @@ The~letter~'#2'~does~not~specify~a~known~argument~type. \c_@@_ignore_def_tl } +\__kernel_msg_new:nnnn { xparse } { xparse-argument-type } + { Deprecated~argument~type~'#2'~for~the~#1~requires~xparse. } + { + The~letter~'#2'~specifies~a~known~argument~type~that~requires~ + the~xparse~package. + \c_@@_ignore_def_tl + } % \end{macrocode} % % Errors when using commands/environments. The \texttt{if-boolean} @@ -5112,18 +5211,15 @@ % % \begin{macrocode} %<*2ekernel> -% \end{macrocode} -% -% \begin{macrocode} \ExplSyntaxOff -% \end{macrocode} -% -% \begin{macrocode} % % \end{macrocode} % % \begin{macrocode} -% +%<*core> +\@@_file_end_hook: +% +% % \end{macrocode} % % \end{implementation} diff --git a/macros/latex/contrib/l3packages/xparse.ins b/macros/latex/contrib/l3packages/xparse.ins index d40f7cd6f2..17a94782a4 100644 --- a/macros/latex/contrib/l3packages/xparse.ins +++ b/macros/latex/contrib/l3packages/xparse.ins @@ -42,7 +42,8 @@ and all files in that bundle must be distributed together. \keepsilent -\generate{\file{xparse.sty} {\from{xparse.dtx} {package}} - \file{xparse.ltx} {\from{xparse.dtx} {2ekernel}}} +\generate{\file{xparse-generic.tex}{\from{xparse.dtx}{core}} + \file{xparse.sty}{\from{xparse.dtx}{package}} + \file{xparse.ltx}{\from{xparse.dtx}{2ekernel}}} \endbatchfile diff --git a/macros/latex/contrib/l3packages/xparse.pdf b/macros/latex/contrib/l3packages/xparse.pdf index 76fe65c72b..7813fa3526 100644 Binary files a/macros/latex/contrib/l3packages/xparse.pdf and b/macros/latex/contrib/l3packages/xparse.pdf differ diff --git a/macros/latex/contrib/l3packages/xtemplate.dtx b/macros/latex/contrib/l3packages/xtemplate.dtx index 2236b30f97..897d1d3f84 100644 --- a/macros/latex/contrib/l3packages/xtemplate.dtx +++ b/macros/latex/contrib/l3packages/xtemplate.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2020-03-06} +% \date{Released 2020-05-14} % % \maketitle % @@ -682,7 +682,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xtemplate}{2020-03-06}{} +\ProvidesExplPackage{xtemplate}{2020-05-14}{} {L3 Experimental prototype document functions} % \end{macrocode} % @@ -858,6 +858,28 @@ % \end{macrocode} % \end{variable} % +% \begin{variable}{\s_@@_mark,\s_@@_stop} +% Internal scan marks. +% \begin{macrocode} +\scan_new:N \s_@@_mark +\scan_new:N \s_@@_stop +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\q_@@_nil} +% Internal quarks. +% \begin{macrocode} +\quark_new:N \q_@@_nil +% \end{macrocode} +% \end{variable} +% +% \begin{macro}[pTF]{\@@_quark_if_nil:n} +% Branching quark conditional. +% \begin{macrocode} +\__kernel_quark_new_conditional:Nn \@@_quark_if_nil:N { F } +% \end{macrocode} +% \end{macro} +% % \subsection{Variant of prop functions} % % \begin{macro}[TF]{\prop_get:NoN} @@ -1300,7 +1322,7 @@ { \tl_clear:N \l_@@_key_name_tl \exp_after:wN \@@_split_keytype_aux:w - \l_@@_tmp_tl \q_stop + \l_@@_tmp_tl \s_@@_stop } } { @@ -1311,7 +1333,7 @@ \use:x { \cs_new_protected:Npn \exp_not:N \@@_split_keytype_aux:w - ##1 \token_to_str:N : ##2 \exp_not:N \q_stop + ##1 \token_to_str:N : ##2 \s_@@_stop { \tl_put_right:Nx \exp_not:N \l_@@_key_name_tl { \exp_not:N \tl_to_str:n {##1} } @@ -1319,7 +1341,7 @@ { \tl_put_right:Nn \exp_not:N \l_@@_key_name_tl { \token_to_str:N : } - \exp_not:N \@@_split_keytype_aux:w ##2 \exp_not:N \q_stop + \exp_not:N \@@_split_keytype_aux:w ##2 \s_@@_stop } { \exp_not:N \tl_if_empty:NTF \exp_not:N \l_@@_key_name_tl @@ -1357,7 +1379,7 @@ \tl_if_in:nnT {#1} {##1} { \cs_set:Npn \@@_split_keytype_arg_aux:w - ####1 ##1 ####2 \q_stop + ####1 ##1 ####2 \s_@@_stop { \tl_if_empty:nT {####1} { @@ -1366,7 +1388,7 @@ \seq_map_break: } } - \@@_split_keytype_arg_aux:w #1 \q_stop + \@@_split_keytype_arg_aux:w #1 \s_@@_stop } } \seq_map_function:NN \c_@@_keytypes_arg_seq @@ -1374,7 +1396,7 @@ } \cs_generate_variant:Nn \@@_split_keytype_arg:n { o } \cs_new:Npn \@@_split_keytype_arg_aux:n #1 { } -\cs_new:Npn \@@_split_keytype_arg_aux:w #1 \q_stop { } +\cs_new:Npn \@@_split_keytype_arg_aux:w #1 \s_@@_stop { } % \end{macrocode} % \end{macro} % \end{macro} @@ -1628,7 +1650,7 @@ } { \tl_if_in:nnTF {#1} { global } - { \@@_parse_vars_elt_aux:w #1 \q_stop } + { \@@_parse_vars_elt_aux:w #1 \s_@@_stop } { \msg_error:nnx { xtemplate } { bad-variable } { \tl_to_str:n {#1} } @@ -1637,7 +1659,7 @@ } } } -\cs_new_protected:Npn \@@_parse_vars_elt_aux:w #1 global #2 \q_stop +\cs_new_protected:Npn \@@_parse_vars_elt_aux:w #1 global #2 \s_@@_stop { \tl_if_empty:nTF {#1} { @@ -2060,10 +2082,10 @@ \bool_set_false:N \l_@@_global_bool \tl_if_in:onT \l_@@_var_tl { global } { - \exp_after:wN \@@_find_global_aux:w \l_@@_var_tl \q_stop + \exp_after:wN \@@_find_global_aux:w \l_@@_var_tl \s_@@_stop } } -\cs_new_protected:Npn \@@_find_global_aux:w #1 global #2 \q_stop +\cs_new_protected:Npn \@@_find_global_aux:w #1 global #2 \s_@@_stop { \tl_set:Nn \l_@@_var_tl {#2} \bool_set_true:N \l_@@_global_bool @@ -2377,16 +2399,16 @@ \l_@@_value_tl { \exp_after:wN \@@_key_to_value_auxii:w \l_@@_value_tl - \q_mark global \q_nil \q_stop + \s_@@_mark global \q_@@_nil \s_@@_stop } { \msg_error:nnx { xtemplate } { unknown-attribute } { \l_@@_tmp_tl } } } -\cs_new_protected:Npn \@@_key_to_value_auxii:w #1 global #2#3 \q_stop +\cs_new_protected:Npn \@@_key_to_value_auxii:w #1 global #2#3 \s_@@_stop { - \quark_if_nil:NF #2 + \@@_quark_if_nil:NF #2 { \tl_set:Nn \l_@@_value_tl {#2} } } % \end{macrocode} diff --git a/macros/latex/contrib/l3packages/xtemplate.pdf b/macros/latex/contrib/l3packages/xtemplate.pdf index 68bbd25f44..e69b3a4142 100644 Binary files a/macros/latex/contrib/l3packages/xtemplate.pdf and b/macros/latex/contrib/l3packages/xtemplate.pdf differ diff --git a/macros/xetex/latex/bidi/README b/macros/xetex/latex/bidi/README index f952bb09c4..d75d1eec74 100644 --- a/macros/xetex/latex/bidi/README +++ b/macros/xetex/latex/bidi/README @@ -1,6 +1,6 @@ ___________________ The bidi package -v36 +v36.1 This package provides a convenient interface for typesetting bidirectional texts in Plain TeX and LaTeX, using XeTeX engine. @@ -16,12 +16,12 @@ In doing so, please always explain your issue well enough, and always include a minimal working example showing the issue. -Current version release date: 2020/05/13 +Current version release date: 2020/05/14 -___________________ -Vafa Khalighi +___________________________________________ +Copyright (c) Vafa Khalighi 2007--2020 +Copyright (c) bidi-tex GitHub Organization 2018--2020 -Copyright (c) 2007--2020 It may be distributed and/or modified under the LaTeX Project Public License, version 1.3c or higher (your choice). The latest version of this license is at: http://www.latex-project.org/lppl.txt diff --git a/macros/xetex/latex/bidi/bidi-doc-intro.ltx b/macros/xetex/latex/bidi/bidi-doc-intro.ltx index a96eee8563..80b89d9d10 100644 --- a/macros/xetex/latex/bidi/bidi-doc-intro.ltx +++ b/macros/xetex/latex/bidi/bidi-doc-intro.ltx @@ -17,9 +17,10 @@ If you use \textsf{bidi} package to write any input \TeX\ document, and then run * and LaTeX. The package includes adaptations * for use with many other commonly-used packages. * -* Copyright (c) 2009--2020 Vafa Khalighi +* Copyright (c) 2007--2020 Vafa Khalighi +* Copyright (c) 2018--2020 bidi-tex GitHub Organization * -* v36, 2020/05/13 +* v36.1, 2020/05/14 * * License: LaTeX Project Public License, version * 1.3c or higher (your choice) diff --git a/macros/xetex/latex/bidi/bidi-doc-title.ltx b/macros/xetex/latex/bidi/bidi-doc-title.ltx index bb960ed286..4de0ff59b5 100644 --- a/macros/xetex/latex/bidi/bidi-doc-title.ltx +++ b/macros/xetex/latex/bidi/bidi-doc-title.ltx @@ -3,8 +3,8 @@ \begin{document} \title{\textcolor{blue!65!black}{\Huge The \textsf{bidi} \textit{Package}}\\ \LARGE Bidirectional typesetting in plain \TeX{} and \LaTeX, using \XeTeX{} engine\\[5pt] -\large User documentation for \textcolor{blue!65!black}{version 36}} - \author{Vafa Khalighi} +\large User documentation for \textcolor{blue!65!black}{version 36.1}} +\author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team to maintain the package in the period 2018--2020.}} \setcounter{page}{0} \thispagestyle{empty} \includegraphics[width=.3\textwidth]{bidi-logo}\qquad @@ -13,7 +13,7 @@ \textcolor{blue!65!black}{\Huge The \textsf{bidi} \textit{Package}} \Large -User documentation for \textcolor{blue!65!black}{version 36}} +User documentation for \textcolor{blue!65!black}{version 36.1}} \vskip 0pt plus 3fill \textit{\large to my Master, \textbf{Ferdowsi The Great}} @@ -34,8 +34,12 @@ a minimal working example showing the issue. \vskip 0pt plus 3fill + Copyright (c) 2007--2020 Vafa Khalighi +Copyright (c) 2018--2020 bidi-tex GitHub Organization + + \medskip Permission is granted to distribute and/or modify \emph{both the documentation and the code} under the conditions of the \LaTeX{} Project Public License, either version 1.3c of this license or (at your option) any later version. diff --git a/macros/xetex/latex/bidi/bidi-doc.ltx b/macros/xetex/latex/bidi/bidi-doc.ltx index baea8088d0..43d7771b13 100644 --- a/macros/xetex/latex/bidi/bidi-doc.ltx +++ b/macros/xetex/latex/bidi/bidi-doc.ltx @@ -1,7 +1,7 @@ \documentclass{ltxdoc} \input{bidi-doc-preamble.ltx} \hypersetup{% - pdftitle={User documentation for version 36 of the bidi + pdftitle={User documentation for version 36.1 of the bidi package}% } \begin{document} diff --git a/macros/xetex/latex/bidi/bidi-doc.pdf b/macros/xetex/latex/bidi/bidi-doc.pdf index c0b61b0da1..f414b16e9f 100644 Binary files a/macros/xetex/latex/bidi/bidi-doc.pdf and b/macros/xetex/latex/bidi/bidi-doc.pdf differ diff --git a/macros/xetex/latex/bidi/bidi.dtx b/macros/xetex/latex/bidi/bidi.dtx index 1a80865dd5..7521caa913 100644 --- a/macros/xetex/latex/bidi/bidi.dtx +++ b/macros/xetex/latex/bidi/bidi.dtx @@ -5,7 +5,7 @@ %<*readme> ___________________ The bidi package -v36 +v36.1 This package provides a convenient interface for typesetting bidirectional texts in Plain TeX and LaTeX, using XeTeX engine. @@ -21,12 +21,12 @@ In doing so, please always explain your issue well enough, and always include a minimal working example showing the issue. -Current version release date: 2020/05/13 +Current version release date: 2020/05/14 -___________________ -Vafa Khalighi - -Copyright (c) 2007--2020 +___________________________________________ +Copyright (c) Vafa Khalighi 2007--2020 +Copyright (c) bidi-tex GitHub Organization 2018--2020 + It may be distributed and/or modified under the LaTeX Project Public License, version 1.3c or higher (your choice). The latest version of this license is at: http://www.latex-project.org/lppl.txt @@ -44,7 +44,8 @@ by Vafa Khalighi. \preamble __________________________________________________ - Copyright (c) 2009--2020 Vafa Khalighi + Copyright (c) 2007--2020 Vafa Khalighi + Copyright (c) 2018--2020 bidi-tex GitHub Organization It may be distributed and/or modified under the LaTeX Project Public License, version 1.3c or higher (your choice). The latest version of @@ -218,7 +219,7 @@ by Vafa Khalighi. \documentclass{ltxdoc} \input{bidi-doc-preamble.ltx} \hypersetup{% - pdftitle={Source documentation for version 36 of the bidi + pdftitle={Source documentation for version 36.1 of the bidi package}% } \EnableCrossrefs @@ -237,8 +238,8 @@ by Vafa Khalighi. % \GetFileInfo{\jobname.dtx} % \title{\textcolor{blue!65!black}{\Huge The \textsf{bidi} \textit{Package}}\\ %\LARGE Bidirectional typesetting in plain \TeX{} and \LaTeX, using \XeTeX{} engine\\[5pt] -%\large Source documentation for \textcolor{blue!65!black}{version 36}} -% \author{Vafa Khalighi} +%\large Source documentation for \textcolor{blue!65!black}{version 36.1}} +% \author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team to maintain the package in the period 2018--2020.}} %\setcounter{page}{0} %\thispagestyle{empty} %\includegraphics[width=.3\textwidth]{bidi-logo}\qquad @@ -247,7 +248,7 @@ by Vafa Khalighi. %\textcolor{blue!65!black}{\Huge The \textsf{bidi} \textit{Package}} % %\Large -%Source documentation for \textcolor{blue!65!black}{version 36}} +%Source documentation for \textcolor{blue!65!black}{version 36.1}} % %\vskip 0pt plus 3fill %\textit{\large to my Master, \textbf{Ferdowsi The Great}} @@ -270,6 +271,8 @@ by Vafa Khalighi. % %Copyright (c) 2007--2020 Vafa Khalighi % +%Copyright (c) 2018--2020 bidi-tex GitHub Organization +% %\medskip %Permission is granted to distribute and/or modify \emph{both the documentation and the code} under the conditions of the \LaTeX{} Project Public License, either version 1.3c of this license or (at your option) any later version. % @@ -1895,8 +1898,8 @@ by Vafa Khalighi. % \section{File \texttt{bidi.sty}} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\def\bididate{2020/05/13} -\def\bidi@version{36} +\def\bididate{2020/05/14} +\def\bidi@version{36.1} \ProvidesPackage{bidi}[\bididate\space v\bidi@version\space Bidirectional typesetting in plain TeX and LaTeX] \edef\@bidi@info{****************************************************^^J% @@ -1909,7 +1912,8 @@ Bidirectional typesetting in plain TeX and LaTeX] * and LaTeX. The package includes adaptations^^J% * for use with many other commonly-used packages.^^J% * ^^J% -* Copyright (c) 2009--2020 Vafa Khalighi^^J% +* Copyright (c) 2007--2020 Vafa Khalighi^^J% +* Copyright (c) 2018--2020 bidi-tex GitHub organization^^J% * ^^J% * v\bidi@version, \bididate^^J% * ^^J% @@ -2221,9 +2225,9 @@ Bidirectional typesetting in plain TeX and LaTeX] %\fi % \section{File \texttt{bidi.tex}} % \begin{macrocode} -\def\bididate{2020/05/13} +\def\bididate{2020/05/14} \catcode`@=11 -\def\bidi@version{36} +\def\bidi@version{36.1} \let \protect \relax \newlinechar`\^^J \edef\@bidi@info{****************************************************^^J% @@ -2236,7 +2240,8 @@ Bidirectional typesetting in plain TeX and LaTeX] * and LaTeX. The package includes adaptations^^J% * for use with many other commonly-used packages.^^J% * ^^J% -* Copyright (c) 2009--2020 Vafa Khalighi^^J% +* Copyright (c) 2007--2020 Vafa Khalighi^^J% +* Copyright (c) 2018--2020 bidi-tex GitHub organization^^J% * ^^J% * v\bidi@version, \bididate^^J% * ^^J% diff --git a/macros/xetex/latex/bidi/bidi.pdf b/macros/xetex/latex/bidi/bidi.pdf index 1e94c4f137..788e06188f 100644 Binary files a/macros/xetex/latex/bidi/bidi.pdf and b/macros/xetex/latex/bidi/bidi.pdf differ diff --git a/macros/xetex/latex/xepersian/README b/macros/xetex/latex/xepersian/README new file mode 100644 index 0000000000..0020aa7dcf --- /dev/null +++ b/macros/xetex/latex/xepersian/README @@ -0,0 +1,30 @@ +____________________ +The XePersian package +v22.9 + +The xepersian package provides a convenient interface for +typesetting Persian and English texts in LaTeX, using XeTeX +engine. + +If you want to report any bugs or typos and corrections in the +documentation, or ask for any new features, or suggest any +improvements, or ask any questions about the package, then +please use the issue tracker: + + + +In doing so, please always explain your issue well enough, and always +include a minimal working example showing the issue. + +Current version release date: 2020/05/14 +___________________________________________ +Copyright (c) Vafa Khalighi 2008--2020 +Copyright (c) bidi-tex GitHub Organization 2018--2020 + +Distributed under the LaTeX Project Public License +It may be distributed and/or modified under the LaTeX Project Public License, +version 1.3c or higher (your choice). The latest version of +this license is at: http://www.latex-project.org/lppl.txt + +This work is “author-maintained” (as per LPPL maintenance status) +by Vafa Khalighi. diff --git a/macros/xetex/latex/xepersian/README.txt b/macros/xetex/latex/xepersian/README.txt deleted file mode 100644 index d63afbcca2..0000000000 --- a/macros/xetex/latex/xepersian/README.txt +++ /dev/null @@ -1,31 +0,0 @@ -____________________ -The XePersian package -v22.8 - -The xepersian package provides a convenient interface for -typesetting Persian and English texts in LaTeX, using XeTeX -engine. - -If you want to report any bugs or typos and corrections in the -documentation, or ask for any new features, or suggest any -improvements, or ask any questions about the package, then -please use the issue tracker: - - - -In doing so, please always explain your issue well enough, and always -include a minimal working example showing the issue. - -Current version release date: 2020-01-31 -______________ - -Copyright (c) Vafa Khalighi 2007-2019 - bidi-tex GitHub Organisation 2018-2020 - -Distributed under the LaTeX Project Public License -It may be distributed and/or modified under the LaTeX Project Public License, -version 1.3c or higher (your choice). The latest version of -this license is at: http://www.latex-project.org/lppl.txt - -This work is “author-maintained” (as per LPPL maintenance status) -by bidi-tex GitHub Organisation. diff --git a/macros/xetex/latex/xepersian/xepersian-doc-intro.ltx b/macros/xetex/latex/xepersian/xepersian-doc-intro.ltx index 7e89db9b8a..36ecc85d3c 100644 --- a/macros/xetex/latex/xepersian/xepersian-doc-intro.ltx +++ b/macros/xetex/latex/xepersian/xepersian-doc-intro.ltx @@ -22,17 +22,17 @@ If you use \textsf{\XePersian} package to write any input \TeX\ document, and th * typesetting, using fonts provided in the * distribution. * -* Copyright (c) 2008-2019 Vafa Khalighi -* 2018-2020 bidi-tex GitHub Organisation +* Copyright (c) 2008--2020 Vafa Khalighi +* Copyright (c) 2018--2020 bidi-tex GitHub Organization * -* v22.8, 2020-01-31 +* v22.9, 2020/05/14 * * License: LaTeX Project Public License, version * 1.3c or higher (your choice) * * Location on CTAN: /macros/xetex/latex/xepersian * -* Issue tracker: https://github.com/bidi-tex/xepersian/issues +* Issue tracker: https://github.com/persiantex/xepersian/issues * **************************************************** \end{verbatim} diff --git a/macros/xetex/latex/xepersian/xepersian-doc-preamble.ltx b/macros/xetex/latex/xepersian/xepersian-doc-preamble.ltx index 81b3bc0c84..dc4836229a 100644 --- a/macros/xetex/latex/xepersian/xepersian-doc-preamble.ltx +++ b/macros/xetex/latex/xepersian/xepersian-doc-preamble.ltx @@ -1,8 +1,8 @@ \usepackage{docmute} \usepackage{supertabular} \usepackage{fontspec} -%\setmainfont[Ligatures=TeX,Numbers=OldStyle]{Minion Pro} -%\setsansfont[Ligatures=TeX,Numbers=OldStyle]{Myriad Pro} +\setmainfont[Ligatures=TeX,Numbers=OldStyle]{Minion Pro} +\setsansfont[Ligatures=TeX,Numbers=OldStyle]{Myriad Pro} \usepackage{calc} \usepackage{pifont} \usepackage{bbding} @@ -19,12 +19,7 @@ } \usepackage{bidi} \setlength\columnseprule{.4pt} -% -% Font available -% Apache License 2.0 -% https://github.com/nekofar/iranian-sans-fontface/archive/v1.0.6.zip -\newfontfamily\ParsiFont[Script=Arabic]{IranianSansRegular.ttf} -% +\newfontfamily\ParsiFont[Script=Arabic]{Iranian Sans} \def\Pcs#1{\nxPLcs{#1}} \def\nxPLcs#1{\RLE{\texttt{\symbol{92}\ParsiFont#1}}} \def\Lenv#1{\texttt{#1}} diff --git a/macros/xetex/latex/xepersian/xepersian-doc-title.ltx b/macros/xetex/latex/xepersian/xepersian-doc-title.ltx index 39102822eb..29bafccee4 100644 --- a/macros/xetex/latex/xepersian/xepersian-doc-title.ltx +++ b/macros/xetex/latex/xepersian/xepersian-doc-title.ltx @@ -3,8 +3,8 @@ \begin{document} \title{\textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}}\\ \LARGE Persian for \LaTeXe, using {\XeTeX} engine\\[5pt] -\large User documentation for \textcolor{blue!65!black}{version 22.8}} - \author{Vafa Khalighi\thanks{Maintained by bidi-tex \url{https://github.com/bidi-tex}}} +\large User documentation for \textcolor{blue!65!black}{version 22.9}} +\author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team to maintain the package in the period 2018--2020.}} \setcounter{page}{0} \thispagestyle{empty} \includegraphics[width=.3\textwidth]{xepersian-logo}\qquad @@ -13,7 +13,7 @@ \textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}} \Large -User documentation for \textcolor{blue!65!black}{version 22.8}} +User documentation for \textcolor{blue!65!black}{version 22.9}} \vskip 0pt plus 3fill \textit{\large to my Master, \textbf{Ferdowsi The Great}} @@ -24,7 +24,7 @@ If you want to report any bugs or typos and corrections in the documentation, or ask for any new features, or suggest any improvements, or ask any questions about the package, then please use the issue tracker: \medskip - \centerline{\url{https://github.com/bidi-tex/xepersian/issues}} + \centerline{\url{https://github.com/persiantex/xepersian/issues}} \medskip In doing so, please always explain your issue well enough, and always include @@ -34,8 +34,12 @@ a minimal working example showing the issue. \vskip 0pt plus 3fill -Copyright (c) 2008-2019 Vafa Khalighi - 2018-2020 bidi-tex GitHub Organisation + +Copyright (c) 2008--2020 Vafa Khalighi + +Copyright (c) 2018--2020 bidi-tex GitHub Organization + + \medskip Permission is granted to distribute and/or modify \emph{both the documentation and the code} under the conditions of the \LaTeX{} Project Public License, either version 1.3c of this license or (at your option) any later version. diff --git a/macros/xetex/latex/xepersian/xepersian-doc.ltx b/macros/xetex/latex/xepersian/xepersian-doc.ltx index 5e4b16ba43..f00d7c7975 100644 --- a/macros/xetex/latex/xepersian/xepersian-doc.ltx +++ b/macros/xetex/latex/xepersian/xepersian-doc.ltx @@ -1,7 +1,7 @@ \documentclass{ltxdoc} \input{xepersian-doc-preamble.ltx} \hypersetup{% - pdftitle={User documentation for version 22.7 of the XePersian + pdftitle={User documentation for version 22.9 of the XePersian package}% } \begin{document} diff --git a/macros/xetex/latex/xepersian/xepersian-doc.pdf b/macros/xetex/latex/xepersian/xepersian-doc.pdf index 14e723cb25..c200c998d4 100644 Binary files a/macros/xetex/latex/xepersian/xepersian-doc.pdf and b/macros/xetex/latex/xepersian/xepersian-doc.pdf differ diff --git a/macros/xetex/latex/xepersian/xepersian-logo.pdf b/macros/xetex/latex/xepersian/xepersian-logo.pdf deleted file mode 100644 index b52b3e0e9a..0000000000 Binary files a/macros/xetex/latex/xepersian/xepersian-logo.pdf and /dev/null differ diff --git a/macros/xetex/latex/xepersian/xepersian.dtx b/macros/xetex/latex/xepersian/xepersian.dtx index a20a99cb37..89e3c8ff4b 100644 --- a/macros/xetex/latex/xepersian/xepersian.dtx +++ b/macros/xetex/latex/xepersian/xepersian.dtx @@ -5,7 +5,7 @@ %<*readme> ____________________ The XePersian package -v22.8 +v22.9 The xepersian package provides a convenient interface for typesetting Persian and English texts in LaTeX, using XeTeX @@ -16,18 +16,16 @@ documentation, or ask for any new features, or suggest any improvements, or ask any questions about the package, then please use the issue tracker: - + In doing so, please always explain your issue well enough, and always include a minimal working example showing the issue. -Current version release date: 2020-01-31 -______________ - -Copyright (c) Vafa Khalighi 2007-2019 - bidi-tex GitHub Organisation 2018-2020 - +Current version release date: 2020/05/14 +___________________________________________ +Copyright (c) Vafa Khalighi 2008--2020 +Copyright (c) bidi-tex GitHub Organization 2018--2020 Distributed under the LaTeX Project Public License It may be distributed and/or modified under the LaTeX Project Public License, @@ -35,7 +33,7 @@ version 1.3c or higher (your choice). The latest version of this license is at: http://www.latex-project.org/lppl.txt This work is “author-maintained” (as per LPPL maintenance status) -by bidi-tex GitHub Organisation. +by Vafa Khalighi. % %<*internal> \fi @@ -48,18 +46,15 @@ by bidi-tex GitHub Organisation. \preamble __________________________________________________ - - Copyright (c) Vafa Khalighi 2007-2019 - bidi-tex GitHub Organisation 2018-2020 - - + Copyright (c) 2008--2020 Vafa Khalighi + Copyright (c) 2018--2020 bidi-tex GitHub Organization It may be distributed and/or modified under the LaTeX Project Public License, version 1.3c or higher (your choice). The latest version of this license is at: http://www.latex-project.org/lppl.txt This work is “author-maintained” (as per LPPL maintenance status) - by bidi-tex GitHub Organisation. + by Vafa Khalighi. \endpreamble @@ -94,7 +89,7 @@ by bidi-tex GitHub Organisation. \generate{\file{extrafootnotefeatures-xepersian.def}{\from{\jobname.dtx}{table,extrafootnotefeatures-xepersian.def}}} \generate{\file{extreport-xepersian.def}{\from{\jobname.dtx}{table,extreport-xepersian.def}}} \generate{\file{fancyref-xepersian.def}{\from{\jobname.dtx}{table,fancyref-xepersian.def}}} -%\generate{\file{fontspec-xepersian.def}{\from{\jobname.dtx}{table,fontspec-xepersian.def}}} +\generate{\file{fontspec-xepersian.def}{\from{\jobname.dtx}{table,fontspec-xepersian.def}}} \generate{\file{footnote-xepersian.def}{\from{\jobname.dtx}{table,footnote-xepersian.def}}} \generate{\file{framed-xepersian.def}{\from{\jobname.dtx}{table,framed-xepersian.def}}} \generate{\file{glossaries-xepersian.def}{\from{\jobname.dtx}{table,glossaries-xepersian.def}}} @@ -149,13 +144,16 @@ by bidi-tex GitHub Organisation. \generate{\file{test-solution-form.tex}{\from{\jobname.dtx}{test-solution-form.tex}}} \generate{\file{xepersian-logo.tex}{\from{\jobname.dtx}{xepersian-logo.tex}}} \endgroup +\immediate\write18{mv README.txt README} +\immediate\write18{makeindex -s gind.ist -o \jobname.ind \jobname.idx} +\immediate\write18{makeindex -s gglo.ist -o \jobname.gls \jobname.glo} % % %<*driver> \documentclass{ltxdoc} \input{xepersian-doc-preamble.ltx} \hypersetup{% - pdftitle={Source documentation for version 22.8 of the XePersian + pdftitle={Source documentation for version 22.9 of the XePersian package}% } \EnableCrossrefs @@ -174,8 +172,8 @@ by bidi-tex GitHub Organisation. % \GetFileInfo{\jobname.dtx} % \title{\textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}}\\ %\LARGE Persian for \LaTeXe, using {\XeTeX} engine\\[5pt] -%\large Source documentation for \textcolor{blue!65!black}{version 22.8}} -% \author{Vafa Khalighi\thanks{Maintained by bidi-tex \url{https://github.com/bidi-tex}}} +%\large Source documentation for \textcolor{blue!65!black}{version 22.9}} +% \author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team to maintain the package in the period 2018--2020.}} %\setcounter{page}{0} %\thispagestyle{empty} %\includegraphics[width=.3\textwidth]{xepersian-logo}\qquad @@ -184,7 +182,7 @@ by bidi-tex GitHub Organisation. %\textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}} % %\Large -%Source documentation for \textcolor{blue!65!black}{version 22.8}} +%Source documentation for \textcolor{blue!65!black}{version 22.9}} % %\vskip 0pt plus 3fill %\textit{\large to my Master, \textbf{Ferdowsi The Great}} @@ -195,7 +193,7 @@ by bidi-tex GitHub Organisation. %or ask for any new features, or suggest any improvements, or ask any questions about the package, then please use the issue tracker: % %\medskip -% \centerline{\url{https://github.com/bidi-tex/xepersian/issues}} +% \centerline{\url{https://github.com/persiantex/xepersian/issues}} % %\medskip %In doing so, please always explain your issue well enough, and always include @@ -205,8 +203,9 @@ by bidi-tex GitHub Organisation. % %\vskip 0pt plus 3fill % -%Copyright (c) 2008-2019 Vafa Khalighi -% 2018-2020 bidi-tex GitHub Organisation +%Copyright (c) 2008--2020 Vafa Khalighi +% +%Copyright (c) 2018--2020 bidi-tex GitHub Organization % %\medskip %Permission is granted to distribute and/or modify \emph{both the documentation and the code} under the conditions of the \LaTeX{} Project Public License, either version 1.3c of this license or (at your option) any later version. @@ -219,6 +218,23 @@ by bidi-tex GitHub Organisation. %\iffalse %<*table> %\fi +%% \CheckSum{10968} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% % \iffalse % %<*algorithmic-xepersian.def> @@ -1888,7 +1904,7 @@ by bidi-tex GitHub Organisation. %\fi % \section{File \texttt{fontspec-xepersian.def}} % \begin{macrocode} -\ProvidesFile{fontspec-xepersian.def}[2020-01-31 v0.4 fontspec changes] +\ProvidesFile{fontspec-xepersian.def}[2019/05/01 v0.4 fontspec changes] \ExplSyntaxOn \cs_new:Npn \__xepersian_error:nx { \msg_error:nnx {xepersian} } \char_set_catcode_space:n {32} @@ -1917,7 +1933,7 @@ by bidi-tex GitHub Organisation. { \__fontspec_primitive_font_set:NnnF \l__fontspec_test_font - { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } {} } + { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } { \l__fontspec_pre_feat_sclist } } { \f@size pt - 2sp } { \__fontspec_error:nx {font-not-found} {\l__fontspec_fontname_up_tl} } \__xepersian_font_if_cannot_be_loaded:NnT \l__fontspec_fontname_up_tl { HM } @@ -1927,8 +1943,8 @@ by bidi-tex GitHub Organisation. } \__fontspec_set_font_type:N \l__fontspec_test_font \__fontspec_primitive_font_gset:Onn \l__fontspec_fontface_cs_tl - { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } {} } - { \f@size pt } + { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } { \l__fontspec_pre_feat_sclist } } + { \f@size pt + 2sp } \l__fontspec_fontface_cs_tl % this is necessary for LuaLaTeX to check the scripts properly @@ -1941,7 +1957,7 @@ by bidi-tex GitHub Organisation. { \clist_clear:N \l__fontspec_fontopts_clist } \keys_set_groups:nnV {fontspec/fontname} {getfontname} \l__fontspec_fontopts_clist \__fontspec_primitive_font_set:OnnF \l__fontspec_fontface_cs_tl - { \__fontspec_construct_font_call:nn {#1} {} } { \f@size pt } + { \__fontspec_construct_font_call:nn {#1} { \l__fontspec_pre_feat_sclist } } { \f@size pt + 2sp } { \__fontspec_error:nx {font-not-found} {#2} } \__xepersian_font_if_cannot_be_loaded:NnT #2 { HM } { @@ -2070,7 +2086,24 @@ by bidi-tex GitHub Organisation. %\fi % \section{File \texttt{kashida-xepersian.def}} % \begin{macrocode} -\ProvidesFile{kashida-xepersian.def}[2018/01/04 v0.6 implementation of Kashida for xepersian package] +\ProvidesFile{kashida-xepersian.def}[2020/05/14 v0.7 implementation of Kashida for xepersian package] +% +% The new changes is minimal and only cosmetic; To resolve the +% issue properly, I will be studying TeX line breaking algorithms and +% experiment to see how much of it I can mimic. The idea of using +% a rule or even a box is awful and it breaks a lot of things. The ideal +% solution is to insert Kashida without any rules or boxes or if +% the font offers the alternative forms, it can be used for Kashida. +% Unfortunately, computing the stretch using the \pdfsavepos and +% \pdflastxpos primitives from the PDFTeX engine is bad and +% impractical for several reasons.The process is extremely +% slow and requires at least two runs of TeX. On a particular line, +% we need to write to the aux file at least 10 times, on a page we +% have on average around 10 lines and hence, for a 100 pages +% document, we have to do this 10,000 times. These statistics are +% very modest. On the other hand, if we reach max count (which is +% very likely), then we have to do some devious things. +% \chardef\xepersian@zwj="200D % zero-width joiner \chardef\xepersian@kashidachar="0640 % kashida @@ -2078,12 +2111,16 @@ by bidi-tex GitHub Organisation. \chardef\xepersian@L=11 % lam \chardef\xepersian@R=12 % right-joiner \chardef\xepersian@A=13 % alef -\chardef\xepersian@H=14 % heh \chardef\xepersian@V=4096 % vowel or other combining mark (to be ignored) \newif\if@Kashida@on -\newif\if@Kashida@XB@fix \def\xepersian@kashida{\if@Kashida@on\xepersian@zwj\nobreak% - \leaders\hrule height \XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian@kashidachar depth \XeTeXglyphbounds\f@ur \the\XeTeXcharglyph\xepersian@kashidachar \hskip0pt plus 0.5em \xepersian@zwj\fi} + \leaders\hrule height \XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian@kashidachar depth \XeTeXglyphbounds\f@ur \the\XeTeXcharglyph\xepersian@kashidachar \hskip0pt plus + \dimexpr \fontcharwd\font\xepersian@kashidachar - + \XeTeXglyphbounds\@ne + \the\XeTeXcharglyph\xepersian@kashidachar - + \XeTeXglyphbounds\thr@@ + \the\XeTeXcharglyph\xepersian@kashidachar \relax +\xepersian@zwj\fi} \def\setclass#1#2{\def\theclass{#1}\def\charlist{#2}% \expandafter\dosetclass\charlist,\end} @@ -2099,33 +2136,23 @@ by bidi-tex GitHub Organisation. \setclass \xepersian@R {0624,0629,062F,0630,0631,0632,0648,0698} \setclass \xepersian@D {0626,0628,062A,062B,062C,062D,062E} \setclass \xepersian@D {0633,0634,0635,0636,0637,0638,0639,063A} -%\setclass \xepersian@D {0640,0641,0642,0643,0645,0646,0647,0649,064A} -\setclass \xepersian@D {0640,0641,0642,0643,0645,0646,0649,064A} -\setclass \xepersian@H {0647} +\setclass \xepersian@D {0640,0641,0642,0643,0645,0646,0647,0649,064A} \setclass \xepersian@D {067E,0686,06A9,06AF,06CC} \setclass \xepersian@L {0644} \setclass \xepersian@V {064B,064C,064D,064E,064F,0650,0651,0652} \XeTeXinterchartoks \xepersian@D \xepersian@D = {\xepersian@kashida} -\XeTeXinterchartoks \xepersian@H \xepersian@D = {\if@Kashida@XB@fix\else\xepersian@kashida\fi} -\XeTeXinterchartoks \xepersian@D \xepersian@H = {\xepersian@kashida} \XeTeXinterchartoks \xepersian@L \xepersian@D = {\xepersian@kashida} \XeTeXinterchartoks \xepersian@D \xepersian@L = {\xepersian@kashida} -\XeTeXinterchartoks \xepersian@L \xepersian@H = {\xepersian@kashida} -\XeTeXinterchartoks \xepersian@H \xepersian@L = {\if@Kashida@XB@fix\else\xepersian@kashida\fi} \XeTeXinterchartoks \xepersian@L \xepersian@L = {\xepersian@kashida} \XeTeXinterchartoks \xepersian@D \xepersian@R = {\xepersian@kashida} -\XeTeXinterchartoks \xepersian@H \xepersian@R = {\if@Kashida@XB@fix\else\xepersian@kashida\fi} \XeTeXinterchartoks \xepersian@D \xepersian@A = {\xepersian@kashida} -\XeTeXinterchartoks \xepersian@H \xepersian@A = {\if@Kashida@XB@fix\else\xepersian@kashida\fi} \XeTeXinterchartoks \xepersian@L \xepersian@R = {\xepersian@kashida} \XeTeXinterchartoks \xepersian@L \xepersian@A = {} \newcommand{\KashidaOn}{\@Kashida@ontrue} \newcommand{\KashidaOff}{\@Kashida@onfalse} -\newcommand{\KashidaXBFixOn}{\@Kashida@XB@fixtrue} -\newcommand{\KashidaXBFixOff}{\@Kashida@XB@fixfalse} \KashidaOn % \end{macrocode} % \iffalse @@ -3450,8 +3477,8 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET % \section{File \texttt{xepersian.sty}} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\def\xepersian@version{22.8} -\def\xepersiandate{2020-01-31} +\def\xepersian@version{22.9} +\def\xepersiandate{2020/05/14} \ProvidesPackage{xepersian}[\xepersiandate\space v\xepersian@version\space Persian typesetting in XeLaTeX] \RequirePackage{fontspec} @@ -3466,8 +3493,8 @@ Persian typesetting in XeLaTeX] * typesetting, using fonts provided in the^^J% * distribution.^^J% * ^^J% -* Copyright (c) 2008-2019 Vafa Khalighi^^J% -* 2018-2020 bidi-tex GitHub Organisation^^J% +* Copyright (c) 2008--2020 Vafa Khalighi^^J% +* Copyright (c) 2018--2020 bidi-tex GitHub Organization^^J% * ^^J% * v\xepersian@version, \xepersiandate^^J% * ^^J% @@ -3476,7 +3503,7 @@ Persian typesetting in XeLaTeX] * ^^J% * Location on CTAN: /macros/xetex/latex/xepersian^^J% * ^^J% -* Issue tracker: https://github.com/bidi-tex/xepersian/issues^^J% +* Issue tracker: https://github.com/persiantex/xepersian/issues^^J% * ^^J% ****************************************************} \typeout{\@xepersian@info} @@ -3536,9 +3563,8 @@ Persian typesetting in XeLaTeX] \keys_define:nn {fontspec-opentype} { Ligatures / PersianTeX .code:n = { \tl_set:Nn \l__fontspec_mapping_tl {persian-tex-text} }, - Ligatures / PersianTeX .groups:n = {opentype}, + Ligatures / PersianTeXOff .code:n = { \tl_clear:N \l__fontspec_mapping_tl }, Ligatures / PersianTeXReset .code:n = { \tl_clear:N \l__fontspec_mapping_tl }, - Ligatures / PersianTeXReset .groups:n = {opentype}, } \keys_define:nn {fontspec-aat} @@ -3606,8 +3632,6 @@ Persian typesetting in XeLaTeX] \XeTeXinterchartoks \bidi@digits@charclass \xepersian@A = {\xepersian@@stop@switch@textdigitfont} \XeTeXinterchartoks \xepersian@R \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont} \XeTeXinterchartoks \bidi@digits@charclass \xepersian@R = {\xepersian@@stop@switch@textdigitfont} - \XeTeXinterchartoks \xepersian@H \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont} - \XeTeXinterchartoks \bidi@digits@charclass \xepersian@H = {\xepersian@@stop@switch@textdigitfont} } } @@ -4284,7 +4308,7 @@ Persian typesetting in XeLaTeX] \newcommand*{\@xepersian@pdfcustomproperties}{% This is the xepersian package, Version \xepersian@version, - Released May 1, 2019. + Released May 14, 2020. } \newcommand\twocolumnstableofcontents{% @@ -4743,12 +4767,6 @@ number is 999,999,999.}% \ifcase\xepersian@tempb\relax \input{kashida-xepersian.def} \fi} -\define@choicekey{xepersian.sty}{KashidaXBFix}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \@Kashida@XB@fixtrue - \or - \@Kashida@XB@fixfalse - \fi} \define@choicekey{xepersian.sty}{localise}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% \ifcase\xepersian@tempb\relax \input{localise-xepersian.def} @@ -4891,15 +4909,13 @@ number is 999,999,999.}% \@bidi@perpage@footnotefalse \fi} -\ExplSyntaxOn -\bool_new:N \l__xepersian_fontsloadable_bool +\newif\if@xepersian@fontsloadable@bool \define@choicekey{xepersian.sty}{fontsloadable}[\xepersian@tempa\xepersian@tempb]{true,false}[true]{% \ifcase\xepersian@tempb\relax - \bool_set_true:N \l__xepersian_fontsloadable_bool + \@xepersian@fontsloadable@booltrue \or - \bool_set_false:N \l__xepersian_fontsloadable_bool + \@xepersian@fontsloadable@boolfalse \fi} -\ExplSyntaxOff \ExecuteOptionsX{% fontsloadable=false, @@ -4924,6 +4940,17 @@ number is 999,999,999.}% \input{extrafootnotefeatures-xepersian.def}% \fi +\if@xepersian@fontsloadable@bool + \PackageWarningNoLine{xepersian}{% + The option `fontsloadable' should only be used in exceptional + cases. + You are not allowed to use the option `fontsloadable' unless + you have a written permission from the primary author of the + xepersian package}% +\else + \input{fontspec-xepersian.def}% +\fi + \bidi@patchcmd{\set@fontsize}{\@tempdimb#2pt}{% \@tempdimb\xepersian@@fontsize@scale\dimexpr#2pt\relax }{}{} diff --git a/macros/xetex/latex/xepersian/xepersian.pdf b/macros/xetex/latex/xepersian/xepersian.pdf index bfce6bc4b5..f8bfbe0d12 100644 Binary files a/macros/xetex/latex/xepersian/xepersian.pdf and b/macros/xetex/latex/xepersian/xepersian.pdf differ -- cgit v1.2.3