diff options
Diffstat (limited to 'Master')
149 files changed, 2598 insertions, 2685 deletions
diff --git a/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md index bc09045c8fd..6d9dbaab142 100644 --- a/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md @@ -6,6 +6,12 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2020-08-07] + +### Changed +- Color selection implementation +- Improved support for Separation colors + ## [2020-06-29] ### Fixed @@ -96,7 +102,8 @@ this project uses date-based 'snapshot' version identifiers. - Include `l3backend` in file names - Moved backend code to internal for each 'parent' module -[Unreleased]: https://github.com/latex3/latex3/compare/2020-06-29...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2020-08-07...HEAD +[2020-08-07]: https://github.com/latex3/latex3/compare/2020-06-29...2020-08-07 [2020-06-29]: https://github.com/latex3/latex3/compare/2020-06-23...2020-06-29 [2020-06-23]: https://github.com/latex3/latex3/compare/2020-06-18...2020-06-23 [2020-06-18]: https://github.com/latex3/latex3/compare/2020-06-03...2020-06-18 diff --git a/Master/texmf-dist/doc/latex/l3backend/README.md b/Master/texmf-dist/doc/latex/l3backend/README.md index 1d298fabdfb..a0ebb980035 100644 --- a/Master/texmf-dist/doc/latex/l3backend/README.md +++ b/Master/texmf-dist/doc/latex/l3backend/README.md @@ -1,7 +1,7 @@ LaTeX3 Backend Drivers ====================== -Release 2020-06-29 +Release 2020-08-07 This package forms parts of `expl3`, and contains the code used to interface with backends (drivers) across the `expl3` codebase. The functions here are diff --git a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md index b66593198bd..bf4577912b5 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md @@ -7,6 +7,12 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2020-08-07] + +### Changed +- Move drawing color functions to `l3color`, generalising the approach + with better `dvips` support + ## [2020-07-17] ### Added @@ -149,7 +155,8 @@ this project uses date-based 'snapshot' version identifiers. - New `l3color` module using `xcolor`-like expression syntax - New `l3draw` module, based on `pgf` layer of the TikZ system -[Unreleased]: https://github.com/latex3/latex3/compare/2020-07-17...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2020-08-07...HEAD +[2020-08-07]: https://github.com/latex3/latex3/compare/2020-07-17...2020-08-07 [2020-07-17]: https://github.com/latex3/latex3/compare/2020-06-18...2020-07-17 [2020-06-18]: https://github.com/latex3/latex3/compare/2020-06-03...2020-06-18 [2020-06-03]: https://github.com/latex3/latex3/compare/2020-05-18...2020-06-03 diff --git a/Master/texmf-dist/doc/latex/l3experimental/README.md b/Master/texmf-dist/doc/latex/l3experimental/README.md index 413d9463145..9831aaadf08 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/README.md +++ b/Master/texmf-dist/doc/latex/l3experimental/README.md @@ -1,7 +1,7 @@ Experimental LaTeX3 Concepts ============================ -Release 2020-07-17 +Release 2020-08-07 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf Binary files differindex 7b2598f0d5a..adfca31546d 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf Binary files differindex 80ecd21fe56..321bc7cc289 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf Binary files differindex 9536595edc5..d66a262ce7c 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf Binary files differindex a8cb1a14dc7..9a2f1341e01 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf Binary files differindex 80f61fa2285..82fda2baf37 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf-code.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf-code.pdf Binary files differindex d74c199483b..5b479c4e2fd 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf-code.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf-code.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.pdf Binary files differindex c51a2055bee..572423103f7 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf Binary files differindex fe0b1e71cb8..d3c96701b07 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf Binary files differindex a455433a5cf..ebb8a0f9c61 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf Binary files differindex ff560afb717..91e71514d8b 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf Binary files differindex 568e913fd29..4dbe5eae6ad 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf Binary files differindex e5c6e5ee482..47f63bdd6d4 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md index 13868561574..8a405794498 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md @@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2020-08-07] + +### Changed +- Color selection implementation +- Performance enhancements for `\keys_set:nn` + +### Fixed +- Loading generically on ConTeXt (issue #783) + ## [2020-07-17] ### Added @@ -725,7 +734,8 @@ this project uses date-based 'snapshot' version identifiers. - Step functions have been added for dim variables, e.g. `\dim_step_inline:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2020-07-17...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2020-08-07...HEAD +[2020-08-07]: https://github.com/latex3/latex3/compare/2020-07-17...2020-08-07 [2020-07-17]: https://github.com/latex3/latex3/compare/2020-06-18...2020-07-17 [2020-06-18]: https://github.com/latex3/latex3/compare/2020-06-03...2020-06-18 [2020-06-03]: https://github.com/latex3/latex3/compare/2020-05-15...2020-06-03 diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md index bfd238bcce8..d239d38035c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/README.md +++ b/Master/texmf-dist/doc/latex/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2020-07-17 +Release 2020-08-07 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf Binary files differindex d76040d2bd9..34f0d20a6b5 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf Binary files differindex 3c44cfaf5e9..57ea709c8ed 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex index 467d04cf86e..268de9b8055 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex @@ -54,7 +54,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2020-07-17} +\date{Released 2020-08-07} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf Binary files differindex 4c59fc9770a..c5e42ecbc22 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf Binary files differindex 9463b85375c..f37b45a7033 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf Binary files differindex 5c3bb769142..03f8ad6669c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf Binary files differindex 0d80eae0812..1495f21dcda 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf Binary files differindex 29264d35787..d18a6f04fb0 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf Binary files differindex 1b990e38891..717b0aa96b3 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf Binary files differindex ab75e4b9390..fc12886e943 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf Binary files differindex 95606ad096e..858b05d977e 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf Binary files differindex a51e4512e44..58479d7dc11 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf Binary files differindex 45e221f9ba5..3d8c6214456 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf Binary files differindex c2a1cc18169..1ae9972b0e1 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf Binary files differindex af9d89b61a4..4b5e51d7431 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf Binary files differindex c9a93fa9755..7170e1db614 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf Binary files differindex cc045f3a199..a1f3d50fef7 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv index bcf02f23b6d..1ec250856c0 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv +++ b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv @@ -20,6 +20,7 @@ bearwear,bearwear,Ulrike Fischer,https://github.com/u-fischer/bearwear,https://g bool,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, box,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, bxjh,BXjaholiday,Takuto Asakura,https://github.com/wtsnjp/BXjaholiday,https://github.com/wtsnjp/BXjaholiday.git,https://github.com/wtsnjp/BXjaholiday/issues,2018-02-02,2019-02-02, +cascade,cascade,F. Pantigny,,,,2020-07-21,2020-07-21, catcode,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, cctab,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, cellprops,cellprops,Julien Rivaud,,,,2018-06-13,2018-06-13, diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf Binary files differindex 9b9fc68466d..ed6fc27f005 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf Binary files differindex 575770b6c87..271e8e59165 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex index 0d2028f2c23..9124a305778 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2020-07-17} +\date{Released 2020-08-07} \begin{document} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf Binary files differindex 76dc0f00c98..1c33b67b332 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex index 58824c3b4b8..4c8fe539158 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2020-07-17} +\date{Released 2020-08-07} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf Binary files differindex 5826dda2530..3b214dcca7c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex index 90e2c3c768e..3ac84ac64e7 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2020-07-17} +\date{Released 2020-08-07} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf Binary files differindex 01a6f88ddf8..18b0ab1e9ba 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex index e9381760fcd..4bc27dfc38c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex @@ -53,7 +53,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2020-07-17} +\date{Released 2020-08-07} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/dvips/l3backend/l3backend-dvips.pro b/Master/texmf-dist/dvips/l3backend/l3backend-dvips.pro index ac097642a50..dda632be9f5 100644 --- a/Master/texmf-dist/dvips/l3backend/l3backend-dvips.pro +++ b/Master/texmf-dist/dvips/l3backend/l3backend-dvips.pro @@ -19,10 +19,11 @@ %% and all files in that bundle must be distributed together. %% %% File: l3backend-header.dtx +/color.sc { } def +/color.fc { } def true setglobal /pdf.globaldict 4 dict def false setglobal - /pdf.cvs { 65534 string cvs } def /pdf.dvi.pt { 72.27 mul Resolution div } def /pdf.pt.dvi { 72.27 div Resolution mul } def @@ -221,7 +222,7 @@ false setglobal /x { 0 exch rmoveto - SDict~ + SDict begin currentpoint pdf.originy ne exch pdf.originx ne or diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx index 00367dea5f3..209b2a648fb 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-06-29} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,7 @@ % \section{\pkg{l3backend-basics} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % Whilst there is a reasonable amount of code overlap between backends, @@ -71,23 +71,23 @@ %<*package> \ProvidesExplFile %<*dvipdfmx> - {l3backend-dvipdfmx.def}{2020-06-29}{} + {l3backend-dvipdfmx.def}{2020-08-07}{} {L3 backend support: dvipdfmx} %</dvipdfmx> %<*dvips> - {l3backend-dvips.def}{2020-06-29}{} + {l3backend-dvips.def}{2020-08-07}{} {L3 backend support: dvips} %</dvips> %<*dvisvgm> - {l3backend-dvisvgm.def}{2020-06-29}{} + {l3backend-dvisvgm.def}{2020-08-07}{} {L3 backend support: dvisvgm} %</dvisvgm> %<*pdfmode> - {l3backend-pdfmode.def}{2020-06-29}{} + {l3backend-pdfmode.def}{2020-08-07}{} {L3 backend support: PDF mode} %</pdfmode> %<*xdvipdfmx> - {l3backend-xdvipdfmx.def}{2020-06-29}{} + {l3backend-xdvipdfmx.def}{2020-08-07}{} {L3 backend support: xdvipdfmx} %</xdvipdfmx> %</package> @@ -358,36 +358,71 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\__kernel_backend_scope_begin:, \__kernel_backend_scope_end:} -% A scope in SVG terms is slightly different to the other backends as -% operations have to be \enquote{tied} to these not simply inside them. +% \begin{variable}{\g__kernel_backend_scope_int, \l__kernel_backend_scope_int} +% In SVG, we need to track scope nesting as properties attach to scopes; that +% requires a pair of \texttt{int} registers. % \begin{macrocode} -\cs_new_protected:Npn \__kernel_backend_scope_begin: - { \__kernel_backend_literal_svg:n { <g> } } -\cs_new_protected:Npn \__kernel_backend_scope_end: - { \__kernel_backend_literal_svg:n { </g> } } +\int_new:N \g__kernel_backend_scope_int +\int_new:N \l__kernel_backend_scope_int % \end{macrocode} -% \end{macro} +% \end{variable} % +% \begin{macro}{\__kernel_backend_scope_begin:, \__kernel_backend_scope_end:} % \begin{macro}{\__kernel_backend_scope_begin:n, \__kernel_backend_scope_begin:x} -% In SVG transformations, clips and so on are attached directly to scopes so -% we need a way or allowing for that. This is rather more useful than -% \cs{__kernel_backend_scope_begin:} as a result. -% No assumptions are made about the nature -% of the scoped operation(s). +% \begin{macro}{\__kernel_backend_scope:n, \__kernel_backend_scope:x} +% In SVG, the need to attach concepts to a scope means we need to be sure we +% will close all of the open scopes. That is easiest done if we only need +% an outer \enquote{wrapper} \texttt{begin}/\texttt{end} pair, and within +% that we apply operations as a simple scoped statements. To keep down the +% non-productive groups, we also have a \texttt{begin} version that does take +% an argument. % \begin{macrocode} +\cs_new_protected:Npn \__kernel_backend_scope_begin: + { + \__kernel_backend_literal_svg:n { <g> } + \int_set_eq:NN + \l__kernel_backend_scope_int + \g__kernel_backend_scope_int + \group_begin: + \int_gset:Nn \g__kernel_backend_scope_int { 1 } + } +\cs_new_protected:Npn \__kernel_backend_scope_end: + { + \prg_replicate:nn + { \g__kernel_backend_scope_int } + { \__kernel_backend_literal_svg:n { </g> } } + \group_end: + \int_gset_eq:NN + \g__kernel_backend_scope_int + \l__kernel_backend_scope_int + } \cs_new_protected:Npn \__kernel_backend_scope_begin:n #1 - { \__kernel_backend_literal_svg:n { <g~ #1 > } } + { + \__kernel_backend_literal_svg:n { <g ~ #1 > } + \int_set_eq:NN + \l__kernel_backend_scope_int + \g__kernel_backend_scope_int + \group_begin: + \int_gset:Nn \g__kernel_backend_scope_int { 1 } + } \cs_generate_variant:Nn \__kernel_backend_scope_begin:n { x } +\cs_new_protected:Npn \__kernel_backend_scope:n #1 + { + \__kernel_backend_literal_svg:n { <g ~ #1 > } + \int_gincr:N \g__kernel_backend_scope_int + } +\cs_generate_variant:Nn \__kernel_backend_scope:n { x } % \end{macrocode} % \end{macro} +% \end{macro} +% \end{macro} % % \begin{macrocode} %</dvisvgm> % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx index 8a63b8db150..c5ef445658d 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-06-29} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,7 @@ % \section{\pkg{l3backend-box} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> %<@@=box> % \end{macrocode} % @@ -387,12 +387,12 @@ scale ( 1 , -1 ) " } - \__kernel_backend_scope_begin:x + \__kernel_backend_scope:x { clip-path = "url ( \c_hash_str l3cp \int_use:N \g_@@_clip_path_int ) " } - \__kernel_backend_scope_begin:n + \__kernel_backend_scope:n { transform = " @@ -403,9 +403,6 @@ } \box_use:N #1 \__kernel_backend_scope_end: - \__kernel_backend_scope_end: - \__kernel_backend_scope_end: -% \skip_horizontal:n { \box_wd:N #1 } } \int_new:N \g_@@_clip_path_int % \end{macrocode} @@ -465,7 +462,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx index 6875ce75790..6defac4817a 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-06-29} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,7 @@ % \section{\pkg{l3backend-color} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> %<@@=color> % \end{macrocode} % @@ -81,62 +81,55 @@ % spot ones (here we need a model and a tint). The \texttt{x}-type expansion % is there to cover the case where \pkg{xcolor} is in use. % \begin{macrocode} -%<*package> \cs_new_protected:Npn \@@_backend_pickup:N #1 { } -\AtBeginDocument +\cs_if_exist:cT { ver@color.sty } { - \cs_if_exist:cT { ver@color.sty } + \cs_set_protected:Npn \@@_backend_pickup:N #1 { - \cs_set_protected:Npn \@@_backend_pickup:N #1 + \exp_args:NV \tl_if_head_is_space:nTF \current@color { - \exp_args:NV \tl_if_head_is_space:nTF \current@color - { - \tl_set:Nx #1 - { - { spot } - { \exp_after:wN \use:n \current@color \c_space_tl 1 } - } - } - { - \exp_last_unbraced:Nx \@@_backend_pickup:w - { \current@color } \s_@@_stop #1 - } + \tl_set:Nx #1 + { + { \exp_after:wN \use:n \current@color } + { 1 } + } + } + { + \exp_last_unbraced:Nx \@@_backend_pickup:w + { \current@color } \s_@@_stop #1 } - \cs_new_protected:Npn \@@_backend_pickup:w #1 ~ #2 \s_@@_stop #3 - { \tl_set:Nn #3 { {#1} {#2} } } } + \cs_new_protected:Npn \@@_backend_pickup:w #1 ~ #2 \s_@@_stop #3 + { \tl_set:Nn #3 { {#1} {#2} } } } -%</package> % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro} % { -% \@@_backend_cmyk:n , -% \@@_backend_gray:n , -% \@@_backend_rgb:n , -% \@@_backend_spot:n , +% \@@_backend_select_cmyk:n , +% \@@_backend_select_gray:n , +% \@@_backend_select_rgb:n , % \@@_backend_select:n % } % \begin{macro}{\@@_backend_reset:} -% \begin{macro}{color.fc} -% Push the data to the stack. In the case of \texttt{dvips} also reset the -% drawing fill color in raw PostScript. +% \begin{macro}{color.sc, color.fc} +% Push the data to the stack. In the case of \texttt{dvips} also saves the +% drawing color in raw PostScript. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_cmyk:n #1 +\cs_new_protected:Npn \@@_backend_select_cmyk:n #1 { \@@_backend_select:n { cmyk ~ #1 } } -\cs_new_protected:Npn \@@_backend_gray:n #1 +\cs_new_protected:Npn \@@_backend_select_gray:n #1 { \@@_backend_select:n { gray ~ #1 } } -\cs_new_protected:Npn \@@_backend_rgb:n #1 +\cs_new_protected:Npn \@@_backend_select_rgb:n #1 { \@@_backend_select:n { rgb ~ #1 } } -\cs_new_protected:Npn \@@_backend_spot:n #1 - { \@@_backend_select:n {#1} } \cs_new_protected:Npn \@@_backend_select:n #1 { \__kernel_backend_literal:n { color~push~ #1 } %<*dvips> - \__kernel_backend_postscript:n { /color.fc~{ }~def } + \__kernel_backend_postscript:n { /color.sc~ { ~ } ~def } + \__kernel_backend_postscript:n { /color.fc~ { ~ } ~def } %</dvips> \group_insert_after:N \@@_backend_reset: } @@ -147,6 +140,13 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\@@_backend_select_separation:nn} +% \begin{macrocode} +\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2 + { \@@_backend_select:n {#1} } +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} %</dvisvgm|dvipdfmx|dvips|xdvipdfmx> % \end{macrocode} @@ -166,43 +166,38 @@ % \cs{@@_backend_pickup:w} breaks it apart, because for instance % \pkg{xcolor} sets it to be instructions to generate a color % \begin{macrocode} -%<*package> \cs_new_protected:Npn \@@_backend_pickup:N #1 { } -\AtBeginDocument +\cs_if_exist:cT { ver@color.sty } { - \cs_if_exist:cT { ver@color.sty } + \cs_set_protected:Npn \@@_backend_pickup:N #1 { - \cs_set_protected:Npn \@@_backend_pickup:N #1 - { - \exp_last_unbraced:Nx \@@_backend_pickup:w - { \current@color } ~ 0 ~ 0 ~ 0 \s_@@_stop #1 - } - \cs_new_protected:Npn \@@_backend_pickup:w - #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s_@@_stop #7 + \exp_last_unbraced:Nx \@@_backend_pickup:w + { \current@color } ~ 0 ~ 0 ~ 0 \s_@@_stop #1 + } + \cs_new_protected:Npn \@@_backend_pickup:w + #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s_@@_stop #7 + { + \str_if_eq:nnTF {#2} { g } + { \tl_set:Nn #7 { { gray } {#1} } } { - \str_if_eq:nnTF {#2} { g } - { \tl_set:Nn #7 { { gray } {#1} } } + \str_if_eq:nnTF {#4} { rg } + { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } } { - \str_if_eq:nnTF {#4} { rg } - { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } } - { - \str_if_eq:nnTF {#5} { k } - { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } } + \str_if_eq:nnTF {#5} { k } + { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } } + { + \str_if_eq:nnTF {#2} { cs } + { + \tl_set:Nx #7 { { \use:n #1 } { #5 } } + } { - \str_if_eq:nnTF {#2} { cs } - { - \tl_set:Nx #7 { { spot } { \use_none:n #1 ~ #5 } } - } - { - \tl_set:Nn #7 { { gray } { 0 } } - } + \tl_set:Nn #7 { { gray } { 0 } } } - } + } } } } } -%</package> % \end{macrocode} % \end{macro} % \end{macro} @@ -217,26 +212,19 @@ % % \begin{macro} % { -% \@@_backend_cmyk:n , -% \@@_backend_gray:n , -% \@@_backend_rgb:n , -% \@@_backend_spot:n +% \@@_backend_select_cmyk:n , +% \@@_backend_select_gray:n , +% \@@_backend_select_rgb:n % } -% \begin{macro}{\@@_backend_spot:w} -% \begin{macro}{\@@_backend_select:n} % \begin{macro}{\@@_backend_reset:} % Simply dump the data, but allowing for \LuaTeX{}. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_cmyk:n #1 +\cs_new_protected:Npn \@@_backend_select_cmyk:n #1 { \@@_backend_select:n { #1 ~ k ~ #1 ~ K } } -\cs_new_protected:Npn \@@_backend_gray:n #1 +\cs_new_protected:Npn \@@_backend_select_gray:n #1 { \@@_backend_select:n { #1 ~ g ~ #1 ~ G } } -\cs_new_protected:Npn \@@_backend_rgb:n #1 +\cs_new_protected:Npn \@@_backend_select_rgb:n #1 { \@@_backend_select:n { #1 ~ rg ~ #1 ~ RG } } -\cs_new_protected:Npn \@@_backend_spot:n #1 - { \@@_backend_spot:w #1 \s_@@_stop } -\cs_new_protected:Npn \@@_backend_spot:w #1 ~ #2 \s_@@_stop - { \@@_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } } \cs_new_protected:Npx \@@_backend_select:n #1 { \cs_if_exist:NTF \tex_pdfextension:D @@ -255,15 +243,240 @@ % \end{macrocode} % \end{macro} % \end{macro} -% \end{macro} +% +% \begin{macro}{\@@_backend_select_separation:nn} +% \begin{macrocode} +\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2 + { \@@_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } } +% \end{macrocode} % \end{macro} % % \begin{macrocode} %</pdfmode> % \end{macrocode} % +% \subsection{Fill and stroke color} +% +% Here, \texttt{(x)dvipdfmx} follows \texttt{pdfmode}, while for \texttt{dvips} +% we have to manage fill and stroke color ourselves. We also handle +% \texttt{dvisvgm} independently, as there we can create SVG directly. +% +% \begin{macrocode} +%<*dvipdfmx|pdfmode|xdvipdfmx> +% \end{macrocode} +% +% \begin{macro} +% { +% \@@_backend_fill_cmyk:n , +% \@@_backend_fill_gray:n , +% \@@_backend_fill_rgb:n , +% \@@_backend_stroke_cmyk:n , +% \@@_backend_stroke_gray:n , +% \@@_backend_stroke_rgb:n +% } +% Drawing (fill/stroke) color is handled in \texttt{(x)dvipdfmx} in the +% same way as \texttt{pdfmode}. We use the same approach as earlier, except the +% color stack is not involved so the generic direct PDF operation is used. +% There is no worry about the nature of strokes: everything is handled +% automatically. +% \begin{macrocode} +\cs_new_protected:Npn \@@_backend_fill_cmyk:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ k } } +\cs_new_protected:Npn \@@_backend_fill_gray:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ g } } +\cs_new_protected:Npn \@@_backend_fill_rgb:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ rg } } + \cs_new_protected:Npn \@@_backend_stroke_cmyk:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ K } } +\cs_new_protected:Npn \@@_backend_stroke_gray:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ G } } +\cs_new_protected:Npn \@@_backend_stroke_rgb:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ RG } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro} +% { +% \@@_backend_fill_separation:nn, +% \@@_backend_stroke_separation:nn +% } +% \begin{macrocode} +\cs_new_protected:Npn \@@_backend_fill_separation:nn #1#2 + { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } } +\cs_new_protected:Npn \@@_backend_stroke_separation:nn #1#2 + { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</dvipdfmx|pdfmode|xdvipdfmx> +% \end{macrocode} +% +% \begin{macrocode} +%<*dvips> +% \end{macrocode} +% +% \begin{macro} +% { +% \@@_backend_fill_cmyk:n , +% \@@_backend_fill_gray:n , +% \@@_backend_fill_rgb:n , +% \@@_backend_stroke_cmyk:n , +% \@@_backend_stroke_gray:n , +% \@@_backend_stroke_rgb:n +% } +% All questions of saving the non-stacked data. +% \begin{macrocode} +\cs_new_protected:Npn \@@_backend_fill_cmyk:n #1 + { \__kernel_backend_postscript:n { /color.fc { #1 ~ setcmykcolor } def } } +\cs_new_protected:Npn \@@_backend_fill_gray:n #1 + { \__kernel_backend_postscript:n { /color.fc { #1 ~ setgray } def } } +\cs_new_protected:Npn \@@_backend_fill_rgb:n #1 + { \__kernel_backend_postscript:n { /color.fc { #1 ~ setrgbcolor } def } } + \cs_new_protected:Npn \@@_backend_stroke_cmyk:n #1 + { \__kernel_backend_postscript:n { /color.sc { #1 ~ setcmykcolor } def } } +\cs_new_protected:Npn \@@_backend_stroke_gray:n #1 + { \__kernel_backend_postscript:n { /color.sc { #1 ~ setgray } def } } +\cs_new_protected:Npn \@@_backend_stroke_rgb:n #1 + { \__kernel_backend_postscript:n { /color.sc { #1 ~ setrgbcolor } def } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro} +% { +% \@@_backend_fill_separation:nn, +% \@@_backend_stroke_separation:nn +% } +% \begin{macrocode} +\cs_new_protected:Npn \@@_backend_fill_separation:nn #1#2 + { \__kernel_backend_postscript:n { /color.fc { #1 } def } } +\cs_new_protected:Npn \@@_backend_stroke_separation:nn #1#2 + { \__kernel_backend_postscript:n { /color.sc { #1 } def } } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</dvips> +% \end{macrocode} +% +% \begin{macrocode} +%<*dvisvgm> +% \end{macrocode} +% +% \begin{macro} +% { +% \@@_backend_fill_cmyk:n , +% \@@_backend_stroke_cmyk:n +% } +% \begin{macro}{\@@_backend_cmyk:nw} +% \begin{macro} +% { +% \@@_backend_fill_gray:n , +% \@@_backend_stroke_gray:n +% } +% \begin{macro}{\@@_backend_gray:nn, \@@_backend_gray_aux:n} +% \begin{macro} +% { +% \@@_backend_fill_rgb:n , +% \@@_backend_stroke_rgb:n +% } +% \begin{macro}{\@@_backend_rgb:nw} +% \begin{macro}{\@@_backend:nnnn} +% For drawings in SVG, we use scopes for all colors. That +% requires using \texttt{RGB} values, which luckily are easy to +% convert here (|cmyk| to |RGB| is a fixed function). +% \begin{macrocode} +\cs_new_protected:Npn \@@_backend_fill_cmyk:n #1 + { \@@_backend_cmyk:nw { fill } #1 \s_@@_stop } +\cs_new_protected:Npn \@@_backend_stroke_cmyk:n #1 + { \@@_backend_cmyk:nw { stroke } #1 \s_@@_stop } +\cs_new_protected:Npn \@@_backend_cmyk:nw + #1#2 ~ #3 ~ #4 ~ #5 \s_@@_stop + { + \use:x + { + \@@_backend:nnnn + {#1} + { \fp_eval:n { -100 * ( 1 - min ( 1 , #2 + #5 ) ) } } + { \fp_eval:n { -100 * ( 1 - min ( 1 , #3 + #5 ) ) } } + { \fp_eval:n { -100 * ( 1 - min ( 1 , #4 + #5 ) ) } } + } + } +\cs_new_protected:Npn \@@_backend_fill_gray:n #1 + { \@@_backend_grab:nn { fill } {#1} } +\cs_new_protected:Npn \@@_backend_stroke_gray:n #1 + { \@@_backend_grab:nn { stroke } {#1} } +\cs_new_protected:Npn \@@_backend_gray:nn #1#2 + { + \use:x + { + \@@_backend_gray_aux:nn + {#1} + { \fp_eval:n { 100 * (#2) } } + } + } +\cs_new_protected:Npn \@@_backend_gray_aux:nn #1#2 + { \@@_backend:nnn {#1} {#2} {#2} {#2} } +\cs_new_protected:Npn \@@_backend_fill_rgb:n #1 + { \@@_backend_rgb:nw { fill } #1 \s_@@_stop } +\cs_new_protected:Npn \@@_backend_stroke_rgb:n #1 + { \@@_backend_rgb:nw { stroke } #1 \s_@@_stop } +\cs_new_protected:Npn \@@_backend_rgb:nw + #1#2 ~ #3 ~ #4\s_@@_stop + { + \use:x + { + \@@_backend:nnnn + { fill } + { \fp_eval:n { 100 * (#2) } } + { \fp_eval:n { 100 * (#3) } } + { \fp_eval:n { 100 * (#4) } } + } + } +\cs_new_protected:Npx \@@_backend:nnnn #1#2#3#4 + { + \__kernel_backend_scope:n + { + #1 = + " + rgb + ( + #2 \c_percent_str , + #3 \c_percent_str , + #4 \c_percent_str + ) + " + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro} +% { +% \@@_backend_fill_separation:nn, +% \@@_backend_stroke_separation:nn +% } +% At present, these are no-ops. +% \begin{macrocode} +\cs_new_protected:Npn \@@_backend_fill_separation:nn #1#2 + { } +\cs_new_protected:Npn \@@_backend_stroke_separation:nn #1#2 + { } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</dvisvgm> +% \end{macrocode} +% % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx index 1b7d444ae62..7f0f4cfb4ab 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-06-29} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,7 @@ % \section{\pkg{l3backend-draw} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> %<@@=draw> % \end{macrocode} % @@ -76,13 +76,12 @@ % \end{macro} % % \begin{macro}{\@@_backend_begin:, \@@_backend_end:} -% \begin{macro}{color.fc} % The |ps::[begin]| special here deals with positioning but allows us to % continue on to a matching |ps::[end]|: contrast with |ps:|, which positions % but where we can't split material between separate calls. The % |@beginspecial|/|@endspecial| pair are from |special.pro| and correct the -% scale and $y$-axis direction. The definition of |/color.fc| deals with fill -% color in paths. In contrast to \pkg{pgf}, we don't save the current point: +% scale and $y$-axis direction. +% In contrast to \pkg{pgf}, we don't save the current point: % discussion with Tom Rokici suggested a better way to handle the necessary % translations (see \cs{@@_backend_box_use:Nnnnn}). (Note that % |@beginspecial|/|@endspecial| forms a backend scope.) The |[begin]|/^^A @@ -94,7 +93,6 @@ { \__kernel_backend_literal:n { ps::[begin] } \@@_backend_literal:n { @beginspecial } - \@@_backend_literal:n { SDict ~ begin ~ /color.fc ~ { } ~ def ~ end } } \cs_new_protected:Npn \@@_backend_end: { @@ -103,7 +101,6 @@ } % \end{macrocode} % \end{macro} -% \end{macro} % % \begin{macro}{\@@_backend_scope_begin:, \@@_backend_scope_end:} % Scope here may need to contain saved definitions, so the entire memory @@ -202,7 +199,10 @@ { \@@_backend_literal:n { closepath } } \cs_new_protected:Npn \@@_backend_stroke: { + \@@_backend_literal:n { gsave } + \@@_backend_literal:n { color.sc } \@@_backend_literal:n { stroke } + \@@_backend_literal:n { grestore } \bool_if:NT \g_@@_draw_clip_bool { \@@_backend_literal:x @@ -243,6 +243,7 @@ \cs_new_protected:Npn \@@_backend_fillstroke: { \@@_backend_literal:n { gsave } + \@@_backend_literal:n { color.sc } \@@_backend_literal:n { color.fc } \@@_backend_literal:x { @@ -333,54 +334,6 @@ % \end{macro} % \end{macro} % -% \begin{macro} -% { -% \@@_backend_color_fill_cmyk:n , -% \@@_backend_color_stroke_cmyk:n -% } -% \begin{macro} -% { -% \@@_backend_color_fill_gray:n , -% \@@_backend_color_stroke_gray:n -% } -% \begin{macro} -% { -% \@@_backend_color_fill_rgb:n , -% \@@_backend_color_stroke_rgb:n -% } -% \begin{macro}{\@@_backend_color_fill:n, \@@_backend_color_stroke:n} -% For \texttt{dvips}, we can use the standard color stack to deal with -% stroke color, but for fills have to switch to raw PostScript. This is -% thus not handled by the stack, but the context is very restricted. See -% also how fills are implemented. -% \begin{macrocode} -\cs_new_protected:Npn \@@_backend_color_fill_cmyk:n #1 - { \@@_backend_color_fill:n { #1 ~ setcmykcolor } } -\cs_new_protected:Npn \@@_backend_color_stroke_cmyk:n #1 - { \@@_backend_color_stroke:n { cmyk ~ #1 } } -\cs_new_protected:Npn \@@_backend_color_stroke_gray:n #1 - { \@@_backend_color_fill:n { #1 ~ setgray } } -\cs_new_protected:Npn \@@_backend_color_fill_gray:n #1 - { \@@_backend_color_stroke:n { gray ~ #1 } } -\cs_new_protected:Npn \@@_backend_color_fill_rgb:n #1 - { \@@_backend_color_fill:n { #1 ~ setrgbcolor } } -\cs_new_protected:Npn \@@_backend_color_stroke_rgb:n #1 - { \@@_backend_color_stroke:n { rgb ~ #1 } } -\cs_new_protected:Npn \@@_backend_color_fill:n #1 - { - \__kernel_backend_postscript:n - { /color.fc ~ { #1 } ~ def } - } -\cs_new_protected:Npn \@@_backend_color_stroke:n #1 - { - \__kernel_backend_literal:n { color~push~#1 } - \group_insert_after:N \@@_color_reset: - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} % % \begin{macro}{\@@_backend_cm:nnnn} % In \texttt{dvips}, keeping the transformations in line with the engine @@ -620,66 +573,6 @@ % \end{macro} % \end{macro} % -% \begin{macro} -% { -% \@@_backend_color_fill_cmyk:n , -% \@@_backend_color_stroke_cmyk:n -% } -% \begin{macro} -% { -% \@@_backend_color_fill_gray:n , -% \@@_backend_color_stroke_gray:n -% } -% \begin{macro} -% { -% \@@_backend_color_fill_rgb:n , -% \@@_backend_color_stroke_rgb:n -% } -% \begin{macro}{\@@_backend_color_select:n, \@@_backend_color_select:x} -% \begin{macro}{\@@_backend_color_reset:} -% Color has to be split between \texttt{(x)dvipdfmx} and the PDF engines -% as there is no color stack for fill/stroke separation in the former. -% \begin{macrocode} -\cs_new_protected:Npn \@@_backend_color_fill_cmyk:n #1 - { \@@_backend_color_select:n { #1 ~ k } } -\cs_new_protected:Npn \@@_backend_color_stroke_cmyk:n #1 - { \@@_backend_color_select:n { #1 ~ K } } -\cs_new_protected:Npn \@@_backend_color_fill_gray:n #1 - { \@@_backend_color_select:n { #1 ~ g } } -\cs_new_protected:Npn \@@_backend_color_stroke_gray:n #1 - { \@@_backend_color_select:n { #1 ~ G } } -\cs_new_protected:Npn \@@_backend_color_fill_rgb:n #1 - { \@@_backend_color_select:n { #1 ~ rg } } -\cs_new_protected:Npn \@@_backend_color_stroke_rgb:n #1 - { \@@_backend_color_select:n { #1 ~ RG } } -%<*pdfmode> -\cs_new_protected:Npx \@@_backend_color_select:n #1 - { - \cs_if_exist:NTF \tex_pdfextension:D - { \tex_pdfextension:D colorstack } - { \tex_pdfcolorstack:D } - \exp_not:N \l__kernel_color_stack_int push {#1} - \group_insert_after:N \exp_not:N \@@_backend_color_reset: - } -\cs_new_protected:Npx \@@_backend_color_reset: - { - \cs_if_exist:NTF \tex_pdfextension:D - { \tex_pdfextension:D colorstack } - { \tex_pdfcolorstack:D } - \exp_not:N \l__kernel_color_stack_int pop \scan_stop: - } -%</pdfmode> -%<*dvipdfmx|xdvipdfmx> -\cs_new_eq:NN \@@_backend_color_select:n \__kernel_backend_literal_pdf:n -%</dvipdfmx|xdvipdfmx> -\cs_generate_variant:Nn \@@_backend_color_select:n { x } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% % \begin{macro}{\@@_backend_cm:nnnn} % \begin{macro}{\@@_backend_cm_aux:nnnn} % Another split here between \texttt{pdfmode} and \texttt{(x)dvipdfmx}. @@ -883,54 +776,11 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_backend_begin: { - \@@_backend_scope_begin: - \@@_backend_scope:n { transform="translate({?x},{?y})~scale(1,-1)" } - } -\cs_new_protected:Npn \@@_backend_end: - { \@@_backend_scope_end: } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@_backend_scope_begin:, \@@_backend_scope_end:} -% \begin{macro}{\@@_backend_scope:n, \@@_backend_scope:x} -% \begin{variable}{\g_@@_draw_scope_int, \l_@@_draw_scope_int} -% Several settings that with other backends are \enquote{stand alone} have -% to be given as part of a scope in SVG. As a result, there is a need to -% provide a mechanism to automatically close these extra scopes. That is -% done using a dedicated function and a pair of tracking variables. Within -% each graphics scope we use a global variable to do the work, with a group -% used to save the value between scopes. The result is that no direct action -% is needed when creating a scope. -% \begin{macrocode} -\cs_new_protected:Npn \@@_backend_scope_begin: - { - \int_set_eq:NN - \l_@@_draw_scope_int - \g_@@_draw_scope_int - \group_begin: - \int_gzero:N \g_@@_draw_scope_int - } -\cs_new_protected:Npn \@@_backend_scope_end: - { - \prg_replicate:nn - { \g_@@_draw_scope_int } - { \@@_backend_literal:n { </g> } } - \group_end: - \int_gset_eq:NN - \g_@@_draw_scope_int - \l_@@_draw_scope_int - } -\cs_new_protected:Npn \@@_backend_scope:n #1 - { - \@@_backend_literal:n { <g~ #1 > } - \int_gincr:N \g_@@_draw_scope_int + \__kernel_backend_scope_begin: + \__kernel_backend_scope:n { transform="translate({?x},{?y})~scale(1,-1)" } } -\cs_generate_variant:Nn \@@_backend_scope:n { x } -\int_new:N \g_@@_draw_scope_int -\int_new:N \l_@@_draw_scope_int +\cs_new_eq:NN \@@_backend_end: \__kernel_backend_scope_end: % \end{macrocode} -% \end{variable} -% \end{macro} % \end{macro} % % \begin{macro}{\@@_backend_moveto:nn, \@@_backend_lineto:nn} @@ -1158,100 +1008,6 @@ % \end{macro} % \end{macro} % -% \begin{macro} -% { -% \@@_backend_color_fill_cmyk:n , -% \@@_backend_color_stroke_cmyk:n -% } -% \begin{macro}{\@@_backend_color_cmyk:nw} -% \begin{macro} -% { -% \@@_backend_color_fill_gray:n , -% \@@_backend_color_stroke_gray:n -% } -% \begin{macro}{\@@_backend_color_gray:nn, \@@_backend_color_gray_aux:n} -% \begin{macro} -% { -% \@@_backend_color_fill_rgb:n , -% \@@_backend_color_stroke_rgb:n -% } -% \begin{macro}{\@@_backend_color_rgb:nw} -% \begin{macro}{\@@_backend_color:nnnn} -% For drawings in SVG, we use scopes for all colors. That -% requires using \texttt{RGB} values, which luckily are easy to -% convert here (|cmyk| to |RGB| is a fixed function). -% \begin{macrocode} -\cs_new_protected:Npn \@@_backend_color_fill_cmyk:n #1 - { \@@_backend_color_cmyk:nw { fill } #1 \s_@@_stop } -\cs_new_protected:Npn \@@_backend_color_stroke_cmyk:n #1 - { \@@_backend_color_cmyk:nw { stroke } #1 \s_@@_stop } -\cs_new_protected:Npn \@@_backend_color_cmyk:nw - #1#2 ~ #3 ~ #4 ~ #5 \s_@@_stop - { - \use:x - { - \@@_backend_color:nnnn - {#1} - { \fp_eval:n { -100 * ( 1 - min ( 1 , #2 + #5 ) ) } } - { \fp_eval:n { -100 * ( 1 - min ( 1 , #3 + #5 ) ) } } - { \fp_eval:n { -100 * ( 1 - min ( 1 , #4 + #5 ) ) } } - } - } -\cs_new_protected:Npn \@@_backend_color_fill_gray:n #1 - { \@@_backend_color_grab:nn { fill } {#1} } -\cs_new_protected:Npn \@@_backend_color_stroke_gray:n #1 - { \@@_backend_color_grab:nn { stroke } {#1} } -\cs_new_protected:Npn \@@_backend_color_gray:nn #1#2 - { - \use:x - { - \@@_backend_color_gray_aux:nn - {#1} - { \fp_eval:n { 100 * (#2) } } - } - } -\cs_new_protected:Npn \@@_backend_color_gray_aux:nn #1#2 - { \@@_backend_color:nnn {#1} {#2} {#2} {#2} } -\cs_new_protected:Npn \@@_backend_color_fill_rgb:n #1 - { \@@_backend_color_rgb:nw { fill } #1 \s_@@_stop } -\cs_new_protected:Npn \@@_backend_color_stroke_rgb:n #1 - { \@@_backend_color_rgb:nw { stroke } #1 \s_@@_stop } -\cs_new_protected:Npn \@@_backend_color_rgb:nw - #1#2 ~ #3 ~ #4\s_@@_stop - { - \use:x - { - \@@_backend_color:nnnn - { fill } - { \fp_eval:n { 100 * (#2) } } - { \fp_eval:n { 100 * (#3) } } - { \fp_eval:n { 100 * (#4) } } - } - } -\cs_new_protected:Npx \@@_backend_color:nnnn #1#2#3#4 - { - \@@_backend_scope:n - { - #1 = - " - rgb - ( - #2 \c_percent_str , - #3 \c_percent_str , - #4 \c_percent_str - ) - " - } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% % \begin{macro}{\@@_backend_cm:nnnn} % The four arguments here are floats (the affine matrix), the last % two are a displacement vector. @@ -1298,7 +1054,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx index d9ed9f84957..ba3b2ed5e97 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-06-29} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,7 @@ % \section{\pkg{l3backend-graphics} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> %<@@=graphics> % \end{macrocode} % @@ -69,13 +69,7 @@ % \begin{macro}{\@@_backend_getbb_eps:n} % Simply use the generic function. % \begin{macrocode} -%<*initex> -\use:n -%</initex> -%<*package> -\AtBeginDocument -%</package> - { \cs_new_eq:NN \@@_backend_getbb_eps:n \graphics_read_bb:n } +\cs_new_eq:NN \@@_backend_getbb_eps:n \graphics_read_bb:n % \end{macrocode} % \end{macro} % @@ -297,13 +291,7 @@ % Simply use the generic functions: only for \texttt{dvipdfmx} in the % extraction cases. % \begin{macrocode} -%<*initex> -\use:n -%</initex> -%<*package> -\AtBeginDocument -%</package> - { \cs_new_eq:NN \@@_backend_getbb_eps:n \graphics_read_bb:n } +\cs_new_eq:NN \@@_backend_getbb_eps:n \graphics_read_bb:n %<*dvipdfmx> \cs_new_protected:Npn \@@_backend_getbb_jpg:n #1 { @@ -560,13 +548,7 @@ % \begin{macro}{\@@_backend_getbb_eps:n} % Simply use the generic function. % \begin{macrocode} -%<*initex> -\use:n -%</initex> -%<*package> -\AtBeginDocument -%</package> - { \cs_new_eq:NN \@@_backend_getbb_eps:n \graphics_read_bb:n } +\cs_new_eq:NN \@@_backend_getbb_eps:n \graphics_read_bb:n % \end{macrocode} % \end{macro} % @@ -650,7 +632,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx index 77303f1733c..24e7ee2cfae 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-06-29} +% \date{Released 2020-08-07} % % \maketitle % @@ -59,6 +59,14 @@ %<*dvips&header> % \end{macrocode} % +% \begin{macro}{color.sc, color.fc} +% Empty definitions for color at the top level. +% \begin{macrocode} +/color.sc { } def +/color.fc { } def +% \end{macrocode} +% \end{macro} +% % \begin{macro}{pdf.globaldict} % A small global dictionary for backend use. % \begin{macrocode} @@ -79,7 +87,6 @@ false setglobal % is done here to allow for |Resolution|. The total height of a rectangle % (an array) needs a little maths, in contrast to simply extracting a value. % \begin{macrocode} - /pdf.cvs { 65534 string cvs } def /pdf.dvi.pt { 72.27 mul Resolution div } def /pdf.pt.dvi { 72.27 div Resolution mul } def @@ -351,7 +358,7 @@ false setglobal /x { 0 exch rmoveto - SDict~ + SDict begin currentpoint pdf.originy ne exch pdf.originx ne or diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx index 7fbc94a550c..fb569f2c24c 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-06-29} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,7 @@ % \section{\pkg{l3backend-pdf} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> %<@@=pdf> % \end{macrocode} % @@ -458,14 +458,9 @@ \hbox_set:Nn \l_@@_backend_model_box { Gg } \exp_args:Nx \@@_backend_link_outerbox:n { -%<*initex> - \l_galley_total_left_margin_dim -%</initex> -%<*package> \int_if_odd:nTF { \value { page } } { \oddsidemargin } { \evensidemargin } -%</package> } \box_move_down:nn { \box_dp:N \l_@@_backend_content_box } { \hbox:n { \__kernel_backend_postscript:n { pdf.save.linkll } } } @@ -527,12 +522,7 @@ [ \dim_to_decimal:n {#1} ~ \dim_to_decimal:n { -\box_dp:N \l_@@_backend_model_box } ~ -%<*initex> - \dim_to_decimal:n { #1 + \l_galley_text_width_dim } ~ -%</initex> -%<*package> \dim_to_decimal:n { #1 + \textwidth } ~ -%</package> \dim_to_decimal:n { \box_ht:N \l_@@_backend_model_box } ] [ exch { pdf.pt.dvi } forall ] def @@ -1314,18 +1304,13 @@ % not rotate. As such, we need to know if landscape is active. % \begin{macrocode} \bool_new:N \g_@@_landscape_bool -%<*package> -\AtBeginDocument +\cs_if_exist:NT \landscape { - \cs_if_exist:NT \landscape - { - \tl_put_right:Nn \landscape - { \bool_gset_true:N \g_@@_landscape_bool } - \tl_put_left:Nn \endlandscape - { \bool_gset_false:N \g_@@_landscape_bool } - } + \tl_put_right:Nn \landscape + { \bool_gset_true:N \g_@@_landscape_bool } + \tl_put_left:Nn \endlandscape + { \bool_gset_false:N \g_@@_landscape_bool } } -%</package> % \end{macrocode} % \end{variable} % @@ -1628,7 +1613,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx index bd5fa245a97..05058bdef62 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -125,14 +125,12 @@ % Our working unit is the scaled second, namely $2^{-16}$ seconds. % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3benchmark}{2020-07-17}{} +\ProvidesExplPackage{l3benchmark}{2020-08-07}{} {L3 Experimental benchmarking} -%</package> % \end{macrocode} % % \subsection{Additions to \pkg{l3sys}: elapsed time} @@ -576,7 +574,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx index 91cb13e0b45..42151e2a41e 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -95,7 +95,7 @@ % % Additional models may be created to allow mixing of spot colors % with each other or with those from other models. See -% Section~\ref{l3color:sec:spot} for more detail of spot color support. +% Section~\ref{l3color:sec:new-models} for more detail of spot color support. % % When color is selected by model, the \meta{values} given are specified as % a comma-separated list. The length of the list will therefore be determined @@ -215,6 +215,9 @@ % % \section{Selecting colors} % +% General selection of color is safe when split across pages: a stack is +% used to ensure that the correct color is re-selected on the new page. +% % \begin{function}{\color_select:n} % \begin{syntax} % \cs{color_select:n} \Arg{color expression} @@ -237,6 +240,37 @@ % and similar are not influenced by this setting. % \end{variable} % +% \section{Colors for drawing: fills and strokes} +% +% Colors for drawing operations and so forth are split into strokes and fills +% (the latter may also be referred to as non-stroke color). These operations +% \emph{may} apply to text, but this is backend-depended and the general +% \cs{color_select:n(n)} should be used for typeset text. In contrast to +% general color, these operations are \emph{not} stacked and thus must +% \emph{not} split across pages. Also, an appropriate scope must be applied +% to the color change, for example \cs{draw_begin:}/\cs{draw_end:}. +% +% \begin{function}{\color_fill:n, \color_stroke:n} +% \begin{syntax} +% \cs{color_fill:n} \Arg{color expression} +% \end{syntax} +% Parses the \meta{color expression} and then activates the resulting +% color specification for filling or stroking. +% \end{function} +% +% \begin{function}{\color_fill:nn, \color_stroke:nn} +% \begin{syntax} +% \cs{color_fill:nn} \Arg{model(s)} \Arg{value(s)} +% \end{syntax} +% Activates the color specification equivalent to the \meta{model(s)} and +% \meta{value(s)} for filling or stroking. +% \end{function} +% +% \begin{variable}{color.fc, color.sc} +% When using \texttt{dvips}, these PostScript variables hold the fill and +% stroke color, respectively. +% \end{variable} +% % \section{Multiple color models} % % When selecting or setting a color with an explicit model, it is possible @@ -302,8 +336,59 @@ % assigns the data to the \meta{tl}. % \end{function} % -% \section{Spot colors} -% \label{l3color:sec:spot} +% \section{Creating new color models} +% \label{l3color:sec:new-models} +% +% Additional color models are required to support specialist workflows, for +% example those involving separations (see +% \url{https://helpx.adobe.com/indesign/using/spot-process-colors.html} +% for details of the use of separations in print). Color models may be split +% into families; in the case of the basic \texttt{cmyk}, \texttt{gray} +% and \texttt{rgb} models, the family and the model itself are synonymous. This +% is not generally the case: see the PDF reference for more details. +% +% \begin{function}{\color_model_new:nnn} +% \begin{syntax} +% \cs{color_model_new:nnn} \Arg{model} \Arg{family} \Arg{params} +% \end{syntax} +% Creates a new \meta{model} which is derived from the color model \meta{family}. +% The latter should be one of +% \begin{itemize} +% \item \texttt{Separation} +% \end{itemize} +% (The \meta{family} may be given in mixed case as-in the PDF reference: +% internally, case of these strings is folded.) +% Depending on the \meta{family}, one or more \meta{params} are mandatory or +% optional. +% \end{function} +% +% For a \texttt{Separation} space, there are three \emph{compulsory} keys. +% \begin{itemize} +% \item \texttt{name} The name of the Separation, for example the formal +% name of a spot color ink. Such a \meta{name} may contain spaces, etc., +% which are not permitted in the \meta{model}. +% \item \texttt{alternative-model} An alternative device colorspace, one of +% \texttt{cmyk}, \texttt{rgb}, \texttt{gray} or \texttt{cielab}. The three +% parameter-based models work as described above; see below for +% details of CIELAB colors. +% \item \texttt{alternative-values} A comma-separated list of values +% appropriate to the \texttt{alternative-model}. This information is used by +% the PDF application if the \texttt{Separation} is not available. +% \end{itemize} +% +% CIELAB color separations are created using the +% \texttt{alternative-model = cielab} setting. These colors must also have an +% \texttt{illuminant} key, one of \texttt{a}, \texttt{c}, \texttt{e}, +% \texttt{d50}, \texttt{d55}, \texttt{d65} or \texttt{d75}. The +% \texttt{alternative-values} in this case are the three parameters $L*$, $a*$ +% and $b*$ of the CIELAB model. Full details of this device-independent color +% approach are given in the documentation to the \pkg{colorspace} package. +% +% CIELAB colors \emph{cannot} be converted into other device-dependent color +% spaces, and as such, mixing can only occur if colors set up using the CIELAB +% model are also given with an alternative parameter-based model. If that is +% not the case, \pkg{l3color} will fallback to using black as the colorant in +% any mixing. % % \end{documentation} % @@ -312,7 +397,7 @@ % \section{\pkg{l3color} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -320,10 +405,8 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3color}{2020-07-17}{} +\ProvidesExplPackage{l3color}{2020-08-07}{} {L3 Experimental color support} -%</package> % \end{macrocode} % % \subsection{Predefined color names} @@ -419,10 +502,12 @@ \cs_generate_variant:Nn \@@_convert:nnN { VV } \cs_new_protected:Npn \@@_convert:nnnN #1#2#3#4 { - \str_if_eq:nnT {#1} { spot } % TO DO!!! - { } \tl_set:Nx #4 - { \use:c { @@_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \s_@@_stop } + { + \cs_if_exist:cTF { @@_convert_ #1 _ #2 :w } + { \use:c { @@_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \s_@@_stop } + { \use:c { c_@@_fallback_ #2 _tl } } + } } \cs_generate_variant:Nn \@@_convert:nnnN { nV , nnV } \cs_new:Npn \@@_convert_gray_rgb:w #1 ~ #2 \s_@@_stop @@ -993,6 +1078,41 @@ % \end{macro} % \end{macro} % +% \subsection{Fill and stroke color} +% +% \begin{macro}{\color_fill:n, \color_stroke:n} +% \begin{macro}{\color_fill:nn, \color_stroke:nn} +% \begin{macro}{\@@_draw:nnn} +% \begin{macrocode} +\cs_new_protected:Npn \color_fill:n #1 + { + \@@_parse:nN {#1} \l_@@_current_tl + \exp_after:wN \@@_draw:nnn \l_@@_current_tl { fill } + } +\cs_new_protected:Npn \color_stroke:n #1 + { + \@@_parse:nN {#1} \l_@@_current_tl + \exp_after:wN \@@_draw:nnn \l_@@_current_tl { stroke } + } +\cs_new_protected:Npn \color_fill:nn #1#2 + { + \@@_select_main:Nw \l_@@_current_tl + #1 / / \s_@@_mark #2 / / \s_@@_stop + \exp_after:wN \@@_draw:nnn \l_@@_current_tl { fill } + } +\cs_new_protected:Npn \color_stroke:nn #1#2 + { + \@@_select_main:Nw \l_@@_current_tl + #1 / / \s_@@_mark #2 / / \s_@@_stop + \exp_after:wN \@@_draw:nnn \l_@@_current_tl { stroke } + } +\cs_new_protected:Npn \@@_draw:nnn #1#2#3 + { \use:c { @@_backend_ #3 _ #1 :n } {#2} } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% % \subsection{Defining named colors} % % \begin{variable}{\l_@@_named_tl} @@ -1279,6 +1399,357 @@ % \end{macro} % \end{macro} % +% \subsection{Additional color models} +% +% \begin{variable}{\l_@@_internal_prop} +% \begin{macrocode} +\prop_new:N \l_@@_internal_prop +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_separation_int} +% A tracker for the total number of separations. +% \begin{macrocode} +\int_new:N \g_@@_separation_int +% \end{macrocode} +% \end{variable} +% +% \begin{variable} +% { +% \c_@@_model_whitepoint_cielab_a_tl , +% \c_@@_model_whitepoint_cielab_b_tl , +% \c_@@_model_whitepoint_cielab_e_tl , +% \c_@@_model_whitepoint_cielab_d50_tl , +% \c_@@_model_whitepoint_cielab_d55_tl , +% \c_@@_model_whitepoint_cielab_d65_tl , +% \c_@@_model_whitepoint_cielab_d75_tl +% } +% Whitepoint data for the CIELAB profiles. +% \begin{macrocode} +\tl_const:Nn \c_@@_model_whitepoint_cielab_a_tl { 1.0985 ~ 1 ~ 0.3558 } +\tl_const:Nn \c_@@_model_whitepoint_cielab_b_tl { 0.9807~ 1 ~ 1.1822 } +\tl_const:Nn \c_@@_model_whitepoint_cielab_e_tl { 1 ~ 1 ~ 1 } +\tl_const:cn { c_@@_model_whitepoint_cielab_d50_tl } { 0.9642 ~, 1 ~ 0.8251 } +\tl_const:cn { c_@@_model_whitepoint_cielab_d55_tl } { 0.9568 ~ 1 ~ 0.9214 } +\tl_const:cn { c_@@_model_whitepoint_cielab_d65_tl } { 0.9504 ~ 1 ~ 1.0888 } +\tl_const:cn { c_@@_model_whitepoint_cielab_d75_tl } { 0.9497 ~ 1 ~ 1.2261 } +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\c_@@_model_range_cielab_tl} +% The range for CIELAB color spaces. +% \begin{macrocode} +\tl_const:Nn \c_@@_model_range_cielab_tl { -128 ~ 127 ~ -128 ~ 127 } +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\color_model_new:nnn, \@@_model_new:nnn} +% \begin{macro}{\@@_model_separation:n} +% \begin{macro}{\@@_model_separation:nn} +% \begin{macro}{\@@_model_separation:nnn} +% \begin{macro}{\@@_model_separation:w} +% \begin{macro} +% { +% \@@_model_separation_cmyk:nnnnnn , +% \@@_model_separation_gray:nnnnnn , +% \@@_model_separation_rgb:nnnnnn +% } +% \begin{macro}{\@@_model_convert:nnn} +% \begin{macro}{\@@_model_separation_cielab:nnnnnn} +% \begin{macro}{\@@_model_separation_cielab:nnnnnnn} +% \begin{macro}{\@@_model_separation_init:nnnnn} +% \begin{macro}{\@@_model_separation_init_cielab:n} +% \begin{macro}{\@@_model_separation_init_cielab:nnnnn} +% Set up a new model: in general this has to be handled by a family-dependent +% function. To avoid some \enquote{interesting} questions with casing, we +% fold the case of the family name. The key--value list should always be +% present, so we convert it up-front to a |prop|, then deal with the detail +% on a per-family basis. +% \begin{macrocode} +\cs_new_protected:Npn \color_model_new:nnn #1#2#3 + { + \exp_args:Nee \@@_model_new:nnn + { \tl_to_str:n {#1} } + { \str_foldcase:n {#2} } {#3} + } +\cs_new_protected:Npn \@@_model_new:nnn #1#2#3 + { + \cs_if_exist:cTF { @@_parse_model_ #1 :w } + { + \__kernel_msg_error:nnn { color } { model-already-defined } {#1} + } + { + \cs_if_exist:cTF { @@_model_ #2 :n } + { + \prop_set_from_keyval:Nn \l_@@_internal_prop {#3} + \use:c { @@_model_ #2 :n } {#1} + } + { + \__kernel_msg_error:nnn { color } { unknown-model-type } {#2} + } + } + } +% \end{macrocode} +% Separations must have a \enquote{real} name, which is pretty easy to find. +% \begin{macrocode} +\cs_new_protected:Npn \@@_model_separation:n #1 + { + \prop_get:NnNTF \l_@@_internal_prop { name } + \l_@@_internal_tl + { + \exp_args:NV \@@_model_separation:nn + \l_@@_internal_tl {#1} + } + { + \__kernel_msg_error:nnn { color } + { separation-requires-name } {#1} + } + } +% \end{macrocode} +% We have two keys to find at this stage: the alternative space model +% and linked values. +% \begin{macrocode} +\cs_new_protected:Npn \@@_model_separation:nn #1#2 + { + \prop_get:NnNTF \l_@@_internal_prop { alternative-model } + \l_@@_internal_tl + { + \exp_args:NV \@@_model_separation:nnn + \l_@@_internal_tl {#2} {#1} + } + { + \__kernel_msg_error:nnn { color } + { separation-alternative-model } {#2} + } + } +\cs_new_protected:Npn \@@_model_separation:nnn #1#2#3 + { + \cs_if_exist:cTF { @@_model_separation_ #1 :nnnnnn } + { + \prop_get:NnNTF \l_@@_internal_prop { alternative-values } + \l_@@_internal_tl + { + \exp_after:wN \@@_model_separation:w \l_@@_internal_tl + , 0 , 0 , 0 , 0 \s_@@_stop {#2} {#3} {#1} + } + { + \__kernel_msg_error:nnn { color } + { separation-alternative-values } {#2} + } + } + { + \__kernel_msg_error:nnn { color } + { unknown-alternative-model } {#1} + } + } +% \end{macrocode} +% As each alternative space leads to a different requirement for conversion, +% and as there are only a small number of choices, we manually split the data +% and then set up. Notice that mixing tints is really just the same +% as mixing \texttt{gray}. The \texttt{white} color is special, as it allows +% tints to be adjusted without an additional color space. To make sure the +% data is set for that at all group levels, we need to work on a per-level +% basis. Within the output, only the set-up needs the \enquote{real} name +% of the colorspace: we use a simple tracking number for general usage +% as this is a clear namespace without issues of escaping chars. +% \begin{macrocode} +\cs_new_protected:Npn \@@_model_separation:w + #1 , #2 , #3 , #4 , #5 \s_@@_stop #6#7#8 + { + \int_gincr:N \g_@@_separation_int + \tl_const:cn { c_@@_fallback_ #6 _tl } { 1 } + \cs_new_eq:cN { @@_parse_mix_ #6 :nw } \@@_parse_mix_gray:nw + \cs_new:cpn { @@_parse_model_ #6 :w } ##1 , ##2 \s_@@_stop + { {#6} { \@@_parse_number:n {##1} } } + \clist_map_inline:nn { fill , stroke , select } + { + \cs_new_protected:cpx { @@_backend_ ##1 _ #6 :n } ####1 + { + \exp_not:c { @@_backend_ ##1 _ separation:nn } + { color \int_use:N \g_@@_separation_int } {####1} + } + } + \use:c { @@_model_separation_ #8 :nnnnnn } + {#6} {#7} {#1} {#2} {#3} {#4} + \cs_new_protected:cpx { @@_model_ #6 _white: } + { + \prop_put:Nnn \exp_not:N \l_@@_named_white_prop {#6} { 0 } + \exp_not:N \int_compare:nNnF { \tex_currentgrouplevel:D } = 0 + { \group_insert_after:N \exp_not:c { @@_model_ #6 _ white: } } + } + \use:c { @@_model_ #6 _white: } + } +\cs_new_protected:Npn \@@_model_separation_cmyk:nnnnnn #1#2#3#4#5#6 + { + \cs_new:cpn { @@_convert_ #1 _cmyk:w } ##1 ~ ##2 \s_@@_stop + { + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #4} ~ + \fp_eval:n {##1 * #5} ~ + \fp_eval:n {##1 * #6} + } + \@@_model_convert:nnn {#1} { cmyk } { rgb } + \@@_model_convert:nnn {#1} { cmyk } { gray } + \@@_model_separation_init:nnnnn {#2} { /DeviceCMYK } { } + { 0 ~ 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 ~ #6 } + } +\cs_new_protected:Npn \@@_model_separation_rgb:nnnnnn #1#2#3#4#5#6 + { + \cs_new:cpn { @@_convert_ #1 _rgb:w } ##1 ~ ##2 \s_@@_stop + { + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #4} ~ + \fp_eval:n {##1 * #5} + } + \@@_model_convert:nnn {#1} { rgb } { cmyk } + \@@_model_convert:nnn {#1} { rgb } { gray } + \@@_model_separation_init:nnnnn {#2} { /DeviceRGB } { } + { 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 } + } +\cs_new_protected:Npn \@@_model_separation_gray:nnnnnn #1#2#3#4#5#6 + { + \cs_new:cpn { @@_convert_ #1 _cmyk:w } ##1 ~ ##2 \s_@@_stop + { + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #3} + } + \cs_new:cpn { @@_convert_ #1 _gray:w } ##1 ~ ##2 \s_@@_stop + { \fp_eval:n {##1 * #3} } + \cs_new:cpn { @@_convert_ #1 _rgb:w } ##1 ~ ##2 \s_@@_stop + { + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #3} + } + \@@_model_separation_init:nnnnn {#2} { /DeviceGray } { } { 0 } {#3} + } +% \end{macrocode} +% Generic model conversion \emph{via} an alternative intermediate. +% \begin{macrocode} +\cs_new_protected:Npn \@@_model_convert:nnn #1#2#3 + { + \cs_new:cpx { @@_convert_ #1 _ #3 :w } ##1 ~ ##2 \s_@@_stop + { + \exp_not:N \exp_args:NNe \exp_not:N \use:nn + \exp_not:c { @@_convert_ #2 _ #3 :w } + { \exp_not:c { @@_convert_ #1 _ #2 :w } ##1 ~ ##2 \s_@@_stop } + \c_space_tl \exp_not:N \s_@@_stop + } + } +% \end{macrocode} +% Setting up for CIELAB needs a bit more work: there is the illuminant and +% the need for an appropriate object. +% \begin{macrocode} +\cs_new_protected:Npn \@@_model_separation_cielab:nnnnnn #1#2#3#4#5#6 + { + \prop_get:NnNF \l_@@_internal_prop { illuminant } + \l_@@_internal_tl + { + \__kernel_msg_error:nnn { color } + { cielab-requires-illuminant } {#1} + \tl_set:Nn \l_@@_internal_tl { d50 } + } + \exp_args:NV \@@_model_separation_cielab:nnnnnnn + \l_@@_internal_tl {#1} {#2} {#3} {#4} {#5} {#6} + } +% \end{macrocode} +% If a CIELAB space is being set up, we need the illuminant, then create +% the appropriate set up. At present, this doesn't include \texttt{BlackPoint} +% or \texttt{Range} data, but that may be added later. As CIELAB colors +% cannot be converted to anything else, we fallback to producing black: the +% user should set up a second model for colors set up this way. +% \begin{macrocode} +\cs_new_protected:Npn \@@_model_separation_cielab:nnnnnnn #1#2#3#4#5#6#7 + { + \tl_if_exist:cTF { c_@@_model_whitepoint_cielab_ #1 _tl } + { + \@@_model_separation_init_cielab:n {#1} + \@@_model_separation_init_cielab:nnnnn {#2} {#3} {#4} {#5} {#6} + \cs_new:cpn { @@_convert_ #2 _cmyk:w } ##1 ~ ##2 \s_@@_stop + { 0 ~ 0 ~ 0 ~ 1 } + \cs_new:cpn { @@_convert_ #2 _rgb:w } ##1 ~ ##2 \s_@@_stop + { 1 ~ 1 ~ 1 } + \cs_new:cpn { @@_convert_ #2 _gray:w } ##1 ~ ##2 \s_@@_stop + { 1 } + } + { + \__kernel_msg_error:nnn { color } + { unknown-cielab-illuminant } {#1} + } + } +% \end{macrocode} +% Initialising the PDF structures needs two parts: creating an object +% containing the \enquote{real} name of the Separation, then adding a reference +% to that to each page. The latter uses the internal name of the \texttt{cs}. +% \begin{macrocode} +\cs_new_protected:Npn \@@_model_separation_init:nnnnn #1#2#3#4#5 + { + \pdf_object_now:nx { array } + { + /Separation + / \str_convert_pdfname:n {#1} ~ #2 ~ + << + /FunctionType ~ 2 + /Domain ~ [0 ~ 1] + \tl_if_blank:nF {#3} { /Range ~ [#3] } + /C0 ~ [#4] ~ + /C1 ~ [#5] /N ~ 1 + >> + } + \use:x + { + \pdfcoredict_gput:nnn + { Page / Resources / ColorSpace } + { color \int_use:N \g_@@_separation_int } + { \pdf_object_last: } + } + } +\cs_if_exist:NF \pdf_object_now:nn + { \cs_gset_protected:Npn \@@_model_separation_init:nnnnn #1#2#3#4#5 { } } +% \end{macrocode} +% For CIELAB colors, we need one object per document for the illuminant, +% plus initialisation of the color space referencing that object. +% \begin{macrocode} +\cs_new_protected:Npn \@@_model_separation_init_cielab:n #1 + { + \pdf_object_new:nn { @@_illuminant_cielab_ #1 } { array } + \pdf_object_write:nx { @@_illuminant_cielab_ #1 } + { + /Lab ~ + << + /WhitePoint ~ + [ \tl_use:c { c_@@_model_whitepoint_cielab_ #1 _tl } ] + /Range ~ [ \c_@@_model_range_lab_tl ] + >> + } + } +\cs_if_exist:NF \pdf_object_new:nn + { \cs_gset_protected:Npn \@@_model_separation_init_cielab:n #1 { } } +\cs_new_protected:Npn \@@_model_separation_init_cielab:nnnnn #1#2#3#4#5 + { + \@@_model_separation_init:nnnnn + {#2} + { \pdf_object_ref:n { @@_illuminant_cielab_ #1 } } + { \c_@@_model_range_lab_tl } + { 100 ~ 0 ~ 0 } + { #3 ~ #4 ~ #5 } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% % \subsection{Diagnostics} % % \begin{macro}{\color_show:n} @@ -1313,24 +1784,94 @@ % \subsection{Messages} % % \begin{macrocode} +\__kernel_msg_new:nnnn { color } { cielab-requires-illuminant } + { CIELAB~color~space~'#1'~require~an~illuminant. } + { + LaTeX~has~been~asked~to~create~a~separation~color~space~using~ + CIELAB~specifications,~but~no~\\ \\ + \iow_indent:n { illuminant = <basis> } + \\ \\ + key~was~given~with~the~correct~information.~LaTeX~will~use~illuminant~ + 'd50'~for~recovery. + } +\__kernel_msg_new:nnnn { color } { conversion-not-available } + { No~model~conversion~available~from~'#1'~to~'#2'. } + { + LaTeX~has~been~asked~to~convert~a~color~from~model~'#1'~ + to~model'#2',~but~there~is~no~method~available~to~do~that. + } +\__kernel_msg_new:nnnn { color } { model-already-defined } + { Color~model~'#1'~already~defined. } + { + LaTeX~was~asked~to~define~a~new~color~model~called~'#1',~but~ + this~color~model~already~exists. + } +\__kernel_msg_new:nnnn { color } { separation-alternative-model } + { Separation~color~space~'#1'~require~an~alternative~model. } + { + LaTeX~has~been~asked~to~create~a~separation~color~space,~ + but~no~\\ \\ + \iow_indent:n { alternative-model = <model> } + \\ \\ + key~was~given~with~the~correct~information. + } +\__kernel_msg_new:nnnn { color } { separation-alternative-values } + { Separation~color~space~'#1'~require~values~for~the~alternative~space. } + { + LaTeX~has~been~asked~to~create~a~separation~color~space,~ + but~no~\\ \\ + \iow_indent:n { alternative-values = <model> } + \\ \\ + key~was~given~with~the~correct~information. + } +\__kernel_msg_new:nnnn { color } { separation-requires-name } + { Separation~color~space~'#1'~require~a~formal~name. } + { + LaTeX~has~been~asked~to~create~a~separation~color~space,~ + but~no~\\ \\ + \iow_indent:n { name = <formal~name> } + \\ \\ + key~was~given~with~the~correct~information. + } \__kernel_msg_new:nnnn { color } { unknown-color } { Unknown~color~'#1'. } { LaTeX~has~been~asked~to~use~a~color~named~'#1',~ but~this~has~never~been~defined. } +\__kernel_msg_new:nnnn { color } { unknown-alternative-model } + { Separation~color~space~'#1'~require~an~valid~alternative~space. } + { + LaTeX~has~been~asked~to~create~a~separation~color~space,~ + but~the~model~given~as\\ \\ + \iow_indent:n { alternative-model = <model> } + \\ \\ + is~unknown. + } \__kernel_msg_new:nnnn { color } { unknown-export-format } { Unknown~export~format~'#1'. } { LaTeX~has~been~asked~to~export~a~color~in~format~'#1',~ but~this~has~never~been~defined. } +\__kernel_msg_new:nnnn { color } { unknown-cielab-illuminant } + { Unknown~illuminant~model~'#1'. } + { + LaTeX~has~been~asked~to~use~create~a~color~space~using~CIELAB~ + illuminant~'#1',~but~this~does~not~exist. + } \__kernel_msg_new:nnnn { color } { unknown-model } { Unknown~color~model~'#1'. } { LaTeX~has~been~asked~to~use~a~color~model~called~'#1',~ but~this~model~is~not~set~up. } +\__kernel_msg_new:nnnn { color } { unknown-model-type } + { Unknown~color~model~type~'#1'. } + { + LaTeX~has~been~asked~to~create~a~new~color~model~called~'#1',~ + but~this~type~of~model~was~never~set~up. + } % \end{macrocode} % % \begin{macrocode} @@ -1344,7 +1885,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx index a39bd99f308..8ab5d0c59c6 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-boxes} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -147,7 +147,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx index 43d699b64b1..ad1238cd2f2 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-layers} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -208,7 +208,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx index 847ade5f441..5da166a75dd 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-paths} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1030,7 +1030,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx index 15ad9e1f179..3c2b8395a97 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-points} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -963,7 +963,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx index 038c93dbf64..7ecb49df287 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-scopes} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -132,7 +132,7 @@ \draw_transform_shift_reset: \@@_softpath_clear: \draw_linewidth:n { \l_draw_default_linewidth_dim } - \draw_color:n { . } + \color_select:n { . } \draw_nonzero_rule: \draw_cap_butt: \draw_join_miter: @@ -262,7 +262,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx index 75af8516ae2..e232869980b 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-softpath} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -607,7 +607,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx index cfced7e0d59..67010269486 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-state} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -147,38 +147,8 @@ % \end{macrocode} % \end{macro} % -% \begin{variable}{\l_@@_color_tmp_tl} -% Scratch space. % \begin{macrocode} -\tl_new:N \l_@@_color_tmp_tl -% \end{macrocode} -% \end{variable} -% -% \begin{macro}{\draw_color:n, \draw_color_fill:n, \draw_color_stroke:n} -% \begin{macro}{\@@_color:nn} -% \begin{macro}{\@@_color:nnn} -% Much the same as for core color support but calling the relevant -% driver-level function. -% \begin{macrocode} -\cs_new_eq:NN \draw_color:n \color_select:n -\cs_new_protected:Npn \draw_color_fill:n #1 - { \@@_color:nn { fill } {#1} } -\cs_new_protected:Npn \draw_color_stroke:n #1 - { \@@_color:nn { stroke } {#1} } -\cs_new_protected:Npn \@@_color:nn #1#2 - { - \color_export:nnN {#2} { backend } \l_@@_color_tmp_tl - \exp_after:wN \@@_color:nnn \l_@@_color_tmp_tl {#1} - } -\cs_new_protected:Npn \@@_color:nnn #1#2#3 - { \use:c { @@_backend_color_ #3 _ #1 :n } {#2} } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx index dcdfc783b74..e9a06f67d05 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-transforms} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -331,7 +331,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx index 081d42e7f36..11ed7487c13 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx @@ -110,7 +110,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -650,7 +650,7 @@ % \draw_path_lineto:n { 2cm , 1cm } % \draw_path_lineto:n { 3cm , 0.5cm } % \draw_path_lineto:n { 3cm , 0cm } -% \draw_color_fill:n { yellow!80!black } +% \color_fill:n { yellow!80!black } % \draw_path_use_clear:n { fill , stroke } % \draw_end: % \end{demo} @@ -662,7 +662,7 @@ % \draw_path_moveto:n { 2cm , 1cm } % Begins a new part % \draw_path_lineto:n { 3cm , 0.5cm } % \draw_path_lineto:n { 3cm , 0cm } -% \draw_color_fill:n { yellow!80!black } +% \color_fill:n { yellow!80!black } % \draw_path_use_clear:n { fill , stroke } % \draw_end: % \end{demo} @@ -684,7 +684,7 @@ % { 1cm , 1cm } % First control % { 2cm , 1cm } % Second control % { 3cm , 0cm } % End -% \draw_color_fill:n { yellow!80!black } +% \color_fill:n { yellow!80!black } % \draw_path_use_clear:n { fill , stroke } % \draw_end: % \end{demo} @@ -705,7 +705,7 @@ % \draw_path_curveto:nn % { 1cm , 1cm } % { 2cm , 0cm } -% \draw_color_fill:n { yellow!80!black } +% \color_fill:n { yellow!80!black } % \draw_path_use_clear:n { fill , stroke } % \draw_end: % \end{demo} @@ -778,7 +778,7 @@ % { 1.5cm , 0cm } % { 0cm , 1cm } % \draw_path_use_clear:n { stroke } -% \draw_color:n { red } +% \color_select:n { red } % \draw_path_ellipse:nnn % { 1cm , 0cm } % { 1cm , 1cm } @@ -977,15 +977,6 @@ % \end{demo} % \end{function} % -% \subsection{Color} -% -% \begin{function}{\draw_color:n, \draw_color_fill:n, \draw_color_stroke:n} -% \begin{syntax} -% \cs{draw_color:n} \Arg{color expression} -% \end{syntax} -% Evaluates the \meta{color expression} as described for \pkg{l3color}. -% \end{function} -% % \subsection{Transformations} % % Points are normally used unchanged relative to the canvas axes. This can @@ -1137,7 +1128,7 @@ % \section{\pkg{l3draw} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1145,10 +1136,8 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3draw}{2020-07-17}{} +\ProvidesExplPackage{l3draw}{2020-08-07}{} {L3 Experimental core drawing support} -%</package> % \end{macrocode} % % \begin{macrocode} @@ -1183,7 +1172,7 @@ % Everything else is in the sub-files! % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx index 9908f59c34c..fd030ce6434 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -232,7 +232,7 @@ % \section{\pkg{l3graphics} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -240,10 +240,8 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3graphics}{2020-07-17}{} +\ProvidesExplPackage{l3graphics}{2020-08-07}{} {L3 Experimental graphics inclusion support} -%</package> % \end{macrocode} % % \begin{variable}{\l_@@_tmp_ior, \l_@@_tmp_tl} @@ -715,7 +713,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx b/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx index 984336443e8..403410f99d9 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -182,7 +182,7 @@ % \section{\pkg{l3pdf} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -190,10 +190,8 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3pdf}{2020-07-17}{} +\ProvidesExplPackage{l3pdf}{2020-08-07}{} {L3 Experimental core PDF support} -%</package> % \end{macrocode} % % \begin{variable}{\s_@@_stop} @@ -350,7 +348,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx index 3c4fbc63363..e44bde9dff5 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx @@ -48,7 +48,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -158,7 +158,7 @@ % \section{\pkg{l3str-format} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -166,10 +166,8 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3str-format}{2020-07-17}{} +\ProvidesExplPackage{l3str-format}{2020-08-07}{} {L3 Experimental string formatting} -%</package> % \end{macrocode} % % \subsection{Helpers} @@ -974,7 +972,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx index 466a4d4107e..e368a925825 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -127,7 +127,7 @@ % \section{\pkg{l3sys-shell} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -135,10 +135,8 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3sys-shell}{2020-07-17}{} +\ProvidesExplPackage{l3sys-shell}{2020-08-07}{} {L3 Experimental system shell functions} -%</package> % \end{macrocode} % % \begin{variable}{\s_@@_stop} @@ -385,7 +383,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx index 65c18726450..7e030c8e3b6 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx @@ -56,7 +56,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -675,7 +675,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xcoffins}{2020-07-17}{} +\ProvidesExplPackage{xcoffins}{2020-08-07}{} {L3 Experimental design level coffins} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx index 7865c39b7f7..8ed82bcce4f 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx @@ -61,7 +61,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -678,7 +678,7 @@ % level both of these need to be correctly saved. % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -686,23 +686,8 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3galley}{2020-07-17}{} +\ProvidesExplPackage{l3galley}{2020-08-07}{} {L3 Experimental galley code} -%</package> -% \end{macrocode} -% -% \subsection{Support items} -% -% Functions or settings which are needed by the galley but perhaps also -% elsewhere. -% -% The default hyphenation character should be set and hyphenation should be -% enabled. -% \begin{macrocode} -%<*initex> -\tex_defaulthyphenchar:D 45 \scan_stop: -%</initex> % \end{macrocode} % % \subsection{Scratch variables} @@ -767,12 +752,7 @@ % The width of the current measure: the \enquote{running} setting can be % inherited from \LaTeXe{}. % \begin{macrocode} -%<*initex> -\dim_new:N \l_galley_text_width_dim -%</initex> -%<*package> \cs_new_eq:NN \l_galley_text_width_dim \linewidth -%</package> % \end{macrocode} % \end{variable} % @@ -782,12 +762,7 @@ % width are one way to define the measure width. See also the text width, % which is an alternative view (and should be in sync with this one!). % \begin{macrocode} -%<*initex> -\dim_new:N \l_galley_total_left_margin_dim -%</initex> -%<*package> \cs_new_eq:NN \l_galley_total_left_margin_dim \@totalleftmargin -%</package> \dim_new:N \l_galley_total_right_margin_dim % \end{macrocode} % \end{variable} @@ -1453,18 +1428,11 @@ % \LaTeXe{} \cs{@nodocument} is never removed from the register. % This precaution is not be needed for a stand-alone format. % \begin{macrocode} -%<*initex> -\tex_everypar:D % TEMP - { - \bool_if:NTF \g_@@_begin_level_bool - { \@@_start_paragraph_first: } - { \@@_start_paragraph_std: } - } -%</initex> -%<*package> \cs_undefine:N \everypar \newtoks \everypar -\AtBeginDocument +\cs_if_exist:NTF \AtBeginDocument + { \AtBeginDocument } + { \use:n } { \tex_everypar:D { @@ -1474,7 +1442,6 @@ \tex_the:D \everypar } } -%</package> % \end{macrocode} % \end{macro} % @@ -2497,10 +2464,6 @@ % % \subsection{\LaTeXe{} functions} % -% \begin{macrocode} -%<*package> -% \end{macrocode} -% % \begin{macro}{\clearpage} % The \tn{clearpage} macro needs to place material into the correct % structures rather than directly onto the main vertical list. Other @@ -2653,10 +2616,6 @@ %</package> % \end{macrocode} % -% \begin{macrocode} -%</initex|package> -% \end{macrocode} -% % \end{implementation} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx index d917bdecff6..0d9bf34149d 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -734,7 +734,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xgalley}{2020-07-17}{} +\ProvidesExplPackage{xgalley}{2020-08-07}{} {L3 Experimental galley} \RequirePackage{xparse,xtemplate,l3galley} % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index e1a36c6db56..85284e594ac 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2020-07-17}% +\def\ExplFileDate{2020-08-07}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -798,16 +798,14 @@ % % \section{The distribution} % -% At present, the \pkg{expl3} modules are designed to be loaded on top -% of \LaTeXe{}. In time, a \LaTeX3 format may be produced based on this -% code. +% The \pkg{expl3} modules are designed to be loaded on top of \LaTeXe{}. % % \begin{bfseries} -% While \pkg{expl3} is still experimental, the bundle is now regarded -% as broadly stable. The syntax conventions and functions provided +% The core \pkg{expl3} language is broadly stable, and thus +% the syntax conventions and functions provided % are now ready for wider use. There may still be changes to some % functions, but these will be minor when compared to the scope of -% \pkg{expl3}. +% \pkg{expl3}. A robust mechanism is in place for such deprecations. % \end{bfseries} % % The distribution of \pkg{expl3} is split up into three packages on @@ -821,7 +819,9 @@ % and any changes in this code are very limited. This material is % therefore suitable for use in third-party packages without concern % about changes in support. All of this code is documented in -% \texttt{interface3.pdf}. +% \texttt{interface3.pdf}. With an up-to-date \LaTeXe{} kernel, this +% code is built into the format file and therefore can be used +% without any further steps. % % The material in \pkg{l3packages} is also stable, but is not always % at a programming level: most notably, \pkg{xparse} is stable and @@ -834,9 +834,9 @@ % in terms of interface and functionality detail. Feedback on these % modules is extremely valuable. % -% \section{Moving from \LaTeXe{} to \LaTeX3} +% \section{Moving from \LaTeXe{} to \pkg{expl3}} % -% To help programmers to use \LaTeX3 code in existing \LaTeXe{} package, +% To help programmers to use \pkg{expl3} code in existing \LaTeXe{} package, % some short notes on making the change are probably desirable. % Suggestions for inclusion here are welcome! Some of the following % is concerned with code, and some with coding style. @@ -845,11 +845,10 @@ % \item \pkg{expl3} is mainly focused on programming. This means that % some areas still require the use of \LaTeXe{} internal macros. % For example, you may well need \tn{@ifpackageloaded}, as there -% is currently no native \LaTeX3 package loading module. +% is currently no native \pkg{expl3} package loading module. % \item User level macros should be generated using the mechanism % available in the \pkg{xparse} package, which is part of the -% \texttt{l3package} bundle, available from CTAN or the \LaTeX3 SVN -% repository. +% \texttt{l3package} bundle. % \item At an internal level, most functions should be generated % \tn{long} (using \cs{cs_new:Npn}) rather than \enquote{short} (using % \cs{cs_new_nopar:Npn}). @@ -894,7 +893,7 @@ % updated in time. % % \DescribeOption{check-declarations} -% All variables used in \LaTeX3 code should be declared. This is enforced +% All variables used in \pkg{expl3} code should be declared. This is enforced % by \TeX{} for variable types based on \TeX{} registers, but not for those % which are constructed using macros as the underlying storage system. The % \texttt{check-declarations} option enables checking for all variable @@ -907,7 +906,7 @@ % function name in the \texttt{.log} file. This is useful for debugging % purposes, as it means that there is a complete list of all functions % created by each module loaded (with the exceptions of a very small number -% required by the bootstrap code for \LaTeX3). See also \cs{debug_on:n} +% required by the bootstrap code). See also \cs{debug_on:n} % \texttt{\{log-functions\}} in \pkg{l3candidates} for finer control. % % \DescribeOption{enable-debug} @@ -936,6 +935,12 @@ % This option is available to support DVI-based routes that do not % support the |header| line used by \texttt{dvips}. % +% The debugging options may also be given using +% \verb|\keys_set:nn { sys } { ... }|; the \texttt{backend} option can be +% given in this way \emph{only} if a backend has not already been loaded. +% This method of setting options is useful where \pkg{expl3} is pre-loaded +% by the \LaTeXe{} format. +% % \section{Using \pkg{expl3} with formats other than \LaTeXe{}} % % As well as the \LaTeXe{} package \pkg{expl3}, there is also a @@ -1047,6 +1052,24 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\c__kernel_expl_date_tl} +% The \LaTeXe{} loader stores a private copy of \cs{ExplFileDate}, +% which is fixed when the format is build and cannot be changed later. +% While \cs{ExplFileDate} ensures that the loader (either +% \texttt{2ekernel} or \texttt{package}) version matches the version +% of \file{expl3-code.tex}, this one ensures that the version of an +% eventual |\usepackage{expl3}| matches the version from the format. +% It seems to be common to have stray format files in the user tree +% which trigger errors due to mismatched versions (\emph{e.g.} +% \url{https://github.com/latex3/latex3/issues/781}). +% \begin{macrocode} +%<*2ekernel> +\global\expandafter\let\csname\detokenize + {c__kernel_expl_date_tl}\endcsname\ExplFileDate +%</2ekernel> +% \end{macrocode} +% \end{macro} +% % The interlock test itself is simple: \cs{ExplLoaderFileDate} must be % defined and identical to \cs{ExplFileDate}. As this has to work for % both \LaTeXe{} and other formats, there is some auto-detection involved. @@ -1220,6 +1243,88 @@ %<@@=expl> % \end{macrocode} % +% Several times users reported this error when loading \pkg{expl3}: +% \begin{verbatim} +% ! Undefined control sequence. +% l.67 \bool +% _new:N \g__expl_reload_bool +% \end{verbatim} +% raised in the reload block below. This happens because the reload +% check below assumes that if the boolean \cs{g_@@_reload_bool} doesn't +% exist, this file is being loaded for the first time, and \pkg{expl3} +% syntax is on. This is a bit of a stretch for assumptions, but it's +% valid as long as everything's in sync. However the problem reported +% happened because of a stray format file in the user tree which didn't +% have the reload code defined here (commit \texttt{1d16336}), so the +% \cs{g_@@_reload_bool} doesn't exist, but \pkg{expl3} syntax is off, +% thus the error. +% +% At this point, if we have \cs{c__kernel_expl_date_tl} defined, the +% situation is straightforward: if it matches \cs{ExplLoaderFileDate}, +% then everything's as expected, so no need to worry. If it doesn't, +% then the current version of \pkg{expl3} differs from the one in the +% format, so raise a fatal error: the bahaviour is too unpredictable to +% continue safely. Also, if the error is to be raised, then we're +% reloading, which means that \pkg{expl3} syntax is off, so we turn it +% on for the message. +% \begin{macrocode} +\ifcsname\detokenize{c__kernel_expl_date_tl}\endcsname + \expandafter\ifx\csname\detokenize + {c__kernel_expl_date_tl}\endcsname\ExplLoaderFileDate + \else + \ExplSyntaxOn + \__kernel_msg_set:nnn { kernel } { mismatched-expl3 } + { + Mismatched~expl3~detected!~Loading~expl3~will~abort. + \\ \\ + The~version~of~expl3~preloaded~in~LaTeX~is~ + \c__kernel_expl_date_tl,~but~the~version~of~expl3~you~are~ + trying~to~load~is~dated~\ExplLoaderFileDate.~This~is~most~ + likely~due~to~a~stray~format~file~in~the~user~tree.~Please~ + make~sure~that~your~LaTeX~format~is~updated. + } + \exp_after:wN \ExplSyntaxOff \use:n + { + \__kernel_msg_critical:nn { kernel } { mismatched-expl3 } + \use:c { fi: } \use:c { fi: } + } + \fi +% \end{macrocode} +% If \cs{c__kernel_expl_date_tl} does \emph{not} exist, then we're on +% uncharted lands (that is, any time prior to the version that +% introduced this token list :-). Two cases might be here, depending +% whether \pkg{expl3} is loaded into the kernel or not. If we're loading +% \pkg{expl3} \enquote{normally} as a package, \pkg{expl3} syntax is on. +% Otherwise it's already loaded in the kernel and we're reloading +% \file{expl3.sty} so (\file{expl3-code.tex} doesn't load again and) +% \pkg{expl3} syntax is off. +% \begin{macrocode} +\else + \ifodd\csname\detokenize{l__kernel_expl_bool}\endcsname +% \end{macrocode} +% Package mode; all should be fine, since \file{expl3.sty} and +% \file{expl3-code.tex} are both loaded in one go, so versions should +% match (if they don't, it's detected above). +% Also, we've just tested that \pkg{expl3} syntax is on, so the reload +% test below will return false and \cs{bool_new:N} will run correctly. +% \begin{macrocode} + \else +% \end{macrocode} +% In this branch we're reloading, but there are still two cases to +% consider (sigh\ldots); whether the version preloaded in the format +% is recent enough to have \cs{g_@@_reload_bool} (2020-06-18 and +% later) or not. If the boolean is there, we have to do nothing +% because right ahead we deal with this case. +% If it is not, we just have to create it: +% \begin{macrocode} + \ExplSyntaxOn + \bool_if_exist:NF \g_@@_reload_bool + { \bool_new:N \g_@@_reload_bool } + \ExplSyntaxOff + \fi +\fi +% \end{macrocode} +% % Here we can also detect whether we're reloading. This code goes into % \texttt{expl3.ltx} and \texttt{expl3.sty}, the former loaded into the % \LaTeXe{} format. When this code is loaded for the first time, the diff --git a/Master/texmf-dist/source/latex/l3kernel/l3.ins b/Master/texmf-dist/source/latex/l3kernel/l3.ins index e54fe0cb51c..5e7d1bfff91 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3.ins +++ b/Master/texmf-dist/source/latex/l3kernel/l3.ins @@ -58,9 +58,7 @@ and all files in that bundle must be distributed together. { \file{expl3-code.tex} { - % ======== PACKAGE ONLY ======== \from{expl3.dtx} {package} - % ============================== \from{l3bootstrap.dtx} {package} \from{l3names.dtx} {package} \from{l3basics.dtx} {package} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx deleted file mode 100644 index 8f60b563f75..00000000000 --- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx +++ /dev/null @@ -1,195 +0,0 @@ -% \iffalse meta-comment -% -%% File: l3alloc.dtx -% -% Copyright (C) 1990-2012,2014-2020 The LaTeX3 Project -% -% It may be distributed and/or modified under the conditions of the -% LaTeX Project Public License (LPPL), either version 1.3c of this -% license or (at your option) any later version. The latest version -% of this license is in the file -% -% https://www.latex-project.org/lppl.txt -% -% This file is part of the "l3kernel bundle" (The Work in LPPL) -% and all files in that bundle must be distributed together. -% -% ----------------------------------------------------------------------- -% -% The development version of the bundle can be found at -% -% https://github.com/latex3/latex3 -% -% for those people who are interested. -% -%<*driver> -\documentclass[full,kernel]{l3doc} -\begin{document} - \DocInput{\jobname.dtx} -\end{document} -%</driver> -% \fi -% -% \title{^^A -% The \pkg{l3alloc} package\\ Register allocation^^A -% } -% -% \author{^^A -% The \LaTeX3 Project\thanks -% {^^A -% E-mail: -% \href{mailto:latex-team@latex-project.org} -% {latex-team@latex-project.org}^^A -% }^^A -% } -% -% \date{Released 2020-07-17} -% -% \maketitle -% -% \begin{documentation} -% -% This module provides the basic mechanism for allocating \TeX{}'s -% registers when operating in format mode. When loaded as a package on -% an existing format, the mechanisms from the latter are used. -% -% The approach used here is informed by the mechanisms used in plain -% \TeX{}/\LaTeX{} but noting that newer engines provide us much more -% flexibility. In addition to this, we do not need allocators for all -% register types: for example \texttt{toks} are not used by \LaTeX3 whilst -% reads/writes are handled using a pool and thus do not need a classical -% allocator. -% -% In classical (non-\LuaTeX{}) engines, there are various restriction on -% registers, for example |\box255| is hard-coded as the output box and -% inserts have to be allocated below this (not in the extended pool). Rather -% than worry about this, allocations for the registers affected (\TeX{} -% |box|, |count|, |dimen| and |skip| types) are simply made only from the -% extended pool. (There is a performance impact in engines other than -% \LuaTeX{} but the free use of registers in \pkg{expl3} means that code -% cannot be sure of obtaining a low-numbered register in any case.) -% -% \end{documentation} -% -% \begin{implementation} -% -% \section{\pkg{l3alloc} implementation} -% -% \begin{macrocode} -%<*initex> -% \end{macrocode} -% -% \begin{macrocode} -%<@@=alloc> -% \end{macrocode} -% -% \begin{variable} -% { -% \g_@@_int_int , -% \g_@@_dim_int , -% \g_@@_muskip_int , -% \g_@@_int_int , -% \g_@@_box_int -% } -% The core register tracking is done using the same raw \TeX{} count -% registers as reserved by plain \TeX{} and \LaTeXe{}, as there may be the -% odd piece of generic code that needs to work by number. However, as not -% all of our variables work the same way, some of the older registers are -% simply ignored. For the same reason, there is no special status for the -% low-numbers registers other than counts. To avoid having to worry about -% inserts and reflecting the register availability in \eTeX{}, the lower -% register space is unused here (though is available for hard-coded -% use). -% \begin{macrocode} -\tex_countdef:D \g_@@_int_int = 10 ~ -\tex_countdef:D \g_@@_dim_int = 11 ~ -\tex_countdef:D \g_@@_skip_int = 12 ~ -\tex_countdef:D \g_@@_muskip_int = 13 ~ -\tex_countdef:D \g_@@_box_int = 14 ~ -\g_@@_int_int = 255 ~ -\g_@@_dim_int = 255 ~ -\g_@@_skip_int = 255 ~ -\g_@@_muskip_int = 0 ~ -\g_@@_box_int = 255 ~ -% \end{macrocode} -% \end{variable} -% -% \begin{variable} -% { -% \g_@@_attribute_int , -% \g_@@_bytecode_int , -% \g_@@_chunkname_int , -% \g_@@_whatsit_int -% } -% To allow \LuaTeX{} to load |ltluatex.lua| for generic \Lua{} support, a -% small number of counts have to be correctly named at the \TeX{} level. -% At present there are no \pkg{expl3} allocators for these concepts so the -% names and numbers of the tracking variables may change. -% \begin{macrocode} -\tex_ifdefined:D \tex_luatexversion:D - \tex_global:D \tex_countdef:D \g_@@_attribute_int = 21 ~ - \tex_global:D \tex_countdef:D \g_@@_bytecode_int = 22 ~ - \tex_global:D \tex_countdef:D \g_@@_chunkname_int = 23 ~ - \tex_global:D \tex_countdef:D \g_@@_whatsit_int = 24 ~ -\tex_fi:D -% \end{macrocode} -% \end{variable} -% -% \begin{macro} -% {\box_new:N, \dim_new:N, \int_new:N, \muskip_new:N \skip_new:N} -% Each of the public allocators is a wrapper around the one internal -% function needed here. -% \begin{macrocode} -\cs_new_protected:Npx \box_new:N #1 - { - \exp_not:N \@@_reg:nNnN { box } - \cs_if_exist:NTF \tex_luatexversion:D - { \tex_chardef:D } - { - \cs_if_exist:NTF \tex_omathchardef:D - { \tex_omathchardef:D } - { \tex_mathchardef:D } - } - \c_max_register_int - #1 - } -\cs_new_protected:Npn \dim_new:N #1 - { \@@_reg:nNnN { dim } \tex_dimendef:D \c_max_register_int #1 } -\cs_new_protected:Npn \int_new:N #1 - { \@@_reg:nNnN { int } \tex_countdef:D \c_max_register_int #1 } -\cs_new_protected:Npn \muskip_new:N #1 - { \@@_reg:nNnN { muskip } \tex_muskipdef:D \c_max_register_int #1 } -\cs_new_protected:Npn \skip_new:N #1 - { \@@_reg:nNnN { skip } \tex_skipdef:D \c_max_register_int #1 } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@_reg:nNNN} -% The allocator itself is modelled somewhat on \LaTeXe{}'s \tn{e@alloc}, -% though there is no need to set \tn{allocationnumber}. -% \begin{macrocode} -\cs_new_protected:Npn \@@_reg:nNnN #1#2#3#4 - { - \__kernel_chk_if_free_cs:N #4 - \int_compare:nNnTF { \int_use:c { g_@@_ #1 _int } } < {#3} - { - \int_gincr:c { g_@@_ #1 _int } - \tex_global:D #2 #4 \int_use:c { g_@@_ #1 _int } - \iow_log:x - { - \token_to_str:N #4 ~=~ #1 ~register~ - \int_use:c { g_@@_ #1 _int } - } - } - { \__kernel_msg_fatal:nnx { kernel } { out-of-registers } {#1} } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -%</initex> -% \end{macrocode} -% -% \end{implementation} -% -% \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index 3cee7e2e9e0..ba422a79612 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -1339,7 +1339,7 @@ % \section{\pkg{l3basics} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \subsection{Renaming some \TeX{} primitives (again)} @@ -3277,7 +3277,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 5043d39d569..cf749116d62 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,9 +53,7 @@ % % The modules documented in \file{source3} are designed to be used on top of % \LaTeXe{} and are loaded all as one with the usual |\usepackage{expl3}| or -% |\RequirePackage{expl3}| instructions. These modules will also form the -% basis of the \LaTeX3 format, but work in this area is incomplete and not -% included in this documentation at present. +% |\RequirePackage{expl3}| instructions. % % As the modules use a coding syntax different from standard % \LaTeXe{} it provides a few functions for setting it up. @@ -123,43 +121,11 @@ % \section{\pkg{l3bootstrap} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> %<@@=kernel> % \end{macrocode} % -% \subsection{Format-specific code} -% -% The very first thing to do is to bootstrap the \IniTeX{} system so -% that everything else will actually work. \TeX{} does not start with -% some pretty basic character codes set up. -% \begin{macrocode} -%<*initex> -\catcode `\{ = 1 % -\catcode `\} = 2 % -\catcode `\# = 6 % -\catcode `\^ = 7 % -%</initex> -% \end{macrocode} -% -% Tab characters should not show up in the code, but to be on the -% safe side. -% \begin{macrocode} -%<*initex> -\catcode `\^^I = 10 % -%</initex> -% \end{macrocode} -% -% For \LuaTeX{}, the extra primitives need to be enabled. This is not needed -% in package mode: common formats have the primitives enabled. -% \begin{macrocode} -%<*initex> -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname directlua\endcsname\relax -\else - \directlua{tex.enableprimitives("", tex.extraprimitives())}% -\fi -%</initex> -% \end{macrocode} +% \subsection{\LuaTeX{}-specific code} % % Depending on the versions available, the \LaTeX{} format may not have % the raw |\Umath| primitive names available. We fix that globally: @@ -169,7 +135,6 @@ % a newer format anyway and as they all start |\U| this should be % reasonably safe. % \begin{macrocode} -%<*package> \begingroup \expandafter\ifx\csname directlua\endcsname\relax \else @@ -187,7 +152,6 @@ }% \fi \endgroup -%</package> % \end{macrocode} % % \subsection{The \tn{pdfstrcmp} primitive in \XeTeX{}} @@ -215,15 +179,13 @@ \ifnum\luatexversion<95 % \else % \end{macrocode} -% In package mode for \LuaTeX{} we make sure the basic support is loaded: +% For \LuaTeX{} we make sure the basic support is loaded: % this is only necessary in plain. % \begin{macrocode} -%<*package> \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname newcatcodetable\endcsname\relax \input{ltluatex}% \fi -%</package> \directlua{require("expl3")}% % \end{macrocode} % As the user might be making a custom format, no assumption is made about @@ -289,24 +251,6 @@ \fi =0 % \newlinechar`\^^J % -%<*initex> - \def\LineBreak{^^J}% - \edef\next - {% - \errhelp - {% - \LongText - For pdfTeX and XeTeX the '-etex' command-line switch is also - needed.\LineBreak - \LineBreak - Format building will abort!\LineBreak - }% - \errmessage{\ShortText}% - \endgroup - \noexpand\end - }% -%</initex> -%<*package> \def\LineBreak{\noexpand\MessageBreak}% \expandafter\ifx\csname PackageError\endcsname\relax \def\LineBreak{^^J}% @@ -323,18 +267,14 @@ \endgroup \noexpand\endinput }% -%</package> \fi \next % \end{macrocode} % % \subsection{Extending allocators} % -% In format mode, allocating registers is handled by \pkg{l3alloc}. However, in -% package mode it's much safer to rely on more general code. For example, -% the ability to extend \TeX{}'s allocation routine to allow for \eTeX{} has +% The ability to extend \TeX{}'s allocation routine to allow for \eTeX{} has % been around since 1997 in the \pkg{etex} package. -% % Loading this support is delayed until here as we are now sure that the % \eTeX{} extensions and \tn{pdfstrcmp} or equivalent are available. Thus % there is no danger of an \enquote{uncontrolled} error if the engine @@ -353,7 +293,6 @@ % here is done using a group and \tn{ifx} test as we are not quite in the % position to have a single name for \tn{pdfstrcmp} just yet. % \begin{macrocode} -%<*package> \begingroup \def\@tempa{LaTeX2e}% \def\next{}% @@ -368,98 +307,6 @@ \fi \expandafter\endgroup \next -%</package> -% \end{macrocode} -% -% \subsection{Character data} -% -% \TeX{} needs various pieces of data to be set about characters, in particular -% which ones to treat as letters and which \tn{lccode} values apply as these -% affect hyphenation. It makes most sense to set this and related information -% up in one place. Whilst for \LuaTeX{} hyphenation patterns can be read -% anywhere, other engines have to build them into the format and so we -% \emph{must} do this set up before reading the patterns. For the Unicode -% engines, there are shared loaders available to obtain the relevant -% information directly from the Unicode Consortium data files. These need -% standard (Ini)\TeX{} category codes and primitive availability and must -% therefore loaded \emph{very} early. This has a knock-on effect on the -% $8$-bit set up: it makes sense to do the definitions for those here as -% well so it is all in one place. -% -% For \XeTeX{} and \LuaTeX{}, which are natively Unicode engines, simply -% load the Unicode data. -% \begin{macrocode} -%<*initex> -\ifdefined\Umathcode - \input load-unicode-data % - \input load-unicode-math-classes % -\else -% \end{macrocode} -% For the $8$-bit engines a font encoding scheme must be chosen. At present, -% this is the EC (|T1|) scheme, with the assumption that languages for which -% this is not appropriate will be used with one of the Unicode engines. -% \begin{macrocode} - \begingroup -% \end{macrocode} -% Lower case chars: map to themselves when lower casing and down by |"20| when -% upper casing. (The characters |a|--|z| are set up correctly by \IniTeX{}.) -% \begin{macrocode} - \def\temp{% - \ifnum\count0>\count2 % - \else - \global\lccode\count0 = \count0 % - \global\uccode\count0 = \numexpr\count0 - "20\relax - \advance\count0 by 1 % - \expandafter\temp - \fi - } - \count0 = "A0 % - \count2 = "BC % - \temp - \count0 = "E0 % - \count2 = "FF % - \temp -% \end{macrocode} -% Upper case chars: map up by |"20| when lower casing, to themselves when upper -% casing and require an \tn{sfcode} of $999$. (The characters |A|--|Z| are set -% up correctly by \IniTeX{}.) -% \begin{macrocode} - \def\temp{% - \ifnum\count0>\count2 % - \else - \global\lccode\count0 = \numexpr\count0 + "20\relax - \global\uccode\count0 = \count0 % - \global\sfcode\count0 = 999 % - \advance\count0 by 1 % - \expandafter\temp - \fi - } - \count0 = "80 % - \count2 = "9C % - \temp - \count0 = "C0 % - \count2 = "DF % - \temp -% \end{macrocode} -% A few special cases where things are not as one might expect using the above -% pattern: dotless-I, dotless-J, dotted-I and d-bar. -% \begin{macrocode} - \global\lccode`\^^Y = `\^^Y % - \global\uccode`\^^Y = `\I % - \global\lccode`\^^Z = `\^^Z % - \global\uccode`\^^Y = `\J % - \global\lccode"9D = `\i % - \global\uccode"9D = "9D % - \global\lccode"9E = "9E % - \global\uccode"9E = "D0 % -% \end{macrocode} -% Allow hyphenation at a zero-width glyph (used to break up ligatures or -% to place accents between characters). -% \begin{macrocode} - \global\lccode23 = 23 % - \endgroup -\fi -%</initex> % \end{macrocode} % % \subsection{The \LaTeX3 code environment} @@ -470,14 +317,11 @@ % Before changing any category codes, in package mode we need to save % the situation before loading. Note the set up here means that once applied % \cs{ExplSyntaxOff} becomes a \enquote{do nothing} command until -% \cs{ExplSyntaxOn} is used. For format mode, there is no need to save -% category codes so that step is skipped. +% \cs{ExplSyntaxOn} is used. % \begin{macrocode} -\protected\def\ExplSyntaxOff{}% -%<*package> \protected\edef\ExplSyntaxOff {% - \protected\def\ExplSyntaxOff{}% + \protected\def\noexpand\ExplSyntaxOff{}% \catcode 9 = \the\catcode 9\relax \catcode 32 = \the\catcode 32\relax \catcode 34 = \the\catcode 34\relax @@ -490,7 +334,6 @@ \endlinechar = \the\endlinechar\relax \chardef\csname\detokenize{l_@@_expl_bool}\endcsname = 0\relax }% -%</package> % \end{macrocode} % \end{macro} % @@ -560,7 +403,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index e604fe5e4f8..8adeb3fb6d4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -887,7 +887,7 @@ % \section{\pkg{l3box} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -917,13 +917,11 @@ % Defining a new \meta{box} register: remember that box $255$ is not % generally available. % \begin{macrocode} -%<*package> \cs_new_protected:Npn \box_new:N #1 { \__kernel_chk_if_free_cs:N #1 \cs:w newbox \cs_end: #1 } -%</package> \cs_generate_variant:Nn \box_new:N { c } % \end{macrocode} % @@ -2238,7 +2236,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index d8d6bf68086..7e2cf8df90d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -690,7 +690,7 @@ % \section{\pkg{l3candidates} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \subsection{Additions to \pkg{l3box}} @@ -1638,7 +1638,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx index 25becd59fd2..a8c063b944f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -169,7 +169,7 @@ % \section{\pkg{l3cctab} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -242,6 +242,8 @@ % % First, the \LuaTeX{} case. % Creating a new category code table is done like other registers. +% In Con\TeX{}t, \tn{newcatcodetable} does not include the initialisation, +% so that is added explicitly. % \begin{macrocode} \sys_if_engine_luatex:TF { @@ -250,25 +252,11 @@ \__kernel_chk_if_free_cs:N #1 \@@_new:N #1 } -%<*initex> \cs_new_protected:Npn \@@_new:N #1 { - \int_gincr:N \g_@@_allocate_int - \int_compare:nNnTF - \g_@@_allocate_int > \c_max_register_int - { - \__kernel_msg_fatal:nnx - { kernel } { out-of-registers } { cctab } - } - { - \tex_global:D \tex_chardef:D #1 \g_@@_allocate_int - \tex_initcatcodetable:D #1 - } + \newcatcodetable #1 + \tex_initcatcodetable:D #1 } -%</initex> -%<*package> - \cs_new_eq:NN \@@_new:N \newcatcodetable -%</package> } % \end{macrocode} % Now the case for other engines. Here, each table is an integer @@ -716,14 +704,14 @@ { \cs_new_protected:Npn \@@_chk_if_valid_aux:NTF #1 { -%<*initex> - \bool_lazy_and:nnTF - { \int_if_odd_p:n {#1} } - { \int_compare_p:nNn {#1-1} < { \g_@@_allocate_int } } -%</initex> -%<*package> \int_compare:nNnTF {#1-1} < { \e@alloc@ccodetable@count } -%</package> + } + \cs_if_exist:NT \c_syst_catcodes_n + { + \cs_gset_protected:Npn \@@_chk_if_valid_aux:NTF #1 + { + \int_compare:nTF { #1 <= \c_syst_catcodes_n } + } } } { @@ -883,7 +871,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index da18711b6ea..f32ad49748b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -762,7 +762,7 @@ % \TestFiles{m3clist002} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -2058,7 +2058,7 @@ % \end{variable} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index 8c9f29e93b1..f828834daf4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -408,7 +408,7 @@ % \section{\pkg{l3coffins} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -667,6 +667,7 @@ % \vcoffin_gset:Nnn, \vcoffin_gset:cnn % } % \begin{macro}{\@@_set_vertical:NnnNN} +% \begin{macro}{\@@_set_vertical_aux:} % Setting vertical coffins is more complex. First, the material is % typeset with a given width. The default handles and poles are set as % for a horizontal coffin, before finding the top baseline using a @@ -694,10 +695,7 @@ #4 #1 { \dim_set:Nn \tex_hsize:D {#2} -%<*package> - \dim_set_eq:NN \linewidth \tex_hsize:D - \dim_set_eq:NN \columnwidth \tex_hsize:D -%</package> + \@@_set_vertical_aux: #3 } #5 #1 @@ -715,9 +713,17 @@ \box_clear:N \l_@@_internal_box } } +\cs_new_protected:Npx \@@_set_vertical_aux: + { + \cs_if_exist:NT \linewidth + { \dim_set_eq:NN \linewidth \tex_hsize:D } + \cs_if_exist:NT \columnwidth + { \dim_set_eq:NN \columnwidth \tex_hsize:D } + } % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro} % {\hcoffin_set:Nw, \hcoffin_set:cw, \hcoffin_gset:Nw, \hcoffin_gset:cw} @@ -783,10 +789,7 @@ { #3 #1 \dim_set:Nn \tex_hsize:D {#2} -%<*package> - \dim_set_eq:NN \linewidth \tex_hsize:D - \dim_set_eq:NN \columnwidth \tex_hsize:D -%</package> + \@@_set_vertical_aux: \cs_set_protected:Npn #4 { #5 @@ -2233,17 +2236,48 @@ % flexible. % \begin{macrocode} \tl_new:N \l_@@_display_font_tl -%<*package> -\tl_set:Nn \l_@@_display_font_tl { \sffamily \tiny } -%</package> +\cs_if_exist:NTF \AtBeginDocument + { \AtBeginDocument } + { \use:n } + { + \tl_set:Nx \l_@@_display_font_tl + { + \cs_if_exist:NT \sffamily { \exp_not:N \sffamily } + \cs_if_exist:NT \tiny { \exp_not:N \tiny } + } + } % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_color:n} % Calls \tn{color}, and otherwise does nothing if \tn{color} is not defined. % \begin{macrocode} -\cs_new_protected:Npn \@@_color:n #1 - { \cs_if_exist:NT \color { \color {#1} } } +\cs_if_exist:NTF \AtBeginDocument + { \AtBeginDocument } + { \use:n } + { + \cs_new_protected:Npx \@@_color:n #1 + { + \cs_if_exist:NTF \color_select:n + { \color_select:n {#1} } + { + \cs_if_exist:NT \color + { \exp_not:N \color {#1} } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_rule:nn} +% Abstract out creation of rules here until there is a higher-level interface. +% \begin{macrocode} +\cs_new_protected:Npx \@@_rule:nn #1#2 + { + \cs_if_exist:NTF \rule + { \exp_not:N \rule {#1} {#2} } + { \hbox:n { \tex_vrule:D width #1 height #2 \scan_stop: } } + } % \end{macrocode} % \end{macro} % @@ -2259,21 +2293,14 @@ { \hcoffin_set:Nn \l_@@_display_pole_coffin { -%<*initex> - \hbox:n { \tex_vrule:D width 1pt height 1pt \scan_stop: } -%</initex> -%<*package> \@@_color:n {#4} - \rule { 1pt } { 1pt } -%</package> + \@@_rule:nn { 1pt } { 1pt } } \@@_attach_mark:NnnNnnnn #1 {#2} {#3} \l_@@_display_pole_coffin { hc } { vc } { 0pt } { 0pt } \hcoffin_set:Nn \l_@@_display_coord_coffin { -%<*package> \@@_color:n {#4} -%</package> \l_@@_display_font_tl ( \tl_to_str:n { #2 , #3 } ) } @@ -2325,13 +2352,8 @@ { \hcoffin_set:Nn \l_@@_display_pole_coffin { -%<*initex> - \hbox:n { \tex_vrule:D width 1pt height 1pt \scan_stop: } -%</initex> -%<*package> \@@_color:n {#2} - \rule { 1pt } { 1pt } -%</package> + \@@_rule:nn { 1pt } { 1pt } } \prop_set_eq:Nc \l_@@_display_poles_prop { coffin ~ \@@_to_value:N #1 ~ poles } @@ -2371,9 +2393,7 @@ { 0pt } { 0pt } \hcoffin_set:Nn \l_@@_display_coord_coffin { -%<*package> \@@_color:n {#6} -%</package> \l_@@_display_font_tl ( \tl_to_str:n { #1 , ##1 } ) } @@ -2511,7 +2531,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx index a01acb8fa1c..628a4c6f230 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -85,7 +85,7 @@ % \section{\pkg{l3color-base} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -138,9 +138,7 @@ % \begin{macrocode} \cs_new_protected:Npn \color_ensure_current: { -%<*package> \@@_backend_pickup:N \l_@@_current_tl -%</package> \@@_select:N \l_@@_current_tl } % \end{macrocode} @@ -162,7 +160,7 @@ \cs_new_protected:Npn \@@_select:N #1 { \exp_after:wN \@@_select:nn #1 } \cs_new_protected:Npn \@@_select:nn #1#2 - { \use:c { @@_backend_ #1 :n } {#2} } + { \use:c { @@_backend_select_ #1 :n } {#2} } % \end{macrocode} % \end{macro} % \end{macro} @@ -176,7 +174,7 @@ % \end{variable} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx index 632e62e58be..5f8f0b93e9f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -119,7 +119,7 @@ % \section{\pkg{l3debug} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1476,7 +1476,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index 8faf8635049..10dae76668e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -86,7 +86,7 @@ % \section{\pkg{l3deprecation} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -836,7 +836,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 0954108c963..9e7498e265f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/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-07-17} +% \date{Released 2020-08-07} % \maketitle % \tableofcontents % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index bf56cdd54f9..24a061d1925 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index e9020851488..d2ef71dac4e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -937,7 +937,7 @@ % \section{\pkg{l3expan} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -2909,7 +2909,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 7ee7df53475..553c5419cbc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -910,7 +910,7 @@ % \TestFiles{m3file001} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \subsection{Input operations} @@ -939,16 +939,9 @@ % % \begin{variable}{\g_@@_streams_seq} % A list of the currently-available input streams to be used as a -% stack. In format mode, all streams (from $0$ to~$15$) are -% available, while the package requests streams to \LaTeXe{} as they -% are needed (initially none are needed), so the starting point -% varies! +% stack. % \begin{macrocode} \seq_new:N \g_@@_streams_seq -%<*initex> -\seq_gset_split:Nnn \g_@@_streams_seq { , } - { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 } -%</initex> % \end{macrocode} % \end{variable} % @@ -970,7 +963,6 @@ % it holds the value of the \emph{last} stream allocated. % \begin{macrocode} \prop_new:N \g_@@_streams_prop -%<*package> \int_step_inline:nnn { 0 } { @@ -984,7 +976,6 @@ { \prop_gput:Nnn \g_@@_streams_prop {#1} { Reserved~by~format } } -%</package> % \end{macrocode} % \end{variable} % @@ -1043,7 +1034,7 @@ % \end{macro} % % \begin{macro}{\@@_new:N} -% In package mode, streams are reserved using \tn{newread} before they +% Streams are reserved using \tn{newread} before they % can be managed by \pkg{ior}. To prevent \pkg{ior} from being % affected by redefinitions of \tn{newread} (such as done by the % third-party package \pkg{morewrites}), this macro is saved here @@ -1053,7 +1044,6 @@ % that \tn{newread} works like our own: it actually checks before % altering definition. % \begin{macrocode} -%<*package> \exp_args:NNf \cs_new_protected:Npn \@@_new:N { \exp_args:NNc \exp_after:wN \exp_stop_f: { newread } } \cs_if_exist:NT \normalend @@ -1065,15 +1055,13 @@ \@@_new_aux:N #1 } } -%</package> % \end{macrocode} % \end{macro} % % \begin{macro}{\__kernel_ior_open:Nn, \__kernel_ior_open:No} % \begin{macro}{\@@_open_stream:Nn} % The stream allocation itself uses the fact that there is a list of all of -% those available, so allocation is simply a question of using the number at -% the top of the list. In package mode, life gets more complex as it's +% those available. Life gets more complex as it's % important to keep things in sync. That is done using a two-part approach: % any streams that have already been taken up by \pkg{ior} but are now free % are tracked, so we first try those. If that fails, ask plain \TeX{} or \LaTeXe{} @@ -1084,16 +1072,11 @@ \ior_close:N #1 \seq_gpop:NNTF \g_@@_streams_seq \l_@@_stream_tl { \@@_open_stream:Nn #1 {#2} } -%<*initex> - { \__kernel_msg_fatal:nn { kernel } { input-streams-exhausted } } -%</initex> -%<*package> { \@@_new:N #1 \tl_set:Nx \l_@@_stream_tl { \int_eval:n {#1} } \@@_open_stream:Nn #1 {#2} } -%</package> } \cs_generate_variant:Nn \__kernel_ior_open:Nn { No } % \end{macrocode} @@ -1392,20 +1375,9 @@ % % \begin{variable}{\g_@@_streams_seq} % A list of the currently-available output streams to be used as a -% stack. The stream $18$ is special, as \tn{write}18 is used to -% denote commands to be sent to the OS\@. +% stack. % \begin{macrocode} \seq_new:N \g_@@_streams_seq -%<*initex> -\exp_args:Nnx \use:n - { \seq_gset_split:Nnn \g_@@_streams_seq { } } - { - \int_step_function:nnN { 0 } { \c_term_iow } - \prg_do_nothing: - } -\int_compare:nNnF \c_term_iow < { 18 } - { \seq_gremove_all:Nn \g_@@_streams_seq { 18 } } -%</initex> % \end{macrocode} % \end{variable} % @@ -1421,7 +1393,6 @@ % check on. % \begin{macrocode} \prop_new:N \g_@@_streams_prop -%<*package> \int_step_inline:nnn { 0 } { @@ -1435,7 +1406,6 @@ { \prop_gput:Nnn \g_@@_streams_prop {#1} { Reserved~by~format } } -%</package> % \end{macrocode} % \end{variable} % @@ -1483,13 +1453,11 @@ % \end{variable} % % \begin{macro}{\@@_new:N} -% As for read streams, copy \tn{newwrite} in package mode, making sure +% As for read streams, copy \tn{newwrite}, making sure % that it is not \tn{outer}. % \begin{macrocode} -%<*package> \exp_args:NNf \cs_new_protected:Npn \@@_new:N { \exp_args:NNc \exp_after:wN \exp_stop_f: { newwrite } } -%</package> % \end{macrocode} % \end{macro} % @@ -1512,16 +1480,11 @@ \iow_close:N #1 \seq_gpop:NNTF \g_@@_streams_seq \l_@@_stream_tl { \@@_open_stream:NV #1 \l_@@_file_name_tl } -%<*initex> - { \__kernel_msg_fatal:nn { kernel } { output-streams-exhausted } } -%</initex> -%<*package> { \@@_new:N #1 \tl_set:Nx \l_@@_stream_tl { \int_eval:n {#1} } \@@_open_stream:NV #1 \l_@@_file_name_tl } -%</package> } \cs_generate_variant:Nn \iow_open:Nn { c } \cs_new_protected:Npn \@@_open_stream:Nn #1#2 @@ -1876,7 +1839,7 @@ \cs_new_protected:Npn \iow_wrap:nnnN #1#2#3#4 { \group_begin: -%<package> \cs_if_exist_use:N \conditionally@traceoff + \cs_if_exist_use:N \conditionally@traceoff \int_set:Nn \tex_escapechar:D { -1 } \cs_set:Npx \{ { \token_to_str:N \{ } \cs_set:Npx \# { \token_to_str:N \# } @@ -1897,7 +1860,7 @@ % definition: it only works in the first argument of % \cs{iow_wrap:nnnN}. % \begin{macrocode} -%<package> \cs_set_eq:NN \protect \token_to_str:N + \cs_set_eq:NN \protect \token_to_str:N \tl_set:Nx \l_@@_wrap_tl {#1} \cs_set_eq:NN \iow_allow_break: \@@_allow_break_error: \cs_set_eq:NN \iow_indent:n \@@_indent_error:n @@ -2351,7 +2314,6 @@ % \tn{@currnamestack} is empty so is skipped. % \begin{macrocode} \seq_new:N \g_@@_stack_seq -%<*package> \group_begin: \cs_set_protected:Npn \@@_tmp:w #1#2#3 { @@ -2376,25 +2338,16 @@ { \exp_after:wN \@@_tmp:w \@currnamestack } } \group_end: -%</package> % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_record_seq} % The total list of files used is recorded separately from the current % file stack, as nothing is ever popped from this list. The current -% file name should be included in the file list! In format mode, this -% is done at the very start of the \TeX{} run. In package mode we +% file name should be included in the file list! We % will eventually copy the contents of \cs{@filelist}. % \begin{macrocode} \seq_new:N \g_@@_record_seq -%<*initex> -\tex_everyjob:D \exp_after:wN - { - \tex_the:D \tex_everyjob:D - \seq_gput_right:NV \g_@@_record_seq \g_file_curr_name_str - } -%</initex> % \end{macrocode} % \end{variable} % @@ -2424,11 +2377,9 @@ % \end{variable} % % \begin{variable}{\l_@@_tmp_seq} -% Scratch space for comma list conversion in package mode. +% Scratch space for comma list conversion. % \begin{macrocode} -%<*package> \seq_new:N \l_@@_tmp_seq -%</package> % \end{macrocode} % \end{variable} % @@ -2734,13 +2685,11 @@ { \seq_map_tokens:Nn \l_file_search_path_seq { \@@_full_name_aux:Nnn \seq_map_break:n {#1} } -%<*package> \cs_if_exist:NT \input@path { \tl_map_tokens:Nn \input@path { \@@_full_name_aux:Nnn \tl_map_break:n {#1} } } -%</package> \@@_name_end: } { \@@_ext_check:n {#1} } @@ -2879,13 +2828,11 @@ \@@_get_full_name_search:nN { } \use:n \seq_map_inline:Nn \l_file_search_path_seq { \@@_get_full_name_search:nN { ##1 / } \seq_map_break:n } -%<*package> \cs_if_exist:NT \input@path { \tl_map_inline:Nn \input@path { \@@_get_full_name_search:nN { ##1 } \tl_map_break:n } } -%</package> \tl_set:Nn \l_@@_full_name_tl { \q_no_value } \prg_break_point: \quark_if_no_value:NTF \l_@@_full_name_tl @@ -3319,14 +3266,9 @@ } \cs_new_protected:Npx \@@_input:n #1 { -%<*initex> - \seq_gput_right:Nn \exp_not:N \g_@@_record_seq {#1} -%</initex> -%<*package> \exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist { \exp_not:N \@addtofilelist {#1} } { \seq_gput_right:Nn \exp_not:N \g_@@_record_seq {#1} } -%</package> \exp_not:N \@@_input_push:n {#1} \exp_not:N \tex_input:D \sys_if_engine_luatex:TF @@ -3353,17 +3295,13 @@ \str_gset_eq:NN \g_file_curr_name_str \l_@@_name_str \str_gset_eq:NN \g_file_curr_ext_str \l_@@_ext_str } -%<*package> \cs_new_eq:NN \__kernel_file_input_push:n \@@_input_push:n -%</package> \cs_new_protected:Npn \@@_input_pop: { \seq_gpop:NN \g_@@_stack_seq \l_@@_internal_tl \exp_after:wN \@@_input_pop:nnn \l_@@_internal_tl } -%<*package> \cs_new_eq:NN \__kernel_file_input_pop: \@@_input_pop: -%</package> \cs_new_protected:Npn \@@_input_pop:nnn #1#2#3 { \str_gset:Nn \g_file_curr_dir_str {#1} @@ -3498,13 +3436,11 @@ \cs_new_protected:Npn \@@_list:N #1 { \seq_clear:N \l_@@_tmp_seq -%<*package> \clist_if_exist:NT \@filelist { \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq { \tl_to_str:N \@filelist } } -%</package> \seq_concat:NNN \l_@@_tmp_seq \l_@@_tmp_seq \g_@@_record_seq \seq_remove_duplicates:N \l_@@_tmp_seq #1 { LaTeX/kernel } { file-list } @@ -3521,7 +3457,6 @@ % \cs{@filelist} must be turned to strings before being added to % \cs{g_@@_record_seq}. % \begin{macrocode} -%<*package> \cs_if_exist:NT \@filelist { \AtBeginDocument @@ -3534,7 +3469,6 @@ \l_@@_tmp_seq } } -%</package> % \end{macrocode} % % \subsection{GetIfInfo} @@ -3626,20 +3560,6 @@ #1 \\ ............. } -\__kernel_msg_new:nnnn { kernel } { input-streams-exhausted } - { Input~streams~exhausted } - { - TeX~can~only~open~up~to~16~input~streams~at~one~time.\\ - All~16~are~currently~in~use,~and~something~wanted~to~open~ - another~one. - } -\__kernel_msg_new:nnnn { kernel } { output-streams-exhausted } - { Output~streams~exhausted } - { - TeX~can~only~open~up~to~16~output~streams~at~one~time.\\ - All~16~are~currently~in~use,~and~something~wanted~to~open~ - another~one. - } \__kernel_msg_new:nnnn { kernel } { unbalanced-quote-in-filename } { Unbalanced~quotes~in~file~name~'#1'. } { @@ -3699,7 +3619,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx deleted file mode 100644 index 809850d1a52..00000000000 --- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx +++ /dev/null @@ -1,389 +0,0 @@ -% \iffalse meta-comment -% -%% File: l3final.dtx -% -% Copyright (C) 1990-2020 The LaTeX3 Project -% -% It may be distributed and/or modified under the conditions of the -% LaTeX Project Public License (LPPL), either version 1.3c of this -% license or (at your option) any later version. The latest version -% of this license is in the file -% -% https://www.latex-project.org/lppl.txt -% -% This file is part of the "l3kernel bundle" (The Work in LPPL) -% and all files in that bundle must be distributed together. -% -% ----------------------------------------------------------------------- -% -% The development version of the bundle can be found at -% -% https://github.com/latex3/latex3 -% -% for those people who are interested. -% -%<*driver> -\documentclass[full,kernel]{l3doc} -\begin{document} - \DocInput{\jobname.dtx} -\end{document} -%</driver> -% \fi -% -% \title{^^A -% The \pkg{l3final} package\\ Format finalisation^^A -% } -% -% \author{^^A -% The \LaTeX3 Project\thanks -% {^^A -% E-mail: -% \href{mailto:latex-team@latex-project.org} -% {latex-team@latex-project.org}^^A -% }^^A -% } -% -% \date{Released 2020-07-17} -% -% \maketitle -% -% \begin{documentation} -% -% This module is the end of the \LaTeX3 format file. Currently, a lot of this -% is copy-pasted from the \LaTeXe{} format or is highly unstable (essentially -% hacks which need revisiting later). -% -% \end{documentation} -% -% \begin{implementation} -% -% \section{\pkg{l3final} Implementation} -% -% \begin{macrocode} -%<*initex> -% \end{macrocode} -% -% \subsection{Input encoding} -% -% \begin{macrocode} -%<@@=char> -% \end{macrocode} -% -% The letters |a|--|z| and |A|--|Z| have the correct catcode directly from \IniTeX{} -% while for Unicode engines (almost) all characters to be treated as letters -% are defined by the automatic data parsing. Thus the changes here are to -% deal with the additional cases. -% -% All the characters in the range $0$--$31$ \emph{except} tab (|^^I|), nl -% (|^^J|), ff (|^^L|) and cr (|^^M|). -% \begin{macrocode} -\int_step_inline:nnn { 0 } { `\^^H } - { \char_set_catcode_invalid:n {#1} } -\char_set_catcode_invalid:n { `\^^K } -\int_step_inline:nnn { `\^^N } { 31 } - { \char_set_catcode_invalid:n {#1} } -% \end{macrocode} -% The same is true for the top of the $7$-bit range. -% \begin{macrocode} -\char_set_catcode_invalid:n { 127 } -% \end{macrocode} -% For the $8$-bit engines dotless-I and dotless-J need to be valid, -% and these therefore appear in some following code. To avoid an issue -% when those lines are read, the chars are made valid here and that is -% reversed for Unicode engines below. -% \begin{macrocode} -\char_set_catcode_letter:n { `\^^Y } -\char_set_catcode_letter:n { `\^^Z } -% \end{macrocode} -% -% For non-Unicode engine we now need to convert from UTF-$8$ to $8$-bit -% for pattern reading and document use. The set up here is copied from -% the file |conv-utf8-ec.tex| maintained by \textsc{tug} for hyphenation -% pattern use. As some of the relevant primitives have been moved and to -% allow for self-contained code that is copied here with minor adjustments. -% (The primitives have to be available at point of use not just at point of -% definition so a compatibility layer is hard to arrange here.) -% \begin{macrocode} -\bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } -% \end{macrocode} -% Unicode engines: make these two invalid (this happens after \TeX{} -% has read and thrown away their use in the following). -% \begin{macrocode} - { - \char_set_catcode_invalid:n { `\^^Y } - \char_set_catcode_invalid:n { `\^^Z } - } -% \end{macrocode} -% Now for $8$-bit engines. -% \begin{macrocode} - { -% \end{macrocode} -% At least for the present, make \upTeX{} behave like \pdfTeX{} so -% the set up is easier. -% \begin{macrocode} - \sys_if_engine_uptex:T - { \tex_disablecjktoken:D } -% \end{macrocode} -% The actual mappings: these are kept low-level for performance reasons. -% \begin{macrocode} - \cs_new:cpn { @@_active_C3:N } #1 - { - \if_meaning:w #1 ^^9f ^^ff \else: % ß - U+00DF - germandbls - \if_meaning:w #1 ^^a0 ^^e0 \else: % à - U+00E0 - agrave - \if_meaning:w #1 ^^a1 ^^e1 \else: % á - U+00E1 - aacute - \if_meaning:w #1 ^^a2 ^^e2 \else: % â - U+00E2 - acircumflex - \if_meaning:w #1 ^^a3 ^^e3 \else: % ã - U+00E3 - atilde - \if_meaning:w #1 ^^a4 ^^e4 \else: % ä - U+00E4 - adieresis - \if_meaning:w #1 ^^a5 ^^e5 \else: % å - U+00E5 - aring - \if_meaning:w #1 ^^a6 ^^e6 \else: % æ - U+00E6 - ae - \if_meaning:w #1 ^^a7 ^^e7 \else: % ç - U+00E7 - ccedilla - \if_meaning:w #1 ^^a8 ^^e8 \else: % è - U+00E8 - egrave - \if_meaning:w #1 ^^a9 ^^e9 \else: % é - U+00E9 - eacute - \if_meaning:w #1 ^^aa ^^ea \else: % ê - U+00EA - ecircumflex - \if_meaning:w #1 ^^ab ^^eb \else: % ë - U+00EB - edieresis - \if_meaning:w #1 ^^ac ^^ec \else: % ì - U+00EC - igrave - \if_meaning:w #1 ^^ad ^^ed \else: % í - U+00ED - iacute - \if_meaning:w #1 ^^ae ^^ee \else: % î - U+00EE - icircumflex - \if_meaning:w #1 ^^af ^^ef \else: % ï - U+00EF - idieresis - \if_meaning:w #1 ^^b0 ^^f0 \else: % ð - U+00F0 - eth - \if_meaning:w #1 ^^b1 ^^f1 \else: % ñ - U+00F1 - ntilde - \if_meaning:w #1 ^^b2 ^^f2 \else: % ò - U+00F2 - ograve - \if_meaning:w #1 ^^b3 ^^f3 \else: % ó - U+00F3 - oacute - \if_meaning:w #1 ^^b4 ^^f4 \else: % ô - U+00F4 - ocircumflex - \if_meaning:w #1 ^^b5 ^^f5 \else: % õ - U+00F5 - otilde - \if_meaning:w #1 ^^b6 ^^f6 \else: % ö - U+00F6 - odieresis - \if_meaning:w #1 ^^b8 ^^f8 \else: % ø - U+00F8 - oslash - \if_meaning:w #1 ^^b9 ^^f9 \else: % ù - U+00F9 - ugrave - \if_meaning:w #1 ^^ba ^^fa \else: % ú - U+00FA - uacute - \if_meaning:w #1 ^^bb ^^fb \else: % û - U+00FB - ucircumflex - \if_meaning:w #1 ^^bc ^^fc \else: % ü - U+00FC - udieresis - \if_meaning:w #1 ^^bd ^^fd \else: % ý - U+00FD - yacute - \if_meaning:w #1 ^^be ^^fe \else: % þ - U+00FE - thorn - \if_meaning:w #1 ^^bf ^^b8 \else: % ÿ - U+00FF - ydieresis - \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: - \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: - \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: - } - \cs_new:cpn { @@_active_C4:N } #1 - { - \if_meaning:w #1 ^^83 ^^a0 \else: % ă - U+0103 - abreve - \if_meaning:w #1 ^^85 ^^a1 \else: % ą - U+0105 - aogonek - \if_meaning:w #1 ^^87 ^^a2 \else: % ć - U+0107 - cacute - \if_meaning:w #1 ^^8d ^^a3 \else: % č - U+010D - ccaron - \if_meaning:w #1 ^^8f ^^a4 \else: % ď - U+010F - dcaron - \if_meaning:w #1 ^^91 ^^9e \else: % đ - U+0111 - dcroat - \if_meaning:w #1 ^^99 ^^a6 \else: % ę - U+0119 - eogonek - \if_meaning:w #1 ^^9b ^^a5 \else: % ě - U+011B - ecaron - \if_meaning:w #1 ^^9f ^^a7 \else: % ğ - U+011F - gbreve - \if_meaning:w #1 ^^b1 ^^19 \else: % ı - U+0131 - dotlessi - \if_meaning:w #1 ^^b3 ^^bc \else: % ij - U+0133 - ij - \if_meaning:w #1 ^^ba ^^a8 \else: % ĺ - U+013A - lacute - \if_meaning:w #1 ^^be ^^a9 \else: % ľ - U+013E - lcaron - \__kernel_msg_expandable_error:nn { kernel } { encoding-failure } - \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: - } - \cs_new:cpn { @@_active_C5:N } #1 - { - \if_meaning:w #1 ^^82 ^^aa \else: % ł - U+0142 - lslash - \if_meaning:w #1 ^^84 ^^ab \else: % ń - U+0144 - nacute - \if_meaning:w #1 ^^88 ^^ac \else: % ň - U+0148 - ncaron - \if_meaning:w #1 ^^8b ^^ad \else: % ŋ - U+014B - eng - \if_meaning:w #1 ^^91 ^^ae \else: % ő - U+0151 - ohungarumlaut - \if_meaning:w #1 ^^93 ^^f7 \else: % œ - U+0153 - oe - \if_meaning:w #1 ^^95 ^^af \else: % ŕ - U+0155 - racute - \if_meaning:w #1 ^^99 ^^b0 \else: % ř - U+0159 - rcaron - \if_meaning:w #1 ^^9b ^^b1 \else: % ś - U+015B - sacute - \if_meaning:w #1 ^^9f ^^b3 \else: % ş - U+015F - scedilla - \if_meaning:w #1 ^^a1 ^^b2 \else: % š - U+0161 - scaron - \if_meaning:w #1 ^^a5 ^^b4 \else: % ť - U+0165 - tcaron - \if_meaning:w #1 ^^af ^^b7 \else: % ů - U+016F - uring - \if_meaning:w #1 ^^b1 ^^b6 \else: % ű - U+0171 - uhungarumlaut - \if_meaning:w #1 ^^ba ^^b9 \else: % ź - U+017A - zacute - \if_meaning:w #1 ^^bc ^^bb \else: % ż - U+017C - zdotaccent - \if_meaning:w #1 ^^be ^^ba \else: % ž - U+017E - zcaron - \__kernel_msg_expandable_error:nn { kernel } { encoding-failure } - \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: - \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: - } - \cs_new:cpn { @@_active_C8:N } #1 - { - \if_meaning:w #1 ^^99 ^^b3 \else: % ș - U+0219 - scommaaccent - \if_meaning:w #1 ^^9b ^^b5 \else: % ț - U+021B - tcommaaccent - \if_meaning:w #1 ^^b7 ^^1a \else: % ȷ - U+0237 - dotlessj - \__kernel_msg_expandable_error:nn { kernel } { encoding-failure } - \fi: \fi: \fi: - } -% \end{macrocode} -% Install and record the active characters. -% \begin{macrocode} - \clist_map_inline:nn { C3 , C4 , C5 , C8 } - { - \char_set_catcode_active:n { "#1 } - \char_set_active_eq:nc { "#1 } { @@_active_ #1 :N } - \seq_put_right:Nx \l_char_special_seq - { \exp_not:c { \char_generate:nn { "#1 } { 12 } } } - \seq_put_right:Nx \l_char_active_seq - { \exp_not:c { \char_generate:nn { "#1 } { 12 } } } - } - \__kernel_msg_new:nnn { kernel } { encoding-failure } - { Unknown~UTF-8~char } -% \end{macrocode} -% All of the chars are lower case so give them the correct \tn{lccode} -% values. -% \begin{macrocode} - \clist_map_inline:nn - { - 19 , 1A , 9E , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , - AA , AB , AC , AD , AE , AF , B0 , B1 , B2 , B3 , B3 , B4 , B5 , - B6 , B7 , B8 , B9 , BA , BB , BC , E0 , E1 , E2 , E3 , E4 , E5 , - E6 , E7 , E8 , E9 , EA , EB , EC , ED , EE , EF , F0 , F1 , F2 , - F3 , F4 , F5 , F6 , F7 , F8 , F9 , FA , FB , FC , FD , FE , FF - } - { \char_set_lccode:nn { "#1 } { "#1 } } - } -% \end{macrocode} -% -% \subsection{Temporary hacks} -% -% \begin{macro}{\T1/lmr/m/n/10, \TU/lmr/m/n/10} -% For \emph{testing only} provide some kind of output: for that we -% need a font. At present, select Latin Modern Roman at 10\,pt: -% entirely arbitrary but at least usable. -% \begin{macrocode} -\sys_if_engine_luatex:T - { - \tex_everyjob:D \exp_after:wN - { - \tex_the:D \tex_everyjob:D - \lua_now:n { require("l3format.lua") } - } - } -\use:x - { - \tex_everyjob:D - { - \tex_the:D \tex_everyjob:D - \bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } - { - \tex_font:D \exp_not:c { TU/lmr/m/n/10 } - = "[lmroman10-regular.otf]/OT" \scan_stop: - \exp_not:c { TU/lmr/m/n/10 } - \tex_font:D \exp_not:c { TU/lmm/m/n/10 } - = "[latinmodern-math.otf]/OT:mode=base;script=math;" \scan_stop: - \tex_font:D \exp_not:c { TU/lmm/m/n/7 } - = "[latinmodern-math.otf]/OT:mode=base;script=math;+ssty=0;"~at~7pt \scan_stop: - \tex_font:D \exp_not:c { TU/lmm/m/n/5 } - = "[latinmodern-math.otf]/OT:mode=base;script=math;+ssty=1;"~at~5pt \scan_stop: - \exp_not:N \int_step_inline:nnn { 0 } { 3 } - { - \tex_textfont:D ##1 = \exp_not:c { TU/lmm/m/n/10 } - \tex_scriptfont:D ##1 = \exp_not:c { TU/lmm/m/n/7 } - \tex_scriptscriptfont:D ##1 = \exp_not:c { TU/lmm/m/n/5 } - } - } - { - \tex_font:D \exp_not:c { T1/lmr/m/n/10 } - = ec-lmr10 \scan_stop: - \exp_not:c { T1/lmr/m/n/10 } - \tex_font:D \exp_not:c { OT1/lmr/m/n/10 } - = rm-lmr10 \scan_stop: - \tex_font:D \exp_not:c { OML/lmm/m/it/10 } - = lmmi10 \scan_stop: - \tex_font:D \exp_not:c { OMS/lmsy/m/n/10 } - = lmsy10 \scan_stop: - \tex_font:D \exp_not:c { OMX/lmex/m/n/10 } - = lmex10 \scan_stop: - \tex_font:D \exp_not:c { OT1/lmr/m/n/7 } - = rm-lmr7 \scan_stop: - \tex_font:D \exp_not:c { OML/lmm/m/it/7 } - = lmmi7 \scan_stop: - \tex_font:D \exp_not:c { OMS/lmsy/m/n/7 } - = lmsy7 \scan_stop: - \tex_font:D \exp_not:c { OMX/lmex/m/n/7 } - = lmex10~at~7pt \scan_stop: - \tex_font:D \exp_not:c { OT1/lmr/m/n/5 } - = rm-lmr5 \scan_stop: - \tex_font:D \exp_not:c { OML/lmm/m/it/5 } - = lmmi5 \scan_stop: - \tex_font:D \exp_not:c { OMS/lmsy/m/n/5 } - = lmsy5 \scan_stop: - \tex_font:D \exp_not:c { OMX/lmex/m/n/5 } - = lmex10~at~5pt \scan_stop: - \tex_textfont:D 0 = \exp_not:c { OT1/lmr/m/n/10 } - \tex_textfont:D 1 = \exp_not:c { OML/lmm/m/it/10 } - \tex_textfont:D 2 = \exp_not:c { OMS/lmsy/m/n/10 } - \tex_textfont:D 3 = \exp_not:c { OMX/lmex/m/n/10 } - \tex_scriptfont:D 0 = \exp_not:c { OT1/lmr/m/n/7 } - \tex_scriptfont:D 1 = \exp_not:c { OML/lmm/m/it/7 } - \tex_scriptfont:D 2 = \exp_not:c { OMS/lmsy/m/n/7 } - \tex_scriptfont:D 3 = \exp_not:c { OMX/lmex/m/n/7 } - \tex_scriptscriptfont:D 0 = \exp_not:c { OT1/lmr/m/n/5 } - \tex_scriptscriptfont:D 1 = \exp_not:c { OML/lmm/m/it/5 } - \tex_scriptscriptfont:D 2 = \exp_not:c { OMS/lmsy/m/n/5 } - \tex_scriptscriptfont:D 3 = \exp_not:c { OMX/lmex/m/n/5 } - } - } - } -% \end{macrocode} -% \end{macro} -% -% Produce PDF output if possible (easier testing) and set some kind of -% horizontal width: the one here is the \LaTeXe{} default. A parfill is -% also useful so we get some kind of sensible paragraphs. -% \begin{macrocode} -\dim_set:Nn \tex_hsize:D { 345pt } -\skip_set:Nn \tex_parfillskip:D { 0pt plus 1fil } -\cs_if_exist:NT \tex_pdfoutput:D - { \int_set:Nn \tex_pdfoutput:D { 1 } } -% \end{macrocode} -% -% \begin{macro}{\stop} -% A way out of the run without needing to switch to the code environment. -% \begin{macrocode} -\cs_set_eq:NN \stop \tex_end:D -% \end{macrocode} -% \end{macro} -% -% \subsection{Final tasks} -% -% \begin{macro}{\par} -% \TeX{} has a nasty habit of inserting a command with the name \cs{par} -% so we had better make sure that \cs{par} has a definition. -% \begin{macrocode} -\cs_set_eq:NN \par \tex_par:D -% \end{macrocode} -% \end{macro} -% -% The very last job is to dump the format, taking care to first leave -% the code environment and set the appropriate flag. -% \begin{macrocode} -\use:n - { - \bool_set_false:N \l__kernel_expl_bool - \char_set_catcode_space:n { 9 } % tab - \char_set_catcode_space:n { 32 } % space - \char_set_catcode_active:n { 34 } % double quote - \char_set_catcode_active:n { 36 } % dollar - \char_set_catcode_active:n { 38 } % ampersand - \char_set_catcode_other:n { 58 } % colon - \char_set_catcode_active:n { 94 } % circumflex - \char_set_catcode_active:n { 95 } % underscore - \char_set_catcode_other:n { 124 } % pipe - \char_set_catcode_active:n { 126 } % tilde - \tex_endlinechar:D = 13 \scan_stop: - \tex_newlinechar:D = 10 \scan_stop: - \tex_dump:D - } -% \end{macrocode} -% -% \begin{macrocode} -%</initex> -% \end{macrocode} -% -% \end{implementation} -% -%\PrintIndex diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index 0d68f05eeec..9bc6f9de6f8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -159,7 +159,7 @@ % \section{\pkg{l3flag} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -300,7 +300,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3format.ins b/Master/texmf-dist/source/latex/l3kernel/l3format.ins deleted file mode 100644 index 0671ed9ee67..00000000000 --- a/Master/texmf-dist/source/latex/l3kernel/l3format.ins +++ /dev/null @@ -1,164 +0,0 @@ -\iffalse meta-comment - -File l3format.ins - -Copyright (C) 2011,2012,2014-2020 The LaTeX3 Project - -It may be distributed and/or modified under the conditions of the -LaTeX Project Public License (LPPL), either version 1.3c of this -license or (at your option) any later version. The latest version -of this license is in the file - - https://www.latex-project.org/lppl.txt - -This file is part of the "l3kernel bundle" (The Work in LPPL) -and all files in that bundle must be distributed together. - ------------------------------------------------------------------------ - -The development version of the bundle can be found at - - https://github.com/latex3/latex3 - -for those people who are interested. - ------------------------------------------------------------------------ - -Any modification of this file should ensure that the copyright and -license information is placed in the derived files. - -\fi - -\let\jobname\relax -\input l3docstrip.dtx -\askforoverwritefalse - -\preamble - -Copyright (C) 1990-2020 The LaTeX3 Project - -It may be distributed and/or modified under the conditions of -the LaTeX Project Public License (LPPL), either version 1.3c of -this license or (at your option) any later version. The latest -version of this license is in the file: - - https://www.latex-project.org/lppl.txt - -This file is part of the "l3kernel bundle" (The Work in LPPL) -and all files in that bundle must be distributed together. - -\endpreamble -% stop docstrip adding \endinput -\postamble -\endpostamble - -\keepsilent - -\generate - { - \file{l3format.ltx} - { - \from{l3bootstrap.dtx} {initex} - \from{l3names.dtx} {initex} - \from{l3basics.dtx} {initex} - \from{l3expan.dtx} {initex} - \from{l3quark.dtx} {initex} - \from{l3tl.dtx} {initex} - \from{l3str.dtx} {initex} - \from{l3seq.dtx} {initex} - % ======== FORMAT ONLY ========= - \from{l3alloc.dtx} {initex} - % ============================== - \from{l3int.dtx} {initex} - \from{l3flag.dtx} {initex} - \from{l3prg.dtx} {initex} - \from{l3sys.dtx} {initex} - \from{l3clist.dtx} {initex} - \from{l3token.dtx} {initex} - \from{l3prop.dtx} {initex} - \from{l3msg.dtx} {initex} - \from{l3file.dtx} {initex} - \from{l3skip.dtx} {initex} - \from{l3keys.dtx} {initex} - \from{l3intarray.dtx} {initex} - \from{l3fp.dtx} {initex} - \from{l3fp-aux.dtx} {initex} - \from{l3fp-traps.dtx} {initex} - \from{l3fp-round.dtx} {initex} - \from{l3fp-parse.dtx} {initex} - \from{l3fp-assign.dtx} {initex} - \from{l3fp-logic.dtx} {initex} - \from{l3fp-basics.dtx} {initex} - \from{l3fp-extended.dtx}{initex} - \from{l3fp-expo.dtx} {initex} - \from{l3fp-trig.dtx} {initex} - \from{l3fp-convert.dtx} {initex} - \from{l3fp-random.dtx} {initex} - \from{l3fparray.dtx} {initex} - \from{l3cctab.dtx} {initex} - \from{l3sort.dtx} {initex} - \from{l3str-convert.dtx}{initex} - \from{l3tl-analysis.dtx}{initex} - \from{l3regex.dtx} {initex} - \from{l3box.dtx} {initex} - \from{l3color-base.dtx} {initex} - \from{l3coffins.dtx} {initex} - \from{l3luatex.dtx} {initex,tex} - \from{l3unicode.dtx} {initex} - \from{l3text.dtx} {initex} - \from{l3text-case.dtx} {initex} - \from{l3text-purify.dtx}{initex} - \from{l3candidates.dtx} {initex} - % ======== FORMAT ONLY ========= - \from{l3final.dtx} {initex} - % ============================== - } - } - -% ISO-8859 encodings. -\generate{% - \file{l3str-enc-iso88591.def} {\from{l3str-convert.dtx}{iso88591}}% - \file{l3str-enc-iso88592.def} {\from{l3str-convert.dtx}{iso88592}}% - \file{l3str-enc-iso88593.def} {\from{l3str-convert.dtx}{iso88593}}% - \file{l3str-enc-iso88594.def} {\from{l3str-convert.dtx}{iso88594}}% - \file{l3str-enc-iso88595.def} {\from{l3str-convert.dtx}{iso88595}}% - \file{l3str-enc-iso88596.def} {\from{l3str-convert.dtx}{iso88596}}% - \file{l3str-enc-iso88597.def} {\from{l3str-convert.dtx}{iso88597}}% - \file{l3str-enc-iso88598.def} {\from{l3str-convert.dtx}{iso88598}}% - \file{l3str-enc-iso88599.def} {\from{l3str-convert.dtx}{iso88599}}% - \file{l3str-enc-iso885910.def} {\from{l3str-convert.dtx}{iso885910}}% - \file{l3str-enc-iso885911.def} {\from{l3str-convert.dtx}{iso885911}}% - \file{l3str-enc-iso885913.def} {\from{l3str-convert.dtx}{iso885913}}% - \file{l3str-enc-iso885914.def} {\from{l3str-convert.dtx}{iso885914}}% - \file{l3str-enc-iso885915.def} {\from{l3str-convert.dtx}{iso885915}}% - \file{l3str-enc-iso885916.def} {\from{l3str-convert.dtx}{iso885916}}% -} - -\generate{\file{l3debug.def}{\from{l3debug.dtx}{initex}}} -\generate{\file{l3deprecation.def}{\from{l3deprecation.dtx}{initex,patches}}} - -\generate{\file{l3docstrip.tex}{\from{l3docstrip.dtx}{program}}} - -% Lua code (currently identical to the package-mode version) - -\def\MetaPrefix{--} -\preamble - -Copyright (C) 1990-2020 The LaTeX3 Project - -It may be distributed and/or modified under the conditions of -the LaTeX Project Public License (LPPL), either version 1.3c of -this license or (at your option) any later version. The latest -version of this license is in the file: - - https://www.latex-project.org/lppl.txt - -This file is part of the "l3kernel bundle" (The Work in LPPL) -and all files in that bundle must be distributed together. - -\endpreamble -\nopostamble -\generate{\file{expl3.lua} {\from{l3luatex.dtx}{lua,package}}} -\generate{\file{l3format.lua}{\from{l3luatex.dtx}{lua,initex}}} - -\endbatchfile diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index 73e28d4b3f1..8f06b76ea40 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % \maketitle % % \begin{documentation} @@ -52,7 +52,7 @@ % \section{\pkg{l3fp-assign} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -219,7 +219,7 @@ % \end{variable} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx index 09a876ee8dd..38fd8b13668 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,7 @@ % \section{\pkg{l3fp-aux} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1296,7 +1296,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index 68cb42369d2..ae77fc4be2e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3fp-basics} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -2168,7 +2168,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index a07e4fb9824..e16a947e6c7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,7 @@ % \section{\texttt{l3fp-convert} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -620,7 +620,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index aafc77e1a61..fc8789101d9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3fp-expo} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1369,7 +1369,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index 498da7895c9..f7566ff062e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3fp-extended} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1263,7 +1263,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index 13457604be0..d36cbb30035 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3fp-logic} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -727,7 +727,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index c3125a8478c..e56abc6bb17 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3fp-parse} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -800,7 +800,6 @@ {#2} \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w #1 } -%<*package> \cs_set_protected:Npn \@@_tmp:w #1 { \cs_if_exist:NT #1 @@ -824,7 +823,6 @@ } } \exp_args:Nc \@@_tmp:w { @unexpandable@protect } -%</package> % \end{macrocode} % \end{macro} % @@ -2889,17 +2887,15 @@ { Arguments~in~#1#2~are~invalid. } \__kernel_msg_new:nnn { kernel } { fp-infty-pi } { Math~command~#1 is~not~an~fp } -%<*package> \cs_if_exist:cT { @unexpandable@protect } { \__kernel_msg_new:nnn { kernel } { fp-robust-cmd } { Robust~command~#1 invalid~in~fp~expression! } } -%</package> % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index 062f0d59b48..6dd9a63d701 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3fp-random} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -654,7 +654,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index ef2092959be..487f48fa7cd 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,7 @@ % \section{\pkg{l3fp-round} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -582,7 +582,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index 40332fc340a..8f7ef9afdc0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % \maketitle % % \begin{documentation} @@ -52,7 +52,7 @@ % \section{\pkg{l3fp-traps} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -390,7 +390,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx index a9c96002443..c5c85d20a3d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3fp-trig} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1688,7 +1688,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index b76089b5c60..f1743be720b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index be62eac38b9..1a2775935b8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -115,7 +115,7 @@ % \section{\pkg{l3fparray} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -388,7 +388,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 7384a5f257f..ac08971cd0d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -1010,7 +1010,7 @@ % \section{\pkg{l3int} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1272,13 +1272,11 @@ % this is therefore accessed by name. (The same applies to \cs{newbox}, % \cs{newdimen} and so on.) % \begin{macrocode} -%<*package> \cs_new_protected:Npn \int_new:N #1 { \__kernel_chk_if_free_cs:N #1 \cs:w newcount \cs_end: #1 } -%</package> \cs_generate_variant:Nn \int_new:N { c } % \end{macrocode} % \end{macro} @@ -2581,7 +2579,7 @@ % \end{variable} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index 7a96ed28739..208ec1cfe53 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -166,7 +166,7 @@ % \section{\pkg{l3intarray} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -579,7 +579,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index c73b661cfc5..793ea280316 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -265,6 +265,27 @@ % % \begin{function} % { +% \__kernel_msg_critical:nnnnnn , +% \__kernel_msg_critical:nnnnn , +% \__kernel_msg_critical:nnnn , +% \__kernel_msg_critical:nnn , +% \__kernel_msg_critical:nn , +% \__kernel_msg_critical:nnxxxx , +% \__kernel_msg_critical:nnxxx , +% \__kernel_msg_critical:nnxx , +% \__kernel_msg_critical:nnx +% } +% \begin{syntax} +% \cs{__kernel_msg_critical:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} +% \end{syntax} +% Issues kernel \meta{module} error \meta{message}, passing \meta{arg one} +% to \meta{arg four} to the text-creating functions. After issuing a +% critical error, \TeX{} stops reading the current input file. +% Cannot be redirected. +% \end{function} +% +% \begin{function} +% { % \__kernel_msg_error:nnnnnn , % \__kernel_msg_error:nnnnn , % \__kernel_msg_error:nnnn , diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index 77fa7d1aff1..9c5216ceb6a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -934,7 +934,7 @@ % \section{\pkg{l3keys} Implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \subsection{Low-level interface} @@ -1493,44 +1493,29 @@ % % \subsubsection{Internal auxiliaries} % -% \begin{variable}{\s_@@_stop} +% \begin{variable}{\s_@@_nil,\s_@@_mark,\s_@@_stop} % Internal scan marks. % \begin{macrocode} +\scan_new:N \s_@@_nil +\scan_new:N \s_@@_mark \scan_new:N \s_@@_stop % \end{macrocode} % \end{variable} % -% \begin{variable}{\q_@@_nil,\q_@@_no_value} +% \begin{variable}{\q_@@_no_value} % Internal quarks. % \begin{macrocode} -\quark_new:N \q_@@_nil \quark_new:N \q_@@_no_value % \end{macrocode} % \end{variable} % -% \begin{macro}[pTF]{\@@_quark_if_nil:n} +% \begin{macro}[pTF]{\@@_quark_if_no_value:N} % Branching quark conditional. % \begin{macrocode} -\__kernel_quark_new_conditional:Nn \@@_quark_if_nil:n { TF } \__kernel_quark_new_conditional:Nn \@@_quark_if_no_value:N { TF } % \end{macrocode} % \end{macro} % -% \begin{variable}{\q_@@_recursion_tail,\q_@@_recursion_stop} -% Internal recursion quarks. -% \begin{macrocode} -\quark_new:N \q_@@_recursion_tail -\quark_new:N \q_@@_recursion_stop -% \end{macrocode} -% \end{variable} -% -% \begin{macro}[EXP]{\@@_if_recursion_tail_stop:n} -% Functions to query recursion quarks. -% \begin{macrocode} -\__kernel_quark_new_test:N \@@_if_recursion_tail_stop:n -% \end{macrocode} -% \end{macro} -% % \subsection{The key defining mechanism} % % \begin{macro}{\keys_define:nn} @@ -1580,7 +1565,7 @@ \str_if_empty:NF \l_@@_property_str { \__kernel_msg_error:nnxx { kernel } { key-property-unknown } - { \l_@@_property_str } { \l_keys_path_str } + \l_@@_property_str \l_keys_path_str } } } @@ -1590,53 +1575,59 @@ % \end{macro} % % \begin{macro}{\@@_property_find:n} -% \begin{macro}{\@@_property_find:w} +% \begin{macro} +% { +% \@@_property_find_auxi:w , +% \@@_property_find_auxii:w , +% \@@_property_find_auxiii:w , +% \@@_property_find_auxiv:w +% } % Searching for a property means finding the last |.| in the input, % and storing the text before and after it. Everything is turned into -% strings, so there is no problem using an \texttt{x}-type expansion. +% strings, so there is no problem using an \texttt{x}-type expansion. Since +% |\__keys_trim_spaces:n| will turn its argument into a string anyway, this +% function uses \cs{cs_set_nopar:Npx} instead of \cs{tl_set:Nx} to gain some +% speed. % \begin{macrocode} \cs_new_protected:Npn \@@_property_find:n #1 { - \str_set:Nx \l_@@_property_str { \@@_trim_spaces:n {#1} } - \exp_after:wN \@@_property_find:w \l_@@_property_str . . - \s_@@_stop {#1} + \cs_set_nopar:Npx \l__keys_property_str { \__keys_trim_spaces:n { #1 } } + \exp_after:wN \@@_property_find_auxi:w \l__keys_property_str + \s_@@_nil \@@_property_find_auxii:w + . \s_@@_nil \@@_property_find_err:w } -\cs_new_protected:Npn \@@_property_find:w #1 . #2 . #3 \s_@@_stop #4 +\cs_new_protected:Npn \@@_property_find_auxi:w #1 . #2 \s_@@_nil #3 { - \tl_if_blank:nTF {#3} - { - \str_clear:N \l_@@_property_str - \__kernel_msg_error:nnn { kernel } { key-no-property } {#4} - } - { - \str_if_eq:nnTF {#3} { . } - { - \str_set:Nx \l_keys_path_str - { - \str_if_empty:NF \l_@@_module_str - { \l_@@_module_str / } - \tl_trim_spaces:n {#1} - } - \str_set:Nn \l_@@_property_str { . #2 } - } - { - \str_set:Nx \l_keys_path_str { \l_@@_module_str / #1 . #2 } - \@@_property_search:w #3 \s_@@_stop - } - \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str - } + #3 #1 \s_@@_mark #2 \s_@@_nil #3 } -\cs_new_protected:Npn \@@_property_search:w #1 . #2 \s_@@_stop +\cs_new_protected:Npn \@@_property_find_auxii:w + #1 \s_@@_mark #2 \s_@@_nil \@@_property_find_auxii:w . \s_@@_nil + \@@_property_find_err:w { - \str_if_eq:nnTF {#2} { . } - { - \str_set:Nx \l_keys_path_str { \l_keys_path_str } - \str_set:Nn \l_@@_property_str { . #1 } - } - { - \str_set:Nx \l_keys_path_str { \l_keys_path_str . #1 } - \@@_property_search:w #2 \s_@@_stop - } + \cs_set_nopar:Npx \l_keys_path_str + { \str_if_empty:NF \l__keys_module_str { \l__keys_module_str / } #1 } + \@@_property_find_auxi:w #2 \s_@@_nil \@@_property_find_auxiii:w . \s_@@_nil + \@@_property_find_auxiv:w + } +\cs_new_protected:Npn \@@_property_find_auxiii:w #1 \s_@@_mark + { + \cs_set_nopar:Npx \l_keys_path_str { \l_keys_path_str . #1 } + \@@_property_find_auxi:w + } +\cs_new_protected:Npn \@@_property_find_auxiv:w + #1 \s_@@_nil \@@_property_find_auxiii:w + \s_@@_mark \s_@@_nil \@@_property_find_auxiv:w + { + \cs_set_nopar:Npx \l__keys_property_str { . #1 } + \cs_set_nopar:Npx \l_keys_path_str + { \exp_after:wN \__keys_trim_spaces:n \exp_after:wN { \l_keys_path_str } } + \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str + } +\cs_new_protected:Npn \@@_property_find_err:w + #1 \s_@@_nil #2 \@@_property_find_err:w + { + \str_clear:N \l__keys_property_str + \__kernel_msg_error:nnn { kernel } { key-no-property } {#1} } % \end{macrocode} % \end{macro} @@ -1658,9 +1649,8 @@ \l_@@_property_str \s_@@_stop { \use:c { \c_@@_props_root_str \l_@@_property_str } } { - \__kernel_msg_error:nnxx { kernel } - { key-property-requires-value } { \l_@@_property_str } - { \l_keys_path_str } + \__kernel_msg_error:nnxx { kernel } { key-property-requires-value } + \l_@@_property_str \l_keys_path_str } } { \use:c { \c_@@_props_root_str \l_@@_property_str } {#1} } @@ -1690,7 +1680,7 @@ \@@_cmd_set:nn { \l_keys_path_str / unknown } { \__kernel_msg_error:nnx { kernel } { boolean-values-only } - { \l_keys_key_str } + \l_keys_key_str } \@@_default_set:n { true } } @@ -1712,7 +1702,7 @@ \@@_cmd_set:nn { \l_keys_path_str / unknown } { \__kernel_msg_error:nnx { kernel } { boolean-values-only } - { \l_keys_key_str } + \l_keys_key_str } \@@_default_set:n { true } } @@ -1741,7 +1731,7 @@ { choice } { \__kernel_msg_error:nnxx { kernel } { nested-choice-key } - { \l_keys_path_tl } { \@@_parent:o \l_keys_path_str } + \l_keys_path_tl { \@@_parent:o \l_keys_path_str } } { \@@_choice_make_aux:N #1 } } @@ -1751,11 +1741,11 @@ { \cs_set_nopar:cpn { \c_@@_type_root_str \l_keys_path_str } { choice } - \@@_cmd_set:nn { \l_keys_path_str } { #1 {##1} } + \@@_cmd_set:nn \l_keys_path_str { #1 {##1} } \@@_cmd_set:nn { \l_keys_path_str / unknown } { \__kernel_msg_error:nnxx { kernel } { key-choice-unknown } - { \l_keys_path_str } {##1} + \l_keys_path_str {##1} } } % \end{macrocode} @@ -1886,7 +1876,8 @@ { \@@_execute_inherit: } { \str_clear:N \l_@@_inherit_str - \cs_if_exist_use:cT { \c_@@_code_root_str \l_keys_path_str } { {#1} } + \cs_if_exist:cT { \c_@@_code_root_str \l_keys_path_str } + { \@@_execute:nn \l_keys_path_str {#1} } } } % \end{macrocode} @@ -1900,8 +1891,7 @@ { \@@_cmd_set:Vo \l_keys_path_str { - \exp_after:wN \keys_set:nn - \exp_after:wN { \l_@@_module_str } {#1} + \exp_after:wN \keys_set:nn \exp_after:wN { \l_@@_module_str } {#1} } } \cs_new_protected:Npn \@@_meta_make:nn #1#2 @@ -1916,11 +1906,9 @@ \cs_new_protected:Npn \@@_prop_put:Nn #1#2 { \prop_if_exist:NF #1 { \prop_new:N #1 } - \exp_after:wN \@@_find_key_module:NNw - \exp_after:wN \l_@@_tmpa_tl - \exp_after:wN \l_@@_tmpb_tl - \l_keys_path_str / \s_@@_stop - \@@_cmd_set:nx { \l_keys_path_str } + \exp_after:wN \@@_find_key_module:wNN \l_keys_path_str \s_@@_stop + \l_@@_tmpa_tl \l_@@_tmpb_tl + \@@_cmd_set:nx \l_keys_path_str { \exp_not:c { prop_ #2 put:Nnn } \exp_not:N #1 @@ -1951,7 +1939,6 @@ % % \begin{macro}{\@@_value_requirement:nn} % \begin{macro}{\@@_validate_forbidden:, \@@_validate_required:} -% \begin{macro}{\@@_validate_cleanup:w} % Validating key input is done using a second function which runs before % the main key code. Setting that up means setting it equal to a generic % stub which does the check. This approach makes the lookup very fast at @@ -1991,8 +1978,8 @@ \bool_if:NF \l_@@_no_value_bool { \__kernel_msg_error:nnxx { kernel } { value-forbidden } - { \l_keys_path_str } { \l_keys_value_tl } - \@@_validate_cleanup:w + \l_keys_path_str \l_keys_value_tl + \use_none:nnn } } \cs_new_protected:Npn \@@_validate_required: @@ -2000,15 +1987,13 @@ \bool_if:NT \l_@@_no_value_bool { \__kernel_msg_error:nnx { kernel } { value-required } - { \l_keys_path_str } - \@@_validate_cleanup:w + \l_keys_path_str + \use_none:nnn } } -\cs_new_protected:Npn \@@_validate_cleanup:w #1 \cs_end: #2#3 { } % \end{macrocode} % \end{macro} % \end{macro} -% \end{macro} % % \begin{macro}{\@@_variable_set:NnnN, \@@_variable_set:cnnN} % \begin{macro}{\@@_variable_set_required:NnnN, \@@_variable_set_required:cnnN} @@ -2018,7 +2003,7 @@ \cs_new_protected:Npn \@@_variable_set:NnnN #1#2#3#4 { \use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 } - \@@_cmd_set:nx { \l_keys_path_str } + \@@_cmd_set:nx \l_keys_path_str { \exp_not:c { #2 _ #3 set:N #4 } \exp_not:N #1 @@ -2110,7 +2095,7 @@ % \texttt{set} function. % \begin{macrocode} \cs_new_protected:cpn { \c_@@_props_root_str .code:n } #1 - { \@@_cmd_set:nn { \l_keys_path_str } {#1} } + { \@@_cmd_set:nn \l_keys_path_str {#1} } % \end{macrocode} % \end{macro} % @@ -2447,7 +2432,7 @@ \cs_new_protected:Npn \keys_set_known:nnN #1#2#3 { \exp_args:No \@@_set_known:nnnnN - \l_@@_unused_clist { \q_@@_no_value } {#1} {#2} #3 + \l_@@_unused_clist \q_@@_no_value {#1} {#2} #3 } \cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , no } \cs_new_protected:Npn \keys_set_known:nnnN #1#2#3#4 @@ -2460,11 +2445,11 @@ { \clist_clear:N \l_@@_unused_clist \@@_set_known:nnn {#2} {#3} {#4} - \tl_set:Nx #5 { \exp_not:o { \l_@@_unused_clist } } + \tl_set:Nx #5 { \exp_not:o \l_@@_unused_clist } \tl_set:Nn \l_@@_unused_clist {#1} } \cs_new_protected:Npn \keys_set_known:nn #1#2 - { \@@_set_known:nnn { \q_@@_no_value } {#1} {#2} } + { \@@_set_known:nnn \q_@@_no_value {#1} {#2} } \cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no } \cs_new_protected:Npn \@@_set_known:nnn #1#2#3 { @@ -2525,7 +2510,7 @@ { \exp_args:No \@@_set_filter:nnnnnN \l_@@_unused_clist - { \q_@@_no_value } {#1} {#2} {#3} #4 + \q_@@_no_value {#1} {#2} {#3} #4 } \cs_generate_variant:Nn \keys_set_filter:nnnN { nnV , nnv , nno } \cs_new_protected:Npn \keys_set_filter:nnnnN #1#2#3#4#5 @@ -2538,11 +2523,11 @@ { \clist_clear:N \l_@@_unused_clist \@@_set_filter:nnnn {#2} {#3} {#4} {#5} - \tl_set:Nx #6 { \exp_not:o { \l_@@_unused_clist } } + \tl_set:Nx #6 { \exp_not:o \l_@@_unused_clist } \tl_set:Nn \l_@@_unused_clist {#1} } \cs_new_protected:Npn \keys_set_filter:nnn #1#2#3 - {\@@_set_filter:nnnn { \q_@@_no_value } {#1} {#2} {#3} } + {\@@_set_filter:nnnn \q_@@_no_value {#1} {#2} {#3} } \cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno } \cs_new_protected:Npn \@@_set_filter:nnnn #1#2#3#4 { @@ -2604,7 +2589,14 @@ % % \begin{macro}{\@@_set_keyval:n, \@@_set_keyval:nn} % \begin{macro}{\@@_set_keyval:nnn, \@@_set_keyval:onn} -% \begin{macro}{\@@_find_key_module:NNw} +% \begin{macro}{\@@_find_key_module:wNN} +% \begin{macro} +% { +% \@@_find_key_module_auxi:Nw , +% \@@_find_key_module_auxii:Nw , +% \@@_find_key_module_auxiii:Nn , +% \@@_find_key_module_auxiv:Nw +% } % \begin{macro}{\@@_set_selective:} % A shared system once again. First, set the current path and add a % default if needed. There are then checks to see if the a value is @@ -2638,30 +2630,46 @@ } \str_clear:N \l_@@_module_str \str_clear:N \l_@@_inherit_str - \exp_after:wN \@@_find_key_module:NNw - \exp_after:wN \l_@@_module_str - \exp_after:wN \l_keys_key_str - \l_keys_path_str / \s_@@_stop + \exp_after:wN \@@_find_key_module:wNN \l_keys_path_str \s_@@_stop + \l_@@_module_str \l_keys_key_str \tl_set_eq:NN \l_keys_key_tl \l_keys_key_str \@@_value_or_default:n {#3} \bool_if:NTF \l_@@_selective_bool - { \@@_set_selective: } - { \@@_execute: } + \@@_set_selective: + \@@_execute: \str_set:Nn \l_@@_module_str {#1} } \cs_generate_variant:Nn \@@_set_keyval:nnn { o } -\cs_new_protected:Npn \@@_find_key_module:NNw #1#2#3 / #4 \s_@@_stop +% \end{macrocode} +% This function uses \cs{cs_set_nopar:Npx} internally for performance reasons, +% the argument |#1| is already a string in every usage, so turning it into a +% string again seems unnecessary. +% \begin{macrocode} +\cs_new_protected:Npn \@@_find_key_module:wNN #1 \s_@@_stop #2 #3 { - \tl_if_blank:nTF {#4} - { \str_set:Nn #2 {#3} } - { - \str_put_right:Nx #1 - { - \str_if_empty:NF #1 { / } - #3 - } - \@@_find_key_module:NNw #1#2 #4 \s_@@_stop - } + \@@_find_key_module_auxi:Nw #2 #1 \s_@@_nil \@@_find_key_module_auxii:Nw + / \s_@@_nil \@@_find_key_module_auxiv:Nw #3 + } +\cs_new_protected:Npn \@@_find_key_module_auxi:Nw #1 #2 / #3 \s_@@_nil #4 + { + #4 #1 #2 \s_@@_mark #3 \s_@@_nil #4 + } +\cs_new_protected:Npn \@@_find_key_module_auxii:Nw + #1 #2 \s_@@_mark #3 \s_@@_nil \@@_find_key_module_auxii:Nw + { + \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 } + \@@_find_key_module_auxi:Nw #1 #3 \s_@@_nil \@@_find_key_module_auxiii:Nw + } +\cs_new_protected:Npn \@@_find_key_module_auxiii:Nw #1 #2 \s_@@_mark + { + \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 } + \@@_find_key_module_auxi:Nw #1 + } +\cs_new_protected:Npn \@@_find_key_module_auxiv:Nw + #1 #2 \s_@@_nil #3 \s_@@_mark + \s_@@_nil \@@_find_key_module_auxiv:Nw #4 + { + \cs_set_nopar:Npn #4 { #2 } } % \end{macrocode} % If selective setting is active, there are a number of possible sub-cases @@ -2679,8 +2687,8 @@ } { \bool_if:NTF \l_@@_filtered_bool - { \@@_execute: } - { \@@_store_unused: } + \@@_execute: + \@@_store_unused: } } % \end{macrocode} @@ -2699,20 +2707,20 @@ \str_if_eq:nnT {##1} {####1} { \bool_set_true:N \l_@@_tmp_bool - \clist_map_break:n { \seq_map_break: } + \clist_map_break:n \seq_map_break: } } } \bool_if:NTF \l_@@_tmp_bool { \bool_if:NTF \l_@@_filtered_bool - { \@@_store_unused: } - { \@@_execute: } + \@@_store_unused: + \@@_execute: } { \bool_if:NTF \l_@@_filtered_bool - { \@@_execute: } - { \@@_store_unused: } + \@@_execute: + \@@_store_unused: } } % \end{macrocode} @@ -2720,6 +2728,7 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\@@_value_or_default:n} % \begin{macro}{\@@_default_inherit:} @@ -2765,7 +2774,7 @@ % \end{macro} % % \begin{macro}{\@@_execute:, \@@_execute_inherit:, \@@_execute_unknown:} -% \begin{macro}[EXP]{\@@_execute:nn} +% \begin{macro}[EXP]{\@@_execute:nn, \@@_execute:no} % \begin{macro}{\@@_store_unused:,\@@_store_unused_aux:} % Actually executing a key is done in two parts. First, look for the % key itself, then look for the \texttt{unknown} key with the same @@ -2778,8 +2787,7 @@ \cs_if_exist:cTF { \c_@@_code_root_str \l_keys_path_str } { \cs_if_exist_use:c { \c_@@_validate_root_str \l_keys_path_str } - \cs:w \c_@@_code_root_str \l_keys_path_str \exp_after:wN \cs_end: - \exp_after:wN { \l_keys_value_tl } + \@@_execute:no \l_keys_path_str \l_keys_value_tl } { \cs_if_exist:cTF @@ -2803,10 +2811,8 @@ { \str_set:Nn \l_@@_inherit_str {##1} \cs_if_exist_use:c { \c_@@_validate_root_str ##1 / \l_keys_key_str } - \cs:w \c_@@_code_root_str ##1 / \l_keys_key_str - \exp_after:wN \cs_end: \exp_after:wN - { \l_keys_value_tl } - \clist_map_break:n { \use_none:n } + \@@_execute:no { ##1 / \l_keys_key_str } \l_keys_value_tl + \clist_map_break:n \use_none:n } } \@@_execute_unknown: @@ -2818,24 +2824,35 @@ { \cs_if_exist:cTF { \c_@@_code_root_str \l_@@_module_str / unknown } - { - \cs:w \c_@@_code_root_str \l_@@_module_str / unknown - \exp_after:wN \cs_end: \exp_after:wN { \l_keys_value_tl } - } + { \@@_execute:no { \l_@@_module_str / unknown } \l_keys_value_tl } { \__kernel_msg_error:nnxx { kernel } { key-unknown } - { \l_keys_path_str } { \l_@@_module_str } + \l_keys_path_str \l_@@_module_str } } } +% \end{macrocode} +% A key's code is in the control sequence with csname +% \cs{c_@@_code_root_str} |#1|. We expand it once to get the +% replacement text (with argument |#2|) and call \cs{use:n} +% with this replacement as its argument. This ensures that any +% undefined control sequence error in the key's code will lead to an +% error message of the form |<argument>|\ldots{}\meta{control +% sequence} in which one can read the (undefined) \meta{control +% sequence} in full, rather than an error message that starts with the +% potentially very long key name, which would make the (undefined) +% \meta{control sequence} be truncated or sometimes completely hidden. +% See \url{https://github.com/latex3/latex2e/issues/351}. +% \begin{macrocode} \cs_new:Npn \@@_execute:nn #1#2 + { \@@_execute:no {#1} { \prg_do_nothing: #2 } } +\cs_new:Npn \@@_execute:no #1#2 { - \cs_if_exist:cTF { \c_@@_code_root_str #1 } + \exp_args:NNo \exp_args:No \use:n { \cs:w \c_@@_code_root_str #1 \exp_after:wN \cs_end: - \exp_after:wN { \l_keys_value_tl } + \exp_after:wN {#2} } - {#2} } % \end{macrocode} % When there is no relative path, things here are easy: just save the key @@ -2850,7 +2867,7 @@ { \clist_put_right:Nx \l_@@_unused_clist { - \exp_not:o \l_keys_key_str + \l_keys_key_str \bool_if:NF \l_@@_no_value_bool { = { \exp_not:o \l_keys_value_tl } } } @@ -2860,7 +2877,7 @@ { \clist_put_right:Nx \l_@@_unused_clist { - \exp_not:o \l_keys_path_str + \l_keys_path_str \bool_if:NF \l_@@_no_value_bool { = { \exp_not:o \l_keys_value_tl } } } @@ -2917,7 +2934,7 @@ \cs_new:Npn \@@_choice_find:n #1 { \str_if_empty:NTF \l_@@_inherit_str - { \@@_choice_find:nn { \l_keys_path_str } {#1} } + { \@@_choice_find:nn \l_keys_path_str {#1} } { \@@_choice_find:nn { \l_@@_inherit_str / \l_keys_key_str } {#1} @@ -2926,8 +2943,8 @@ \cs_new:Npn \@@_choice_find:nn #1#2 { \cs_if_exist:cTF { \c_@@_code_root_str #1 / \@@_trim_spaces:n {#2} } - { \use:c { \c_@@_code_root_str #1 / \@@_trim_spaces:n {#2} } {#2} } - { \use:c { \c_@@_code_root_str #1 / unknown } {#2} } + { \@@_execute:nn { #1 / \@@_trim_spaces:n {#2} } {#2} } + { \@@_execute:nn { #1 / unknown } {#2} } } \cs_new:Npn \@@_multichoice_find:n #1 { \clist_map_function:nN {#1} \@@_choice_find:n } @@ -2938,23 +2955,35 @@ % % \subsection{Utilities} % -% \begin{macro}[EXP]{\@@_parent:n, \@@_parent:o} -% \begin{macro}[EXP]{\@@_parent:w} +% \begin{macro}[EXP]{\@@_parent:o} +% \begin{macro}[EXP] +% { +% \@@_parent_auxi:w , +% \@@_parent_auxii:w , +% \@@_parent_auxiii:n , +% \@@_parent_auxiv:w +% } % Used to strip off the ending part of the key path after the last~|/|. % \begin{macrocode} -\cs_new:Npn \@@_parent:n #1 - { \@@_parent:w #1 / / \s_@@_stop { } } -\cs_generate_variant:Nn \@@_parent:n { o } -\cs_new:Npn \@@_parent:w #1 / #2 / #3 \s_@@_stop #4 +\cs_new:Npn \@@_parent:o #1 + { + \exp_after:wN \@@_parent_auxi:w #1 \q_nil \@@_parent_auxii:w + / \q_nil \@@_parent_auxiv:w + } +\cs_new:Npn \@@_parent_auxi:w #1 / #2 \q_nil #3 + { + #3 { #1 } #2 \q_nil #3 + } +\cs_new:Npn \@@_parent_auxii:w #1 #2 \q_nil \@@_parent_auxii:w + { + #1 \@@_parent_auxi:w #2 \q_nil \@@_parent_auxiii:n + } +\cs_new:Npn \@@_parent_auxiii:n #1 + { + / #1 \@@_parent_auxi:w + } +\cs_new:Npn \@@_parent_auxiv:w #1 \q_nil \@@_parent_auxiv:w { - \tl_if_blank:nTF {#2} - { - \tl_if_blank:nF {#4} - { \use_none:n #4 } - } - { - \@@_parent:w #2 / #3 \s_@@_stop { #4 / #1 } - } } % \end{macrocode} % \end{macro} @@ -2968,29 +2997,43 @@ % \@@_trim_spaces_auxiii:w % } % Space stripping has to allow for the fact that the key here might have -% several parts, and spaces need to be stripped from each part. +% several parts, and spaces need to be stripped from each part. Since the key +% name is turned into a string groups can't be stripped accidentally and the +% precautions of \cs{tl_trim_spaces:n} aren't necessary, in this case it is +% much faster to just directly strip spaces around |/|. % \begin{macrocode} -\cs_new:Npn \@@_trim_spaces:n #1 - { - \exp_after:wN \@@_trim_spaces_auxi:w \tl_to_str:n {#1} - / \q_@@_nil \s_@@_stop - } -\cs_new:Npn \@@_trim_spaces_auxi:w #1 / #2 \s_@@_stop +\group_begin: + \cs_set:Npn \@@_tmp:n #1 + { + \cs_new:Npn \@@_trim_spaces:n ##1 + { + \exp_after:wN \@@_trim_spaces_auxi:w \tl_to_str:n { / ##1 } / + \s_@@_nil \@@_trim_spaces_auxi:w + \s_@@_mark \@@_trim_spaces_auxii:w + #1 / #1 + \s_@@_nil \@@_trim_spaces_auxii:w + \s_@@_mark \@@_trim_spaces_auxiii:w + } + } + \@@_tmp:n { ~ } +\group_end: +\cs_new:Npn \@@_trim_spaces_auxi:w #1 ~ / #2 \s_@@_nil #3 { - \@@_quark_if_nil:nTF {#2} - { \tl_trim_spaces:n {#1} } - { \@@_trim_spaces_auxii:w #1 / #2 } + #3 #1 / #2 \s_@@_nil #3 } -\cs_new:Npn \@@_trim_spaces_auxii:w #1 / #2 / \q_@@_nil +\cs_new:Npn \@@_trim_spaces_auxii:w #1 / ~ #2 \s_@@_mark #3 { - \tl_trim_spaces:n {#1} - \@@_trim_spaces_auxiii:w #2 / \q_@@_recursion_tail / \q_@@_recursion_stop + #3 #1 / #2 \s_@@_mark #3 } -\cs_set:Npn \@@_trim_spaces_auxiii:w #1 / +\cs_new:Npn \@@_trim_spaces_auxiii:w + / #1 / + \s_@@_nil \@@_trim_spaces_auxi:w + \s_@@_mark \@@_trim_spaces_auxii:w + / + \s_@@_nil \@@_trim_spaces_auxii:w + \s_@@_mark \@@_trim_spaces_auxiii:w { - \@@_if_recursion_tail_stop:n {#1} - / \tl_trim_spaces:n { #1 } - \@@_trim_spaces_auxiii:w + #1 } % \end{macrocode} % \end{macro} @@ -3102,7 +3145,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % %\end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx index c0fbef37454..33d3749515b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index 298ecee05e8..01686ced0da 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -216,7 +216,7 @@ % \section{\pkg{l3luatex} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \subsection{Breaking out to \Lua{}} @@ -556,43 +556,12 @@ l3kernel.shellescape = shellescape % \end{macrocode} % \end{macro} % -% \subsection{Generic \Lua{} and font support} -% -% \begin{macrocode} -%<*initex> -% \end{macrocode} -% -% \begin{macrocode} -%<@@=alloc> -% \end{macrocode} -% -% A small amount of generic code is used by almost all \LuaTeX{} material so -% needs to be loaded by the format. -% \begin{macrocode} -attribute_count_name = "g_@@_attribute_int" -bytecode_count_name = "g_@@_bytecode_int" -chunkname_count_name = "g_@@_chunkname_int" -whatsit_count_name = "g_@@_whatsit_int" -require("ltluatex") -% \end{macrocode} -% -% With the above available the font loader code used by plain \TeX{} and -% \LaTeXe{} when used with \LuaTeX{} can be loaded here. This is thus being -% treated more-or-less as part of the engine itself. -% \begin{macrocode} -require("luaotfload-main") -local _void = luaotfload.main() -% \end{macrocode} -% \begin{macrocode} -%</initex> -% \end{macrocode} -% % \begin{macrocode} %</lua> % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % %\end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 5cbc7e9b09c..f95f4ddabd4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -564,7 +564,7 @@ % \section{\pkg{l3msg} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -901,12 +901,8 @@ % \subsection{Displaying messages} % % \LaTeX{} is handling error messages and so the \TeX{} ones are disabled. -% This is already done by the \LaTeXe{} kernel, so to avoid messing up any -% deliberate change by a user this is only set in format mode. % \begin{macrocode} -%<*initex> \int_gset:Nn \tex_errorcontextlines:D { -1 } -%</initex> % \end{macrocode} % % \begin{macro}[EXP] @@ -974,12 +970,7 @@ { \prop_if_in:NnTF \g_msg_module_type_prop {#1} { \prop_item:Nn \g_msg_module_type_prop {#1} } -%<*initex> - { Module } -%</initex> -%<*package> { Package } -%</package> } % \end{macrocode} % \end{macro} @@ -1404,7 +1395,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_use:nnnnnnn #1#2#3#4#5#6#7 { -%<package> \cs_if_exist_use:N \conditionally@traceoff + \cs_if_exist_use:N \conditionally@traceoff \msg_if_exist:nnTF {#2} {#3} { \@@_class_chk_exist:nT {#1} @@ -1422,7 +1413,7 @@ } } { \__kernel_msg_error:nnxx { kernel } { message-unknown } {#2} {#3} } -%<package> \cs_if_exist_use:N \conditionally@traceon + \cs_if_exist_use:N \conditionally@traceon } \cs_new_protected:Npn \@@_use_code: { } % \end{macrocode} @@ -1665,23 +1656,32 @@ % % \begin{macro} % { -% \__kernel_msg_fatal:nnnnnn , -% \__kernel_msg_fatal:nnnnn , -% \__kernel_msg_fatal:nnnn , -% \__kernel_msg_fatal:nnn , -% \__kernel_msg_fatal:nn , -% \__kernel_msg_fatal:nnxxxx , -% \__kernel_msg_fatal:nnxxx , -% \__kernel_msg_fatal:nnxx , -% \__kernel_msg_fatal:nnx , -% \__kernel_msg_error:nnnnnn , -% \__kernel_msg_error:nnnnn , -% \__kernel_msg_error:nnnn , -% \__kernel_msg_error:nnn , -% \__kernel_msg_error:nn , -% \__kernel_msg_error:nnxxxx , -% \__kernel_msg_error:nnxxx , -% \__kernel_msg_error:nnxx , +% \__kernel_msg_fatal:nnnnnn , +% \__kernel_msg_fatal:nnnnn , +% \__kernel_msg_fatal:nnnn , +% \__kernel_msg_fatal:nnn , +% \__kernel_msg_fatal:nn , +% \__kernel_msg_fatal:nnxxxx , +% \__kernel_msg_fatal:nnxxx , +% \__kernel_msg_fatal:nnxx , +% \__kernel_msg_fatal:nnx , +% \__kernel_msg_critical:nnnnnn , +% \__kernel_msg_critical:nnnnn , +% \__kernel_msg_critical:nnnn , +% \__kernel_msg_critical:nnn , +% \__kernel_msg_critical:nn , +% \__kernel_msg_critical:nnxxxx , +% \__kernel_msg_critical:nnxxx , +% \__kernel_msg_critical:nnxx , +% \__kernel_msg_critical:nnx , +% \__kernel_msg_error:nnnnnn , +% \__kernel_msg_error:nnnnn , +% \__kernel_msg_error:nnnn , +% \__kernel_msg_error:nnn , +% \__kernel_msg_error:nn , +% \__kernel_msg_error:nnxxxx , +% \__kernel_msg_error:nnxxx , +% \__kernel_msg_error:nnxx , % \__kernel_msg_error:nnx % } % Neither fatal kernel errors nor kernel errors can be redirected. We @@ -1691,6 +1691,7 @@ % errors. % \begin{macrocode} \@@_kernel_class_new:nN { fatal } \@@_fatal_code:nnnnnn + \@@_kernel_class_new:nN { critical } \@@_critical_code:nnnnnn \cs_undefine:N \__kernel_msg_error:nnxx \cs_undefine:N \__kernel_msg_error:nnx \cs_undefine:N \__kernel_msg_error:nn @@ -1977,28 +1978,15 @@ % \texttt{log-functions}, or on the contrary if debugging is turned off. % In format mode the error is somewhat different. % \begin{macrocode} -%<*package> -\__kernel_msg_new:nnnn { kernel } { enable-debug } - { To~use~'#1'~load~expl3~with~the~'enable-debug'~option. } - { - The~function~'#1'~will~be~ignored~because~it~can~only~work~if~ - some~internal~functions~in~expl3~have~been~appropriately~ - defined.~This~only~happens~if~one~of~the~options~ - 'enable-debug',~'check-declarations'~or~'log-functions'~was~ - given~when~loading~expl3. - } -%</package> -%<*initex> \__kernel_msg_new:nnnn { kernel } { enable-debug } - { '#1'~cannot~be~used~in~format~mode. } + { To~use~'#1'~set~the~'enable-debug'~option. } { The~function~'#1'~will~be~ignored~because~it~can~only~work~if~ some~internal~functions~in~expl3~have~been~appropriately~ - defined.~This~only~happens~in~package~mode~(and~only~if~one~of~ - the~options~'enable-debug',~'check-declarations'~or~'log-functions'~ - was~given~when~loading~expl3. + defined.~This~only~happens~if~one~of~the~options~ + 'enable-debug',~'check-declarations'~or~'log-functions'~was~ + given~as~an~option:~see~the~main~expl3~documentation. } -%</initex> % \end{macrocode} % % Some errors only appear in expandable settings, @@ -2235,7 +2223,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index 03a9f2ae2b9..d070bb29528 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,6 @@ % \begin{itemize} % \item defines new names for all \TeX{} primitives; % \item switches to the category code r{\'e}gime for programming; -% \item provides support settings for building the code as a \TeX{} format. % \end{itemize} % % This module is entirely dedicated to primitives, which should not be @@ -76,7 +75,7 @@ % \section{\pkg{l3names} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % The prefix here is \texttt{kernel}. A few places need |@@| to be left @@ -86,8 +85,7 @@ % \end{macrocode} % % The code here simply renames all of the primitives to new, internal, -% names. In format mode, it also deletes all of the existing names (although -% some do come back later). +% names. % % The \tn{let} primitive is renamed by hand first as it is essential for % the entire process to follow. This also uses \tn{global}, as that way @@ -104,23 +102,17 @@ % \end{macrocode} % % \begin{macro}{\@@_primitive:NN} -% A temporary function to actually do the renaming. This also allows the -% original names to be removed in format mode. +% A temporary function to actually do the renaming. % \begin{macrocode} \long \def \@@_primitive:NN #1#2 - { - \tex_global:D \tex_let:D #2 #1 -%<*initex> - \tex_global:D \tex_let:D #1 \tex_undefined:D -%</initex> - } + { \tex_global:D \tex_let:D #2 #1 } % \end{macrocode} %\end{macro} % % To allow extracting \enquote{just the names}, a bit of DocStrip fiddling. % \begin{macrocode} -%</initex|package> -%<*initex|names|package> +%</package> +%<*names|package> % \end{macrocode} % % In the current incarnation of this package, all \TeX{} primitives @@ -675,8 +667,8 @@ % for \LuaTeX{} tracking all of that would be hard. Instead, we now check that % we only save primitives if they actually exist. % \begin{macrocode} -%</initex|names|package> -%<*initex|package> +%</names|package> +%<*package> \tex_long:D \tex_def:D \use_ii:nn #1#2 {#2} \tex_long:D \tex_def:D \use_none:n #1 { } \tex_long:D \tex_def:D \@@_primitive:NN #1#2 @@ -685,12 +677,9 @@ \tex_expandafter:D \use_ii:nn \tex_fi:D \use_none:n { \tex_global:D \tex_let:D #2 #1 } -%<*initex> - \tex_global:D \tex_let:D #1 \tex_undefined:D -%</initex> } -%</initex|package> -%<*initex|names|package> +%</package> +%<*names|package> % \end{macrocode} % \XeTeX{}-specific primitives. Note that \XeTeX{}'s \tn{strcmp} is % handled earlier and is \enquote{rolled up} into \tn{pdfstrcmp}. @@ -1197,8 +1186,8 @@ % \end{macrocode} % End of the \enquote{just the names} part of the source. % \begin{macrocode} -%</initex|names|package> -%<*initex|package> +%</names|package> +%<*package> % \end{macrocode} % % The job is done: close the group (using the primitive renamed!). @@ -1212,7 +1201,6 @@ % At the beginning of the \LaTeXe{} format, the primitives \tn{end} and % \tn{input} are renamed, and only later on the other ones. % \begin{macrocode} -%<*package> \tex_ifdefined:D \@@@@end \tex_let:D \tex_end:D \@@@@end \tex_let:D \tex_input:D \@@@@input @@ -1368,7 +1356,6 @@ \tex_let:D \tex_mapfile:D \tex_undefined:D \tex_let:D \tex_mapline:D \tex_undefined:D \tex_fi:D -%</package> % \end{macrocode} % A few packages do unfortunate things to date-related primitives. % \begin{macrocode} @@ -1403,13 +1390,11 @@ % confusing. Removing them means that \cs{tex_pdftexversion:D} is % a marker for \pdfTeX{} alone: useful in engine-dependent code later. % \begin{macrocode} -%<*initex|package> \tex_ifdefined:D \tex_luatexversion:D \tex_let:D \tex_pdftexbanner:D \tex_undefined:D \tex_let:D \tex_pdftexrevision:D \tex_undefined:D \tex_let:D \tex_pdftexversion:D \tex_undefined:D \tex_fi:D -%</initex|package> % \end{macrocode} % % For \ConTeXt{}, two tests are needed. Both Mark~II and Mark~IV move several @@ -1417,7 +1402,6 @@ % as a marker. For Mark~IV, a few more primitives are moved: they are % implemented using some Lua code in the current \ConTeXt{}. % \begin{macrocode} -%<*package> \tex_ifdefined:D \normalend \tex_let:D \tex_end:D \normalend \tex_let:D \tex_everyjob:D \normaleveryjob @@ -1444,11 +1428,10 @@ \tex_let:D \tex_middle:D \normalmiddle \tex_let:D \tex_right:D \normalright \tex_fi:D -%</package> % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index c1f794e0158..c993560bf78 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -770,7 +770,7 @@ % \TestFiles{m3prg001.lvt,m3prg002.lvt,m3prg003.lvt} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \subsection{Primitive conditionals} @@ -1648,13 +1648,12 @@ % % \begin{macro}{\prg_break_point:} % \begin{macro}{\prg_break:, \prg_break:n} -% Also done in \pkg{l3basics} as in format mode these are needed within -% \pkg{l3alloc}. +% Also done in \pkg{l3basics}. % \end{macro} % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index 790f0e3b311..d8923d2177c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -525,7 +525,7 @@ % \TestFiles{m3prop001, m3prop002, m3prop003, m3prop004, m3show001} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1369,7 +1369,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index 62474447ef2..d0adf2a00c7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -354,7 +354,7 @@ % \TestFiles{m3quark001.lvt} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \subsection{Quarks} @@ -1003,7 +1003,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index 3820ecdb671..dcc408e48b9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -811,7 +811,7 @@ % \section{\pkg{l3regex} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -6716,7 +6716,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index bd935c6f602..b0a1638170b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -988,7 +988,7 @@ % \TestFiles{m3seq002,m3seq003} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -2357,7 +2357,7 @@ % \end{variable} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index a87f9409388..9987d4f57cd 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -1065,7 +1065,7 @@ % \section{\pkg{l3skip} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1109,13 +1109,11 @@ % \begin{macro}{\dim_new:N, \dim_new:c} % Allocating \meta{dim} registers \ldots % \begin{macrocode} -%<*package> \cs_new_protected:Npn \dim_new:N #1 { \__kernel_chk_if_free_cs:N #1 \cs:w newdimen \cs_end: #1 } -%</package> \cs_generate_variant:Nn \dim_new:N { c } % \end{macrocode} % \end{macro} @@ -1793,13 +1791,11 @@ % \begin{macro}{\skip_new:N, \skip_new:c} % Allocation of a new internal registers. % \begin{macrocode} -%<*package> \cs_new_protected:Npn \skip_new:N #1 { \__kernel_chk_if_free_cs:N #1 \cs:w newskip \cs_end: #1 } -%</package> \cs_generate_variant:Nn \skip_new:N { c } % \end{macrocode} % \end{macro} @@ -2044,13 +2040,11 @@ % \begin{macro}{\muskip_new:N, \muskip_new:c} % And then we add muskips. % \begin{macrocode} -%<*package> \cs_new_protected:Npn \muskip_new:N #1 { \__kernel_chk_if_free_cs:N #1 \cs:w newmuskip \cs_end: #1 } -%</package> \cs_generate_variant:Nn \muskip_new:N { c } % \end{macrocode} % \end{macro} @@ -2242,7 +2236,7 @@ % \end{variable} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index b84c2e298a9..808d6214d0f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -112,7 +112,7 @@ % \section{\pkg{l3sort} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -271,12 +271,8 @@ % In \ConTeXt{} MkIV the range is from % $|\c_syst_last_allocated_toks|+1$ to \cs{c_max_register_int}, and in % MkII it is from $|\lastallocatedtoks|+1$ to \cs{c_max_register_int}. -% In all these cases, call \cs{@@_shrink_range:}. The \LaTeX3 format -% mode is easiest: no \tn{toks} are ever allocated so available -% \tn{toks} range from $0$ to \cs{c_max_register_int} and we -% precompute the result of \cs{@@_shrink_range:}. +% In all these cases, call \cs{@@_shrink_range:}. % \begin{macrocode} -%<*package> \cs_new_protected:Npn \@@_compute_range: { \int_set:Nn \l_@@_min_int { \tex_count:D 15 + 1 } @@ -322,17 +318,6 @@ } } } -%</package> -%<*initex> -\int_const:Nn \c_@@_max_length_int - { ( \c_max_register_int + 1 ) * 3 / 4 } -\cs_new_protected:Npn \@@_compute_range: - { - \int_set:Nn \l_@@_min_int { 0 } - \int_set:Nn \l_@@_true_max_int { \c_max_register_int + 1 } - \int_set:Nn \l_@@_max_int { \c_@@_max_length_int } - } -%</initex> % \end{macrocode} % \end{variable} % \end{macro} @@ -352,7 +337,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_main:NNNn #1#2#3#4 { -%<package> \@@_disable_toksdef: + \@@_disable_toksdef: \@@_compute_range: \int_set_eq:NN \l_@@_top_int \l_@@_min_int #1 #3 @@ -1036,7 +1021,6 @@ % \pkg{l3sort}. In format mode, none of this is needed since there is % no \tn{toks} allocator. % \begin{macrocode} -%<*package> \cs_new_protected:Npn \@@_disable_toksdef: { \cs_set_eq:NN \toksdef \@@_disabled_toksdef:n } \cs_new_protected:Npn \@@_disabled_toksdef:n #1 @@ -1054,7 +1038,6 @@ \iow_char:N\\newtoks~ or~a~similar~command.~The~list~will~not~be~sorted. } -%</package> % \end{macrocode} % \end{macro} % @@ -1103,7 +1086,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx index e57c165f1b0..324066cd414 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -249,7 +249,7 @@ % \section{\pkg{l3str-convert} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -2654,7 +2654,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \subsubsection{\textsc{iso 8859} support} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 539881e1396..466519ac8c2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -857,7 +857,7 @@ % \section{\pkg{l3str} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -2022,7 +2022,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index b15b61d521b..16cdfe6f3d5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -300,7 +300,7 @@ % \subsection{Kernel code} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \subsubsection{Detecting the engine} @@ -874,7 +874,7 @@ % \end{variable} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % %\end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx index a3dde63359f..0f56576b23c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,7 @@ % \section{\pkg{l3text-case} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1584,7 +1584,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx index c48ac585a20..9978eb3cc05 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -56,7 +56,7 @@ % \section{\pkg{l3text-purify} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -810,7 +810,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx index 2946a48df37..b1246336dac 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -270,7 +270,7 @@ % \section{\pkg{l3text} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -515,7 +515,6 @@ % Special cases for accents and letter-like symbols, which in some cases will % need to be converted further. % \begin{macrocode} -%<*package> \tl_new:N \l_text_accents_tl \tl_set:Nn \l_text_accents_tl { \` \' \^ \~ \= \u \. \" \r \H \v \d \c \k \b \t } @@ -534,7 +533,6 @@ \SS \ss \TH \th } -%</package> % \end{macrocode} % \end{variable} % @@ -566,10 +564,8 @@ % Commands which need not to expand. % \begin{macrocode} \tl_new:N \l_text_expand_exclude_tl -%<*package> \tl_set:Nn \l_text_expand_exclude_tl { \begin \cite \end \label \ref } -%</package> % \end{macrocode} % \end{variable} % @@ -862,13 +858,6 @@ % \begin{macrocode} \cs_new:Npn \@@_expand_exclude:N #1 { -%<*initex> - \exp_after:wN \@@_expand_exclude:NN - \l_text_math_arg_tl - #1 - \q_@@_recursion_tail \q_@@_recursion_stop -%</initex> -%<*package> \exp_args:Ne \@@_expand_exclude:nN { \exp_not:V \l_text_math_arg_tl @@ -876,24 +865,16 @@ \exp_not:V \l_text_expand_exclude_tl } #1 -%</package> } -%<*package> \cs_new:Npn \@@_expand_exclude:nN #1#2 { \@@_expand_exclude:NN #2 #1 \q_@@_recursion_tail \q_@@_recursion_stop } -%</package> \cs_new:Npn \@@_expand_exclude:NN #1#2 { \@@_if_recursion_tail_stop_do:Nn #2 -%<*initex> - { \@@_expand_cs:N #1 } -%</initex> -%<*package> { \@@_expand_letterlike:N #1 } -%</package> \cs_if_eq:NNTF #2 #1 { \@@_use_i_delimit_by_q_recursion_stop:nw @@ -910,7 +891,6 @@ % Another list of exceptions: these ones take no arguments so are % easier to handle. % \begin{macrocode} -%<*package> \cs_new:Npn \@@_expand_letterlike:N #1 { \exp_after:wN \@@_expand_letterlike:NN \exp_after:wN @@ -931,7 +911,6 @@ } { \@@_expand_letterlike:NN #1 } } -%</package> % \end{macrocode} % \LaTeXe{}'s \cs{protect} makes life interesting. Where possible, we % simply remove it and replace with the \enquote{parent} command; of course, @@ -1076,7 +1055,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 4944e42682a..14af0c466e2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -165,7 +165,7 @@ % ^^A which does not add the <active char> in memory. % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \subsection{Variables and helper functions} @@ -1098,7 +1098,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index c315612b435..5e088e45584 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -1256,7 +1256,7 @@ % \section{\pkg{l3tl} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -3460,7 +3460,7 @@ % \end{variable} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index cffbea2c975..11f4fc4bcd0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -1108,7 +1108,7 @@ % \section{\pkg{l3token} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1448,10 +1448,8 @@ % auxiliaries reflects that. % \begin{macrocode} \group_begin: -%<*package> \char_set_catcode_active:N \^^L \cs_set:Npn ^^L { } -%</package> \char_set_catcode_other:n { 0 } \if_int_odd:w 0 \sys_if_engine_luatex:T { 1 } @@ -1534,8 +1532,8 @@ % lists, one for each character code, using \tn{tex_lowercase:D} to % convert |^^@| in each case. The \texttt{x}-type expansion ensures % that \tn{tex_lowercase:D} receives the contents of the token list. -% In package mode, |^^L| is awkward hence this is done in three parts. -% Notice that at this stage |^^@| is active. +% |^^L| is awkward hence this is done in three parts: up to |^^L|, +% |^^L| itslef and above |^L|. Notice that at this stage |^^@| is active. % \begin{macrocode} \cs_set_protected:Npn \@@_tmp:n #1 { @@ -1548,17 +1546,12 @@ { \exp_not:o \l_@@_tmp_tl } } } -%<*package> \int_step_function:nnN { 0 } { 11 } \@@_tmp:n \group_begin: \tl_replace_once:Nnn \l_@@_tmp_tl { ^^@ } { \ERROR } \@@_tmp:n { 12 } \group_end: \int_step_function:nnN { 13 } { 255 } \@@_tmp:n -%</package> -%<*initex> - \int_step_function:nnN { 0 } { 255 } \@@_tmp:n -%</initex> % \end{macrocode} % As \TeX{} is very unhappy if it finds an alignment character inside % a primitive \tn{halign} even when skipping false branches, some @@ -2876,7 +2869,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index 334e8b7086c..3c55fdfc85a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-07-17} +% \date{Released 2020-08-07} % % \maketitle % @@ -60,7 +60,7 @@ % \section{\pkg{l3unicode} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -280,7 +280,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def index dcffe9a1511..f03b3c7b345 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def @@ -25,7 +25,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvipdfmx.def}{2020-06-29}{} + {l3backend-dvipdfmx.def}{2020-08-07}{} {L3 backend support: dvipdfmx} \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D \cs_new_protected:Npn \__kernel_backend_literal:n #1 @@ -42,37 +42,32 @@ { \__kernel_backend_literal:n { x:grestore } } %% File: l3backend-color.dtx \cs_new_protected:Npn \__color_backend_pickup:N #1 { } -\AtBeginDocument +\cs_if_exist:cT { ver@color.sty } { - \cs_if_exist:cT { ver@color.sty } + \cs_set_protected:Npn \__color_backend_pickup:N #1 { - \cs_set_protected:Npn \__color_backend_pickup:N #1 + \exp_args:NV \tl_if_head_is_space:nTF \current@color { - \exp_args:NV \tl_if_head_is_space:nTF \current@color - { - \tl_set:Nx #1 - { - { spot } - { \exp_after:wN \use:n \current@color \c_space_tl 1 } - } - } - { - \exp_last_unbraced:Nx \__color_backend_pickup:w - { \current@color } \s__color_stop #1 - } + \tl_set:Nx #1 + { + { \exp_after:wN \use:n \current@color } + { 1 } + } + } + { + \exp_last_unbraced:Nx \__color_backend_pickup:w + { \current@color } \s__color_stop #1 } - \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 - { \tl_set:Nn #3 { {#1} {#2} } } } + \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 + { \tl_set:Nn #3 { {#1} {#2} } } } -\cs_new_protected:Npn \__color_backend_cmyk:n #1 +\cs_new_protected:Npn \__color_backend_select_cmyk:n #1 { \__color_backend_select:n { cmyk ~ #1 } } -\cs_new_protected:Npn \__color_backend_gray:n #1 +\cs_new_protected:Npn \__color_backend_select_gray:n #1 { \__color_backend_select:n { gray ~ #1 } } -\cs_new_protected:Npn \__color_backend_rgb:n #1 +\cs_new_protected:Npn \__color_backend_select_rgb:n #1 { \__color_backend_select:n { rgb ~ #1 } } -\cs_new_protected:Npn \__color_backend_spot:n #1 - { \__color_backend_select:n {#1} } \cs_new_protected:Npn \__color_backend_select:n #1 { \__kernel_backend_literal:n { color~push~ #1 } @@ -80,6 +75,24 @@ } \cs_new_protected:Npn \__color_backend_reset: { \__kernel_backend_literal:n { color~pop } } +\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 + { \__color_backend_select:n {#1} } +\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ k } } +\cs_new_protected:Npn \__color_backend_fill_gray:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ g } } +\cs_new_protected:Npn \__color_backend_fill_rgb:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ rg } } + \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ K } } +\cs_new_protected:Npn \__color_backend_stroke_gray:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ G } } +\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2 + { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } } +\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2 + { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } } %% File: l3backend-box.dtx \cs_new_protected:Npn \__box_backend_clip:N #1 { @@ -221,20 +234,6 @@ { \__draw_backend_literal:n { 1 ~ j } } \cs_new_protected:Npn \__draw_backend_join_bevel: { \__draw_backend_literal:n { 2 ~ j } } -\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1 - { \__draw_backend_color_select:n { #1 ~ k } } -\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1 - { \__draw_backend_color_select:n { #1 ~ K } } -\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1 - { \__draw_backend_color_select:n { #1 ~ g } } -\cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1 - { \__draw_backend_color_select:n { #1 ~ G } } -\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1 - { \__draw_backend_color_select:n { #1 ~ rg } } -\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1 - { \__draw_backend_color_select:n { #1 ~ RG } } -\cs_new_eq:NN \__draw_backend_color_select:n \__kernel_backend_literal_pdf:n -\cs_generate_variant:Nn \__draw_backend_color_select:n { x } \cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4 { \__draw_backend_cm_decompose:nnnnN {#1} {#2} {#3} {#4} @@ -315,8 +314,7 @@ \__kernel_backend_scope_end: } %% File: l3backend-graphics.dtx -\AtBeginDocument - { \cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n } +\cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n \cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1 { \int_zero:N \l_graphics_page_int @@ -472,15 +470,12 @@ \cs_new:Npn \__pdf_backend_pageobject_ref:n #1 { @page #1 } \bool_new:N \g__pdf_landscape_bool -\AtBeginDocument +\cs_if_exist:NT \landscape { - \cs_if_exist:NT \landscape - { - \tl_put_right:Nn \landscape - { \bool_gset_true:N \g__pdf_landscape_bool } - \tl_put_left:Nn \endlandscape - { \bool_gset_false:N \g__pdf_landscape_bool } - } + \tl_put_right:Nn \landscape + { \bool_gset_true:N \g__pdf_landscape_bool } + \tl_put_left:Nn \endlandscape + { \bool_gset_false:N \g__pdf_landscape_bool } } \int_new:N \g__pdf_backend_annotation_int \cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4 diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def index 5a9a50aa57e..1a638ce9abb 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def @@ -25,7 +25,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvips.def}{2020-06-29}{} + {l3backend-dvips.def}{2020-08-07}{} {L3 backend support: dvips} \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D \cs_new_protected:Npn \__kernel_backend_literal:n #1 @@ -63,45 +63,59 @@ { \__kernel_backend_literal:n { ps:grestore } } %% File: l3backend-color.dtx \cs_new_protected:Npn \__color_backend_pickup:N #1 { } -\AtBeginDocument +\cs_if_exist:cT { ver@color.sty } { - \cs_if_exist:cT { ver@color.sty } + \cs_set_protected:Npn \__color_backend_pickup:N #1 { - \cs_set_protected:Npn \__color_backend_pickup:N #1 + \exp_args:NV \tl_if_head_is_space:nTF \current@color { - \exp_args:NV \tl_if_head_is_space:nTF \current@color - { - \tl_set:Nx #1 - { - { spot } - { \exp_after:wN \use:n \current@color \c_space_tl 1 } - } - } - { - \exp_last_unbraced:Nx \__color_backend_pickup:w - { \current@color } \s__color_stop #1 - } + \tl_set:Nx #1 + { + { \exp_after:wN \use:n \current@color } + { 1 } + } + } + { + \exp_last_unbraced:Nx \__color_backend_pickup:w + { \current@color } \s__color_stop #1 } - \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 - { \tl_set:Nn #3 { {#1} {#2} } } } + \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 + { \tl_set:Nn #3 { {#1} {#2} } } } -\cs_new_protected:Npn \__color_backend_cmyk:n #1 +\cs_new_protected:Npn \__color_backend_select_cmyk:n #1 { \__color_backend_select:n { cmyk ~ #1 } } -\cs_new_protected:Npn \__color_backend_gray:n #1 +\cs_new_protected:Npn \__color_backend_select_gray:n #1 { \__color_backend_select:n { gray ~ #1 } } -\cs_new_protected:Npn \__color_backend_rgb:n #1 +\cs_new_protected:Npn \__color_backend_select_rgb:n #1 { \__color_backend_select:n { rgb ~ #1 } } -\cs_new_protected:Npn \__color_backend_spot:n #1 - { \__color_backend_select:n {#1} } \cs_new_protected:Npn \__color_backend_select:n #1 { \__kernel_backend_literal:n { color~push~ #1 } - \__kernel_backend_postscript:n { /color.fc~{ }~def } + \__kernel_backend_postscript:n { /color.sc~ { ~ } ~def } + \__kernel_backend_postscript:n { /color.fc~ { ~ } ~def } \group_insert_after:N \__color_backend_reset: } \cs_new_protected:Npn \__color_backend_reset: { \__kernel_backend_literal:n { color~pop } } +\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 + { \__color_backend_select:n {#1} } +\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 + { \__kernel_backend_postscript:n { /color.fc { #1 ~ setcmykcolor } def } } +\cs_new_protected:Npn \__color_backend_fill_gray:n #1 + { \__kernel_backend_postscript:n { /color.fc { #1 ~ setgray } def } } +\cs_new_protected:Npn \__color_backend_fill_rgb:n #1 + { \__kernel_backend_postscript:n { /color.fc { #1 ~ setrgbcolor } def } } + \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 + { \__kernel_backend_postscript:n { /color.sc { #1 ~ setcmykcolor } def } } +\cs_new_protected:Npn \__color_backend_stroke_gray:n #1 + { \__kernel_backend_postscript:n { /color.sc { #1 ~ setgray } def } } +\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1 + { \__kernel_backend_postscript:n { /color.sc { #1 ~ setrgbcolor } def } } +\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2 + { \__kernel_backend_postscript:n { /color.fc { #1 } def } } +\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2 + { \__kernel_backend_postscript:n { /color.sc { #1 } def } } %% File: l3backend-box.dtx \cs_new_protected:Npn \__box_backend_clip:N #1 { @@ -163,7 +177,6 @@ { \__kernel_backend_literal:n { ps::[begin] } \__draw_backend_literal:n { @beginspecial } - \__draw_backend_literal:n { SDict ~ begin ~ /color.fc ~ { } ~ def ~ end } } \cs_new_protected:Npn \__draw_backend_end: { @@ -218,7 +231,10 @@ { \__draw_backend_literal:n { closepath } } \cs_new_protected:Npn \__draw_backend_stroke: { + \__draw_backend_literal:n { gsave } + \__draw_backend_literal:n { color.sc } \__draw_backend_literal:n { stroke } + \__draw_backend_literal:n { grestore } \bool_if:NT \g__draw_draw_clip_bool { \__draw_backend_literal:x @@ -259,6 +275,7 @@ \cs_new_protected:Npn \__draw_backend_fillstroke: { \__draw_backend_literal:n { gsave } + \__draw_backend_literal:n { color.sc } \__draw_backend_literal:n { color.fc } \__draw_backend_literal:x { @@ -326,28 +343,6 @@ { \__draw_backend_literal:n { 1 ~ setlinejoin } } \cs_new_protected:Npn \__draw_backend_join_bevel: { \__draw_backend_literal:n { 2 ~ setlinejoin } } -\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1 - { \__draw_backend_color_fill:n { #1 ~ setcmykcolor } } -\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1 - { \__draw_backend_color_stroke:n { cmyk ~ #1 } } -\cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1 - { \__draw_backend_color_fill:n { #1 ~ setgray } } -\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1 - { \__draw_backend_color_stroke:n { gray ~ #1 } } -\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1 - { \__draw_backend_color_fill:n { #1 ~ setrgbcolor } } -\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1 - { \__draw_backend_color_stroke:n { rgb ~ #1 } } -\cs_new_protected:Npn \__draw_backend_color_fill:n #1 - { - \__kernel_backend_postscript:n - { /color.fc ~ { #1 } ~ def } - } -\cs_new_protected:Npn \__draw_backend_color_stroke:n #1 - { - \__kernel_backend_literal:n { color~push~#1 } - \group_insert_after:N \__draw_color_reset: - } \cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4 { \__draw_backend_literal:n @@ -374,8 +369,7 @@ \__draw_backend_literal:n { @beginspecial } } %% File: l3backend-graphics.dtx -\AtBeginDocument - { \cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n } +\cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n \cs_new_protected:Npn \__graphics_backend_include_eps:n #1 { \__kernel_backend_literal:x diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def index 3461b4a3ce2..007c597b7ab 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def @@ -25,7 +25,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvisvgm.def}{2020-06-29}{} + {l3backend-dvisvgm.def}{2020-08-07}{} {L3 backend support: dvisvgm} \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D \cs_new_protected:Npn \__kernel_backend_literal:n #1 @@ -34,46 +34,71 @@ \cs_new_protected:Npn \__kernel_backend_literal_svg:n #1 { \__kernel_backend_literal:n { dvisvgm:raw~ #1 { ?nl } } } \cs_generate_variant:Nn \__kernel_backend_literal_svg:n { x } +\int_new:N \g__kernel_backend_scope_int +\int_new:N \l__kernel_backend_scope_int \cs_new_protected:Npn \__kernel_backend_scope_begin: - { \__kernel_backend_literal_svg:n { <g> } } + { + \__kernel_backend_literal_svg:n { <g> } + \int_set_eq:NN + \l__kernel_backend_scope_int + \g__kernel_backend_scope_int + \group_begin: + \int_gset:Nn \g__kernel_backend_scope_int { 1 } + } \cs_new_protected:Npn \__kernel_backend_scope_end: - { \__kernel_backend_literal_svg:n { </g> } } + { + \prg_replicate:nn + { \g__kernel_backend_scope_int } + { \__kernel_backend_literal_svg:n { </g> } } + \group_end: + \int_gset_eq:NN + \g__kernel_backend_scope_int + \l__kernel_backend_scope_int + } \cs_new_protected:Npn \__kernel_backend_scope_begin:n #1 - { \__kernel_backend_literal_svg:n { <g~ #1 > } } + { + \__kernel_backend_literal_svg:n { <g ~ #1 > } + \int_set_eq:NN + \l__kernel_backend_scope_int + \g__kernel_backend_scope_int + \group_begin: + \int_gset:Nn \g__kernel_backend_scope_int { 1 } + } \cs_generate_variant:Nn \__kernel_backend_scope_begin:n { x } +\cs_new_protected:Npn \__kernel_backend_scope:n #1 + { + \__kernel_backend_literal_svg:n { <g ~ #1 > } + \int_gincr:N \g__kernel_backend_scope_int + } +\cs_generate_variant:Nn \__kernel_backend_scope:n { x } %% File: l3backend-color.dtx \cs_new_protected:Npn \__color_backend_pickup:N #1 { } -\AtBeginDocument +\cs_if_exist:cT { ver@color.sty } { - \cs_if_exist:cT { ver@color.sty } + \cs_set_protected:Npn \__color_backend_pickup:N #1 { - \cs_set_protected:Npn \__color_backend_pickup:N #1 + \exp_args:NV \tl_if_head_is_space:nTF \current@color + { + \tl_set:Nx #1 + { + { \exp_after:wN \use:n \current@color } + { 1 } + } + } { - \exp_args:NV \tl_if_head_is_space:nTF \current@color - { - \tl_set:Nx #1 - { - { spot } - { \exp_after:wN \use:n \current@color \c_space_tl 1 } - } - } - { - \exp_last_unbraced:Nx \__color_backend_pickup:w - { \current@color } \s__color_stop #1 - } + \exp_last_unbraced:Nx \__color_backend_pickup:w + { \current@color } \s__color_stop #1 } - \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 - { \tl_set:Nn #3 { {#1} {#2} } } } + \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 + { \tl_set:Nn #3 { {#1} {#2} } } } -\cs_new_protected:Npn \__color_backend_cmyk:n #1 +\cs_new_protected:Npn \__color_backend_select_cmyk:n #1 { \__color_backend_select:n { cmyk ~ #1 } } -\cs_new_protected:Npn \__color_backend_gray:n #1 +\cs_new_protected:Npn \__color_backend_select_gray:n #1 { \__color_backend_select:n { gray ~ #1 } } -\cs_new_protected:Npn \__color_backend_rgb:n #1 +\cs_new_protected:Npn \__color_backend_select_rgb:n #1 { \__color_backend_select:n { rgb ~ #1 } } -\cs_new_protected:Npn \__color_backend_spot:n #1 - { \__color_backend_select:n {#1} } \cs_new_protected:Npn \__color_backend_select:n #1 { \__kernel_backend_literal:n { color~push~ #1 } @@ -81,6 +106,74 @@ } \cs_new_protected:Npn \__color_backend_reset: { \__kernel_backend_literal:n { color~pop } } +\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 + { \__color_backend_select:n {#1} } +\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 + { \__color_backend_cmyk:nw { fill } #1 \s__color_stop } +\cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 + { \__color_backend_cmyk:nw { stroke } #1 \s__color_stop } +\cs_new_protected:Npn \__color_backend_cmyk:nw + #1#2 ~ #3 ~ #4 ~ #5 \s__color_stop + { + \use:x + { + \__color_backend:nnnn + {#1} + { \fp_eval:n { -100 * ( 1 - min ( 1 , #2 + #5 ) ) } } + { \fp_eval:n { -100 * ( 1 - min ( 1 , #3 + #5 ) ) } } + { \fp_eval:n { -100 * ( 1 - min ( 1 , #4 + #5 ) ) } } + } + } +\cs_new_protected:Npn \__color_backend_fill_gray:n #1 + { \__color_backend_grab:nn { fill } {#1} } +\cs_new_protected:Npn \__color_backend_stroke_gray:n #1 + { \__color_backend_grab:nn { stroke } {#1} } +\cs_new_protected:Npn \__color_backend_gray:nn #1#2 + { + \use:x + { + \__color_backend_gray_aux:nn + {#1} + { \fp_eval:n { 100 * (#2) } } + } + } +\cs_new_protected:Npn \__color_backend_gray_aux:nn #1#2 + { \__color_backend:nnn {#1} {#2} {#2} {#2} } +\cs_new_protected:Npn \__color_backend_fill_rgb:n #1 + { \__color_backend_rgb:nw { fill } #1 \s__color_stop } +\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1 + { \__color_backend_rgb:nw { stroke } #1 \s__color_stop } +\cs_new_protected:Npn \__color_backend_rgb:nw + #1#2 ~ #3 ~ #4\s__color_stop + { + \use:x + { + \__color_backend:nnnn + { fill } + { \fp_eval:n { 100 * (#2) } } + { \fp_eval:n { 100 * (#3) } } + { \fp_eval:n { 100 * (#4) } } + } + } +\cs_new_protected:Npx \__color_backend:nnnn #1#2#3#4 + { + \__kernel_backend_scope:n + { + #1 = + " + rgb + ( + #2 \c_percent_str , + #3 \c_percent_str , + #4 \c_percent_str + ) + " + } + } +\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2 + { } +\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2 + { } %% File: l3backend-box.dtx \cs_new_protected:Npn \__box_backend_clip:N #1 { @@ -114,12 +207,12 @@ scale ( 1 , -1 ) " } - \__kernel_backend_scope_begin:x + \__kernel_backend_scope:x { clip-path = "url ( \c_hash_str l3cp \int_use:N \g__box_clip_path_int ) " } - \__kernel_backend_scope_begin:n + \__kernel_backend_scope:n { transform = " @@ -130,8 +223,6 @@ } \box_use:N #1 \__kernel_backend_scope_end: - \__kernel_backend_scope_end: - \__kernel_backend_scope_end: } \int_new:N \g__box_clip_path_int \cs_new_protected:Npn \__box_backend_rotate:Nn #1#2 @@ -171,37 +262,10 @@ \cs_generate_variant:Nn \__draw_backend_literal:n { x } \cs_new_protected:Npn \__draw_backend_begin: { - \__draw_backend_scope_begin: - \__draw_backend_scope:n { transform="translate({?x},{?y})~scale(1,-1)" } - } -\cs_new_protected:Npn \__draw_backend_end: - { \__draw_backend_scope_end: } -\cs_new_protected:Npn \__draw_backend_scope_begin: - { - \int_set_eq:NN - \l__draw_draw_scope_int - \g__draw_draw_scope_int - \group_begin: - \int_gzero:N \g__draw_draw_scope_int - } -\cs_new_protected:Npn \__draw_backend_scope_end: - { - \prg_replicate:nn - { \g__draw_draw_scope_int } - { \__draw_backend_literal:n { </g> } } - \group_end: - \int_gset_eq:NN - \g__draw_draw_scope_int - \l__draw_draw_scope_int - } -\cs_new_protected:Npn \__draw_backend_scope:n #1 - { - \__draw_backend_literal:n { <g~ #1 > } - \int_gincr:N \g__draw_draw_scope_int + \__kernel_backend_scope_begin: + \__kernel_backend_scope:n { transform="translate({?x},{?y})~scale(1,-1)" } } -\cs_generate_variant:Nn \__draw_backend_scope:n { x } -\int_new:N \g__draw_draw_scope_int -\int_new:N \l__draw_draw_scope_int +\cs_new_eq:NN \__draw_backend_end: \__kernel_backend_scope_end: \cs_new_protected:Npn \__draw_backend_moveto:nn #1#2 { \__draw_backend_add_to_path:n @@ -355,68 +419,6 @@ { \__draw_backend_scope:n { stroke-linejoin="round" } } \cs_new_protected:Npn \__draw_backend_join_bevel: { \__draw_backend_scope:n { stroke-linejoin="bevel" } } -\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1 - { \__draw_backend_color_cmyk:nw { fill } #1 \s__draw_stop } -\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1 - { \__draw_backend_color_cmyk:nw { stroke } #1 \s__draw_stop } -\cs_new_protected:Npn \__draw_backend_color_cmyk:nw - #1#2 ~ #3 ~ #4 ~ #5 \s__draw_stop - { - \use:x - { - \__draw_backend_color:nnnn - {#1} - { \fp_eval:n { -100 * ( 1 - min ( 1 , #2 + #5 ) ) } } - { \fp_eval:n { -100 * ( 1 - min ( 1 , #3 + #5 ) ) } } - { \fp_eval:n { -100 * ( 1 - min ( 1 , #4 + #5 ) ) } } - } - } -\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1 - { \__draw_backend_color_grab:nn { fill } {#1} } -\cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1 - { \__draw_backend_color_grab:nn { stroke } {#1} } -\cs_new_protected:Npn \__draw_backend_color_gray:nn #1#2 - { - \use:x - { - \__draw_backend_color_gray_aux:nn - {#1} - { \fp_eval:n { 100 * (#2) } } - } - } -\cs_new_protected:Npn \__draw_backend_color_gray_aux:nn #1#2 - { \__draw_backend_color:nnn {#1} {#2} {#2} {#2} } -\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1 - { \__draw_backend_color_rgb:nw { fill } #1 \s__draw_stop } -\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1 - { \__draw_backend_color_rgb:nw { stroke } #1 \s__draw_stop } -\cs_new_protected:Npn \__draw_backend_color_rgb:nw - #1#2 ~ #3 ~ #4\s__draw_stop - { - \use:x - { - \__draw_backend_color:nnnn - { fill } - { \fp_eval:n { 100 * (#2) } } - { \fp_eval:n { 100 * (#3) } } - { \fp_eval:n { 100 * (#4) } } - } - } -\cs_new_protected:Npx \__draw_backend_color:nnnn #1#2#3#4 - { - \__draw_backend_scope:n - { - #1 = - " - rgb - ( - #2 \c_percent_str , - #3 \c_percent_str , - #4 \c_percent_str - ) - " - } - } \cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4 { \__draw_backend_scope:n @@ -444,8 +446,7 @@ \__kernel_backend_scope_end: } %% File: l3backend-graphics.dtx -\AtBeginDocument - { \cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n } +\cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n \cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1 { \int_zero:N \l_graphics_page_int diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def index 6d90ccf514e..b811d5f7301 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def @@ -25,7 +25,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-pdfmode.def}{2020-06-29}{} + {l3backend-pdfmode.def}{2020-08-07}{} {L3 backend support: PDF mode} \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D \cs_new_protected:Npn \__kernel_backend_literal:n #1 @@ -69,51 +69,44 @@ \cs_generate_variant:Nn \__kernel_backend_matrix:n { x } %% File: l3backend-color.dtx \cs_new_protected:Npn \__color_backend_pickup:N #1 { } -\AtBeginDocument +\cs_if_exist:cT { ver@color.sty } { - \cs_if_exist:cT { ver@color.sty } + \cs_set_protected:Npn \__color_backend_pickup:N #1 { - \cs_set_protected:Npn \__color_backend_pickup:N #1 - { - \exp_last_unbraced:Nx \__color_backend_pickup:w - { \current@color } ~ 0 ~ 0 ~ 0 \s__color_stop #1 - } - \cs_new_protected:Npn \__color_backend_pickup:w - #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7 + \exp_last_unbraced:Nx \__color_backend_pickup:w + { \current@color } ~ 0 ~ 0 ~ 0 \s__color_stop #1 + } + \cs_new_protected:Npn \__color_backend_pickup:w + #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7 + { + \str_if_eq:nnTF {#2} { g } + { \tl_set:Nn #7 { { gray } {#1} } } { - \str_if_eq:nnTF {#2} { g } - { \tl_set:Nn #7 { { gray } {#1} } } + \str_if_eq:nnTF {#4} { rg } + { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } } { - \str_if_eq:nnTF {#4} { rg } - { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } } - { - \str_if_eq:nnTF {#5} { k } - { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } } + \str_if_eq:nnTF {#5} { k } + { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } } + { + \str_if_eq:nnTF {#2} { cs } { - \str_if_eq:nnTF {#2} { cs } - { - \tl_set:Nx #7 { { spot } { \use_none:n #1 ~ #5 } } - } - { - \tl_set:Nn #7 { { gray } { 0 } } - } + \tl_set:Nx #7 { { \use:n #1 } { #5 } } } - } + { + \tl_set:Nn #7 { { gray } { 0 } } + } + } } } } } \int_new:N \l__kernel_color_stack_int -\cs_new_protected:Npn \__color_backend_cmyk:n #1 +\cs_new_protected:Npn \__color_backend_select_cmyk:n #1 { \__color_backend_select:n { #1 ~ k ~ #1 ~ K } } -\cs_new_protected:Npn \__color_backend_gray:n #1 +\cs_new_protected:Npn \__color_backend_select_gray:n #1 { \__color_backend_select:n { #1 ~ g ~ #1 ~ G } } -\cs_new_protected:Npn \__color_backend_rgb:n #1 +\cs_new_protected:Npn \__color_backend_select_rgb:n #1 { \__color_backend_select:n { #1 ~ rg ~ #1 ~ RG } } -\cs_new_protected:Npn \__color_backend_spot:n #1 - { \__color_backend_spot:w #1 \s__color_stop } -\cs_new_protected:Npn \__color_backend_spot:w #1 ~ #2 \s__color_stop - { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } } \cs_new_protected:Npx \__color_backend_select:n #1 { \cs_if_exist:NTF \tex_pdfextension:D @@ -129,6 +122,24 @@ { \tex_pdfcolorstack:D } \exp_not:N \l__kernel_color_stack_int pop \scan_stop: } +\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 + { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } } +\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ k } } +\cs_new_protected:Npn \__color_backend_fill_gray:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ g } } +\cs_new_protected:Npn \__color_backend_fill_rgb:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ rg } } + \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ K } } +\cs_new_protected:Npn \__color_backend_stroke_gray:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ G } } +\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2 + { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } } +\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2 + { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } } %% File: l3backend-box.dtx \cs_new_protected:Npn \__box_backend_clip:N #1 { @@ -283,34 +294,6 @@ { \__draw_backend_literal:n { 1 ~ j } } \cs_new_protected:Npn \__draw_backend_join_bevel: { \__draw_backend_literal:n { 2 ~ j } } -\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1 - { \__draw_backend_color_select:n { #1 ~ k } } -\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1 - { \__draw_backend_color_select:n { #1 ~ K } } -\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1 - { \__draw_backend_color_select:n { #1 ~ g } } -\cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1 - { \__draw_backend_color_select:n { #1 ~ G } } -\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1 - { \__draw_backend_color_select:n { #1 ~ rg } } -\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1 - { \__draw_backend_color_select:n { #1 ~ RG } } -\cs_new_protected:Npx \__draw_backend_color_select:n #1 - { - \cs_if_exist:NTF \tex_pdfextension:D - { \tex_pdfextension:D colorstack } - { \tex_pdfcolorstack:D } - \exp_not:N \l__kernel_color_stack_int push {#1} - \group_insert_after:N \exp_not:N \__draw_backend_color_reset: - } -\cs_new_protected:Npx \__draw_backend_color_reset: - { - \cs_if_exist:NTF \tex_pdfextension:D - { \tex_pdfextension:D colorstack } - { \tex_pdfcolorstack:D } - \exp_not:N \l__kernel_color_stack_int pop \scan_stop: - } -\cs_generate_variant:Nn \__draw_backend_color_select:n { x } \cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4 { \__kernel_backend_matrix:n { #1 ~ #2 ~ #3 ~ #4 } diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def index e2557ea7d3f..983dc39b90c 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def @@ -25,7 +25,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-xdvipdfmx.def}{2020-06-29}{} + {l3backend-xdvipdfmx.def}{2020-08-07}{} {L3 backend support: xdvipdfmx} \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D \cs_new_protected:Npn \__kernel_backend_literal:n #1 @@ -42,37 +42,32 @@ { \__kernel_backend_literal:n { x:grestore } } %% File: l3backend-color.dtx \cs_new_protected:Npn \__color_backend_pickup:N #1 { } -\AtBeginDocument +\cs_if_exist:cT { ver@color.sty } { - \cs_if_exist:cT { ver@color.sty } + \cs_set_protected:Npn \__color_backend_pickup:N #1 { - \cs_set_protected:Npn \__color_backend_pickup:N #1 + \exp_args:NV \tl_if_head_is_space:nTF \current@color { - \exp_args:NV \tl_if_head_is_space:nTF \current@color - { - \tl_set:Nx #1 - { - { spot } - { \exp_after:wN \use:n \current@color \c_space_tl 1 } - } - } - { - \exp_last_unbraced:Nx \__color_backend_pickup:w - { \current@color } \s__color_stop #1 - } + \tl_set:Nx #1 + { + { \exp_after:wN \use:n \current@color } + { 1 } + } + } + { + \exp_last_unbraced:Nx \__color_backend_pickup:w + { \current@color } \s__color_stop #1 } - \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 - { \tl_set:Nn #3 { {#1} {#2} } } } + \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 + { \tl_set:Nn #3 { {#1} {#2} } } } -\cs_new_protected:Npn \__color_backend_cmyk:n #1 +\cs_new_protected:Npn \__color_backend_select_cmyk:n #1 { \__color_backend_select:n { cmyk ~ #1 } } -\cs_new_protected:Npn \__color_backend_gray:n #1 +\cs_new_protected:Npn \__color_backend_select_gray:n #1 { \__color_backend_select:n { gray ~ #1 } } -\cs_new_protected:Npn \__color_backend_rgb:n #1 +\cs_new_protected:Npn \__color_backend_select_rgb:n #1 { \__color_backend_select:n { rgb ~ #1 } } -\cs_new_protected:Npn \__color_backend_spot:n #1 - { \__color_backend_select:n {#1} } \cs_new_protected:Npn \__color_backend_select:n #1 { \__kernel_backend_literal:n { color~push~ #1 } @@ -80,6 +75,24 @@ } \cs_new_protected:Npn \__color_backend_reset: { \__kernel_backend_literal:n { color~pop } } +\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 + { \__color_backend_select:n {#1} } +\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ k } } +\cs_new_protected:Npn \__color_backend_fill_gray:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ g } } +\cs_new_protected:Npn \__color_backend_fill_rgb:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ rg } } + \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ K } } +\cs_new_protected:Npn \__color_backend_stroke_gray:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ G } } +\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1 + { \__kernel_backend_literal_pdf:n { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2 + { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } } +\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2 + { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } } %% File: l3backend-box.dtx \cs_new_protected:Npn \__box_backend_clip:N #1 { @@ -221,20 +234,6 @@ { \__draw_backend_literal:n { 1 ~ j } } \cs_new_protected:Npn \__draw_backend_join_bevel: { \__draw_backend_literal:n { 2 ~ j } } -\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1 - { \__draw_backend_color_select:n { #1 ~ k } } -\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1 - { \__draw_backend_color_select:n { #1 ~ K } } -\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1 - { \__draw_backend_color_select:n { #1 ~ g } } -\cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1 - { \__draw_backend_color_select:n { #1 ~ G } } -\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1 - { \__draw_backend_color_select:n { #1 ~ rg } } -\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1 - { \__draw_backend_color_select:n { #1 ~ RG } } -\cs_new_eq:NN \__draw_backend_color_select:n \__kernel_backend_literal_pdf:n -\cs_generate_variant:Nn \__draw_backend_color_select:n { x } \cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4 { \__draw_backend_cm_decompose:nnnnN {#1} {#2} {#3} {#4} @@ -315,8 +314,7 @@ \__kernel_backend_scope_end: } %% File: l3backend-graphics.dtx -\AtBeginDocument - { \cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n } +\cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n \int_new:N \g__graphics_track_int \cs_new_protected:Npn \__graphics_backend_include_eps:n #1 { @@ -518,15 +516,12 @@ \cs_new:Npn \__pdf_backend_pageobject_ref:n #1 { @page #1 } \bool_new:N \g__pdf_landscape_bool -\AtBeginDocument +\cs_if_exist:NT \landscape { - \cs_if_exist:NT \landscape - { - \tl_put_right:Nn \landscape - { \bool_gset_true:N \g__pdf_landscape_bool } - \tl_put_left:Nn \endlandscape - { \bool_gset_false:N \g__pdf_landscape_bool } - } + \tl_put_right:Nn \landscape + { \bool_gset_true:N \g__pdf_landscape_bool } + \tl_put_left:Nn \endlandscape + { \bool_gset_false:N \g__pdf_landscape_bool } } \int_new:N \g__pdf_backend_annotation_int \cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4 diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty index 7c9d604ad24..bcdecda9b78 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty @@ -20,7 +20,7 @@ %% %% File: l3benchmark.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3benchmark}{2020-07-17}{} +\ProvidesExplPackage{l3benchmark}{2020-08-07}{} {L3 Experimental benchmarking} \sys_if_engine_luatex:TF { diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty index 3a81714bff8..e57c0db800d 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty @@ -20,7 +20,7 @@ %% %% File: l3color.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3color}{2020-07-17}{} +\ProvidesExplPackage{l3color}{2020-08-07}{} {L3 Experimental color support} \tl_new:N \l__color_internal_tl \scan_new:N \s__color_mark @@ -43,10 +43,12 @@ \cs_generate_variant:Nn \__color_convert:nnN { VV } \cs_new_protected:Npn \__color_convert:nnnN #1#2#3#4 { - \str_if_eq:nnT {#1} { spot } % TO DO!!! - { } \tl_set:Nx #4 - { \use:c { __color_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \s__color_stop } + { + \cs_if_exist:cTF { __color_convert_ #1 _ #2 :w } + { \use:c { __color_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \s__color_stop } + { \use:c { c__color_fallback_ #2 _tl } } + } } \cs_generate_variant:Nn \__color_convert:nnnN { nV , nnV } \cs_new:Npn \__color_convert_gray_rgb:w #1 ~ #2 \s__color_stop @@ -421,6 +423,30 @@ \tl_set:Nx #1 { { \l_color_fixed_model_tl } { \l__color_value_tl } } } +\cs_new_protected:Npn \color_fill:n #1 + { + \__color_parse:nN {#1} \l__color_current_tl + \exp_after:wN \__color_draw:nnn \l__color_current_tl { fill } + } +\cs_new_protected:Npn \color_stroke:n #1 + { + \__color_parse:nN {#1} \l__color_current_tl + \exp_after:wN \__color_draw:nnn \l__color_current_tl { stroke } + } +\cs_new_protected:Npn \color_fill:nn #1#2 + { + \__color_select_main:Nw \l__color_current_tl + #1 / / \s__color_mark #2 / / \s__color_stop + \exp_after:wN \__color_draw:nnn \l__color_current_tl { fill } + } +\cs_new_protected:Npn \color_stroke:nn #1#2 + { + \__color_select_main:Nw \l__color_current_tl + #1 / / \s__color_mark #2 / / \s__color_stop + \exp_after:wN \__color_draw:nnn \l__color_current_tl { stroke } + } +\cs_new_protected:Npn \__color_draw:nnn #1#2#3 + { \use:c { __color_backend_ #3 _ #1 :n } {#2} } \tl_new:N \l__color_named_tl \cs_new_protected:Npn \color_set:nn #1#2 { @@ -596,6 +622,245 @@ } \cs_new_protected:cpn { __color_export_space-sep-rgb:Nw } #1#2 \s__color_stop { \tl_set:Nx #1 {#2} } +\prop_new:N \l__color_internal_prop +\int_new:N \g__color_separation_int +\tl_const:Nn \c__color_model_whitepoint_cielab_a_tl { 1.0985 ~ 1 ~ 0.3558 } +\tl_const:Nn \c__color_model_whitepoint_cielab_b_tl { 0.9807~ 1 ~ 1.1822 } +\tl_const:Nn \c__color_model_whitepoint_cielab_e_tl { 1 ~ 1 ~ 1 } +\tl_const:cn { c__color_model_whitepoint_cielab_d50_tl } { 0.9642 ~, 1 ~ 0.8251 } +\tl_const:cn { c__color_model_whitepoint_cielab_d55_tl } { 0.9568 ~ 1 ~ 0.9214 } +\tl_const:cn { c__color_model_whitepoint_cielab_d65_tl } { 0.9504 ~ 1 ~ 1.0888 } +\tl_const:cn { c__color_model_whitepoint_cielab_d75_tl } { 0.9497 ~ 1 ~ 1.2261 } +\tl_const:Nn \c__color_model_range_cielab_tl { -128 ~ 127 ~ -128 ~ 127 } +\cs_new_protected:Npn \color_model_new:nnn #1#2#3 + { + \exp_args:Nee \__color_model_new:nnn + { \tl_to_str:n {#1} } + { \str_foldcase:n {#2} } {#3} + } +\cs_new_protected:Npn \__color_model_new:nnn #1#2#3 + { + \cs_if_exist:cTF { __color_parse_model_ #1 :w } + { + \__kernel_msg_error:nnn { color } { model-already-defined } {#1} + } + { + \cs_if_exist:cTF { __color_model_ #2 :n } + { + \prop_set_from_keyval:Nn \l__color_internal_prop {#3} + \use:c { __color_model_ #2 :n } {#1} + } + { + \__kernel_msg_error:nnn { color } { unknown-model-type } {#2} + } + } + } +\cs_new_protected:Npn \__color_model_separation:n #1 + { + \prop_get:NnNTF \l__color_internal_prop { name } + \l__color_internal_tl + { + \exp_args:NV \__color_model_separation:nn + \l__color_internal_tl {#1} + } + { + \__kernel_msg_error:nnn { color } + { separation-requires-name } {#1} + } + } +\cs_new_protected:Npn \__color_model_separation:nn #1#2 + { + \prop_get:NnNTF \l__color_internal_prop { alternative-model } + \l__color_internal_tl + { + \exp_args:NV \__color_model_separation:nnn + \l__color_internal_tl {#2} {#1} + } + { + \__kernel_msg_error:nnn { color } + { separation-alternative-model } {#2} + } + } +\cs_new_protected:Npn \__color_model_separation:nnn #1#2#3 + { + \cs_if_exist:cTF { __color_model_separation_ #1 :nnnnnn } + { + \prop_get:NnNTF \l__color_internal_prop { alternative-values } + \l__color_internal_tl + { + \exp_after:wN \__color_model_separation:w \l__color_internal_tl + , 0 , 0 , 0 , 0 \s__color_stop {#2} {#3} {#1} + } + { + \__kernel_msg_error:nnn { color } + { separation-alternative-values } {#2} + } + } + { + \__kernel_msg_error:nnn { color } + { unknown-alternative-model } {#1} + } + } +\cs_new_protected:Npn \__color_model_separation:w + #1 , #2 , #3 , #4 , #5 \s__color_stop #6#7#8 + { + \int_gincr:N \g__color_separation_int + \tl_const:cn { c__color_fallback_ #6 _tl } { 1 } + \cs_new_eq:cN { __color_parse_mix_ #6 :nw } \__color_parse_mix_gray:nw + \cs_new:cpn { __color_parse_model_ #6 :w } ##1 , ##2 \s__color_stop + { {#6} { \__color_parse_number:n {##1} } } + \clist_map_inline:nn { fill , stroke , select } + { + \cs_new_protected:cpx { __color_backend_ ##1 _ #6 :n } ####1 + { + \exp_not:c { __color_backend_ ##1 _ separation:nn } + { color \int_use:N \g__color_separation_int } {####1} + } + } + \use:c { __color_model_separation_ #8 :nnnnnn } + {#6} {#7} {#1} {#2} {#3} {#4} + \cs_new_protected:cpx { __color_model_ #6 _white: } + { + \prop_put:Nnn \exp_not:N \l__color_named_white_prop {#6} { 0 } + \exp_not:N \int_compare:nNnF { \tex_currentgrouplevel:D } = 0 + { \group_insert_after:N \exp_not:c { __color_model_ #6 _ white: } } + } + \use:c { __color_model_ #6 _white: } + } +\cs_new_protected:Npn \__color_model_separation_cmyk:nnnnnn #1#2#3#4#5#6 + { + \cs_new:cpn { __color_convert_ #1 _cmyk:w } ##1 ~ ##2 \s__color_stop + { + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #4} ~ + \fp_eval:n {##1 * #5} ~ + \fp_eval:n {##1 * #6} + } + \__color_model_convert:nnn {#1} { cmyk } { rgb } + \__color_model_convert:nnn {#1} { cmyk } { gray } + \__color_model_separation_init:nnnnn {#2} { /DeviceCMYK } { } + { 0 ~ 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 ~ #6 } + } +\cs_new_protected:Npn \__color_model_separation_rgb:nnnnnn #1#2#3#4#5#6 + { + \cs_new:cpn { __color_convert_ #1 _rgb:w } ##1 ~ ##2 \s__color_stop + { + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #4} ~ + \fp_eval:n {##1 * #5} + } + \__color_model_convert:nnn {#1} { rgb } { cmyk } + \__color_model_convert:nnn {#1} { rgb } { gray } + \__color_model_separation_init:nnnnn {#2} { /DeviceRGB } { } + { 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 } + } +\cs_new_protected:Npn \__color_model_separation_gray:nnnnnn #1#2#3#4#5#6 + { + \cs_new:cpn { __color_convert_ #1 _cmyk:w } ##1 ~ ##2 \s__color_stop + { + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #3} + } + \cs_new:cpn { __color_convert_ #1 _gray:w } ##1 ~ ##2 \s__color_stop + { \fp_eval:n {##1 * #3} } + \cs_new:cpn { __color_convert_ #1 _rgb:w } ##1 ~ ##2 \s__color_stop + { + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #3} ~ + \fp_eval:n {##1 * #3} + } + \__color_model_separation_init:nnnnn {#2} { /DeviceGray } { } { 0 } {#3} + } +\cs_new_protected:Npn \__color_model_convert:nnn #1#2#3 + { + \cs_new:cpx { __color_convert_ #1 _ #3 :w } ##1 ~ ##2 \s__color_stop + { + \exp_not:N \exp_args:NNe \exp_not:N \use:nn + \exp_not:c { __color_convert_ #2 _ #3 :w } + { \exp_not:c { __color_convert_ #1 _ #2 :w } ##1 ~ ##2 \s__color_stop } + \c_space_tl \exp_not:N \s__color_stop + } + } +\cs_new_protected:Npn \__color_model_separation_cielab:nnnnnn #1#2#3#4#5#6 + { + \prop_get:NnNF \l__color_internal_prop { illuminant } + \l__color_internal_tl + { + \__kernel_msg_error:nnn { color } + { cielab-requires-illuminant } {#1} + \tl_set:Nn \l__color_internal_tl { d50 } + } + \exp_args:NV \__color_model_separation_cielab:nnnnnnn + \l__color_internal_tl {#1} {#2} {#3} {#4} {#5} {#6} + } +\cs_new_protected:Npn \__color_model_separation_cielab:nnnnnnn #1#2#3#4#5#6#7 + { + \tl_if_exist:cTF { c__color_model_whitepoint_cielab_ #1 _tl } + { + \__color_model_separation_init_cielab:n {#1} + \__color_model_separation_init_cielab:nnnnn {#2} {#3} {#4} {#5} {#6} + \cs_new:cpn { __color_convert_ #2 _cmyk:w } ##1 ~ ##2 \s__color_stop + { 0 ~ 0 ~ 0 ~ 1 } + \cs_new:cpn { __color_convert_ #2 _rgb:w } ##1 ~ ##2 \s__color_stop + { 1 ~ 1 ~ 1 } + \cs_new:cpn { __color_convert_ #2 _gray:w } ##1 ~ ##2 \s__color_stop + { 1 } + } + { + \__kernel_msg_error:nnn { color } + { unknown-cielab-illuminant } {#1} + } + } +\cs_new_protected:Npn \__color_model_separation_init:nnnnn #1#2#3#4#5 + { + \pdf_object_now:nx { array } + { + /Separation + / \str_convert_pdfname:n {#1} ~ #2 ~ + << + /FunctionType ~ 2 + /Domain ~ [0 ~ 1] + \tl_if_blank:nF {#3} { /Range ~ [#3] } + /C0 ~ [#4] ~ + /C1 ~ [#5] /N ~ 1 + >> + } + \use:x + { + \pdfcoredict_gput:nnn + { Page / Resources / ColorSpace } + { color \int_use:N \g__color_separation_int } + { \pdf_object_last: } + } + } +\cs_if_exist:NF \pdf_object_now:nn + { \cs_gset_protected:Npn \__color_model_separation_init:nnnnn #1#2#3#4#5 { } } +\cs_new_protected:Npn \__color_model_separation_init_cielab:n #1 + { + \pdf_object_new:nn { __color_illuminant_cielab_ #1 } { array } + \pdf_object_write:nx { __color_illuminant_cielab_ #1 } + { + /Lab ~ + << + /WhitePoint ~ + [ \tl_use:c { c__color_model_whitepoint_cielab_ #1 _tl } ] + /Range ~ [ \c__color_model_range_lab_tl ] + >> + } + } +\cs_if_exist:NF \pdf_object_new:nn + { \cs_gset_protected:Npn \__color_model_separation_init_cielab:n #1 { } } +\cs_new_protected:Npn \__color_model_separation_init_cielab:nnnnn #1#2#3#4#5 + { + \__color_model_separation_init:nnnnn + {#2} + { \pdf_object_ref:n { __color_illuminant_cielab_ #1 } } + { \c__color_model_range_lab_tl } + { 100 ~ 0 ~ 0 } + { #3 ~ #4 ~ #5 } + } \cs_new_protected:Npn \color_show:n #1 { \msg_show:nnxxxx { LaTeX / color } { show } @@ -616,24 +881,94 @@ { \msg_show_item_unbraced:nn { model } {#1} } +\__kernel_msg_new:nnnn { color } { cielab-requires-illuminant } + { CIELAB~color~space~'#1'~require~an~illuminant. } + { + LaTeX~has~been~asked~to~create~a~separation~color~space~using~ + CIELAB~specifications,~but~no~\\ \\ + \iow_indent:n { illuminant = <basis> } + \\ \\ + key~was~given~with~the~correct~information.~LaTeX~will~use~illuminant~ + 'd50'~for~recovery. + } +\__kernel_msg_new:nnnn { color } { conversion-not-available } + { No~model~conversion~available~from~'#1'~to~'#2'. } + { + LaTeX~has~been~asked~to~convert~a~color~from~model~'#1'~ + to~model'#2',~but~there~is~no~method~available~to~do~that. + } +\__kernel_msg_new:nnnn { color } { model-already-defined } + { Color~model~'#1'~already~defined. } + { + LaTeX~was~asked~to~define~a~new~color~model~called~'#1',~but~ + this~color~model~already~exists. + } +\__kernel_msg_new:nnnn { color } { separation-alternative-model } + { Separation~color~space~'#1'~require~an~alternative~model. } + { + LaTeX~has~been~asked~to~create~a~separation~color~space,~ + but~no~\\ \\ + \iow_indent:n { alternative-model = <model> } + \\ \\ + key~was~given~with~the~correct~information. + } +\__kernel_msg_new:nnnn { color } { separation-alternative-values } + { Separation~color~space~'#1'~require~values~for~the~alternative~space. } + { + LaTeX~has~been~asked~to~create~a~separation~color~space,~ + but~no~\\ \\ + \iow_indent:n { alternative-values = <model> } + \\ \\ + key~was~given~with~the~correct~information. + } +\__kernel_msg_new:nnnn { color } { separation-requires-name } + { Separation~color~space~'#1'~require~a~formal~name. } + { + LaTeX~has~been~asked~to~create~a~separation~color~space,~ + but~no~\\ \\ + \iow_indent:n { name = <formal~name> } + \\ \\ + key~was~given~with~the~correct~information. + } \__kernel_msg_new:nnnn { color } { unknown-color } { Unknown~color~'#1'. } { LaTeX~has~been~asked~to~use~a~color~named~'#1',~ but~this~has~never~been~defined. } +\__kernel_msg_new:nnnn { color } { unknown-alternative-model } + { Separation~color~space~'#1'~require~an~valid~alternative~space. } + { + LaTeX~has~been~asked~to~create~a~separation~color~space,~ + but~the~model~given~as\\ \\ + \iow_indent:n { alternative-model = <model> } + \\ \\ + is~unknown. + } \__kernel_msg_new:nnnn { color } { unknown-export-format } { Unknown~export~format~'#1'. } { LaTeX~has~been~asked~to~export~a~color~in~format~'#1',~ but~this~has~never~been~defined. } +\__kernel_msg_new:nnnn { color } { unknown-cielab-illuminant } + { Unknown~illuminant~model~'#1'. } + { + LaTeX~has~been~asked~to~use~create~a~color~space~using~CIELAB~ + illuminant~'#1',~but~this~does~not~exist. + } \__kernel_msg_new:nnnn { color } { unknown-model } { Unknown~color~model~'#1'. } { LaTeX~has~been~asked~to~use~a~color~model~called~'#1',~ but~this~model~is~not~set~up. } +\__kernel_msg_new:nnnn { color } { unknown-model-type } + { Unknown~color~model~type~'#1'. } + { + LaTeX~has~been~asked~to~create~a~new~color~model~called~'#1',~ + but~this~type~of~model~was~never~set~up. + } \__kernel_msg_new:nnn { color } { show } { The~color~#1~ diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty index 44b5e3b83c9..442ef0d914d 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty @@ -28,7 +28,7 @@ %% %% File: l3draw.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3draw}{2020-07-17}{} +\ProvidesExplPackage{l3draw}{2020-08-07}{} {L3 Experimental core drawing support} \RequirePackage { l3color } \scan_new:N \s__draw_mark @@ -1242,7 +1242,7 @@ \draw_transform_shift_reset: \__draw_softpath_clear: \draw_linewidth:n { \l_draw_default_linewidth_dim } - \draw_color:n { . } + \color_select:n { . } \draw_nonzero_rule: \draw_cap_butt: \draw_join_miter: @@ -1686,19 +1686,6 @@ \cs_new_protected:Npn \draw_join_bevel: { \__draw_backend_join_bevel: } \cs_new_protected:Npn \draw_join_miter: { \__draw_backend_join_miter: } \cs_new_protected:Npn \draw_join_round: { \__draw_backend_join_round: } -\tl_new:N \l__draw_color_tmp_tl -\cs_new_eq:NN \draw_color:n \color_select:n -\cs_new_protected:Npn \draw_color_fill:n #1 - { \__draw_color:nn { fill } {#1} } -\cs_new_protected:Npn \draw_color_stroke:n #1 - { \__draw_color:nn { stroke } {#1} } -\cs_new_protected:Npn \__draw_color:nn #1#2 - { - \color_export:nnN {#2} { backend } \l__draw_color_tmp_tl - \exp_after:wN \__draw_color:nnn \l__draw_color_tmp_tl {#1} - } -\cs_new_protected:Npn \__draw_color:nnn #1#2#3 - { \use:c { __draw_backend_color_ #3 _ #1 :n } {#2} } %% File: l3draw-transforms.dtx \bool_new:N \l__draw_matrix_active_bool \fp_new:N \l__draw_matrix_a_fp diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty index 159aa00c175..ce0665a29ce 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty @@ -20,7 +20,7 @@ %% %% File: l3graphics.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3graphics}{2020-07-17}{} +\ProvidesExplPackage{l3graphics}{2020-08-07}{} {L3 Experimental graphics inclusion support} \ior_new:N \l__graphics_tmp_ior \tl_new:N \l__graphics_tmp_tl diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty b/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty index d73a05c7a17..bb5772c97e8 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty @@ -20,7 +20,7 @@ %% %% File: l3pdf.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3pdf}{2020-07-17}{} +\ProvidesExplPackage{l3pdf}{2020-08-07}{} {L3 Experimental core PDF support} \scan_new:N \s__pdf_stop \bool_new:N \g__pdf_init_bool diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty index 3137cb8f981..bd5c500e1aa 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty @@ -20,7 +20,7 @@ %% %% File: l3str-format.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3str-format}{2020-07-17}{} +\ProvidesExplPackage{l3str-format}{2020-08-07}{} {L3 Experimental string formatting} \cs_generate_variant:Nn \use:nn { nf } \cs_generate_variant:Nn \use:nnn { fnf } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty index 6270bb99cf8..419d1734ce1 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty @@ -20,7 +20,7 @@ %% %% File: l3sys-shell.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3sys-shell}{2020-07-17}{} +\ProvidesExplPackage{l3sys-shell}{2020-08-07}{} {L3 Experimental system shell functions} \scan_new:N \s__sys_stop \quark_new:N \q__sys_nil diff --git a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty index bdcbd292634..435b6ddf396 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty @@ -20,7 +20,7 @@ %% %% File: xcoffins.dtx \RequirePackage{xparse} -\ProvidesExplPackage{xcoffins}{2020-07-17}{} +\ProvidesExplPackage{xcoffins}{2020-08-07}{} {L3 Experimental design level coffins} \keys_define:nn { coffin } { diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty index 007cd6febd6..3377bcd000d 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{l3galley}{2020-07-17}{} +\ProvidesExplPackage{l3galley}{2020-08-07}{} {L3 Experimental galley code} \int_new:N \l__galley_tmp_int \seq_new:N \g__galley_tmpa_seq @@ -356,7 +356,9 @@ } \cs_undefine:N \everypar \newtoks \everypar -\AtBeginDocument +\cs_if_exist:NTF \AtBeginDocument + { \AtBeginDocument } + { \use:n } { \tex_everypar:D { diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty index cfdab78c975..e4cd26aaa37 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty @@ -20,7 +20,7 @@ %% %% File: xgalley.dtx \RequirePackage{xparse} -\ProvidesExplPackage{xgalley}{2020-07-17}{} +\ProvidesExplPackage{xgalley}{2020-08-07}{} {L3 Experimental galley} \RequirePackage{xparse,xtemplate,l3galley} \clist_new:N \l__galley_tmpa_clist diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 6779946f1f0..007e6bbfaad 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -69,7 +69,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2020-07-17}% +\def\ExplFileDate{2020-08-07}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -241,10 +241,9 @@ \fi \expandafter\endgroup \next -\protected\def\ExplSyntaxOff{}% \protected\edef\ExplSyntaxOff {% - \protected\def\ExplSyntaxOff{}% + \protected\def\noexpand\ExplSyntaxOff{}% \catcode 9 = \the\catcode 9\relax \catcode 32 = \the\catcode 32\relax \catcode 34 = \the\catcode 34\relax @@ -306,9 +305,7 @@ \let \tex_let:D \let \begingroup \long \def \__kernel_primitive:NN #1#2 - { - \tex_global:D \tex_let:D #2 #1 - } + { \tex_global:D \tex_let:D #2 #1 } \__kernel_primitive:NN \ \tex_space:D \__kernel_primitive:NN \/ \tex_italiccorrection:D \__kernel_primitive:NN \- \tex_hyphen:D @@ -9509,6 +9506,7 @@ } } } +\int_gset:Nn \tex_errorcontextlines:D { -1 } \cs_new:Npn \msg_fatal_text:n #1 { Fatal ~ @@ -9897,6 +9895,7 @@ { \exp_not:c { #1 :nnxxxx } {##1} {##2} {##3} { } { } { } } } \__msg_kernel_class_new:nN { fatal } \__msg_fatal_code:nnnnnn + \__msg_kernel_class_new:nN { critical } \__msg_critical_code:nnnnnn \cs_undefine:N \__kernel_msg_error:nnxx \cs_undefine:N \__kernel_msg_error:nnx \cs_undefine:N \__kernel_msg_error:nn @@ -10135,13 +10134,13 @@ } { . } } \__kernel_msg_new:nnnn { kernel } { enable-debug } - { To~use~'#1'~load~expl3~with~the~'enable-debug'~option. } + { To~use~'#1'~set~the~'enable-debug'~option. } { - The~function~'#1'~will~be~ignored~because~it~can~only~work~if~ + The~function~'#1'~will~be~ignored~because~it~can~only~work~if~ some~internal~functions~in~expl3~have~been~appropriately~ defined.~This~only~happens~if~one~of~the~options~ - 'enable-debug',~'check-declarations'~or~'log-functions'~was~ - given~when~loading~expl3. + 'enable-debug',~'check-declarations'~or~'log-functions'~was~ + given~as~an~option:~see~the~main~expl3~documentation. } \__kernel_msg_new:nnn { kernel } { bad-exp-end-f } { Misused~\exp_end_continue_f:w or~:nw } @@ -11737,20 +11736,6 @@ #1 \\ ............. } -\__kernel_msg_new:nnnn { kernel } { input-streams-exhausted } - { Input~streams~exhausted } - { - TeX~can~only~open~up~to~16~input~streams~at~one~time.\\ - All~16~are~currently~in~use,~and~something~wanted~to~open~ - another~one. - } -\__kernel_msg_new:nnnn { kernel } { output-streams-exhausted } - { Output~streams~exhausted } - { - TeX~can~only~open~up~to~16~output~streams~at~one~time.\\ - All~16~are~currently~in~use,~and~something~wanted~to~open~ - another~one. - } \__kernel_msg_new:nnnn { kernel } { unbalanced-quote-in-filename } { Unbalanced~quotes~in~file~name~'#1'. } { @@ -12513,14 +12498,11 @@ \bool_new:N \l__keys_tmp_bool \tl_new:N \l__keys_tmpa_tl \tl_new:N \l__keys_tmpb_tl +\scan_new:N \s__keys_nil +\scan_new:N \s__keys_mark \scan_new:N \s__keys_stop -\quark_new:N \q__keys_nil \quark_new:N \q__keys_no_value -\__kernel_quark_new_conditional:Nn \__keys_quark_if_nil:n { TF } \__kernel_quark_new_conditional:Nn \__keys_quark_if_no_value:N { TF } -\quark_new:N \q__keys_recursion_tail -\quark_new:N \q__keys_recursion_stop -\__kernel_quark_new_test:N \__keys_if_recursion_tail_stop:n \cs_new_protected:Npn \keys_define:nn { \__keys_define:onn \l__keys_module_str } \cs_new_protected:Npn \__keys_define:nnn #1#2#3 @@ -12549,52 +12531,49 @@ \str_if_empty:NF \l__keys_property_str { \__kernel_msg_error:nnxx { kernel } { key-property-unknown } - { \l__keys_property_str } { \l_keys_path_str } + \l__keys_property_str \l_keys_path_str } } } \cs_new_protected:Npn \__keys_property_find:n #1 { - \str_set:Nx \l__keys_property_str { \__keys_trim_spaces:n {#1} } - \exp_after:wN \__keys_property_find:w \l__keys_property_str . . - \s__keys_stop {#1} + \cs_set_nopar:Npx \l__keys_property_str { \__keys_trim_spaces:n { #1 } } + \exp_after:wN \__keys_property_find_auxi:w \l__keys_property_str + \s__keys_nil \__keys_property_find_auxii:w + . \s__keys_nil \__keys_property_find_err:w } -\cs_new_protected:Npn \__keys_property_find:w #1 . #2 . #3 \s__keys_stop #4 +\cs_new_protected:Npn \__keys_property_find_auxi:w #1 . #2 \s__keys_nil #3 { - \tl_if_blank:nTF {#3} - { - \str_clear:N \l__keys_property_str - \__kernel_msg_error:nnn { kernel } { key-no-property } {#4} - } - { - \str_if_eq:nnTF {#3} { . } - { - \str_set:Nx \l_keys_path_str - { - \str_if_empty:NF \l__keys_module_str - { \l__keys_module_str / } - \tl_trim_spaces:n {#1} - } - \str_set:Nn \l__keys_property_str { . #2 } - } - { - \str_set:Nx \l_keys_path_str { \l__keys_module_str / #1 . #2 } - \__keys_property_search:w #3 \s__keys_stop - } - \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str - } + #3 #1 \s__keys_mark #2 \s__keys_nil #3 } -\cs_new_protected:Npn \__keys_property_search:w #1 . #2 \s__keys_stop +\cs_new_protected:Npn \__keys_property_find_auxii:w + #1 \s__keys_mark #2 \s__keys_nil \__keys_property_find_auxii:w . \s__keys_nil + \__keys_property_find_err:w { - \str_if_eq:nnTF {#2} { . } - { - \str_set:Nx \l_keys_path_str { \l_keys_path_str } - \str_set:Nn \l__keys_property_str { . #1 } - } - { - \str_set:Nx \l_keys_path_str { \l_keys_path_str . #1 } - \__keys_property_search:w #2 \s__keys_stop - } + \cs_set_nopar:Npx \l_keys_path_str + { \str_if_empty:NF \l__keys_module_str { \l__keys_module_str / } #1 } + \__keys_property_find_auxi:w #2 \s__keys_nil \__keys_property_find_auxiii:w . \s__keys_nil + \__keys_property_find_auxiv:w + } +\cs_new_protected:Npn \__keys_property_find_auxiii:w #1 \s__keys_mark + { + \cs_set_nopar:Npx \l_keys_path_str { \l_keys_path_str . #1 } + \__keys_property_find_auxi:w + } +\cs_new_protected:Npn \__keys_property_find_auxiv:w + #1 \s__keys_nil \__keys_property_find_auxiii:w + \s__keys_mark \s__keys_nil \__keys_property_find_auxiv:w + { + \cs_set_nopar:Npx \l__keys_property_str { . #1 } + \cs_set_nopar:Npx \l_keys_path_str + { \exp_after:wN \__keys_trim_spaces:n \exp_after:wN { \l_keys_path_str } } + \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str + } +\cs_new_protected:Npn \__keys_property_find_err:w + #1 \s__keys_nil #2 \__keys_property_find_err:w + { + \str_clear:N \l__keys_property_str + \__kernel_msg_error:nnn { kernel } { key-no-property } {#1} } \cs_new_protected:Npn \__keys_define_code:n #1 { @@ -12604,9 +12583,8 @@ \l__keys_property_str \s__keys_stop { \use:c { \c__keys_props_root_str \l__keys_property_str } } { - \__kernel_msg_error:nnxx { kernel } - { key-property-requires-value } { \l__keys_property_str } - { \l_keys_path_str } + \__kernel_msg_error:nnxx { kernel } { key-property-requires-value } + \l__keys_property_str \l_keys_path_str } } { \use:c { \c__keys_props_root_str \l__keys_property_str } {#1} } @@ -12625,7 +12603,7 @@ \__keys_cmd_set:nn { \l_keys_path_str / unknown } { \__kernel_msg_error:nnx { kernel } { boolean-values-only } - { \l_keys_key_str } + \l_keys_key_str } \__keys_default_set:n { true } } @@ -12641,7 +12619,7 @@ \__keys_cmd_set:nn { \l_keys_path_str / unknown } { \__kernel_msg_error:nnx { kernel } { boolean-values-only } - { \l_keys_key_str } + \l_keys_key_str } \__keys_default_set:n { true } } @@ -12660,7 +12638,7 @@ { choice } { \__kernel_msg_error:nnxx { kernel } { nested-choice-key } - { \l_keys_path_tl } { \__keys_parent:o \l_keys_path_str } + \l_keys_path_tl { \__keys_parent:o \l_keys_path_str } } { \__keys_choice_make_aux:N #1 } } @@ -12670,11 +12648,11 @@ { \cs_set_nopar:cpn { \c__keys_type_root_str \l_keys_path_str } { choice } - \__keys_cmd_set:nn { \l_keys_path_str } { #1 {##1} } + \__keys_cmd_set:nn \l_keys_path_str { #1 {##1} } \__keys_cmd_set:nn { \l_keys_path_str / unknown } { \__kernel_msg_error:nnxx { kernel } { key-choice-unknown } - { \l_keys_path_str } {##1} + \l_keys_path_str {##1} } } \cs_new_protected:Npn \__keys_choices_make:nn @@ -12748,15 +12726,15 @@ { \__keys_execute_inherit: } { \str_clear:N \l__keys_inherit_str - \cs_if_exist_use:cT { \c__keys_code_root_str \l_keys_path_str } { {#1} } + \cs_if_exist:cT { \c__keys_code_root_str \l_keys_path_str } + { \__keys_execute:nn \l_keys_path_str {#1} } } } \cs_new_protected:Npn \__keys_meta_make:n #1 { \__keys_cmd_set:Vo \l_keys_path_str { - \exp_after:wN \keys_set:nn - \exp_after:wN { \l__keys_module_str } {#1} + \exp_after:wN \keys_set:nn \exp_after:wN { \l__keys_module_str } {#1} } } \cs_new_protected:Npn \__keys_meta_make:nn #1#2 @@ -12764,11 +12742,9 @@ \cs_new_protected:Npn \__keys_prop_put:Nn #1#2 { \prop_if_exist:NF #1 { \prop_new:N #1 } - \exp_after:wN \__keys_find_key_module:NNw - \exp_after:wN \l__keys_tmpa_tl - \exp_after:wN \l__keys_tmpb_tl - \l_keys_path_str / \s__keys_stop - \__keys_cmd_set:nx { \l_keys_path_str } + \exp_after:wN \__keys_find_key_module:wNN \l_keys_path_str \s__keys_stop + \l__keys_tmpa_tl \l__keys_tmpb_tl + \__keys_cmd_set:nx \l_keys_path_str { \exp_not:c { prop_ #2 put:Nnn } \exp_not:N #1 @@ -12820,8 +12796,8 @@ \bool_if:NF \l__keys_no_value_bool { \__kernel_msg_error:nnxx { kernel } { value-forbidden } - { \l_keys_path_str } { \l_keys_value_tl } - \__keys_validate_cleanup:w + \l_keys_path_str \l_keys_value_tl + \use_none:nnn } } \cs_new_protected:Npn \__keys_validate_required: @@ -12829,15 +12805,14 @@ \bool_if:NT \l__keys_no_value_bool { \__kernel_msg_error:nnx { kernel } { value-required } - { \l_keys_path_str } - \__keys_validate_cleanup:w + \l_keys_path_str + \use_none:nnn } } -\cs_new_protected:Npn \__keys_validate_cleanup:w #1 \cs_end: #2#3 { } \cs_new_protected:Npn \__keys_variable_set:NnnN #1#2#3#4 { \use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 } - \__keys_cmd_set:nx { \l_keys_path_str } + \__keys_cmd_set:nx \l_keys_path_str { \exp_not:c { #2 _ #3 set:N #4 } \exp_not:N #1 @@ -12878,7 +12853,7 @@ \cs_new_protected:cpn { \c__keys_props_root_str .choices:xn } #1 { \exp_args:Nx \__keys_choices_make:nn #1 } \cs_new_protected:cpn { \c__keys_props_root_str .code:n } #1 - { \__keys_cmd_set:nn { \l_keys_path_str } {#1} } + { \__keys_cmd_set:nn \l_keys_path_str {#1} } \cs_new_protected:cpn { \c__keys_props_root_str .clist_set:N } #1 { \__keys_variable_set:NnnN #1 { clist } { } n } \cs_new_protected:cpn { \c__keys_props_root_str .clist_set:c } #1 @@ -13039,7 +13014,7 @@ \cs_new_protected:Npn \keys_set_known:nnN #1#2#3 { \exp_args:No \__keys_set_known:nnnnN - \l__keys_unused_clist { \q__keys_no_value } {#1} {#2} #3 + \l__keys_unused_clist \q__keys_no_value {#1} {#2} #3 } \cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , no } \cs_new_protected:Npn \keys_set_known:nnnN #1#2#3#4 @@ -13052,11 +13027,11 @@ { \clist_clear:N \l__keys_unused_clist \__keys_set_known:nnn {#2} {#3} {#4} - \tl_set:Nx #5 { \exp_not:o { \l__keys_unused_clist } } + \tl_set:Nx #5 { \exp_not:o \l__keys_unused_clist } \tl_set:Nn \l__keys_unused_clist {#1} } \cs_new_protected:Npn \keys_set_known:nn #1#2 - { \__keys_set_known:nnn { \q__keys_no_value } {#1} {#2} } + { \__keys_set_known:nnn \q__keys_no_value {#1} {#2} } \cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no } \cs_new_protected:Npn \__keys_set_known:nnn #1#2#3 { @@ -13081,7 +13056,7 @@ { \exp_args:No \__keys_set_filter:nnnnnN \l__keys_unused_clist - { \q__keys_no_value } {#1} {#2} {#3} #4 + \q__keys_no_value {#1} {#2} {#3} #4 } \cs_generate_variant:Nn \keys_set_filter:nnnN { nnV , nnv , nno } \cs_new_protected:Npn \keys_set_filter:nnnnN #1#2#3#4#5 @@ -13094,11 +13069,11 @@ { \clist_clear:N \l__keys_unused_clist \__keys_set_filter:nnnn {#2} {#3} {#4} {#5} - \tl_set:Nx #6 { \exp_not:o { \l__keys_unused_clist } } + \tl_set:Nx #6 { \exp_not:o \l__keys_unused_clist } \tl_set:Nn \l__keys_unused_clist {#1} } \cs_new_protected:Npn \keys_set_filter:nnn #1#2#3 - {\__keys_set_filter:nnnn { \q__keys_no_value } {#1} {#2} {#3} } + {\__keys_set_filter:nnnn \q__keys_no_value {#1} {#2} {#3} } \cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno } \cs_new_protected:Npn \__keys_set_filter:nnnn #1#2#3#4 { @@ -13168,30 +13143,41 @@ } \str_clear:N \l__keys_module_str \str_clear:N \l__keys_inherit_str - \exp_after:wN \__keys_find_key_module:NNw - \exp_after:wN \l__keys_module_str - \exp_after:wN \l_keys_key_str - \l_keys_path_str / \s__keys_stop + \exp_after:wN \__keys_find_key_module:wNN \l_keys_path_str \s__keys_stop + \l__keys_module_str \l_keys_key_str \tl_set_eq:NN \l_keys_key_tl \l_keys_key_str \__keys_value_or_default:n {#3} \bool_if:NTF \l__keys_selective_bool - { \__keys_set_selective: } - { \__keys_execute: } + \__keys_set_selective: + \__keys_execute: \str_set:Nn \l__keys_module_str {#1} } \cs_generate_variant:Nn \__keys_set_keyval:nnn { o } -\cs_new_protected:Npn \__keys_find_key_module:NNw #1#2#3 / #4 \s__keys_stop +\cs_new_protected:Npn \__keys_find_key_module:wNN #1 \s__keys_stop #2 #3 { - \tl_if_blank:nTF {#4} - { \str_set:Nn #2 {#3} } - { - \str_put_right:Nx #1 - { - \str_if_empty:NF #1 { / } - #3 - } - \__keys_find_key_module:NNw #1#2 #4 \s__keys_stop - } + \__keys_find_key_module_auxi:Nw #2 #1 \s__keys_nil \__keys_find_key_module_auxii:Nw + / \s__keys_nil \__keys_find_key_module_auxiv:Nw #3 + } +\cs_new_protected:Npn \__keys_find_key_module_auxi:Nw #1 #2 / #3 \s__keys_nil #4 + { + #4 #1 #2 \s__keys_mark #3 \s__keys_nil #4 + } +\cs_new_protected:Npn \__keys_find_key_module_auxii:Nw + #1 #2 \s__keys_mark #3 \s__keys_nil \__keys_find_key_module_auxii:Nw + { + \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 } + \__keys_find_key_module_auxi:Nw #1 #3 \s__keys_nil \__keys_find_key_module_auxiii:Nw + } +\cs_new_protected:Npn \__keys_find_key_module_auxiii:Nw #1 #2 \s__keys_mark + { + \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 } + \__keys_find_key_module_auxi:Nw #1 + } +\cs_new_protected:Npn \__keys_find_key_module_auxiv:Nw + #1 #2 \s__keys_nil #3 \s__keys_mark + \s__keys_nil \__keys_find_key_module_auxiv:Nw #4 + { + \cs_set_nopar:Npn #4 { #2 } } \cs_new_protected:Npn \__keys_set_selective: { @@ -13203,8 +13189,8 @@ } { \bool_if:NTF \l__keys_filtered_bool - { \__keys_execute: } - { \__keys_store_unused: } + \__keys_execute: + \__keys_store_unused: } } \cs_new_protected:Npn \__keys_check_groups: @@ -13217,20 +13203,20 @@ \str_if_eq:nnT {##1} {####1} { \bool_set_true:N \l__keys_tmp_bool - \clist_map_break:n { \seq_map_break: } + \clist_map_break:n \seq_map_break: } } } \bool_if:NTF \l__keys_tmp_bool { \bool_if:NTF \l__keys_filtered_bool - { \__keys_store_unused: } - { \__keys_execute: } + \__keys_store_unused: + \__keys_execute: } { \bool_if:NTF \l__keys_filtered_bool - { \__keys_execute: } - { \__keys_store_unused: } + \__keys_execute: + \__keys_store_unused: } } \cs_new_protected:Npn \__keys_value_or_default:n #1 @@ -13272,8 +13258,7 @@ \cs_if_exist:cTF { \c__keys_code_root_str \l_keys_path_str } { \cs_if_exist_use:c { \c__keys_validate_root_str \l_keys_path_str } - \cs:w \c__keys_code_root_str \l_keys_path_str \exp_after:wN \cs_end: - \exp_after:wN { \l_keys_value_tl } + \__keys_execute:no \l_keys_path_str \l_keys_value_tl } { \cs_if_exist:cTF @@ -13292,10 +13277,8 @@ { \str_set:Nn \l__keys_inherit_str {##1} \cs_if_exist_use:c { \c__keys_validate_root_str ##1 / \l_keys_key_str } - \cs:w \c__keys_code_root_str ##1 / \l_keys_key_str - \exp_after:wN \cs_end: \exp_after:wN - { \l_keys_value_tl } - \clist_map_break:n { \use_none:n } + \__keys_execute:no { ##1 / \l_keys_key_str } \l_keys_value_tl + \clist_map_break:n \use_none:n } } \__keys_execute_unknown: @@ -13307,24 +13290,22 @@ { \cs_if_exist:cTF { \c__keys_code_root_str \l__keys_module_str / unknown } - { - \cs:w \c__keys_code_root_str \l__keys_module_str / unknown - \exp_after:wN \cs_end: \exp_after:wN { \l_keys_value_tl } - } + { \__keys_execute:no { \l__keys_module_str / unknown } \l_keys_value_tl } { \__kernel_msg_error:nnxx { kernel } { key-unknown } - { \l_keys_path_str } { \l__keys_module_str } + \l_keys_path_str \l__keys_module_str } } } \cs_new:Npn \__keys_execute:nn #1#2 + { \__keys_execute:no {#1} { \prg_do_nothing: #2 } } +\cs_new:Npn \__keys_execute:no #1#2 { - \cs_if_exist:cTF { \c__keys_code_root_str #1 } + \exp_args:NNo \exp_args:No \use:n { \cs:w \c__keys_code_root_str #1 \exp_after:wN \cs_end: - \exp_after:wN { \l_keys_value_tl } + \exp_after:wN {#2} } - {#2} } \cs_new_protected:Npn \__keys_store_unused: { @@ -13332,7 +13313,7 @@ { \clist_put_right:Nx \l__keys_unused_clist { - \exp_not:o \l_keys_key_str + \l_keys_key_str \bool_if:NF \l__keys_no_value_bool { = { \exp_not:o \l_keys_value_tl } } } @@ -13342,7 +13323,7 @@ { \clist_put_right:Nx \l__keys_unused_clist { - \exp_not:o \l_keys_path_str + \l_keys_path_str \bool_if:NF \l__keys_no_value_bool { = { \exp_not:o \l_keys_value_tl } } } @@ -13386,7 +13367,7 @@ \cs_new:Npn \__keys_choice_find:n #1 { \str_if_empty:NTF \l__keys_inherit_str - { \__keys_choice_find:nn { \l_keys_path_str } {#1} } + { \__keys_choice_find:nn \l_keys_path_str {#1} } { \__keys_choice_find:nn { \l__keys_inherit_str / \l_keys_key_str } {#1} @@ -13395,46 +13376,63 @@ \cs_new:Npn \__keys_choice_find:nn #1#2 { \cs_if_exist:cTF { \c__keys_code_root_str #1 / \__keys_trim_spaces:n {#2} } - { \use:c { \c__keys_code_root_str #1 / \__keys_trim_spaces:n {#2} } {#2} } - { \use:c { \c__keys_code_root_str #1 / unknown } {#2} } + { \__keys_execute:nn { #1 / \__keys_trim_spaces:n {#2} } {#2} } + { \__keys_execute:nn { #1 / unknown } {#2} } } \cs_new:Npn \__keys_multichoice_find:n #1 { \clist_map_function:nN {#1} \__keys_choice_find:n } -\cs_new:Npn \__keys_parent:n #1 - { \__keys_parent:w #1 / / \s__keys_stop { } } -\cs_generate_variant:Nn \__keys_parent:n { o } -\cs_new:Npn \__keys_parent:w #1 / #2 / #3 \s__keys_stop #4 +\cs_new:Npn \__keys_parent:o #1 { - \tl_if_blank:nTF {#2} - { - \tl_if_blank:nF {#4} - { \use_none:n #4 } - } - { - \__keys_parent:w #2 / #3 \s__keys_stop { #4 / #1 } - } + \exp_after:wN \__keys_parent_auxi:w #1 \q_nil \__keys_parent_auxii:w + / \q_nil \__keys_parent_auxiv:w } -\cs_new:Npn \__keys_trim_spaces:n #1 +\cs_new:Npn \__keys_parent_auxi:w #1 / #2 \q_nil #3 { - \exp_after:wN \__keys_trim_spaces_auxi:w \tl_to_str:n {#1} - / \q__keys_nil \s__keys_stop + #3 { #1 } #2 \q_nil #3 } -\cs_new:Npn \__keys_trim_spaces_auxi:w #1 / #2 \s__keys_stop +\cs_new:Npn \__keys_parent_auxii:w #1 #2 \q_nil \__keys_parent_auxii:w + { + #1 \__keys_parent_auxi:w #2 \q_nil \__keys_parent_auxiii:n + } +\cs_new:Npn \__keys_parent_auxiii:n #1 + { + / #1 \__keys_parent_auxi:w + } +\cs_new:Npn \__keys_parent_auxiv:w #1 \q_nil \__keys_parent_auxiv:w { - \__keys_quark_if_nil:nTF {#2} - { \tl_trim_spaces:n {#1} } - { \__keys_trim_spaces_auxii:w #1 / #2 } } -\cs_new:Npn \__keys_trim_spaces_auxii:w #1 / #2 / \q__keys_nil +\group_begin: + \cs_set:Npn \__keys_tmp:n #1 + { + \cs_new:Npn \__keys_trim_spaces:n ##1 + { + \exp_after:wN \__keys_trim_spaces_auxi:w \tl_to_str:n { / ##1 } / + \s__keys_nil \__keys_trim_spaces_auxi:w + \s__keys_mark \__keys_trim_spaces_auxii:w + #1 / #1 + \s__keys_nil \__keys_trim_spaces_auxii:w + \s__keys_mark \__keys_trim_spaces_auxiii:w + } + } + \__keys_tmp:n { ~ } +\group_end: +\cs_new:Npn \__keys_trim_spaces_auxi:w #1 ~ / #2 \s__keys_nil #3 { - \tl_trim_spaces:n {#1} - \__keys_trim_spaces_auxiii:w #2 / \q__keys_recursion_tail / \q__keys_recursion_stop + #3 #1 / #2 \s__keys_nil #3 } -\cs_set:Npn \__keys_trim_spaces_auxiii:w #1 / +\cs_new:Npn \__keys_trim_spaces_auxii:w #1 / ~ #2 \s__keys_mark #3 { - \__keys_if_recursion_tail_stop:n {#1} - / \tl_trim_spaces:n { #1 } - \__keys_trim_spaces_auxiii:w + #3 #1 / #2 \s__keys_mark #3 + } +\cs_new:Npn \__keys_trim_spaces_auxiii:w + / #1 / + \s__keys_nil \__keys_trim_spaces_auxi:w + \s__keys_mark \__keys_trim_spaces_auxii:w + / + \s__keys_nil \__keys_trim_spaces_auxii:w + \s__keys_mark \__keys_trim_spaces_auxiii:w + { + #1 } \prg_new_conditional:Npnn \keys_if_exist:nn #1#2 { p , T , F , TF } { @@ -20124,7 +20122,11 @@ \__kernel_chk_if_free_cs:N #1 \__cctab_new:N #1 } - \cs_new_eq:NN \__cctab_new:N \newcatcodetable + \cs_new_protected:Npn \__cctab_new:N #1 + { + \newcatcodetable #1 + \tex_initcatcodetable:D #1 + } } { \cs_new_protected:Npn \__cctab_new:N #1 @@ -20348,6 +20350,13 @@ { \int_compare:nNnTF {#1-1} < { \e@alloc@ccodetable@count } } + \cs_if_exist:NT \c_syst_catcodes_n + { + \cs_gset_protected:Npn \__cctab_chk_if_valid_aux:NTF #1 + { + \int_compare:nTF { #1 <= \c_syst_catcodes_n } + } + } } { \cs_new_protected:Npn \__cctab_chk_if_valid_aux:NTF #1 @@ -26538,7 +26547,7 @@ \cs_new_protected:Npn \__color_select:N #1 { \exp_after:wN \__color_select:nn #1 } \cs_new_protected:Npn \__color_select:nn #1#2 - { \use:c { __color_backend_ #1 :n } {#2} } + { \use:c { __color_backend_select_ #1 :n } {#2} } \tl_new:N \l__color_current_tl \tl_set:Nn \l__color_current_tl { { gray } { 0 } } %% File: l3coffins.dtx @@ -26673,8 +26682,7 @@ #4 #1 { \dim_set:Nn \tex_hsize:D {#2} - \dim_set_eq:NN \linewidth \tex_hsize:D - \dim_set_eq:NN \columnwidth \tex_hsize:D + \__coffin_set_vertical_aux: #3 } #5 #1 @@ -26692,6 +26700,13 @@ \box_clear:N \l__coffin_internal_box } } +\cs_new_protected:Npx \__coffin_set_vertical_aux: + { + \cs_if_exist:NT \linewidth + { \dim_set_eq:NN \linewidth \tex_hsize:D } + \cs_if_exist:NT \columnwidth + { \dim_set_eq:NN \columnwidth \tex_hsize:D } + } \cs_new_protected:Npn \hcoffin_set:Nw #1 { \__coffin_if_exist:NT #1 @@ -26740,8 +26755,7 @@ { #3 #1 \dim_set:Nn \tex_hsize:D {#2} - \dim_set_eq:NN \linewidth \tex_hsize:D - \dim_set_eq:NN \columnwidth \tex_hsize:D + \__coffin_set_vertical_aux: \cs_set_protected:Npn #4 { #5 @@ -27571,15 +27585,42 @@ \dim_new:N \l__coffin_display_y_dim \prop_new:N \l__coffin_display_poles_prop \tl_new:N \l__coffin_display_font_tl -\tl_set:Nn \l__coffin_display_font_tl { \sffamily \tiny } -\cs_new_protected:Npn \__coffin_color:n #1 - { \cs_if_exist:NT \color { \color {#1} } } +\cs_if_exist:NTF \AtBeginDocument + { \AtBeginDocument } + { \use:n } + { + \tl_set:Nx \l__coffin_display_font_tl + { + \cs_if_exist:NT \sffamily { \exp_not:N \sffamily } + \cs_if_exist:NT \tiny { \exp_not:N \tiny } + } + } +\cs_if_exist:NTF \AtBeginDocument + { \AtBeginDocument } + { \use:n } + { + \cs_new_protected:Npx \__coffin_color:n #1 + { + \cs_if_exist:NTF \color_select:n + { \color_select:n {#1} } + { + \cs_if_exist:NT \color + { \exp_not:N \color {#1} } + } + } + } +\cs_new_protected:Npx \__coffin_rule:nn #1#2 + { + \cs_if_exist:NTF \rule + { \exp_not:N \rule {#1} {#2} } + { \hbox:n { \tex_vrule:D width #1 height #2 \scan_stop: } } + } \cs_new_protected:Npn \coffin_mark_handle:Nnnn #1#2#3#4 { \hcoffin_set:Nn \l__coffin_display_pole_coffin { \__coffin_color:n {#4} - \rule { 1pt } { 1pt } + \__coffin_rule:nn { 1pt } { 1pt } } \__coffin_attach_mark:NnnNnnnn #1 {#2} {#3} \l__coffin_display_pole_coffin { hc } { vc } { 0pt } { 0pt } @@ -27624,7 +27665,7 @@ \hcoffin_set:Nn \l__coffin_display_pole_coffin { \__coffin_color:n {#2} - \rule { 1pt } { 1pt } + \__coffin_rule:nn { 1pt } { 1pt } } \prop_set_eq:Nc \l__coffin_display_poles_prop { coffin ~ \__coffin_to_value:N #1 ~ poles } diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index fd282142ce5..45e33b3c026 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2020-07-17}% +\def\ExplFileDate{2020-08-07}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \def\tempa{LaTeX2e}% diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx index e9c2f3e0dd2..a17e63e2bfe 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx @@ -19,8 +19,10 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2020-07-17}% +\def\ExplFileDate{2020-08-07}% \let\ExplLoaderFileDate\ExplFileDate +\global\expandafter\let\csname\detokenize + {c__kernel_expl_date_tl}\endcsname\ExplFileDate \everyjob\expandafter{\the\everyjob \message{L3 programming layer <\ExplFileDate>}% } @@ -58,6 +60,36 @@ \expandafter\ifx\csname tex\string _let:D\endcsname\relax \expandafter\endinput \fi +\ifcsname\detokenize{c__kernel_expl_date_tl}\endcsname + \expandafter\ifx\csname\detokenize + {c__kernel_expl_date_tl}\endcsname\ExplLoaderFileDate + \else + \ExplSyntaxOn + \__kernel_msg_set:nnn { kernel } { mismatched-expl3 } + { + Mismatched~expl3~detected!~Loading~expl3~will~abort. + \\ \\ + The~version~of~expl3~preloaded~in~LaTeX~is~ + \c__kernel_expl_date_tl,~but~the~version~of~expl3~you~are~ + trying~to~load~is~dated~\ExplLoaderFileDate.~This~is~most~ + likely~due~to~a~stray~format~file~in~the~user~tree.~Please~ + make~sure~that~your~LaTeX~format~is~updated. + } + \exp_after:wN \ExplSyntaxOff \use:n + { + \__kernel_msg_critical:nn { kernel } { mismatched-expl3 } + \use:c { fi: } \use:c { fi: } + } + \fi +\else + \ifodd\csname\detokenize{l__kernel_expl_bool}\endcsname + \else + \ExplSyntaxOn + \bool_if_exist:NF \g__expl_reload_bool + { \bool_new:N \g__expl_reload_bool } + \ExplSyntaxOff + \fi +\fi \ifcsname\detokenize{g__expl_reload_bool}\endcsname \ExplSyntaxOn \bool_gset_true:N \g__expl_reload_bool diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index d42516b6d24..25ce52d3916 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2020-07-17}% +\def\ExplFileDate{2020-08-07}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% @@ -60,6 +60,36 @@ \expandafter\ifx\csname tex\string _let:D\endcsname\relax \expandafter\endinput \fi +\ifcsname\detokenize{c__kernel_expl_date_tl}\endcsname + \expandafter\ifx\csname\detokenize + {c__kernel_expl_date_tl}\endcsname\ExplLoaderFileDate + \else + \ExplSyntaxOn + \__kernel_msg_set:nnn { kernel } { mismatched-expl3 } + { + Mismatched~expl3~detected!~Loading~expl3~will~abort. + \\ \\ + The~version~of~expl3~preloaded~in~LaTeX~is~ + \c__kernel_expl_date_tl,~but~the~version~of~expl3~you~are~ + trying~to~load~is~dated~\ExplLoaderFileDate.~This~is~most~ + likely~due~to~a~stray~format~file~in~the~user~tree.~Please~ + make~sure~that~your~LaTeX~format~is~updated. + } + \exp_after:wN \ExplSyntaxOff \use:n + { + \__kernel_msg_critical:nn { kernel } { mismatched-expl3 } + \use:c { fi: } \use:c { fi: } + } + \fi +\else + \ifodd\csname\detokenize{l__kernel_expl_bool}\endcsname + \else + \ExplSyntaxOn + \bool_if_exist:NF \g__expl_reload_bool + { \bool_new:N \g__expl_reload_bool } + \ExplSyntaxOff + \fi +\fi \ifcsname\detokenize{g__expl_reload_bool}\endcsname \ExplSyntaxOn \bool_gset_true:N \g__expl_reload_bool |