summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md9
-rw-r--r--Master/texmf-dist/doc/latex/l3backend/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md9
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdfbin314158 -> 314321 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdfbin356022 -> 367377 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdfbin625002 -> 606221 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdfbin491247 -> 489876 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdfbin363017 -> 363180 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf-code.pdfbin278541 -> 276917 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.pdfbin350700 -> 350863 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdfbin344797 -> 344948 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdfbin311621 -> 311773 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdfbin372787 -> 372941 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdfbin385667 -> 385812 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdfbin285577 -> 285732 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md12
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/expl3.pdfbin584938 -> 585053 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.pdfbin1555993 -> 1555681 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdfbin263178 -> 263337 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news.pdfbin379235 -> 379235 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news01.pdfbin113527 -> 113527 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news02.pdfbin140776 -> 140776 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news03.pdfbin144785 -> 144785 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news04.pdfbin107115 -> 107115 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news05.pdfbin105090 -> 105090 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news06.pdfbin140795 -> 140795 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news07.pdfbin119094 -> 119094 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news08.pdfbin152413 -> 152413 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news09.pdfbin235322 -> 235322 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news10.pdfbin147097 -> 147097 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news11.pdfbin165946 -> 165946 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news12.pdfbin199139 -> 199139 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv1
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdfbin75852 -> 75889 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdfbin279956 -> 280064 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdfbin228250 -> 228354 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdfbin217628 -> 217736 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.pdfbin5865524 -> 5844782 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.tex2
-rw-r--r--Master/texmf-dist/dvips/l3backend/l3backend-dvips.pro5
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx79
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx13
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx363
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx268
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx30
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx13
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx31
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx565
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx36
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx29
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx53
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx137
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3.ins2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx195
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx175
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx40
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx84
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3debug.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx104
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3final.dtx389
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3format.ins164
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx23
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx381
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx37
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx84
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx45
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx9
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx12
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx27
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text.dtx27
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx17
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx6
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def89
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def92
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def249
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def103
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def89
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty343
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty17
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty6
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex391
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.ltx34
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty32
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
index 7b2598f0d5a..adfca31546d 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
index 80ecd21fe56..321bc7cc289 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
index 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
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
index a8cb1a14dc7..9a2f1341e01 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
index 80f61fa2285..82fda2baf37 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf-code.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf-code.pdf
index 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
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.pdf
index c51a2055bee..572423103f7 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
index ff560afb717..91e71514d8b 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
index 568e913fd29..4dbe5eae6ad 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
index e5c6e5ee482..47f63bdd6d4 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
Binary files differ
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 func­tions have been added for dim vari­ables,
e.g. `\dim_step_in­line: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
index d76040d2bd9..34f0d20a6b5 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
index 3c44cfaf5e9..57ea709c8ed 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
Binary files differ
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
index 4c59fc9770a..c5e42ecbc22 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
index 9463b85375c..f37b45a7033 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
index 5c3bb769142..03f8ad6669c 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
index 0d80eae0812..1495f21dcda 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
index 29264d35787..d18a6f04fb0 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
index 1b990e38891..717b0aa96b3 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
index ab75e4b9390..fc12886e943 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
index 95606ad096e..858b05d977e 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
index a51e4512e44..58479d7dc11 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
index 45e221f9ba5..3d8c6214456 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
index c2a1cc18169..1ae9972b0e1 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
index af9d89b61a4..4b5e51d7431 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
index c9a93fa9755..7170e1db614 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
index cc045f3a199..a1f3d50fef7 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
Binary files differ
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
index 9b9fc68466d..ed6fc27f005 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
index 575770b6c87..271e8e59165 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
Binary files differ
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
index 76dc0f00c98..1c33b67b332 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
Binary files differ
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
index 5826dda2530..3b214dcca7c 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
Binary files differ
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
index 01a6f88ddf8..18b0ab1e9ba 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
Binary files differ
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