summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-03-14 20:24:49 +0000
committerKarl Berry <karl@freefriends.org>2024-03-14 20:24:49 +0000
commit7bad9b14c550da9ae08669e681e2d94c11bddd9e (patch)
treeed81b7a7d34eb2da325026d3977131cdb8044c00 /Master/texmf-dist
parent2bb8d5e07c328b2737d7e4ba46365bffa060b64f (diff)
l3 (14mar24)
git-svn-id: svn://tug.org/texlive/trunk@70637 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md16
-rw-r--r--Master/texmf-dist/doc/latex/l3backend/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdfbin910339 -> 908163 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3backend/l3backend-code.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md21
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/README.md9
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdfbin298116 -> 298521 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdfbin683797 -> 685801 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdfbin516478 -> 518097 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdfbin378266 -> 378667 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3opacity/l3opacity.pdfbin299358 -> 336876 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdfbin337262 -> 337668 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdfbin346725 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdfbin390902 -> 391312 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdfbin405966 -> 406366 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdfbin323194 -> 323591 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md16
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/expl3.pdfbin609936 -> 610363 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.pdfbin1792518 -> 1795605 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3doc.pdfbin565153 -> 565279 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdfbin150870 -> 151266 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news.pdfbin396222 -> 396222 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news01.pdfbin122959 -> 122959 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news02.pdfbin150919 -> 150919 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news03.pdfbin148747 -> 148747 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news04.pdfbin114754 -> 114754 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news05.pdfbin112524 -> 112524 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news06.pdfbin151591 -> 151591 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news07.pdfbin128344 -> 128344 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news08.pdfbin163484 -> 163484 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news09.pdfbin250159 -> 250159 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news10.pdfbin150302 -> 150302 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news11.pdfbin170102 -> 170102 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news12.pdfbin205020 -> 205020 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdfbin82720 -> 82720 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdfbin296131 -> 296553 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdfbin230975 -> 231402 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdfbin241772 -> 242191 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.pdfbin7559694 -> 7574289 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md8
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdfbin412694 -> 412717 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdfbin332379 -> 332422 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdfbin534131 -> 551698 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdfbin448820 -> 448862 bytes
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx47
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx78
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx79
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx7
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx18
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx31
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx446
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins62
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx504
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bitset.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx12
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3debug.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx110
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx26
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx15
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx65
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx161
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx19
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx16
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def41
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def28
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def6
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def41
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def41
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def41
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty76
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty12
-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.sty211
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex726
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex9
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3debug.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3doc.cls16
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty8
167 files changed, 1485 insertions, 1809 deletions
diff --git a/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
index 02dfdd3e134..66a69a3bb34 100644
--- a/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
@@ -6,6 +6,19 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2024-03-14]
+
+### Removed
+- Range guard for opacity
+
+### Fixed
+- Initiation of opacity data (see \#1472)
+- ExtGState setup for stroking opacity (issue \#1472)
+- Inconsistent behavior of opacity functions w/o `pdfmanagement`
+ (issue \#1473)
+- Redundant braces in opacity backend for dvisvgm
+- Interaction of scope with box insertion with `dvips` (see \#1504)
+
## [2024-02-20]
### Fixed
@@ -326,7 +339,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/2024-02-20...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2024-03-14...HEAD
+[2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-20...2024-03-14
[2024-02-20]: https://github.com/latex3/latex3/compare/2024-01-04...2024-02-20
[2024-01-04]: https://github.com/latex3/latex3/compare/2023-11-09...2024-01-04
[2023-11-09]: https://github.com/latex3/latex3/compare/2023-11-04...2023-11-09
diff --git a/Master/texmf-dist/doc/latex/l3backend/README.md b/Master/texmf-dist/doc/latex/l3backend/README.md
index 3bfc8234102..7be33df8b83 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 2024-02-20
+Release 2024-03-14
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/l3backend/l3backend-code.pdf b/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf
index c62351ab986..9affc7d856e 100644
--- a/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf
+++ b/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3backend/l3backend-code.tex b/Master/texmf-dist/doc/latex/l3backend/l3backend-code.tex
index d8a1ca7cf69..df0dd0ea8cd 100644
--- a/Master/texmf-dist/doc/latex/l3backend/l3backend-code.tex
+++ b/Master/texmf-dist/doc/latex/l3backend/l3backend-code.tex
@@ -26,7 +26,7 @@ for those people who are interested.
\fi
-\documentclass{l3doc}
+\documentclass[full,kernel]{l3doc}
\begin{document}
diff --git a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
index 197fa4254d9..900626c265d 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
@@ -7,6 +7,24 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2024-03-14]
+
+### Added
+- `\draw_path_replace_bb:`
+
+### Changed
+- `l3opacity` is sped up a bit
+- Support fp expr in `\draw_path_corner_arc:nn`
+
+### Fixed
+- Interaction between drawing rotation and shift (issue \#1483)
+- Shifting not applied to `\draw_path_rectangle:n` (issue \#1486)
+- Out of boundary lines drawn by `\draw_path_grid:nnn` (issue \#1489)
+- Two softpath markers with the same meaning in l3draw (issue \#1492)
+
+### Removed
+- `l3sys-shell` in favor of `l3sys-query` methods added to `l3kernel`
+
## [2024-02-20]
### Fixed
@@ -309,7 +327,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/2024-02-20...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2024-03-14...HEAD
+[2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-20...2024-03-14
[2024-02-20]: https://github.com/latex3/latex3/compare/2024-01-04...2024-02-20
[2024-01-04]: https://github.com/latex3/latex3/compare/2023-12-08...2024-01-04
[2023-12-08]: https://github.com/latex3/latex3/compare/2023-11-01...2023-12-08
diff --git a/Master/texmf-dist/doc/latex/l3experimental/README.md b/Master/texmf-dist/doc/latex/l3experimental/README.md
index dc28bad6eed..438d6c43c5a 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 2024-02-20
+Release 2024-03-14
Overview
--------
@@ -26,7 +26,6 @@ bundles:
* `l3graphics`
* `l3opacity`
* `l3str`
-* `l3sys-shell`
* `xcoffins`
* `xgalley`
@@ -61,12 +60,6 @@ category code 12 ('other'), with the exception of spaces which have the
category code 10 ('space'). The `l3str-format` module provides methods
for formatting such strings.
-`l3sys-shell`
--------------
-
-This module provides abstractions for common shell functions, e.g. file
-deletion and copying.
-
`xcoffins`
----------
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
index 2c8c9d36349..5b39987238d 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/l3draw/l3draw-code.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
index 91237671cbd..0dffee73919 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 a0941015ed7..64b6ca1e508 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 dd47e3b10fa..8a5787f524e 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/l3opacity/l3opacity.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3opacity/l3opacity.pdf
index 7f0af34a48e..e51f0341b3f 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3opacity/l3opacity.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3opacity/l3opacity.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 45bd5bd4c2b..f1203b80c27 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
deleted file mode 100644
index c35e6f24b6c..00000000000
--- a/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
+++ /dev/null
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 a8e4ce7d9e3..fa4fe507015 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 b37d9194e4d..d51755044eb 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 d08bc869265..5afb51f32eb 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 eed4b5c3e1e..9c8c4d506cd 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
@@ -7,6 +7,19 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2024-03-14]
+
+### Added
+- Macro interface for `l3sys-query`
+
+### Changed
+- Require that `expl3` is loaded at top level in generic mode
+- Ensure that the dimension arguments to `\box_autosize_to_...:Nnn`
+ are properly formed (issue \#1502)
+
+### Fixed
+- Typeset `TF` of internal conditionals in current color (issue \#730)
+- Some functions and variables were defined locally
## [2024-02-20]
### Changed
@@ -1687,7 +1700,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2024-02-20...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2024-03-14...HEAD
+[2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-20...2024-03-14
[2024-02-20]: https://github.com/latex3/latex3/compare/2024-02-18...2024-02-20
[2024-02-18]: https://github.com/latex3/latex3/compare/2024-02-13...2024-02-18
[2024-02-13]: https://github.com/latex3/latex3/compare/2024-01-22...2024-02-13
diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md
index 93cd009b565..8ef94a41ac9 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 2024-02-20
+Release 2024-03-14
Overview
--------
diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
index 8468634aeea..b36343153ab 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 973d5295751..1df60adf1ad 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 985ab250977..ff8114028ed 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
@@ -58,7 +58,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2024-02-20}
+\date{Released 2024-03-14}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
index 99b165a5391..2f85329fdca 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
index b5ea68fdc73..f2e611b2c9c 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 fead4d5f9f6..87f01af5a76 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 a6a77cbf566..5a6d4af9e29 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 8ef3a6499f1..8cda69f9714 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 9afc8bd99d1..f16bb587508 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 0d2a7c35313..52c33e516ad 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 0fceb434730..1f6bda96877 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 61ebc770ff1..cd65bce3a67 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 3f2d7e51f46..721252a9b09 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 43104af4c3e..855db5bdc51 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 429016e9f6e..5dc3a3b9ade 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 8a19d48d886..e921d2c81b2 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 2fbf1ed30b2..a4866d55e79 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 0e0c63f2be6..4b6072bca16 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.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
index 281bc5dc710..9b2e9b407e1 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 8c346584409..322b032a673 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 81590ff7687..a2ffe8d770a 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 2024-02-20}
+\date{Released 2024-03-14}
\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 4e1be073a9d..2a701d8ec58 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 e16dec07046..7e124576c7f 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 2024-02-20}
+\date{Released 2024-03-14}
\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 a1e571ac5cd..93def3980b3 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 600709d762f..5db9e83a455 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 2024-02-20}
+\date{Released 2024-03-14}
\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 6350700965b..c6a6396503f 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 69761fd7f30..c09d75767b3 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
@@ -57,7 +57,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2024-02-20}
+\date{Released 2024-03-14}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
index 46779885323..b12b36ec76b 100644
--- a/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
@@ -7,6 +7,11 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2024-03-14]
+
+### Changed
+- Add a new intro to `xparse.dtx` pointing to kernel methods
+
## [2024-02-18]
### Changed
@@ -248,7 +253,8 @@ this project uses date-based 'snapshot' version identifiers.
- Switch to ISO date format
- Improve cross-module use of internal functions
-[Unreleased]: https://github.com/latex3/latex3/compare/2024-02-18...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2024-03-14...HEAD
+[2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-18...2024-03-14
[2024-02-18]: https://github.com/latex3/latex3/compare/2024-02-13...2024-02-18
[2024-02-13]: https://github.com/latex3/latex3/compare/2023-10-10...2024-02-13
[2023-10-10]: https://github.com/latex3/latex3/compare/2023-08-29...2023-10-10
diff --git a/Master/texmf-dist/doc/latex/l3packages/README.md b/Master/texmf-dist/doc/latex/l3packages/README.md
index 2b489b3e979..601e8d229ac 100644
--- a/Master/texmf-dist/doc/latex/l3packages/README.md
+++ b/Master/texmf-dist/doc/latex/l3packages/README.md
@@ -1,6 +1,6 @@
# `l3packages`: Higher-level LaTeX3 Concepts (Deprecated)
-Release 2024-02-18
+Release 2024-03-14
## Overview
diff --git a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
index b05bece9840..ecf18342cf8 100644
--- a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
index 0544fac0fa5..1bfdb015967 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
index d666c5ec7fb..91a774d39f9 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
index 9edb9f169ac..b52381f6dc9 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
index c80d51e06d9..4d3b68225ab 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2024-02-20}{}
+ {l3backend-dvipdfmx.def}{2024-03-14}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2024-02-20}{}
+ {l3backend-dvips.def}{2024-03-14}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2024-02-20}{}
+ {l3backend-dvisvgm.def}{2024-03-14}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2024-02-20}{}
+ {l3backend-luatex.def}{2024-03-14}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2024-02-20}{}
+ {l3backend-pdftex.def}{2024-03-14}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2024-02-20}{}
+ {l3backend-xetex.def}{2024-03-14}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
index 4b0059c2b9e..3fc3243c422 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
index 907ca91c6ee..eaa89add8cf 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
index ee33a717fef..eef86886f58 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -68,7 +68,7 @@
%
% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:e}
% The same as literal PostScript: same arguments about positioning apply
-% her.
+% here.
% \begin{macrocode}
\cs_new_eq:NN \@@_backend_literal:n \__kernel_backend_literal_postscript:n
\cs_generate_variant:Nn \@@_backend_literal:n { e }
@@ -81,23 +81,20 @@
% 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.
-% 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
-% |[end]| lines are handled differently from the rest as they are
-% conceptually different: not really drawing literals but instructions to
-% \texttt{dvips} itself.
+% As for \pkg{pgf}, we need to save the current point as this is
+% required for box placement. (Note that
+% |@beginspecial|/|@endspecial| forms a backend scope.)
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_begin:
{
- \__kernel_backend_literal:n { ps::[begin] }
+ \@@_backend_literal:n { [begin] }
+ \@@_backend_literal:n { /draw.x~currentpoint~/draw.y~exch~def~def }
\@@_backend_literal:n { @beginspecial }
}
\cs_new_protected:Npn \@@_backend_end:
{
\@@_backend_literal:n { @endspecial }
- \__kernel_backend_literal:n { ps::[end] }
+ \@@_backend_literal:n { [end] }
}
% \end{macrocode}
% \end{macro}
@@ -350,21 +347,23 @@
% Inside a picture |@beginspecial|/|@endspecial| are active, which is
% normally a good thing but means that the position and scaling would be off
% if the box was inserted directly. To deal with that, there are a number of
-% possible approaches. The implementation here was suggested by Tom Rokici
-% (author of \texttt{dvips}). We end the current special placement, then
-% set the current point with a literal |[begin]|. As for general
-% literals, we then use the stack to store the current point and move to
-% it. To insert the required transformation, we have to flip the $y$-axis,
-% once before and once after it. Then we get back to the \TeX{} reference
-% point to insert our content. The clean up has to happen in the right
-% places, hence the |[begin]|/|[end]| pair around |restore|. Finally,
-% we can return to \enquote{normal} drawing mode. Notice that the set up
-% here is very similar to that in \cs{@@_align_currentpoint_\ldots}, but
-% the ordering of saving and restoring is different (intermixed).
+% possible approaches. A previous implementation suggested by Tom Rokici
+% used |@endspecial|/|@beginspecial|. This avoids needing internals of
+% \texttt{dvips}, but fails if there the box is used inside a scope
+% (see \url{https://github.com/latex3/latex3/issues/1504}). Instead,
+% we use the same method as \pkg{pgf}, which means tracking the position
+% at the PostScript level. Also note that using |@endspecial| would
+% close the scope it creates, meaning that after a box insertion, any
+% local changes would be lost. Keeping \texttt{dvips} on track is
+% non-trivial, hence the |[begin]|/|[end]| pair before the
+% |save| and around the |restore|.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_box_use:Nnnnn #1#2#3#4#5
{
- \@@_backend_literal:n { @endspecial }
+ \@@_backend_literal:n { save }
+ \@@_backend_literal:n { 72~Resolution~div~72~VResolution~div~neg~scale }
+ \@@_backend_literal:n { magscale { 1~DVImag~div~dup~scale } if }
+ \@@_backend_literal:n { draw.x~neg~draw.y~neg~translate }
\@@_backend_literal:n { [end] }
\@@_backend_literal:n { [begin] }
\@@_backend_literal:n { save }
@@ -380,7 +379,7 @@
\@@_backend_literal:n { restore }
\@@_backend_literal:n { [end] }
\@@_backend_literal:n { [begin] }
- \@@_backend_literal:n { @beginspecial }
+ \@@_backend_literal:n { restore }
}
% \end{macrocode}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
index cb959169d99..9360bffd2e1 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
index d7b6d4c37c9..84f8ab53b7a 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
index 6cc972f7d84..a5828bfd905 100644
--- a/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
+++ b/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -71,9 +71,9 @@
%<*dvips>
% \end{macrocode}
%
-% \begin{macro}{\@@_backend_select:n,\@@_backend_select_aux:n}
+% \begin{macro}{\@@_backend_select:n}
% \begin{macro}{\@@_backend_fill:n, \@@_backend_stroke:n}
-% \begin{macro}{\@@_backend:nnn, \@@_backend:enn}
+% \begin{macro}{\@@_backend:nnn}
% No stack so set values directly. The need to deal with Distiller and
% Ghostscript separately means we use a common auxiliary: the two
% systems require different PostScript for transparency. This is
@@ -83,25 +83,20 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select:n #1
{
- \exp_args:Ne \@@_backend_select_aux:n
- { \fp_eval:n { min(max(0,#1),1) } }
- }
-\cs_new_protected:Npn \@@_backend_select_aux:n #1
- {
\@@_backend:nnn {#1} { fill } { ca }
\@@_backend:nnn {#1} { stroke } { CA }
}
\cs_new_protected:Npn \@@_backend_fill:n #1
{
- \@@_backend:enn
- { \fp_eval:n { min(max(0,#1),1) } }
+ \@@_backend:nnn
+ { #1 }
{ fill }
{ ca }
}
\cs_new_protected:Npn \@@_backend_stroke:n #1
{
- \@@_backend:enn
- { \fp_eval:n { min(max(0,#1),1) } }
+ \@@_backend:nnn
+ { #1 }
{ stroke }
{ CA }
}
@@ -124,7 +119,6 @@
ifelse
}
}
-\cs_generate_variant:Nn \@@_backend:nnn { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -143,7 +137,7 @@
% \begin{macrocode}
\bool_lazy_and:nnT
{ \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p:}
+ { \pdfmanagement_if_active_p: }
{
%<*luatex|pdftex>
\__kernel_color_backend_stack_init:Nnn \c_@@_backend_stack_int
@@ -157,24 +151,21 @@
%
% \begin{variable}{\l_@@_backend_fill_tl, \l_@@_backend_stroke_tl}
% We use |tl| here for speed: at the backend, this should be reasonable.
+% Both need to start off fully opaque.
% \begin{macrocode}
\tl_new:N \l_@@_backend_fill_tl
\tl_new:N \l_@@_backend_stroke_tl
+\tl_set:Nn \l_@@_backend_fill_tl { 1 }
+\tl_set:Nn \l_@@_backend_stroke_tl { 1 }
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_backend_select:n, \@@_backend_select_aux:n}
+% \begin{macro}{\@@_backend_select:n}
% \begin{macro}{\@@_backend_reset:}
-% Other than the need to evaluate the opacity as an \texttt{fp}, much the
-% same as color.
+% Much the same as color.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select:n #1
{
- \exp_args:Ne \@@_backend_select_aux:n
- { \fp_eval:n { min(max(0,#1),1) } }
- }
-\cs_new_protected:Npn \@@_backend_select_aux:n #1
- {
\tl_set:Nn \l_@@_backend_fill_tl {#1}
\tl_set:Nn \l_@@_backend_stroke_tl {#1}
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
@@ -189,12 +180,6 @@
{ /opacity #1 ~ gs }
\group_insert_after:N \@@_backend_reset:
}
-\bool_lazy_and:nnF
- { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p:}
- {
- \cs_gset_protected:Npn \@@_backend_select_aux:n #1 { }
- }
\cs_new_protected:Npn \@@_backend_reset:
{
%<*dvipdfmx|xetex>
@@ -210,26 +195,26 @@
% \end{macro}
%
% \begin{macro}{\@@_backend_fill:n, \@@_backend_stroke:n}
-% \begin{macro}{\@@_backend_fillstroke:nn, \@@_backend_fillstroke:ee}
+% \begin{macro}{\@@_backend_fill_stroke:nn}
% For separate fill and stroke, we need to work out if we need to do
% more work or if we can stick to a single setting.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_fill:n #1
{
- \@@_backend_fill_stroke:ee
- { \fp_eval:n { min(max(0,#1),1) } }
- \l_@@_backend_stroke_tl
+ \exp_args:Nno \@@_backend_fill_stroke:nn
+ { #1 }
+ { \l_@@_backend_stroke_tl }
}
\cs_new_protected:Npn \@@_backend_stroke:n #1
{
- \@@_backend_fill_stroke:ee
- \l_@@_backend_fill_tl
- { \fp_eval:n { min(max(0,#1),1) } }
+ \exp_args:No \@@_backend_fill_stroke:nn
+ { \l_@@_backend_fill_tl }
+ { #1 }
}
\cs_new_protected:Npn \@@_backend_fill_stroke:nn #1#2
{
\str_if_eq:nnTF {#1} {#2}
- { \@@_backend_select_aux:n {#1} }
+ { \@@_backend_select:n {#1} }
{
\tl_set:Nn \l_@@_backend_fill_tl {#1}
\tl_set:Nn \l_@@_backend_stroke_tl {#2}
@@ -237,7 +222,7 @@
{ opacity.fill #1 }
{ << /ca ~ #1 >> }
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
- { opacity.stroke #1 }
+ { opacity.stroke #2 }
{ << /CA ~ #2 >> }
%<*dvipdfmx|xetex>
\__kernel_backend_literal_pdf:n
@@ -249,11 +234,24 @@
\group_insert_after:N \@@_backend_reset:
}
}
-\cs_generate_variant:Nn \@@_backend_fill_stroke:nn { ee }
% \end{macrocode}
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@@_backend_select:n, \@@_backend_fill_stroke:nn}
+% Redefine them to stubs if pdfmanagement is either not loaded or
+% deactivated.
+% \begin{macrocode}
+\bool_lazy_and:nnF
+ { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
+ { \pdfmanagement_if_active_p: }
+ {
+ \cs_gset_protected:Npn \@@_backend_select:n #1 { }
+ \cs_gset_protected:Npn \@@_backend_fill_stroke:nn #1#2 { }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macrocode}
%</dvipdfmx|luatex|pdftex|xetex>
% \end{macrocode}
@@ -272,9 +270,9 @@
\cs_new_protected:Npn \@@_backend_fill:n #1
{ \@@_backend:nn {#1} { fill- } }
\cs_new_protected:Npn \@@_backend_stroke:n #1
- { \@@_backend:nn { {#1} } { stroke- } }
+ { \@@_backend:nn {#1} { stroke- } }
\cs_new_protected:Npn \@@_backend:nn #1#2
- { \__kernel_backend_scope:e { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } }
+ { \__kernel_backend_scope:e { #2 opacity = " #1 " } }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
index 472b7adefae..0a16a79f9ea 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
index 58d4da8bb72..8cbd99cffb1 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -122,7 +122,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2024-02-20}{}
+\ProvidesExplPackage{l3benchmark}{2024-03-14}{}
{L3 Experimental benchmarking}
% \end{macrocode}
%
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 992acaa05c1..fe2207fc1ba 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
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 1244dfa0ec3..bea1d2423c0 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
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 e869351f6bc..0b428cad0f2 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -192,8 +192,8 @@
% \begin{macrocode}
\cs_new_protected:Npn \draw_path_corner_arc:nn #1#2
{
- \dim_set:Nn \l_@@_corner_xarc_dim {#1}
- \dim_set:Nn \l_@@_corner_yarc_dim {#2}
+ \dim_set:Nn \l_@@_corner_xarc_dim { \fp_to_dim:n {#1} }
+ \dim_set:Nn \l_@@_corner_yarc_dim { \fp_to_dim:n {#2} }
\bool_lazy_and:nnTF
{ \dim_compare_p:nNn \l_@@_corner_xarc_dim = { 0pt } }
{ \dim_compare_p:nNn \l_@@_corner_yarc_dim = { 0pt } }
@@ -700,16 +700,18 @@
% \begin{macrocode}
\cs_new_protected:Npn \draw_path_rectangle:nn #1#2
{
- \@@_point_process:nnn
+ \bool_lazy_or:nnTF
+ { \l_@@_corner_arc_bool }
+ { \l_@@_matrix_active_bool }
{
- \bool_lazy_or:nnTF
- { \l_@@_corner_arc_bool }
- { \l_@@_matrix_active_bool }
- { \@@_path_rectangle_rounded:nnnn }
- { \@@_path_rectangle:nnnn }
+ \@@_point_process:nnn \@@_path_rectangle_rounded:nnnn
+ {#1} {#2}
+ }
+ {
+ \@@_point_process:nnn \@@_path_rectangle:nnnn
+ { (#1) + ( \l_@@_xshift_dim , \l_@@_yshift_dim ) }
+ { #2 }
}
- {#1}
- {#2}
}
\cs_new_protected:Npn \@@_path_rectangle:nnnn #1#2#3#4
{
@@ -766,8 +768,8 @@
\@@_point_process:nnn
{
\@@_path_grid_auxi:eennnn
- { \dim_eval:n { \dim_abs:n {#1} } }
- { \dim_eval:n { \dim_abs:n {#2} } }
+ { \dim_abs:n {#1} }
+ { \dim_abs:n {#2} }
}
{#3} {#4}
}
@@ -787,8 +789,8 @@
\cs_new_protected:Npn \@@_path_grid_auxiii:nnnnnn #1#2#3#4#5#6
{
\@@_path_grid_auxiv:eennnnnn
- { \fp_to_dim:n { #1 * trunc(#3/(#1)) } }
- { \fp_to_dim:n { #2 * trunc(#4/(#2)) } }
+ { \fp_to_dim:n { #1 * ceil(#3/(#1)) } }
+ { \fp_to_dim:n { #2 * ceil(#4/(#2)) } }
{#1} {#2} {#3} {#4} {#5} {#6}
}
\cs_new_protected:Npn \@@_path_grid_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8
@@ -832,19 +834,20 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_path_use_bb_bool, \l_@@_path_use_clear_bool}
+% \begin{variable}{\l_@@_path_use_clear_bool}
% Actions handled at the macro layer.
% \begin{macrocode}
-\bool_new:N \l_@@_path_use_bb_bool
\bool_new:N \l_@@_path_use_clear_bool
% \end{macrocode}
% \end{variable}
%
% \begin{macro}{\draw_path_use:n, \draw_path_use_clear:n}
+% \begin{macro}{\draw_path_replace_bb:}
+% \begin{macro}{\@@_path_replace_bb:NnN}
% \begin{macro}{\@@_path_use:n}
% \begin{macro}{\@@_path_use_action_draw:, \@@_path_use_action_fillstroke:}
% \begin{macro}{\@@_path_use_stroke_bb:}
-% \begin{macro}{\@@_path_use_stroke_bb_aux:NnN}
+% \begin{macro}{\@@_path_use_bb:NnN}
% There are a range of actions which can apply to a path: they are handled
% in a single function which can carry out several of them. The first step
% is to deal with the special case of clearing the path.
@@ -865,6 +868,23 @@
}
{ \@@_path_use:n { #1 , clear } }
}
+\cs_new_protected:Npn \draw_path_replace_bb:
+ {
+ \@@_path_replace_bb:NnN x { max } +
+ \@@_path_replace_bb:NnN y { max } +
+ \@@_path_replace_bb:NnN x { min } -
+ \@@_path_replace_bb:NnN y { min } -
+ \@@_softpath_clear:
+ \@@_path_reset_limits:
+ }
+\cs_new_protected:Npn \@@_path_replace_bb:NnN #1#2#3
+ {
+ \dim_gset:cn { g_@@_ #1#2 _dim }
+ {
+ \dim_use:c { g_@@_path_ #1#2 _dim }
+ #3 0.5 \g_@@_linewidth_dim
+ }
+ }
% \end{macrocode}
% Map over the actions and set up the data: mainly just booleans,
% but with the possibility to cover more complex cases. The business end
@@ -913,7 +933,10 @@
}
}
\bool_if:NT \l_@@_path_use_clear_bool
- { \@@_softpath_clear: }
+ {
+ \@@_softpath_clear:
+ \@@_path_reset_limits:
+ }
}
\cs_new_protected:Npn \@@_path_use_action_draw:
{
@@ -930,12 +953,12 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_path_use_stroke_bb:
{
- \@@_path_use_stroke_bb_aux:NnN x { max } +
- \@@_path_use_stroke_bb_aux:NnN y { max } +
- \@@_path_use_stroke_bb_aux:NnN x { min } -
- \@@_path_use_stroke_bb_aux:NnN y { min } -
+ \@@_path_use_bb:NnN x { max } +
+ \@@_path_use_bb:NnN y { max } +
+ \@@_path_use_bb:NnN x { min } -
+ \@@_path_use_bb:NnN y { min } -
}
-\cs_new_protected:Npn \@@_path_use_stroke_bb_aux:NnN #1#2#3
+\cs_new_protected:Npn \@@_path_use_bb:NnN #1#2#3
{
\dim_compare:nNnF { \dim_use:c { g_@@_ #1#2 _dim } } = { #3 -\c_max_dim }
{
@@ -956,6 +979,8 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \subsection{Scoping paths}
%
@@ -1017,11 +1042,13 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macrocode}
+% \subsection{Messages}
+%
+% \begin{macrocode}
\msg_new:nnnn { draw } { invalid-path-action }
{ Invalid~action~'#1'~for~path. }
{ Paths~can~be~used~with~actions~'draw',~'clip',~'fill'~or~'stroke'. }
-% \end{macrocode}
+% \end{macrocode}
%
% \begin{macrocode}
%</package>
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 0cb0fd65079..919f0734402 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
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 56ce949b240..81ab2dfed29 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
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 c929e86aa7a..0d5d6d8b6b9 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -163,6 +163,7 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{macro}{\@@_softpath_closepath:}
% \begin{macro}{\@@_softpath_curveto:nnnnnn}
% \begin{macro}
% {
@@ -227,6 +228,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}
% {
@@ -260,12 +262,14 @@
{ \@@_backend_lineto:nn {#1} {#2} }
\cs_new_protected:Npn \@@_softpath_moveto_op:nn #1#2
{ \@@_backend_moveto:nn {#1} {#2} }
-\cs_new_protected:Npn \@@_softpath_roundpoint_op:nn #1#2 { }
+\cs_new_protected:Npn \@@_softpath_roundpoint_op:nn #1#2
+ { \@@_softpath_roundpoint_op:nn }
\cs_new_protected:Npn \@@_softpath_rectangle_opi:nn #1#2
{ \@@_softpath_rectangle_opi:nnNnn {#1} {#2} }
\cs_new_protected:Npn \@@_softpath_rectangle_opi:nnNnn #1#2#3#4#5
{ \@@_backend_rectangle:nnnn {#1} {#2} {#4} {#5} }
- \cs_new_protected:Npn \@@_softpath_rectangle_opii:nn #1#2 { }
+\cs_new_protected:Npn \@@_softpath_rectangle_opii:nn #1#2
+ { \@@_softpath_rectangle_opii:nn }
% \end{macrocode}
% \end{macro}
% \end{macro}
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 aef5c2111d7..989c10fc2d0 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
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 8e9143420ed..411bf309280 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -114,6 +114,7 @@
\fp_zero:N \l_@@_matrix_b_fp
\fp_zero:N \l_@@_matrix_c_fp
\fp_set:Nn \l_@@_matrix_d_fp { 1 }
+ \bool_set_false:N \l_@@_matrix_active_bool
}
\cs_new_protected:Npn \draw_transform_shift_reset:
{
@@ -219,7 +220,7 @@
\fp_to_dim:n
{
#1 +
- ( #3 * \l_@@_matrix_a_fp + #4 * \l_@@_matrix_b_fp )
+ ( #3 * \l_@@_matrix_a_fp + #4 * \l_@@_matrix_c_fp )
}
}
\dim_set:Nn \l_@@_yshift_dim
@@ -227,7 +228,7 @@
\fp_to_dim:n
{
#2 +
- ( #3 * \l_@@_matrix_c_fp + #4 * \l_@@_matrix_d_fp )
+ ( #3 * \l_@@_matrix_b_fp + #4 * \l_@@_matrix_d_fp )
}
}
}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
index 2bfa4e00af2..a884b922b22 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -583,7 +583,7 @@
%
% \begin{function}{\draw_path_corner_arc:nn}
% \begin{syntax}
-% \cs{draw_path_corner_arc:n} \Arg{length1} \Arg{length2}
+% \cs{draw_path_corner_arc:nn} \Arg{length1} \Arg{length2}
% \end{syntax}
% Sets the degree of rounding applied to corners in a path: the two
% \meta{length} values are the distances from the corner at which the curving
@@ -658,6 +658,18 @@
% at the macro level).
% \end{function}
%
+% \begin{function}{\draw_path_replace_bb:}
+% \begin{syntax}
+% \cs{draw_path_replace_bb:}
+% \end{syntax}
+% Replaces the current bounding box of the drawing with one specified by the
+% current path: this will be applied even when \cs{l_draw_bb_update_bool}
+% is \texttt{false}. The current path is then cleared. Note that
+% \cs{l_draw_bb_update_bool} is \emph{not} changed by this function:
+% the user may wish to set it to \texttt{false} so that the bounding box
+% is then left unchanged by further operations.
+% \end{function}
+%
% \subsubsection{Path operations on drawing axes}
%
% The standard path functions are all influenced by the active transformation
@@ -1181,7 +1193,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2024-02-20}{}
+\ProvidesExplPackage{l3draw}{2024-03-14}{}
{L3 Experimental core drawing support}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
index ccb6f9669ba..97be8ac39bf 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -184,7 +184,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2024-02-20}{}
+\ProvidesExplPackage{l3graphics}{2024-03-14}{}
{L3 Experimental graphics inclusion support}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx b/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
index ba251f971d3..fb293fd31c2 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -65,6 +65,12 @@
% particular, using Adobe Distiller, you will need to enable transparency
% in the (text-based) configuration: this is not selectable from the GUI.
%
+% For users of PDF-based routes, note that opacity only takes effect if
+% a \cs{DocumentMetadata}|{}| is added \emph{before}
+% \cs[no-index]{documentclass}, which loads and activates
+% the PDF management.
+% See \file{pdfmanagement-testphase.pdf} for more info.
+%
% \begin{function}[added = 2021-07-01]{\opacity_select:n}
% \begin{syntax}
% \cs{opacity_select:n} \Arg{expression}
@@ -96,13 +102,21 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3opacity}{2024-02-20}{}
+\ProvidesExplPackage{l3opacity}{2024-03-14}{}
{L3 Experimental opacity support}
% \end{macrocode}
%
+% \begin{variable}
+% Temporary storage.
+% \begin{macrocode}
+\fp_new:N \l_@@_tmp_fp
+% \end{macrocode}
+% \end{variable}
+%
% \begin{macro}{\opacity_select:n, \opacity_fill:n, \opacity_stroke:n}
-% \begin{macro}{\@@_select:nN, \@@_select_aux:nN}
-% Thin wrapper with error checking.
+% \begin{macro}{\@@_select:nN}
+% Thin wrapper with error checking. Opacity is passed to backend
+% functions as a bounded, evaluated decimal number.
% \begin{macrocode}
\cs_new_protected:Npn \opacity_select:n #1
{ \@@_select:nN {#1} \@@_backend_select:n }
@@ -111,14 +125,13 @@
\cs_new_protected:Npn \opacity_stroke:n #1
{ \@@_select:nN {#1} \@@_backend_stroke:n }
\cs_new_protected:Npn \@@_select:nN #1#2
- { \exp_args:Ne \@@_select_aux:nN { \fp_eval:n {#1} } #2 }
-\cs_new_protected:Npn \@@_select_aux:nN #1#2
{
+ \fp_set:Nn \l_@@_tmp_fp { #1 }
\bool_lazy_or:nnTF
- { \fp_compare_p:nNn {#1} < { 0 } }
- { \fp_compare_p:nNn {#1} > { 1 } }
+ { \fp_compare_p:nNn \l_@@_tmp_fp < \c_zero_fp }
+ { \fp_compare_p:nNn \l_@@_tmp_fp > \c_one_fp }
{ \msg_error:nnn { opacity } { out-of-range } {#1} }
- { #2 {#1} }
+ { \exp_args:Ne #2 { \fp_use:N \l_@@_tmp_fp } }
}
\msg_new:nnnn { opacity } { out-of-range }
{ Opacity~value~out~of~range. }
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 24aad778725..9ff5b451a9a 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -166,7 +166,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2024-02-20}{}
+\ProvidesExplPackage{l3str-format}{2024-03-14}{}
{L3 Experimental string formatting}
% \end{macrocode}
%
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
deleted file mode 100644
index 186a03d87ad..00000000000
--- a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
+++ /dev/null
@@ -1,446 +0,0 @@
-% \iffalse meta-comment
-%
-%% File: l3sys-shell.dtx
-%
-% Copyright (C) 2018-2024 The LaTeX 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
-%
-% http://www.latex-project.org/lppl.txt
-%
-% This file is part of the "l3experimental 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|package>
-\RequirePackage{expl3}
-%</driver|package>
-%<*driver>
-\documentclass[full]{l3doc}
-\begin{document}
- \DocInput{\jobname.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-% \title{^^A
-% The \pkg{l3sys-shell} package\\ System shell functions^^A
-% }
-%
-% \author{^^A
-% The \LaTeX{} Project\thanks
-% {^^A
-% E-mail:
-% \href{mailto:latex-team@latex-project.org}
-% {latex-team@latex-project.org}^^A
-% }^^A
-% }
-%
-% \date{Released 2024-02-20}
-%
-% \maketitle
-%
-% \begin{documentation}
-%
-% This module provides platform-neutral interfaces to system shell commands.
-% These functions can only access the shell if a document is proceeded using
-% \texttt{--shell-escape}, which allows \emph{unrestricted} access to command
-% line functions.
-%
-% In general, arbitrary documents should \emph{not} be processed in this way,
-% as shell escape could either accidentally or deliberately lead to unexpected
-% side-effects. In that sense, they should be treated like any other arbitrary
-% script: with caution. No attempt is made by the functions here to avoid
-% injection of additional commands into the arguments.
-%
-% With the above security caveats in mind, these functions are provided for
-% authors where a workflow scripting \emph{within} a \LaTeX{} document is
-% preferable to using an external script. The latter would of course also have
-% the ability to run arbitrary code.
-%
-% \begin{function}[added = 2018-07-28]{\sys_shell_cp:nn}
-% \begin{syntax}
-% \cs{sys_shell_cp:nn} \Arg{source} \Arg{dest}
-% \end{syntax}
-% Copies the files specified in the \meta{source} (which may include
-% wildcards) to the \meta{dest}. The file paths should be specified using
-% |/| as a path separator. Copying is \emph{not} recursive: only files at
-% the path level given are copied. If unrestricted shell escape is not
-% enabled, no action is attempted.
-% \end{function}
-%
-% \begin{function}[added = 2018-07-27]{\sys_shell_mkdir:n}
-% \begin{syntax}
-% \cs{sys_shell_mkdir:n} \Arg{directory}
-% \end{syntax}
-% Creates the \meta{directory}, which should be specified using |/| as
-% a path separator. If unrestricted shell escape is not enabled, no action is
-% attempted.
-% \end{function}
-%
-% \begin{function}[added = 2018-07-28]{\sys_shell_mv:nn}
-% \begin{syntax}
-% \cs{sys_shell_mv:nn} \Arg{old} \Arg{new}
-% \end{syntax}
-% Moves the files from the \meta{old} to \meta{new} names/locations: the
-% \meta{old} names may include wildcards. In both arguments, |/| should be
-% used as the path separator. If unrestricted shell escape is not enabled, no
-% action is attempted.
-% \end{function}
-%
-% \begin{function}[added = 2018-07-27]{\sys_shell_rm:n}
-% \begin{syntax}
-% \cs{sys_shell_rm:n} \Arg{files}
-% \end{syntax}
-% Removes the \meta{files} (which may include wildcards). The file path should
-% be specified using |/| as a path separator. If unrestricted shell escape is
-% not enabled, no action is attempted.
-% \end{function}
-%
-% \begin{function}[added = 2018-07-27]{\sys_shell_rmdir:n}
-% \begin{syntax}
-% \cs{sys_shell_rmdir:n} \Arg{directory}
-% \end{syntax}
-% Removes the \meta{directory}, which should be specified using |/| as
-% a path separator. If unrestricted shell escape is not enabled, no action is
-% attempted.
-% \end{function}
-%
-% \begin{function}[added = 2018-07-28]{\sys_get_shell_pwd:N}
-% \begin{syntax}
-% \cs{sys_get_shell_pwd:N} \meta{str var}
-% \end{syntax}
-% Sets the \meta{str var} to the present working directory (the output of
-% |pwd| on Unix or |cd| on Windows). Note that on Windows this will contain
-% string backslash chars (|\|). If unrestricted shell escape is not
-% enabled, no action is taken.
-% \end{function}
-%
-% \begin{function}[added = 2018-07-28, updated = 2024-02-20]
-% {\sys_shell_split_ls:nN}
-% \begin{syntax}
-% \cs{sys_shell_split_ls:N} \Arg{glob} \meta{seq}
-% \end{syntax}
-% Sets the \meta{seq var} to contain one entry per directory listing
-% (equivalent to |ls -1| or |dir /b /s| with relative paths) as specified by
-% the \meta{glob}: the entries are strings. If unrestricted shell is not
-% enabled, no action is taken.
-% \end{function}
-%
-% \end{documentation}
-%
-% \begin{implementation}
-%
-% \section{\pkg{l3sys-shell} implementation}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<@@=sys>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2024-02-20}{}
- {L3 Experimental system shell functions}
-% \end{macrocode}
-%
-% \begin{variable}{\s_@@_stop}
-% Internal scan marks.
-% \begin{macrocode}
-\scan_new:N \s_@@_stop
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{variable}{\q_@@_nil}
-% Internal quarks.
-% \begin{macrocode}
-\quark_new:N \q_@@_nil
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{macro}[pTF]{\@@_quark_if_nil:n}
-% Branching quark conditional.
-% \begin{macrocode}
-\__kernel_quark_new_conditional:Nn \@@_quark_if_nil:N { F }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_path_to_win:n}
-% \begin{macro}[EXP]{\@@_path_to_win:w}
-% \begin{macro}[EXP]{\@@_path_to_win:N}
-% A simple expandable search-and-replace for providing Windows-style paths.
-% \begin{macrocode}
-\cs_new:Npn \@@_path_to_win:n #1
- {
- \exp_after:wN \@@_path_to_win:w \tl_to_str:n {#1} ~ \s_@@_stop
- }
-\cs_new:Npn \@@_path_to_win:w #1 ~ #2 \s_@@_stop
- {
- \@@_path_to_win:N #1 \q_@@_nil
- \tl_if_empty:nF {#2}
- {
- \c_space_tl
- \@@_path_to_win:w #2 \s_@@_stop
- }
- }
-\cs_new:Npn \@@_path_to_win:N #1
- {
- \@@_quark_if_nil:NF #1
- {
- \token_if_eq_meaning:NNTF #1 /
- { \c_backslash_str }
- {#1}
- \@@_path_to_win:N
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\sys_shell_cp:nn}
-% Simple Unix-like file copying: at some stage we may need a directory-only
-% version as Windows and Unix have different requirements here.
-% \begin{macrocode}
-\cs_new_protected:Npe \sys_shell_cp:nn #1#2
- {
- \sys_if_shell_unrestricted:T
- {
- \sys_shell_now:e
- {
- \sys_if_platform_unix:T
- {
- cp~-f~ \exp_not:N \tl_to_str:n {#1} ~
- \exp_not:N \tl_to_str:n {#2}
- }
- \sys_if_platform_windows:T
- {
- copy~/y~ \exp_not:N \@@_path_to_win:n {#1} ~
- \exp_not:N \@@_path_to_win:n {#2}
- }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\sys_shell_mkdir:n}
-% Windows (with the extensions) will automatically make directory trees but
-% issues a warning if the directory already exists: avoid by including a
-% test.
-% \begin{macrocode}
-\cs_new_protected:Npe \sys_shell_mkdir:n #1
- {
- \sys_if_shell_unrestricted:T
- {
- \sys_shell_now:e
- {
- \sys_if_platform_unix:T
- { mkdir~-p~ \exp_not:N \tl_to_str:n {#1} }
- \sys_if_platform_windows:T
- {
- if~not~exist~
- \exp_not:N \@@_path_to_win:n { #1 / nul } ~
- mkdir~ \exp_not:N \@@_path_to_win:n {#1}
- }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\sys_shell_mv:nn}
-% On Windows we do not have a single |mv| operation, so copy-and-delete
-% instead.
-% \begin{macrocode}
-\cs_new_protected:Npe \sys_shell_mv:nn #1#2
- {
- \sys_if_shell_unrestricted:T
- {
- \sys_shell_now:e
- {
- \sys_if_platform_unix:T
- {
- mv~ \exp_not:N \tl_to_str:n {#1} ~
- \exp_not:N \tl_to_str:n {#2}
- }
- \sys_if_platform_windows:T
- {
- copy~/y~ \exp_not:N \@@_path_to_win:n {#1} ~
- \exp_not:N \@@_path_to_win:n {#2}
- \token_to_str:N & \token_to_str:N &
- del~/f~/q~\exp_not:N \@@_path_to_win:n {#1}
- }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\sys_shell_rm:n}
-% Deletion: obviously a big health warning here!
-% \begin{macrocode}
-\cs_new_protected:Npe \sys_shell_rm:n #1
- {
- \sys_if_shell_unrestricted:T
- {
- \sys_shell_now:e
- {
- \sys_if_platform_unix:T
- { rm~-f~ \exp_not:N \tl_to_str:n {#1} }
- \sys_if_platform_windows:T
- { del~/f~/q~ \exp_not:N \@@_path_to_win:n {#1} }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\sys_shell_rmdir:n}
-% When removing a directory, we create it first as that avoids errors in
-% the Windows case.
-% \begin{macrocode}
-\cs_new_protected:Npe \sys_shell_rmdir:n #1
- {
- \sys_if_shell_unrestricted:T
- {
- \sys_shell_mkdir:n {#1}
- \sys_shell_now:e
- {
- \sys_if_platform_unix:T
- { rm~-rf~ \exp_not:N \tl_to_str:n {#1} }
- \sys_if_platform_windows:T
- { rmdir~/s~/q~ \exp_not:N \@@_path_to_win:n {#1} }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{variable}{\l_@@_tmp_seq, \l_@@_tmp_tl}
-% Scratch space.
-% \begin{macrocode}
-\seq_new:N \l_@@_tmp_seq
-\tl_new:N \l_@@_tmp_tl
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{macro}{\sys_get_shell_pwd:N}
-% Getting the path is easy: the main work is avoiding loosing any
-% information. (This information can be obtained using the recorder file:
-% that does not require shell escape. However, it's hard to see how it might
-% be useful without the other file functions.)
-% \begin{macrocode}
-\cs_new_protected:Npe \sys_get_shell_pwd:N #1
- {
- \sys_if_shell_unrestricted:T
- {
- \exp_not:N \sys_get_shell:nnN
- {
- \sys_if_platform_unix:T { pwd }
- \sys_if_platform_windows:T { cd }
- }
- {
- \char_set_catcode_other:N \exp_not:N \\
- \char_set_catcode_other:N \exp_not:N \#
- \char_set_catcode_other:N \exp_not:N \~
- \char_set_catcode_other:N \exp_not:N \%
- \char_set_catcode_space:N \exp_not:N \ %
- \tex_endlinechar:D -1 \scan_stop:
- }
- \exp_not:N \l_@@_tmp_tl
- \str_set:NV #1 \exp_not:N \l_@@_tmp_tl
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\sys_shell_split_ls:nN}
-% \begin{macro}{\@@_shell_split_ls:nN}
-% \begin{macro}{\@@_shell_split_ls:w}
-% Getting a one-per-line listing is easy enough. We need to set
-% \cs{ExplSyntaxOff} as that deals with the end-of-line character. After that,
-% just a case of tidying up. The listing always ends in |^^M| so there is an
-% extra entry to trim.
-% \begin{macrocode}
-\cs_new_protected:Npe \sys_shell_split_ls:nN #1#2
- {
- \sys_if_shell_unrestricted:T
- {
- \exp_not:N \exp_args:Ne \exp_not:N \sys_get_shell:nnN
- {
- \sys_if_platform_unix:T { ls~-1~ #1 }
- \sys_if_platform_windows:T
- { dir~/b~/s~ \exp_not:N \@@_path_to_win:n {#1} }
- }
- {
- \ExplSyntaxOff
- \char_set_catcode_other:N \exp_not:N \\
- \char_set_catcode_other:N \exp_not:N \#
- \char_set_catcode_other:N \exp_not:N \~
- \char_set_catcode_other:N \exp_not:N \%
- \char_set_catcode_other:n { 13 }
- }
- \exp_not:N \l_@@_tmp_tl
- \str_set:NV \exp_not:N \l_@@_tmp_tl \exp_not:N \l_@@_tmp_tl
- \seq_set_split:NnV #2 { \char_generate:nn { `\^^M } { 12 } }
- \exp_not:N \l_@@_tmp_tl
- \seq_pop_right:NN #2 \exp_not:N \l_@@_tmp_tl
- \exp_not:N \tl_if_blank:eTF { \exp_not:N \seq_item:Nn #2 { 1 } }
- { \seq_clear:N #2 }
- \sys_if_platform_windows:T
- {
- \sys_get_shell_pwd:N \exp_not:N \l_@@_tmp_tl
- \exp_not:N \exp_args:NV \exp_not:N \@@_shell_split_ls:nN
- \exp_not:N \l_@@_tmp_tl #2
- }
- }
- }
-% \end{macrocode}
-% On Windows, we can either get just file names (|dir /b|) or file names with
-% complete paths (|dir /s /b|), but not file names with relative paths in
-% a simple way. So we take the full paths and trim off the current working
-% directory. Normalization gives the same results as |ls|, hopefully.
-% \begin{macrocode}
-\sys_if_platform_windows:T
- {
- \cs_new_protected:Npe \@@_shell_split_ls:nN #1#2
- {
- \cs_set:Npn \exp_not:N \@@_shell_split_ls:w #1 \c_backslash_str { }
- \seq_set_eq:NN \exp_not:N \l_@@_tmp_seq #2
- \seq_clear:N #2
- \seq_map_inline:Nn \exp_not:N \l_@@_tmp_seq
- {
- \tl_set:Ne \exp_not:N \l_@@_tmp_tl
- { \exp_not:N \@@_shell_split_ls:w ##1 }
- \tl_replace_all:Nnn \exp_not:N \l_@@_tmp_tl
- { \c_backslash_str } { / }
- \seq_put_right:NV #2 \exp_not:N \l_@@_tmp_tl
- }
- }
- \cs_new:Npn \@@_shell_split_ls:w { }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
-% \end{implementation}
-%
-% \PrintIndex
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins
deleted file mode 100644
index 8e5e7169d90..00000000000
--- a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins
+++ /dev/null
@@ -1,62 +0,0 @@
-\iffalse meta-comment
-
-File: l3sys-shell.ins
-
-Copyright (C) 2018-2024 The LaTeX 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
-
- http://www.latex-project.org/lppl.txt
-
-This file is part of the "l3experimental 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
-
-\input docstrip %
-\askforoverwritefalse
-
-\preamble
-
-Copyright (C) 2018-2024 The LaTeX 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:
-
- http://www.latex-project.org/lppl.txt
-
-This file is part of the "l3experimental 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{l3sys-shell.sty}
- {
- \from{l3sys-shell.dtx}{package}
- }
-}
-
-\endbatchfile
diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
index c84f21ae973..404171ddc1b 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -672,7 +672,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2024-02-20}{}
+\ProvidesExplPackage{xcoffins}{2024-03-14}{}
{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 724d0d151d2..8299d51d117 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -686,7 +686,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2024-02-20}{}
+\ProvidesExplPackage{l3galley}{2024-03-14}{}
{L3 Experimental galley code}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
index 25344df931a..5e4389eb952 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -731,7 +731,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2024-02-20}{}
+\ProvidesExplPackage{xgalley}{2024-03-14}{}
{L3 Experimental galley}
\RequirePackage{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 2c3f5f892a3..76ef8ec9193 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{2024-02-20}%
+\def\ExplFileDate{2024-03-14}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -1695,6 +1695,16 @@
{\ExplFileDate\space L3 programming layer}%
% \end{macrocode}
%
+% \begin{macrocode}
+\ifnum\currentgrouplevel=0 %
+\else
+ \errhelp{expl3 cannot be loaded inside a group:
+ reading the code has been aborted.}%
+ \errmessage{expl3 Error: Loading attempted inside a group!}%
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
% \begin{variable}[int]{\l@expl@tidy@tl}
% Save the category code of |@| and then set it to \enquote{letter}.
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index 67bd4b8791a..66e999fe62c 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -1047,7 +1047,7 @@
% \texttt{n} arguments may be an unbraced single token
% (\emph{i.e.}~an \texttt{N} argument).
% \begin{texnote}
-% These are equivalent to \LaTeXe{}'s \tn{@gobble}, \tn{@gobbbletwo},
+% These are equivalent to \LaTeXe{}'s \tn{@gobble}, \tn{@gobbletwo},
% \emph{etc.}
% \end{texnote}
% \end{function}
@@ -1387,17 +1387,17 @@
% }
% Then some conditionals.
% \begin{macrocode}
-\tex_let:D \if_true: \tex_iftrue:D
-\tex_let:D \if_false: \tex_iffalse:D
-\tex_let:D \or: \tex_or:D
-\tex_let:D \else: \tex_else:D
-\tex_let:D \fi: \tex_fi:D
-\tex_let:D \reverse_if:N \tex_unless:D
-\tex_let:D \if:w \tex_if:D
-\tex_let:D \if_charcode:w \tex_if:D
-\tex_let:D \if_catcode:w \tex_ifcat:D
-\tex_let:D \if_meaning:w \tex_ifx:D
-\tex_let:D \if_bool:N \tex_ifodd:D
+\tex_global:D \tex_let:D \if_true: \tex_iftrue:D
+\tex_global:D \tex_let:D \if_false: \tex_iffalse:D
+\tex_global:D \tex_let:D \or: \tex_or:D
+\tex_global:D \tex_let:D \else: \tex_else:D
+\tex_global:D \tex_let:D \fi: \tex_fi:D
+\tex_global:D \tex_let:D \reverse_if:N \tex_unless:D
+\tex_global:D \tex_let:D \if:w \tex_if:D
+\tex_global:D \tex_let:D \if_charcode:w \tex_if:D
+\tex_global:D \tex_let:D \if_catcode:w \tex_ifcat:D
+\tex_global:D \tex_let:D \if_meaning:w \tex_ifx:D
+\tex_global:D \tex_let:D \if_bool:N \tex_ifodd:D
% \end{macrocode}
% \end{macro}
%
@@ -1410,20 +1410,20 @@
% }
% \TeX{} lets us detect some if its modes.
% \begin{macrocode}
-\tex_let:D \if_mode_math: \tex_ifmmode:D
-\tex_let:D \if_mode_horizontal: \tex_ifhmode:D
-\tex_let:D \if_mode_vertical: \tex_ifvmode:D
-\tex_let:D \if_mode_inner: \tex_ifinner:D
+\tex_global:D \tex_let:D \if_mode_math: \tex_ifmmode:D
+\tex_global:D \tex_let:D \if_mode_horizontal: \tex_ifhmode:D
+\tex_global:D \tex_let:D \if_mode_vertical: \tex_ifvmode:D
+\tex_global:D \tex_let:D \if_mode_inner: \tex_ifinner:D
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]{\if_cs_exist:N, \if_cs_exist:w, \cs:w, \cs_end:}
% Building csnames and testing if control sequences exist.
% \begin{macrocode}
-\tex_let:D \if_cs_exist:N \tex_ifdefined:D
-\tex_let:D \if_cs_exist:w \tex_ifcsname:D
-\tex_let:D \cs:w \tex_csname:D
-\tex_let:D \cs_end: \tex_endcsname:D
+\tex_global:D \tex_let:D \if_cs_exist:N \tex_ifdefined:D
+\tex_global:D \tex_let:D \if_cs_exist:w \tex_ifcsname:D
+\tex_global:D \tex_let:D \cs:w \tex_csname:D
+\tex_global:D \tex_let:D \cs_end: \tex_endcsname:D
% \end{macrocode}
% \end{macro}
%
@@ -1431,28 +1431,28 @@
% The five |\exp_| functions are used in the \pkg{l3expan} module
% where they are described.
% \begin{macrocode}
-\tex_let:D \exp_after:wN \tex_expandafter:D
-\tex_let:D \exp_not:N \tex_noexpand:D
-\tex_let:D \exp_not:n \tex_unexpanded:D
-\tex_let:D \exp:w \tex_romannumeral:D
-\tex_chardef:D \exp_end: = 0 ~
+\tex_global:D \tex_let:D \exp_after:wN \tex_expandafter:D
+\tex_global:D \tex_let:D \exp_not:N \tex_noexpand:D
+\tex_global:D \tex_let:D \exp_not:n \tex_unexpanded:D
+\tex_global:D \tex_let:D \exp:w \tex_romannumeral:D
+\tex_global:D \tex_chardef:D \exp_end: = 0 ~
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]{\token_to_meaning:N, \cs_meaning:N}
% Examining a control sequence or token.
% \begin{macrocode}
-\tex_let:D \token_to_meaning:N \tex_meaning:D
-\tex_let:D \cs_meaning:N \tex_meaning:D
+\tex_global:D \tex_let:D \token_to_meaning:N \tex_meaning:D
+\tex_global:D \tex_let:D \cs_meaning:N \tex_meaning:D
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]{\tl_to_str:n, \token_to_str:N, \__kernel_tl_to_str:w}
% Making strings.
% \begin{macrocode}
-\tex_let:D \tl_to_str:n \tex_detokenize:D
-\tex_let:D \token_to_str:N \tex_string:D
-\tex_let:D \__kernel_tl_to_str:w \tex_detokenize:D
+\tex_global:D \tex_let:D \tl_to_str:n \tex_detokenize:D
+\tex_global:D \tex_let:D \token_to_str:N \tex_string:D
+\tex_global:D \tex_let:D \__kernel_tl_to_str:w \tex_detokenize:D
% \end{macrocode}
% \end{macro}
%
@@ -1461,9 +1461,9 @@
% versions that are safe inside alignments. These safe versions are
% defined in the \pkg{l3prg} module.
% \begin{macrocode}
-\tex_let:D \scan_stop: \tex_relax:D
-\tex_let:D \group_begin: \tex_begingroup:D
-\tex_let:D \group_end: \tex_endgroup:D
+\tex_global:D \tex_let:D \scan_stop: \tex_relax:D
+\tex_global:D \tex_let:D \group_begin: \tex_begingroup:D
+\tex_global:D \tex_let:D \group_end: \tex_endgroup:D
% \end{macrocode}
% \end{macro}
%
@@ -1474,24 +1474,24 @@
% \begin{macro}[EXP]{\if_int_compare:w, \@@_to_roman:w}
% For integers.
% \begin{macrocode}
-\tex_let:D \if_int_compare:w \tex_ifnum:D
-\tex_let:D \@@_to_roman:w \tex_romannumeral:D
+\tex_global:D \tex_let:D \if_int_compare:w \tex_ifnum:D
+\tex_global:D \tex_let:D \@@_to_roman:w \tex_romannumeral:D
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\group_insert_after:N}
% Adding material after the end of a group.
% \begin{macrocode}
-\tex_let:D \group_insert_after:N \tex_aftergroup:D
+\tex_global:D \tex_let:D \group_insert_after:N \tex_aftergroup:D
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]{\exp_args:Nc, \exp_args:cc}
% Discussed in \pkg{l3expan}, but needed much earlier.
% \begin{macrocode}
-\tex_long:D \tex_def:D \exp_args:Nc #1#2
+\tex_long:D \tex_gdef:D \exp_args:Nc #1#2
{ \exp_after:wN #1 \cs:w #2 \cs_end: }
-\tex_long:D \tex_def:D \exp_args:cc #1#2
+\tex_long:D \tex_gdef:D \exp_args:cc #1#2
{ \cs:w #1 \exp_after:wN \cs_end: \cs:w #2 \cs_end: }
% \end{macrocode}
% \end{macro}
@@ -1505,8 +1505,8 @@
% are used. The \cs{cs_meaning:c} command must check for an undefined
% control sequence to avoid defining it mistakenly.
% \begin{macrocode}
-\tex_def:D \token_to_str:c { \exp_args:Nc \token_to_str:N }
-\tex_long:D \tex_def:D \cs_meaning:c #1
+\tex_gdef:D \token_to_str:c { \exp_args:Nc \token_to_str:N }
+\tex_long:D \tex_gdef:D \cs_meaning:c #1
{
\if_cs_exist:w #1 \cs_end:
\exp_after:wN \use_i:nn
@@ -1516,7 +1516,7 @@
{ \exp_args:Nc \cs_meaning:N {#1} }
{ \tl_to_str:n {undefined} }
}
-\tex_let:D \token_to_meaning:c = \cs_meaning:c
+\tex_global:D \tex_let:D \token_to_meaning:c = \cs_meaning:c
% \end{macrocode}
% \end{macro}
%
@@ -1531,7 +1531,7 @@
% required but it can't be used until the allocation has been set
% up properly!
% \begin{macrocode}
-\tex_chardef:D \c_zero_int = 0 ~
+\tex_global:D \tex_chardef:D \c_zero_int = 0 ~
% \end{macrocode}
% \end{variable}
%
@@ -1542,12 +1542,12 @@
% more registers available than \eTeX{}.
% \begin{macrocode}
\tex_ifdefined:D \tex_luatexversion:D
- \tex_chardef:D \c_max_register_int = 65 535 ~
+ \tex_global:D \tex_chardef:D \c_max_register_int = 65 535 ~
\tex_else:D
\tex_ifdefined:D \tex_omathchardef:D
- \tex_omathchardef:D \c_max_register_int = 65535 ~
+ \tex_global:D \tex_omathchardef:D \c_max_register_int = 65535 ~
\tex_else:D
- \tex_mathchardef:D \c_max_register_int = 32767 ~
+ \tex_global:D \tex_mathchardef:D \c_max_register_int = 32767 ~
\tex_fi:D
\tex_fi:D
% \end{macrocode}
@@ -1556,39 +1556,7 @@
% \subsection{Defining functions}
%
% We start by providing functions for the typical definition
-% functions. First the local ones.
-%
-% \begin{macro}
-% {
-% \cs_set_nopar:Npn , \cs_set_nopar:Npe , \cs_set_nopar:Npx ,
-% \cs_set:Npn , \cs_set:Npe , \cs_set:Npx ,
-% \cs_set_protected_nopar:Npn , \cs_set_protected_nopar:Npe , \cs_set_protected_nopar:Npx ,
-% \cs_set_protected:Npn , \cs_set_protected:Npe , \cs_set_protected:Npx
-% }
-% All assignment functions in \LaTeX3 should be naturally protected;
-% after all, the \TeX{} primitives for assignments are and it can be
-% a cause of problems if others aren't.
-% \begin{macrocode}
-\tex_let:D \cs_set_nopar:Npn \tex_def:D
-\tex_let:D \cs_set_nopar:Npe \tex_edef:D
-\tex_let:D \cs_set_nopar:Npx \tex_edef:D
-\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npn
- { \tex_long:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npe
- { \tex_long:D \tex_edef:D }
-\tex_let:D \cs_set:Npx \cs_set:Npe
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npn
- { \tex_protected:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npe
- { \tex_protected:D \tex_edef:D }
-\tex_let:D \cs_set_protected_nopar:Npx \cs_set_protected_nopar:Npe
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npn
- { \tex_protected:D \tex_long:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npe
- { \tex_protected:D \tex_long:D \tex_edef:D }
-\tex_let:D \cs_set_protected:Npx \cs_set_protected:Npe
-% \end{macrocode}
-% \end{macro}
+% functions. First the global ones.
%
% \begin{macro}
% {
@@ -1597,26 +1565,58 @@
% \cs_gset_protected_nopar:Npn , \cs_gset_protected_nopar:Npe , \cs_gset_protected_nopar:Npx ,
% \cs_gset_protected:Npn , \cs_gset_protected:Npe , \cs_gset_protected:Npx
% }
-% Global versions of the above functions.
+% All assignment functions in \LaTeX3 should be naturally protected;
+% after all, the \TeX{} primitives for assignments are and it can be
+% a cause of problems if others aren't.
% \begin{macrocode}
-\tex_let:D \cs_gset_nopar:Npn \tex_gdef:D
-\tex_let:D \cs_gset_nopar:Npe \tex_xdef:D
-\tex_let:D \cs_gset_nopar:Npx \tex_xdef:D
-\cs_set_protected:Npn \cs_gset:Npn
+\tex_global:D \tex_let:D \cs_gset_nopar:Npn \tex_gdef:D
+\tex_global:D \tex_let:D \cs_gset_nopar:Npe \tex_xdef:D
+\tex_global:D \tex_let:D \cs_gset_nopar:Npx \tex_xdef:D
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset:Npn
{ \tex_long:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset:Npe
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset:Npe
{ \tex_long:D \tex_xdef:D }
-\tex_let:D \cs_gset:Npx \cs_gset:Npe
-\cs_set_protected:Npn \cs_gset_protected_nopar:Npn
+\tex_global:D \tex_let:D \cs_gset:Npx \cs_gset:Npe
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected_nopar:Npn
{ \tex_protected:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset_protected_nopar:Npe
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected_nopar:Npe
{ \tex_protected:D \tex_xdef:D }
-\tex_let:D \cs_gset_protected_nopar:Npx \cs_gset_protected_nopar:Npe
-\cs_set_protected:Npn \cs_gset_protected:Npn
+\tex_global:D \tex_let:D \cs_gset_protected_nopar:Npx \cs_gset_protected_nopar:Npe
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected:Npn
{ \tex_protected:D \tex_long:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset_protected:Npe
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected:Npe
{ \tex_protected:D \tex_long:D \tex_xdef:D }
-\tex_let:D \cs_gset_protected:Npx \cs_gset_protected:Npe
+\tex_global:D \tex_let:D \cs_gset_protected:Npx \cs_gset_protected:Npe
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+% {
+% \cs_set_nopar:Npn , \cs_set_nopar:Npe , \cs_set_nopar:Npx ,
+% \cs_set:Npn , \cs_set:Npe , \cs_set:Npx ,
+% \cs_set_protected_nopar:Npn , \cs_set_protected_nopar:Npe , \cs_set_protected_nopar:Npx ,
+% \cs_set_protected:Npn , \cs_set_protected:Npe , \cs_set_protected:Npx
+% }
+% Local versions of the above functions.
+% \begin{macrocode}
+\tex_global:D \tex_let:D \cs_set_nopar:Npn \tex_def:D
+\tex_global:D \tex_let:D \cs_set_nopar:Npe \tex_edef:D
+\tex_global:D \tex_let:D \cs_set_nopar:Npx \tex_edef:D
+\cs_gset_protected:Npn \cs_set:Npn
+ { \tex_long:D \tex_def:D }
+\cs_gset_protected:Npn \cs_set:Npe
+ { \tex_long:D \tex_edef:D }
+\tex_global:D \tex_let:D \cs_set:Npx \cs_set:Npe
+\cs_gset_protected:Npn \cs_set_protected_nopar:Npn
+ { \tex_protected:D \tex_def:D }
+\cs_gset_protected:Npn \cs_set_protected_nopar:Npe
+ { \tex_protected:D \tex_edef:D }
+\tex_global:D \tex_let:D \cs_set_protected_nopar:Npx \cs_set_protected_nopar:Npe
+\cs_gset_protected:Npn \cs_set_protected:Npn
+ { \tex_protected:D \tex_long:D \tex_def:D }
+\cs_gset_protected:Npn \cs_set_protected:Npe
+ { \tex_protected:D \tex_long:D \tex_edef:D }
+\tex_global:D \tex_let:D \cs_set_protected:Npx \cs_set_protected:Npe
% \end{macrocode}
% \end{macro}
%
@@ -1631,14 +1631,14 @@
% used in defining conditionals. We don't use |tl| methods because
% \pkg{l3basics} is loaded earlier.
% \begin{macrocode}
-\cs_set_nopar:Npn \l_@@_internal_tl { }
+\cs_gset_nopar:Npn \l_@@_internal_tl { }
% \end{macrocode}
% \end{variable}
%
% \begin{macro}[EXP]{\use:c}
% This macro grabs its argument and returns a csname from it.
% \begin{macrocode}
-\cs_set:Npn \use:c #1 { \cs:w #1 \cs_end: }
+\cs_gset:Npn \use:c #1 { \cs:w #1 \cs_end: }
% \end{macrocode}
% \end{macro}
%
@@ -1646,7 +1646,7 @@
% Fully expands its argument and passes it to the input stream. Uses
% the reserved \cs{l_@@_internal_tl} which we've set up above.
% \begin{macrocode}
-\cs_set_protected:Npn \use:x #1
+\cs_gset_protected:Npn \use:x #1
{
\cs_set_nopar:Npx \l_@@_internal_tl {#1}
\l_@@_internal_tl
@@ -1660,7 +1660,7 @@
%
% \begin{macro}[EXP]{\use:e}
% \begin{macrocode}
-\cs_set:Npn \use:e #1 { \tex_expanded:D {#1} }
+\cs_gset:Npn \use:e #1 { \tex_expanded:D {#1} }
% \end{macrocode}
% \end{macro}
%
@@ -1672,18 +1672,18 @@
% These macros grab their arguments and return them back to the input
% (with outer braces removed).
% \begin{macrocode}
-\cs_set:Npn \use:n #1 {#1}
-\cs_set:Npn \use:nn #1#2 {#1#2}
-\cs_set:Npn \use:nnn #1#2#3 {#1#2#3}
-\cs_set:Npn \use:nnnn #1#2#3#4 {#1#2#3#4}
+\cs_gset:Npn \use:n #1 {#1}
+\cs_gset:Npn \use:nn #1#2 {#1#2}
+\cs_gset:Npn \use:nnn #1#2#3 {#1#2#3}
+\cs_gset:Npn \use:nnnn #1#2#3#4 {#1#2#3#4}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]{\use_i:nn, \use_ii:nn}
% The equivalent to \LaTeXe{}'s \tn{@firstoftwo} and \tn{@secondoftwo}.
% \begin{macrocode}
-\cs_set:Npn \use_i:nn #1#2 {#1}
-\cs_set:Npn \use_ii:nn #1#2 {#2}
+\cs_gset:Npn \use_i:nn #1#2 {#1}
+\cs_gset:Npn \use_ii:nn #1#2 {#2}
% \end{macrocode}
% \end{macro}
%
@@ -1705,60 +1705,60 @@
% }
% We also need something for picking up arguments from a longer list.
% \begin{macrocode}
-\cs_set:Npn \use_i:nnn #1#2#3 {#1}
-\cs_set:Npn \use_ii:nnn #1#2#3 {#2}
-\cs_set:Npn \use_iii:nnn #1#2#3 {#3}
-\cs_set:Npn \use_i:nnnn #1#2#3#4 {#1}
-\cs_set:Npn \use_ii:nnnn #1#2#3#4 {#2}
-\cs_set:Npn \use_iii:nnnn #1#2#3#4 {#3}
-\cs_set:Npn \use_iv:nnnn #1#2#3#4 {#4}
-\cs_set:Npn \use_i:nnnnn #1#2#3#4#5 {#1}
-\cs_set:Npn \use_ii:nnnnn #1#2#3#4#5 {#2}
-\cs_set:Npn \use_iii:nnnnn #1#2#3#4#5 {#3}
-\cs_set:Npn \use_iv:nnnnn #1#2#3#4#5 {#4}
-\cs_set:Npn \use_v:nnnnn #1#2#3#4#5 {#5}
-\cs_set:Npn \use_i:nnnnnn #1#2#3#4#5#6 {#1}
-\cs_set:Npn \use_ii:nnnnnn #1#2#3#4#5#6 {#2}
-\cs_set:Npn \use_iii:nnnnnn #1#2#3#4#5#6 {#3}
-\cs_set:Npn \use_iv:nnnnnn #1#2#3#4#5#6 {#4}
-\cs_set:Npn \use_v:nnnnnn #1#2#3#4#5#6 {#5}
-\cs_set:Npn \use_vi:nnnnnn #1#2#3#4#5#6 {#6}
-\cs_set:Npn \use_i:nnnnnnn #1#2#3#4#5#6#7 {#1}
-\cs_set:Npn \use_ii:nnnnnnn #1#2#3#4#5#6#7 {#2}
-\cs_set:Npn \use_iii:nnnnnnn #1#2#3#4#5#6#7 {#3}
-\cs_set:Npn \use_iv:nnnnnnn #1#2#3#4#5#6#7 {#4}
-\cs_set:Npn \use_v:nnnnnnn #1#2#3#4#5#6#7 {#5}
-\cs_set:Npn \use_vi:nnnnnnn #1#2#3#4#5#6#7 {#6}
-\cs_set:Npn \use_vii:nnnnnnn #1#2#3#4#5#6#7 {#7}
-\cs_set:Npn \use_i:nnnnnnnn #1#2#3#4#5#6#7#8 {#1}
-\cs_set:Npn \use_ii:nnnnnnnn #1#2#3#4#5#6#7#8 {#2}
-\cs_set:Npn \use_iii:nnnnnnnn #1#2#3#4#5#6#7#8 {#3}
-\cs_set:Npn \use_iv:nnnnnnnn #1#2#3#4#5#6#7#8 {#4}
-\cs_set:Npn \use_v:nnnnnnnn #1#2#3#4#5#6#7#8 {#5}
-\cs_set:Npn \use_vi:nnnnnnnn #1#2#3#4#5#6#7#8 {#6}
-\cs_set:Npn \use_vii:nnnnnnnn #1#2#3#4#5#6#7#8 {#7}
-\cs_set:Npn \use_viii:nnnnnnnn #1#2#3#4#5#6#7#8 {#8}
-\cs_set:Npn \use_i:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#1}
-\cs_set:Npn \use_ii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#2}
-\cs_set:Npn \use_iii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#3}
-\cs_set:Npn \use_iv:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#4}
-\cs_set:Npn \use_v:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#5}
-\cs_set:Npn \use_vi:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#6}
-\cs_set:Npn \use_vii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#7}
-\cs_set:Npn \use_viii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#8}
-\cs_set:Npn \use_ix:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#9}
+\cs_gset:Npn \use_i:nnn #1#2#3 {#1}
+\cs_gset:Npn \use_ii:nnn #1#2#3 {#2}
+\cs_gset:Npn \use_iii:nnn #1#2#3 {#3}
+\cs_gset:Npn \use_i:nnnn #1#2#3#4 {#1}
+\cs_gset:Npn \use_ii:nnnn #1#2#3#4 {#2}
+\cs_gset:Npn \use_iii:nnnn #1#2#3#4 {#3}
+\cs_gset:Npn \use_iv:nnnn #1#2#3#4 {#4}
+\cs_gset:Npn \use_i:nnnnn #1#2#3#4#5 {#1}
+\cs_gset:Npn \use_ii:nnnnn #1#2#3#4#5 {#2}
+\cs_gset:Npn \use_iii:nnnnn #1#2#3#4#5 {#3}
+\cs_gset:Npn \use_iv:nnnnn #1#2#3#4#5 {#4}
+\cs_gset:Npn \use_v:nnnnn #1#2#3#4#5 {#5}
+\cs_gset:Npn \use_i:nnnnnn #1#2#3#4#5#6 {#1}
+\cs_gset:Npn \use_ii:nnnnnn #1#2#3#4#5#6 {#2}
+\cs_gset:Npn \use_iii:nnnnnn #1#2#3#4#5#6 {#3}
+\cs_gset:Npn \use_iv:nnnnnn #1#2#3#4#5#6 {#4}
+\cs_gset:Npn \use_v:nnnnnn #1#2#3#4#5#6 {#5}
+\cs_gset:Npn \use_vi:nnnnnn #1#2#3#4#5#6 {#6}
+\cs_gset:Npn \use_i:nnnnnnn #1#2#3#4#5#6#7 {#1}
+\cs_gset:Npn \use_ii:nnnnnnn #1#2#3#4#5#6#7 {#2}
+\cs_gset:Npn \use_iii:nnnnnnn #1#2#3#4#5#6#7 {#3}
+\cs_gset:Npn \use_iv:nnnnnnn #1#2#3#4#5#6#7 {#4}
+\cs_gset:Npn \use_v:nnnnnnn #1#2#3#4#5#6#7 {#5}
+\cs_gset:Npn \use_vi:nnnnnnn #1#2#3#4#5#6#7 {#6}
+\cs_gset:Npn \use_vii:nnnnnnn #1#2#3#4#5#6#7 {#7}
+\cs_gset:Npn \use_i:nnnnnnnn #1#2#3#4#5#6#7#8 {#1}
+\cs_gset:Npn \use_ii:nnnnnnnn #1#2#3#4#5#6#7#8 {#2}
+\cs_gset:Npn \use_iii:nnnnnnnn #1#2#3#4#5#6#7#8 {#3}
+\cs_gset:Npn \use_iv:nnnnnnnn #1#2#3#4#5#6#7#8 {#4}
+\cs_gset:Npn \use_v:nnnnnnnn #1#2#3#4#5#6#7#8 {#5}
+\cs_gset:Npn \use_vi:nnnnnnnn #1#2#3#4#5#6#7#8 {#6}
+\cs_gset:Npn \use_vii:nnnnnnnn #1#2#3#4#5#6#7#8 {#7}
+\cs_gset:Npn \use_viii:nnnnnnnn #1#2#3#4#5#6#7#8 {#8}
+\cs_gset:Npn \use_i:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#1}
+\cs_gset:Npn \use_ii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#2}
+\cs_gset:Npn \use_iii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#3}
+\cs_gset:Npn \use_iv:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#4}
+\cs_gset:Npn \use_v:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#5}
+\cs_gset:Npn \use_vi:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#6}
+\cs_gset:Npn \use_vii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#7}
+\cs_gset:Npn \use_viii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#8}
+\cs_gset:Npn \use_ix:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#9}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]{\use_i_ii:nnn}
% \begin{macrocode}
-\cs_set:Npn \use_i_ii:nnn #1#2#3 {#1#2}
+\cs_gset:Npn \use_i_ii:nnn #1#2#3 {#1#2}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]{\use_ii_i:nn}
% \begin{macrocode}
-\cs_set:Npn \use_ii_i:nn #1#2 { #2 #1 }
+\cs_gset:Npn \use_ii_i:nn #1#2 { #2 #1 }
% \end{macrocode}
% \end{macro}
%
@@ -1772,9 +1772,9 @@
% Functions that gobble everything until they see either \cs{q_nil},
% \cs{q_stop}, or \cs{q_recursion_stop}, respectively.
% \begin{macrocode}
-\cs_set:Npn \use_none_delimit_by_q_nil:w #1 \q_nil { }
-\cs_set:Npn \use_none_delimit_by_q_stop:w #1 \q_stop { }
-\cs_set:Npn \use_none_delimit_by_q_recursion_stop:w #1 \q_recursion_stop { }
+\cs_gset:Npn \use_none_delimit_by_q_nil:w #1 \q_nil { }
+\cs_gset:Npn \use_none_delimit_by_q_stop:w #1 \q_stop { }
+\cs_gset:Npn \use_none_delimit_by_q_recursion_stop:w #1 \q_recursion_stop { }
% \end{macrocode}
% \end{macro}
%
@@ -1788,9 +1788,9 @@
% when you need to skip the rest of a mapping sequence but want an
% easy way to control what should be expanded next.
% \begin{macrocode}
-\cs_set:Npn \use_i_delimit_by_q_nil:nw #1#2 \q_nil {#1}
-\cs_set:Npn \use_i_delimit_by_q_stop:nw #1#2 \q_stop {#1}
-\cs_set:Npn \use_i_delimit_by_q_recursion_stop:nw
+\cs_gset:Npn \use_i_delimit_by_q_nil:nw #1#2 \q_nil {#1}
+\cs_gset:Npn \use_i_delimit_by_q_stop:nw #1#2 \q_stop {#1}
+\cs_gset:Npn \use_i_delimit_by_q_recursion_stop:nw
#1#2 \q_recursion_stop {#1}
% \end{macrocode}
% \end{macro}
@@ -1817,15 +1817,15 @@
% who will assume that expanding such a function once takes care
% of gobbling all the tokens in one go.
% \begin{macrocode}
-\cs_set:Npn \use_none:n #1 { }
-\cs_set:Npn \use_none:nn #1#2 { }
-\cs_set:Npn \use_none:nnn #1#2#3 { }
-\cs_set:Npn \use_none:nnnn #1#2#3#4 { }
-\cs_set:Npn \use_none:nnnnn #1#2#3#4#5 { }
-\cs_set:Npn \use_none:nnnnnn #1#2#3#4#5#6 { }
-\cs_set:Npn \use_none:nnnnnnn #1#2#3#4#5#6#7 { }
-\cs_set:Npn \use_none:nnnnnnnn #1#2#3#4#5#6#7#8 { }
-\cs_set:Npn \use_none:nnnnnnnnn #1#2#3#4#5#6#7#8#9 { }
+\cs_gset:Npn \use_none:n #1 { }
+\cs_gset:Npn \use_none:nn #1#2 { }
+\cs_gset:Npn \use_none:nnn #1#2#3 { }
+\cs_gset:Npn \use_none:nnnn #1#2#3#4 { }
+\cs_gset:Npn \use_none:nnnnn #1#2#3#4#5 { }
+\cs_gset:Npn \use_none:nnnnnn #1#2#3#4#5#6 { }
+\cs_gset:Npn \use_none:nnnnnnn #1#2#3#4#5#6#7 { }
+\cs_gset:Npn \use_none:nnnnnnnn #1#2#3#4#5#6#7#8 { }
+\cs_gset:Npn \use_none:nnnnnnnnn #1#2#3#4#5#6#7#8#9 { }
% \end{macrocode}
% \end{macro}
%
@@ -1840,20 +1840,20 @@
% up with guards. We can also more easily change the logic in one
% place then. This is needed primarily for deprecations.
% \begin{macrocode}
-\cs_set_protected:Npn \__kernel_if_debug:TF #1#2 {#2}
+\cs_gset_protected:Npn \__kernel_if_debug:TF #1#2 {#2}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\debug_on:n, \debug_off:n}
% Stubs.
% \begin{macrocode}
-\cs_set_protected:Npn \debug_on:n #1
+\cs_gset_protected:Npn \debug_on:n #1
{
\sys_load_debug:
\cs_if_exist:NT \@@_all_on:
{ \debug_on:n {#1} }
}
-\cs_set_protected:Npn \debug_off:n #1
+\cs_gset_protected:Npn \debug_off:n #1
{
\sys_load_debug:
\cs_if_exist:NT \@@_all_on:
@@ -1864,8 +1864,8 @@
%
% \begin{macro}{\debug_suspend:, \debug_resume:}
% \begin{macrocode}
-\cs_set_protected:Npn \debug_suspend: { }
-\cs_set_protected:Npn \debug_resume: { }
+\cs_gset_protected:Npn \debug_suspend: { }
+\cs_gset_protected:Npn \debug_resume: { }
% \end{macrocode}
% \end{macro}
%
@@ -1875,9 +1875,9 @@
% only make these into errors if the user requests it. This relies on
% two token lists, filled up in \pkg{l3deprecation}.
% \begin{macrocode}
-\cs_set_nopar:Npn \g_@@_deprecation_on_tl { }
-\cs_set_nopar:Npn \g_@@_deprecation_off_tl { }
-\cs_set_protected:Npn \__kernel_deprecation_code:nn #1#2
+\cs_gset_nopar:Npn \g_@@_deprecation_on_tl { }
+\cs_gset_nopar:Npn \g_@@_deprecation_off_tl { }
+\cs_gset_protected:Npn \__kernel_deprecation_code:nn #1#2
{
\tl_gput_right:Nn \g_@@_deprecation_on_tl {#1}
\tl_gput_right:Nn \g_@@_deprecation_off_tl {#2}
@@ -1923,9 +1923,9 @@
% at least two tokens: see how the logical tests are actually implemented
% to see this.
% \begin{macrocode}
-\cs_set:Npn \prg_return_true:
+\cs_gset:Npn \prg_return_true:
{ \exp_after:wN \use_i:nn \exp:w }
-\cs_set:Npn \prg_return_false:
+\cs_gset:Npn \prg_return_false:
{ \exp_after:wN \use_ii:nn \exp:w}
% \end{macrocode}
% An extended state space could be implemented by including a more
@@ -1936,7 +1936,7 @@
% \begin{macro}[EXP]{\@@_use_none_delimit_by_q_recursion_stop:w}
% Private version of \cs{use_none_delimit_by_q_recursion_stop:w}.
% \begin{macrocode}
-\cs_set:Npn \@@_use_none_delimit_by_q_recursion_stop:w
+\cs_gset:Npn \@@_use_none_delimit_by_q_recursion_stop:w
#1 \q_@@_recursion_stop { }
% \end{macrocode}
% \end{macro}
@@ -1962,19 +1962,19 @@
% conditionals.
% Note that |e| stands for expandable and |p| for protected.
% \begin{macrocode}
-\cs_set_protected:Npn \prg_set_conditional:Npnn
+\cs_gset_protected:Npn \prg_set_conditional:Npnn
{ \@@_generate_conditional_parm:NNNpnn \cs_set:Npn e }
-\cs_set_protected:Npn \prg_gset_conditional:Npnn
+\cs_gset_protected:Npn \prg_gset_conditional:Npnn
{ \@@_generate_conditional_parm:NNNpnn \cs_gset:Npn e }
-\cs_set_protected:Npn \prg_new_conditional:Npnn
+\cs_gset_protected:Npn \prg_new_conditional:Npnn
{ \@@_generate_conditional_parm:NNNpnn \cs_new:Npn e }
-\cs_set_protected:Npn \prg_set_protected_conditional:Npnn
+\cs_gset_protected:Npn \prg_set_protected_conditional:Npnn
{ \@@_generate_conditional_parm:NNNpnn \cs_set_protected:Npn p }
-\cs_set_protected:Npn \prg_gset_protected_conditional:Npnn
+\cs_gset_protected:Npn \prg_gset_protected_conditional:Npnn
{ \@@_generate_conditional_parm:NNNpnn \cs_gset_protected:Npn p }
-\cs_set_protected:Npn \prg_new_protected_conditional:Npnn
+\cs_gset_protected:Npn \prg_new_protected_conditional:Npnn
{ \@@_generate_conditional_parm:NNNpnn \cs_new_protected:Npn p }
-\cs_set_protected:Npn \@@_generate_conditional_parm:NNNpnn #1#2#3#4#
+\cs_gset_protected:Npn \@@_generate_conditional_parm:NNNpnn #1#2#3#4#
{
\use:e
{
@@ -2014,19 +2014,19 @@
% erroneous case where the function name contains no colon is captured
% later.
% \begin{macrocode}
-\cs_set_protected:Npn \prg_set_conditional:Nnn
+\cs_gset_protected:Npn \prg_set_conditional:Nnn
{ \@@_generate_conditional_count:NNNnn \cs_set:Npn e }
-\cs_set_protected:Npn \prg_gset_conditional:Nnn
+\cs_gset_protected:Npn \prg_gset_conditional:Nnn
{ \@@_generate_conditional_count:NNNnn \cs_set:Npn e }
-\cs_set_protected:Npn \prg_new_conditional:Nnn
+\cs_gset_protected:Npn \prg_new_conditional:Nnn
{ \@@_generate_conditional_count:NNNnn \cs_new:Npn e }
-\cs_set_protected:Npn \prg_set_protected_conditional:Nnn
+\cs_gset_protected:Npn \prg_set_protected_conditional:Nnn
{ \@@_generate_conditional_count:NNNnn \cs_set_protected:Npn p }
-\cs_set_protected:Npn \prg_gset_protected_conditional:Nnn
+\cs_gset_protected:Npn \prg_gset_protected_conditional:Nnn
{ \@@_generate_conditional_count:NNNnn \cs_gset_protected:Npn p }
-\cs_set_protected:Npn \prg_new_protected_conditional:Nnn
+\cs_gset_protected:Npn \prg_new_protected_conditional:Nnn
{ \@@_generate_conditional_count:NNNnn \cs_new_protected:Npn p }
-\cs_set_protected:Npn \@@_generate_conditional_count:NNNnn #1#2#3
+\cs_gset_protected:Npn \@@_generate_conditional_count:NNNnn #1#2#3
{
\use:e
{
@@ -2035,7 +2035,7 @@
}
#1 #2
}
-\cs_set_protected:Npn \@@_generate_conditional_count:nnNNNnn #1#2#3#4#5
+\cs_gset_protected:Npn \@@_generate_conditional_count:nnNNNnn #1#2#3#4#5
{
\__kernel_cs_parm_from_arg_count:nnF
{ \@@_generate_conditional:nnNNNnnn {#1} {#2} #3 #4 #5 }
@@ -2076,7 +2076,7 @@
% \cs{use_i:nn} instead of \cs{use_i_ii:nnn} to functions such as
% \cs{@@_generate_p_form:wNNnnnnN}.
% \begin{macrocode}
-\cs_set_protected:Npn \@@_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8
+\cs_gset_protected:Npn \@@_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8
{
\if_meaning:w \c_false_bool #3
\msg_error:nne { kernel } { missing-colon }
@@ -2097,10 +2097,10 @@
\exp_not:n { , \q_@@_recursion_tail , \q_@@_recursion_stop }
}
}
-\cs_set:Npn \@@_generate_conditional_test:w
+\cs_gset:Npn \@@_generate_conditional_test:w
#1 \prg_return_true: \else: \prg_return_false: \fi: \s_@@_mark #2
{ #2 {#1} }
-\cs_set:Npn \@@_generate_conditional_fast:nw #1#2 \exp_not:n #3
+\cs_gset:Npn \@@_generate_conditional_fast:nw #1#2 \exp_not:n #3
{ \exp_not:n { {#1} \use_i:nn } }
% \end{macrocode}
% Looping through the list of desired forms. First are six arguments
@@ -2111,7 +2111,7 @@
% then \cs{use_none:nnnnnnnn} cleans up. Otherwise, the
% error message is removed by the variant form.
% \begin{macrocode}
-\cs_set_protected:Npn \@@_generate_conditional:NNnnnnNw #1#2#3#4#5#6#7#8 ,
+\cs_gset_protected:Npn \@@_generate_conditional:NNnnnnNw #1#2#3#4#5#6#7#8 ,
{
\if_meaning:w \q_@@_recursion_tail #8
\exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
@@ -2158,7 +2158,7 @@
% but if those are actually missing, the recovery from the runaway argument
% would not insert \cs{fi:} back, messing up nesting of conditionals.
% \begin{macrocode}
-\cs_set_protected:Npn \@@_generate_p_form:wNNnnnnN
+\cs_gset_protected:Npn \@@_generate_p_form:wNNnnnnN
#1 \s_@@_stop #2#3#4#5#6#7#8
{
\if_meaning:w e #3
@@ -2177,7 +2177,7 @@
{ \token_to_str:c { #4 _p: #5 } }
}
}
-\cs_set_protected:Npn \@@_generate_T_form:wNNnnnnN
+\cs_gset_protected:Npn \@@_generate_T_form:wNNnnnnN
#1 \s_@@_stop #2#3#4#5#6#7#8
{
#8
@@ -2185,7 +2185,7 @@
{ { #7 \exp_end: \use:n \use_none:n } }
{ #7 \@@_T_true:w \fi: \use_none:n }
}
-\cs_set_protected:Npn \@@_generate_F_form:wNNnnnnN
+\cs_gset_protected:Npn \@@_generate_F_form:wNNnnnnN
#1 \s_@@_stop #2#3#4#5#6#7#8
{
#8
@@ -2193,7 +2193,7 @@
{ { #7 \exp_end: { } } }
{ #7 \@@_F_true:w \fi: \use:n }
}
-\cs_set_protected:Npn \@@_generate_TF_form:wNNnnnnN
+\cs_gset_protected:Npn \@@_generate_TF_form:wNNnnnnN
#1 \s_@@_stop #2#3#4#5#6#7#8
{
#8
@@ -2201,10 +2201,10 @@
{ { #7 \exp_end: } }
{ #7 \@@_TF_true:w \fi: \use_ii:nn }
}
-\cs_set:Npn \@@_p_true:w \fi: \c_false_bool { \fi: \c_true_bool }
-\cs_set:Npn \@@_T_true:w \fi: \use_none:n { \fi: \use:n }
-\cs_set:Npn \@@_F_true:w \fi: \use:n { \fi: \use_none:n }
-\cs_set:Npn \@@_TF_true:w \fi: \use_ii:nn { \fi: \use_i:nn }
+\cs_gset:Npn \@@_p_true:w \fi: \c_false_bool { \fi: \c_true_bool }
+\cs_gset:Npn \@@_T_true:w \fi: \use_none:n { \fi: \use:n }
+\cs_gset:Npn \@@_F_true:w \fi: \use:n { \fi: \use_none:n }
+\cs_gset:Npn \@@_TF_true:w \fi: \use_ii:nn { \fi: \use_i:nn }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2223,13 +2223,13 @@
% |,| \cs{q_@@_recursion_stop}
% to a first auxiliary.
% \begin{macrocode}
-\cs_set_protected:Npn \prg_set_eq_conditional:NNn
+\cs_gset_protected:Npn \prg_set_eq_conditional:NNn
{ \@@_set_eq_conditional:NNNn \cs_set_eq:cc }
-\cs_set_protected:Npn \prg_gset_eq_conditional:NNn
+\cs_gset_protected:Npn \prg_gset_eq_conditional:NNn
{ \@@_set_eq_conditional:NNNn \cs_gset_eq:cc }
-\cs_set_protected:Npn \prg_new_eq_conditional:NNn
+\cs_gset_protected:Npn \prg_new_eq_conditional:NNn
{ \@@_set_eq_conditional:NNNn \cs_new_eq:cc }
-\cs_set_protected:Npn \@@_set_eq_conditional:NNNn #1#2#3#4
+\cs_gset_protected:Npn \@@_set_eq_conditional:NNNn #1#2#3#4
{
\use:e
{
@@ -2268,7 +2268,7 @@
% step in the loop, make sure that the conditional form we copy is
% defined, and copy it, otherwise abort.
% \begin{macrocode}
-\cs_set_protected:Npn \@@_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6
+\cs_gset_protected:Npn \@@_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6
{
\if_meaning:w \c_false_bool #3
\msg_error:nne { kernel } { missing-colon }
@@ -2282,7 +2282,7 @@
\fi:
\@@_set_eq_conditional_loop:nnnnNw {#1} {#2} {#4} {#5}
}
-\cs_set_protected:Npn \@@_set_eq_conditional_loop:nnnnNw #1#2#3#4#5#6 ,
+\cs_gset_protected:Npn \@@_set_eq_conditional_loop:nnnnNw #1#2#3#4#5#6 ,
{
\if_meaning:w \q_@@_recursion_tail #6
\exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
@@ -2299,13 +2299,13 @@
#5 {#1} {#2} {#3} {#4}
\@@_set_eq_conditional_loop:nnnnNw {#1} {#2} {#3} {#4} #5
}
-\cs_set:Npn \@@_set_eq_conditional_p_form:wNnnnn #1 \s_@@_stop #2#3#4#5#6
+\cs_gset:Npn \@@_set_eq_conditional_p_form:wNnnnn #1 \s_@@_stop #2#3#4#5#6
{ #2 { #3 _p : #4 } { #5 _p : #6 } }
-\cs_set:Npn \@@_set_eq_conditional_TF_form:wNnnnn #1 \s_@@_stop #2#3#4#5#6
+\cs_gset:Npn \@@_set_eq_conditional_TF_form:wNnnnn #1 \s_@@_stop #2#3#4#5#6
{ #2 { #3 : #4 TF } { #5 : #6 TF } }
-\cs_set:Npn \@@_set_eq_conditional_T_form:wNnnnn #1 \s_@@_stop #2#3#4#5#6
+\cs_gset:Npn \@@_set_eq_conditional_T_form:wNnnnn #1 \s_@@_stop #2#3#4#5#6
{ #2 { #3 : #4 T } { #5 : #6 T } }
-\cs_set:Npn \@@_set_eq_conditional_F_form:wNnnnn #1 \s_@@_stop #2#3#4#5#6
+\cs_gset:Npn \@@_set_eq_conditional_F_form:wNnnnn #1 \s_@@_stop #2#3#4#5#6
{ #2 { #3 : #4 F } { #5 : #6 F } }
% \end{macrocode}
% \end{macro}
@@ -2323,8 +2323,8 @@
% \begin{variable}{\c_true_bool, \c_false_bool}
% Here are the canonical boolean values.
% \begin{macrocode}
-\tex_chardef:D \c_true_bool = 1 ~
-\tex_chardef:D \c_false_bool = 0 ~
+\tex_global:D \tex_chardef:D \c_true_bool = 1 ~
+\tex_global:D \tex_chardef:D \c_false_bool = 0 ~
% \end{macrocode}
% \end{variable}
%
@@ -2392,7 +2392,7 @@
% In all three cases, \cs{cs_to_str:N} takes two expansion steps
% to be fully expanded.
% \begin{macrocode}
-\cs_set:Npn \cs_to_str:N
+\cs_gset:Npn \cs_to_str:N
{
% \end{macrocode}
% We implement the expansion scheme using \cs{tex_romannumeral:D}
@@ -2405,8 +2405,8 @@
\if:w \token_to_str:N \ \@@_to_str:w \fi:
\exp_after:wN \@@_to_str:N \token_to_str:N
}
-\cs_set:Npn \@@_to_str:N #1 { \c_zero_int }
-\cs_set:Npn \@@_to_str:w #1 \@@_to_str:N
+\cs_gset:Npn \@@_to_str:N #1 { \c_zero_int }
+\cs_gset:Npn \@@_to_str:w #1 \@@_to_str:N
{ - \int_value:w \fi: \exp_after:wN \c_zero_int }
% \end{macrocode}
% If speed is a concern we could use \tn{csstring} in \LuaTeX{}. For
@@ -2436,19 +2436,19 @@
% auxiliary trims the trailing \cs{s_@@_mark} from the function name if
% present (that is, if the original function had no colon).
% \begin{macrocode}
-\cs_set_protected:Npn \@@_tmp:w #1
+\cs_gset_protected:Npn \@@_tmp:w #1
{
- \cs_set:Npn \cs_split_function:N ##1
+ \cs_gset:Npn \cs_split_function:N ##1
{
\exp_after:wN \exp_after:wN \exp_after:wN
\@@_split_function_auxi:w
\cs_to_str:N ##1 \s_@@_mark \c_true_bool
#1 \s_@@_mark \c_false_bool \s_@@_stop
}
- \cs_set:Npn \@@_split_function_auxi:w
+ \cs_gset:Npn \@@_split_function_auxi:w
##1 #1 ##2 \s_@@_mark ##3##4 \s_@@_stop
{ \@@_split_function_auxii:w ##1 \s_@@_mark \s_@@_stop {##2} ##3 }
- \cs_set:Npn \@@_split_function_auxii:w ##1 \s_@@_mark ##2 \s_@@_stop
+ \cs_gset:Npn \@@_split_function_auxii:w ##1 \s_@@_mark ##2 \s_@@_stop
{ {##1} }
}
\exp_after:wN \@@_tmp:w \token_to_str:N :
@@ -2476,7 +2476,7 @@
% \cs{else:} in the top level functions will be removed by the optimization,
% and this usage of \cs{else:} will be fine).
% \begin{macrocode}
-\prg_set_conditional:Npnn \cs_if_exist:N #1 { p , T , F , TF }
+\prg_gset_conditional:Npnn \cs_if_exist:N #1 { p , T , F , TF }
{
\if_meaning:w #1 \scan_stop:
\use_i:nnnn
@@ -2498,7 +2498,7 @@
% \begin{macrocode}
\cs_if_exist:NTF \tex_lastnamedcs:D
{
- \prg_set_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF }
+ \prg_gset_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF }
{
\if_cs_exist:w #1 \cs_end:
\@@_if_exist_c_aux:
@@ -2507,11 +2507,11 @@
\prg_return_false:
\fi:
}
- \cs_set:Npn \@@_if_exist_c_aux:
+ \cs_gset:Npn \@@_if_exist_c_aux:
{ \fi: \exp_after:wN \if_meaning:w \tex_lastnamedcs:D \scan_stop: \else: }
}
{
- \prg_set_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF }
+ \prg_gset_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF }
{
\if_cs_exist:w #1 \cs_end:
\@@_if_exist_c_aux:w
@@ -2523,7 +2523,7 @@
\prg_return_false:
\fi:
}
- \cs_set:Npn \@@_if_exist_c_aux:w \fi: \use_none:n #1 \if_false:
+ \cs_gset:Npn \@@_if_exist_c_aux:w \fi: \use_none:n #1 \if_false:
{ \fi: \exp_after:wN \if_meaning:w \cs:w #1 \cs_end: \scan_stop: \else: }
}
% \end{macrocode}
@@ -2533,7 +2533,7 @@
% \begin{macro}[pTF, EXP]{\cs_if_free:N, \cs_if_free:c}
% The logical reversal of the above.
% \begin{macrocode}
-\prg_set_conditional:Npnn \cs_if_free:N #1 { p , T , F , TF }
+\prg_gset_conditional:Npnn \cs_if_free:N #1 { p , T , F , TF }
{
\if_cs_exist:N #1
\else:
@@ -2547,7 +2547,7 @@
}
\cs_if_exist:NTF \tex_lastnamedcs:D
{
- \prg_set_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF }
+ \prg_gset_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF }
{
\if_cs_exist:w #1 \cs_end:
\@@_if_free_c_aux:w
@@ -2558,11 +2558,11 @@
\prg_return_false:
\fi:
}
- \cs_set:Npn \@@_if_free_c_aux:w \fi: \if_true:
+ \cs_gset:Npn \@@_if_free_c_aux:w \fi: \if_true:
{ \fi: \exp_after:wN \if_meaning:w \tex_lastnamedcs:D \scan_stop: }
}
{
- \prg_set_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF }
+ \prg_gset_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF }
{
\if_cs_exist:w #1 \cs_end:
\@@_if_free_c_aux:w
@@ -2574,7 +2574,7 @@
\prg_return_false:
\fi:
}
- \cs_set:Npn \@@_if_free_c_aux:w \fi: \use_none:n #1 \if_true:
+ \cs_gset:Npn \@@_if_free_c_aux:w \fi: \use_none:n #1 \if_true:
{ \fi: \exp_after:wN \if_meaning:w \cs:w #1 \cs_end: \scan_stop: }
}
% \end{macrocode}
@@ -2591,49 +2591,49 @@
% sequence in the hash table if it does not exist.
% If available we use the \tn{lastnamedcs} primitive.
% \begin{macrocode}
-\cs_set:Npn \cs_if_exist_use:NTF #1#2
+\cs_gset:Npn \cs_if_exist_use:NTF #1#2
{ \cs_if_exist:NTF #1 { #1 #2 } }
-\cs_set:Npn \cs_if_exist_use:NF #1
+\cs_gset:Npn \cs_if_exist_use:NF #1
{ \cs_if_exist:NTF #1 #1 }
-\cs_set:Npn \cs_if_exist_use:NT #1 #2
+\cs_gset:Npn \cs_if_exist_use:NT #1 #2
{ \cs_if_exist:NT #1 { #1 #2 } }
-\cs_set:Npn \cs_if_exist_use:N #1
+\cs_gset:Npn \cs_if_exist_use:N #1
{ \cs_if_exist:NT #1 #1 }
\cs_if_exist:NTF \tex_lastnamedcs:D
{
- \cs_set:Npn \cs_if_exist_use:cTF #1
+ \cs_gset:Npn \cs_if_exist_use:cTF #1
{
\if_cs_exist:w #1 \cs_end:
\@@_if_exist_use_aux:w
\fi:
\use_ii:nn
}
- \cs_set:Npn \@@_if_exist_use_aux:w \fi: \use_ii:nn
+ \cs_gset:Npn \@@_if_exist_use_aux:w \fi: \use_ii:nn
{ \fi: \exp_after:wN \@@_if_exist_use_aux:Nnn \tex_lastnamedcs:D }
}
{
- \cs_set:Npn \cs_if_exist_use:cTF #1
+ \cs_gset:Npn \cs_if_exist_use:cTF #1
{
\if_cs_exist:w #1 \cs_end:
\@@_if_exist_use_aux:w
\fi:
\use_iii:nnn {#1}
}
- \cs_set:Npn \@@_if_exist_use_aux:w \fi: \use_iii:nnn #1
+ \cs_gset:Npn \@@_if_exist_use_aux:w \fi: \use_iii:nnn #1
{ \fi: \exp_after:wN \@@_if_exist_use_aux:Nnn \cs:w #1 \cs_end: }
}
-\cs_set:Npn \@@_if_exist_use_aux:Nnn #1#2
+\cs_gset:Npn \@@_if_exist_use_aux:Nnn #1#2
{
\if_meaning:w #1 \scan_stop:
\exp_after:wN \use_iii:nnn
\fi:
\use_i:nn { #1 #2 }
}
-\cs_set:Npn \cs_if_exist_use:cF #1
+\cs_gset:Npn \cs_if_exist_use:cF #1
{ \cs_if_exist_use:cTF {#1} {} }
-\cs_set:Npn \cs_if_exist_use:cT #1#2
+\cs_gset:Npn \cs_if_exist_use:cT #1#2
{ \cs_if_exist_use:cTF {#1} {#2} {} }
-\cs_set:Npn \cs_if_exist_use:c #1
+\cs_gset:Npn \cs_if_exist_use:c #1
{ \cs_if_exist_use:cTF {#1} {} {} }
% \end{macrocode}
% \end{macro}
@@ -2659,7 +2659,7 @@
% a reasonable response. Setting the \tn{newlinechar} is needed, to
% turn |^^J| into a proper line break in plain \TeX{}.
% \begin{macrocode}
-\cs_set_protected:Npn \msg_error:nnee #1#2#3#4
+\cs_gset_protected:Npn \msg_error:nnee #1#2#3#4
{
\tex_newlinechar:D = `\^^J \scan_stop:
\tex_errmessage:D
@@ -2672,9 +2672,9 @@
}
\tex_end:D
}
-\cs_set_protected:Npn \msg_error:nne #1#2#3
+\cs_gset_protected:Npn \msg_error:nne #1#2#3
{ \msg_error:nnee {#1} {#2} {#3} { } }
-\cs_set_protected:Npn \msg_error:nn #1#2
+\cs_gset_protected:Npn \msg_error:nn #1#2
{ \msg_error:nnee {#1} {#2} { } { } }
% \end{macrocode}
% \end{macro}
@@ -2682,7 +2682,7 @@
% \begin{macro}[rEXP]{\msg_line_context:}
% Another one from \pkg{l3msg} which will be altered later.
% \begin{macrocode}
-\cs_set:Npn \msg_line_context:
+\cs_gset:Npn \msg_line_context:
{ on~line~ \tex_the:D \tex_inputlineno:D }
% \end{macrocode}
% \end{macro}
@@ -2692,9 +2692,9 @@
% similar one for writing to both the log file and the terminal.
% These will be redefined later by \pkg{l3file}.
% \begin{macrocode}
-\cs_set_protected:Npn \iow_log:e
+\cs_gset_protected:Npn \iow_log:e
{ \tex_immediate:D \tex_write:D -1 }
-\cs_set_protected:Npn \iow_term:e
+\cs_gset_protected:Npn \iow_term:e
{ \tex_immediate:D \tex_write:D 16 }
% \end{macrocode}
% \end{macro}
@@ -2708,7 +2708,7 @@
% issued. We have to make sure we don't put the argument into the
% conditional processing since it may be an |\if...| type function!
% \begin{macrocode}
-\cs_set_protected:Npn \__kernel_chk_if_free_cs:N #1
+\cs_gset_protected:Npn \__kernel_chk_if_free_cs:N #1
{
\cs_if_free:NF #1
{
@@ -2716,7 +2716,7 @@
{ \token_to_str:N #1 } { \token_to_meaning:N #1 }
}
}
-\cs_set_protected:Npn \__kernel_chk_if_free_cs:c
+\cs_gset_protected:Npn \__kernel_chk_if_free_cs:c
{ \exp_args:Nc \__kernel_chk_if_free_cs:N }
% \end{macrocode}
% \end{macro}
@@ -2740,7 +2740,7 @@
% \begin{macrocode}
\cs_set:Npn \@@_tmp:w #1#2
{
- \cs_set_protected:Npn #1 ##1
+ \cs_gset_protected:Npn #1 ##1
{
\__kernel_chk_if_free_cs:N ##1
#2 ##1
@@ -2838,7 +2838,7 @@
% \begin{macro}[documented-as=\cs_set_protected:Npn]
% {
% \cs_set_protected:cpn , \cs_set_protected:cpe , \cs_set_protected:cpx ,
-% \cs_gset_protected:cpn , \cs_gset_protected:cpe , \cs_gset_protected:cpx ,
+% \cs_gset_protected:cpn , \cs_gset_protected:cpe , \cs_gset_protected:cpx ,
% \cs_new_protected:cpn , \cs_new_protected:cpe , \cs_new_protected:cpx
% }
% Variants of the \cs{cs_set_protected:Npn} versions which make a csname
@@ -2940,7 +2940,7 @@
% the functions use here are not defined yet, but will be defined
% before this function is called.
% \begin{macrocode}
-\cs_set_protected:Npn \__kernel_cs_parm_from_arg_count:nnF #1#2
+\cs_new_protected:Npn \__kernel_cs_parm_from_arg_count:nnF #1#2
{
\exp_args:Ne \@@_parm_from_arg_count_test:nnF
{
@@ -2961,7 +2961,7 @@
}
{#1}
}
-\cs_set_protected:Npn \@@_parm_from_arg_count_test:nnF #1#2
+\cs_new_protected:Npn \@@_parm_from_arg_count_test:nnF #1#2
{
\if_meaning:w \c_false_bool #1
\exp_after:wN \use_ii:nn
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bitset.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bitset.dtx
index ece9fbfa6cb..3100c284637 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bitset.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bitset.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index 9583f2548dd..5ff0c2e68d4 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -302,7 +302,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
% \begin{variable}{\l_@@_expl_bool}
% The status for code syntax: this is on at present.
% \begin{macrocode}
-\chardef\l_@@_expl_bool = 1\relax
+\global\chardef\l_@@_expl_bool = 1\relax
% \end{macrocode}
%\end{variable}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index df79b10cc7a..08463db56d7 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -849,7 +849,8 @@
% \begin{syntax}
% \cs{box_rotate:Nn} \meta{box} \Arg{angle}
% \end{syntax}
-% Rotates the \meta{box} by \meta{angle} (in degrees) anti-clockwise about
+% Rotates the \meta{box} by \meta{angle} (a \meta{fp expr} in degrees)
+% anti-clockwise about
% its reference point. The reference point of the updated box is moved
% horizontally such that it is at the left side of the smallest rectangle
% enclosing the rotated material. The updated \meta{box} is an |hbox|,
@@ -866,7 +867,7 @@
% \end{syntax}
% Scales the \meta{box} by factors \meta{x-scale} and \meta{y-scale} in
% the horizontal and vertical directions, respectively (both scales are
-% integer expressions). The updated \meta{box} is an |hbox|, irrespective
+% \meta{fp expr}). The updated \meta{box} is an |hbox|, irrespective
% of the nature of the \meta{box} before the scaling is applied. Negative
% scalings cause the material in the \meta{box} to be reversed in
% direction, but the reference point of the \meta{box} is unchanged.
@@ -2296,8 +2297,9 @@
{
#5 #1
{
- \fp_set:Nn \l_@@_scale_x_fp { ( #2 ) / \box_wd:N #1 }
- \fp_set:Nn \l_@@_scale_y_fp { ( #3 ) / ( #4 ) }
+ \fp_set:Nn \l_@@_scale_x_fp { ( \dim_to_fp:n {#2} ) / \box_wd:N #1 }
+ \fp_set:Nn \l_@@_scale_y_fp
+ { ( \dim_to_fp:n {#3} ) / ( \dim_to_fp:n {#4} ) }
\fp_compare:nNnTF \l_@@_scale_x_fp > \l_@@_scale_y_fp
{ \fp_set_eq:NN \l_@@_scale_x_fp \l_@@_scale_y_fp }
{ \fp_set_eq:NN \l_@@_scale_y_fp \l_@@_scale_x_fp }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
index 311b9cc88b5..5cdaa3dc920 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index 9f2eda4560f..ad65a4b1749 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index 8ba7b27aa98..ad41224aa0d 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -1302,7 +1302,7 @@
% y = s ( x - a ) + b
% \]
% \begin{macrocode}
-\cs_set_protected:Npn \@@_calculate_intersection:nnnnnn #1#2#3#4#5#6
+\cs_new_protected:Npn \@@_calculate_intersection:nnnnnn #1#2#3#4#5#6
{
\fp_compare:nNnTF {#1} = {#2}
{ \bool_set_true:N \l_@@_error_bool }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
index f3537307b2a..514ff326a4e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
index 82c95f7ff87..6654b6d4cd7 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -69,7 +69,7 @@
%
% Standard file identification.
% \begin{macrocode}
-\ProvidesExplFile{l3debug.def}{2024-02-20}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2024-03-14}{}{L3 Debugging support}
% \end{macrocode}
%
% \begin{variable}{\s_@@_stop}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
index 25dd05fb0c8..3906c6786ef 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -220,7 +220,7 @@
% up: one for Fall 2022.
% \begin{macrocode}
%\__kernel_patch_deprecation:nnNNpn { 2022-06-24 } { \cs_parameter_spec:N }
-\cs_gset:Npn \cs_argument_spec:N { \cs_parameter_spec:N }
+\cs_new:Npn \cs_argument_spec:N { \cs_parameter_spec:N }
% \end{macrocode}
% \end{macro}
%
@@ -300,13 +300,13 @@
% too long.
% \begin{macrocode}
%\__kernel_patch_deprecation:nnNNpn { 2024-01-10 } { \keys_set_exclude_groups:nnn }
-\cs_set_protected:Npn \keys_set_filter:nnn { \keys_set_exclude_groups:nnn }
+\cs_new_protected:Npn \keys_set_filter:nnn { \keys_set_exclude_groups:nnn }
\cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno }
%\__kernel_patch_deprecation:nnNNpn { 2024-01-10 } { \keys_set_exclude_groups:nnnN }
-\cs_set_protected:Npn \keys_set_filter:nnnN { \keys_set_exclude_groups:nnnN }
+\cs_new_protected:Npn \keys_set_filter:nnnN { \keys_set_exclude_groups:nnnN }
\cs_generate_variant:Nn \keys_set_filter:nnnN { nnV , nnv , nno }
%\__kernel_patch_deprecation:nnNNpn { 2024-01-10 } { \keys_set_exclude_groups:nnnnN }
-\cs_set_protected:Npn \keys_set_filter:nnnnN { \keys_set_exclude_groups:nnnnN }
+\cs_new_protected:Npn \keys_set_filter:nnnnN { \keys_set_exclude_groups:nnnnN }
\cs_generate_variant:Nn \keys_set_filter:nnnnN { nnV , nnv , nno }
% \end{macrocode}
% \end{macro}
@@ -370,13 +370,13 @@
% \begin{macro}[EXP, noTF, deprecated]{\bool_case_true:n}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:n }
-\cs_gset:Npn \bool_case_true:n { \bool_case:n }
+\cs_new:Npn \bool_case_true:n { \bool_case:n }
\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nT }
-\cs_gset:Npn \bool_case_true:nT { \bool_case:nT }
+\cs_new:Npn \bool_case_true:nT { \bool_case:nT }
\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nF }
-\cs_gset:Npn \bool_case_true:nF { \bool_case:nF }
+\cs_new:Npn \bool_case_true:nF { \bool_case:nF }
\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nTF }
-\cs_gset:Npn \bool_case_true:nTF { \bool_case:nTF }
+\cs_new:Npn \bool_case_true:nTF { \bool_case:nTF }
% \end{macrocode}
% \end{macro}
%
@@ -394,17 +394,17 @@
% }
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:n }
-\cs_gset:Npn \str_lower_case:n { \str_lowercase:n }
+\cs_new:Npn \str_lower_case:n { \str_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:f }
-\cs_gset:Npn \str_lower_case:f { \str_lowercase:f }
+\cs_new:Npn \str_lower_case:f { \str_lowercase:f }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_uppercase:n }
-\cs_gset:Npn \str_upper_case:n { \str_uppercase:n }
+\cs_new:Npn \str_upper_case:n { \str_uppercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_uppercase:f }
-\cs_gset:Npn \str_upper_case:f { \str_uppercase:f }
+\cs_new:Npn \str_upper_case:f { \str_uppercase:f }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:n }
-\cs_gset:Npn \str_fold_case:n { \str_casefold:n }
+\cs_new:Npn \str_fold_case:n { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:V }
-\cs_gset:Npn \str_fold_case:V { \str_casefold:V }
+\cs_new:Npn \str_fold_case:V { \str_casefold:V }
% \end{macrocode}
% \end{macro}
%
@@ -412,9 +412,9 @@
% {\str_foldcase:n, \str_foldcase:V}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2020-10-17 } { \str_casefold:n }
-\cs_gset:Npn \str_foldcase:n { \str_casefold:n }
+\cs_new:Npn \str_foldcase:n { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_casefold:V }
-\cs_gset:Npn \str_foldcase:V { \str_casefold:V }
+\cs_new:Npn \str_foldcase:V { \str_casefold:V }
% \end{macrocode}
% \end{macro}
%
@@ -425,7 +425,7 @@
% take a value that is big enough to accommodate all of Unicode.
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2020-08-20 } { }
-\cs_gset_protected:Npn \str_declare_eight_bit_encoding:nnn #1
+\cs_new_protected:Npn \str_declare_eight_bit_encoding:nnn #1
{ \@@_declare_eight_bit_encoding:nnnn {#1} { 1114112 } }
% \end{macrocode}
% \end{macro}
@@ -440,9 +440,9 @@
% \begin{macro}[EXP, deprecated]{ \seq_indexed_map_function:NN}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2020-06-18 } { \seq_map_indexed_inline:Nn }
-\cs_gset_protected:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn }
+\cs_new_protected:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn }
\__kernel_patch_deprecation:nnNNpn { 2020-06-18 } { \seq_map_indexed_function:NN }
-\cs_gset:Npn \seq_indexed_map_function:NN { \seq_map_indexed_function:NN }
+\cs_new:Npn \seq_indexed_map_function:NN { \seq_map_indexed_function:NN }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -450,16 +450,16 @@
% \begin{macro}[deprecated]{\seq_mapthread_function:NNN}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2023-05-10 } { \seq_map_pairwise_function:NNN }
-\cs_gset:Npn \seq_mapthread_function:NNN { \seq_map_pairwise_function:NNN }
+\cs_new:Npn \seq_mapthread_function:NNN { \seq_map_pairwise_function:NNN }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[deprecated]{\seq_set_map_x:NNn, \seq_gset_map_x:NNn}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_set_map_e:NNn }
-\cs_gset_protected:Npn \seq_set_map_x:NNn { \seq_set_map_e:NNn }
+\cs_new_protected:Npn \seq_set_map_x:NNn { \seq_set_map_e:NNn }
\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_gset_map_e:NNn }
-\cs_gset_protected:Npn \seq_gset_map_x:NNn { \seq_gset_map_e:NNn }
+\cs_new_protected:Npn \seq_gset_map_x:NNn { \seq_gset_map_e:NNn }
% \end{macrocode}
% \end{macro}
%
@@ -472,7 +472,7 @@
% \begin{macro}[deprecated]{\sys_load_deprecation:}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2021-01-11 } { (no~longer~required) }
-\cs_gset_protected:Npn \sys_load_deprecation: { }
+\cs_new_protected:Npn \sys_load_deprecation: { }
% \end{macrocode}
% \end{macro}
%
@@ -486,10 +486,10 @@
% \begin{macro}[EXP, deprecated]{\text_titlecase:nn}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:n }
-\cs_gset:Npn \text_titlecase:n #1
+\cs_new:Npn \text_titlecase:n #1
{ \text_titlecase_first:n { \text_lowercase:n {#1} } }
\__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:nn }
-\cs_gset:Npn \text_titlecase:nn #1#2
+\cs_new:Npn \text_titlecase:nn #1#2
{ \text_titlecase_first:nn {#1} { \text_lowercase:n {#2} } }
% \end{macrocode}
% \end{macro}
@@ -509,22 +509,22 @@
% }
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n }
-\cs_gset:Npn \tl_lower_case:n #1
+\cs_new:Npn \tl_lower_case:n #1
{ \text_lowercase:n {#1} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:nn }
-\cs_gset:Npn \tl_lower_case:nn #1#2
+\cs_new:Npn \tl_lower_case:nn #1#2
{ \text_lowercase:nn {#1} {#2} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:n }
-\cs_gset:Npn \tl_upper_case:n #1
+\cs_new:Npn \tl_upper_case:n #1
{ \text_uppercase:n {#1} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:nn }
-\cs_gset:Npn \tl_upper_case:nn #1#2
+\cs_new:Npn \tl_upper_case:nn #1#2
{ \text_uppercase:nn {#1} {#2} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n }
-\cs_gset:Npn \tl_mixed_case:n #1
+\cs_new:Npn \tl_mixed_case:n #1
{ \text_titlecase_first:n {#1} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:nn }
-\cs_gset:Npn \tl_mixed_case:nn #1#2
+\cs_new:Npn \tl_mixed_case:nn #1#2
{ \text_titlecase_first:nn {#1} {#2} }
% \end{macrocode}
% \end{macro}
@@ -532,13 +532,13 @@
% \begin{macro}[noTF, deprecated]{\tl_case:Nn, \tl_case:cn}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:Nn }
-\cs_gset:Npn \tl_case:Nn { \token_case_meaning:Nn }
+\cs_new:Npn \tl_case:Nn { \token_case_meaning:Nn }
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnT }
-\cs_gset:Npn \tl_case:NnT { \token_case_meaning:NnT }
+\cs_new:Npn \tl_case:NnT { \token_case_meaning:NnT }
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnF }
-\cs_gset:Npn \tl_case:NnF { \token_case_meaning:NnF }
+\cs_new:Npn \tl_case:NnF { \token_case_meaning:NnF }
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnTF }
-\cs_gset:Npn \tl_case:NnTF { \token_case_meaning:NnTF }
+\cs_new:Npn \tl_case:NnTF { \token_case_meaning:NnTF }
\cs_generate_variant:Nn \tl_case:Nn { c }
\prg_generate_conditional_variant:Nnn \tl_case:Nn
{ c } { T , F , TF }
@@ -570,16 +570,16 @@
% \begin{macro}[EXP, deprecated]{\char_to_utfviii_bytes:n}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { [ \codepoint_generate:nn ] }
-\cs_gset:Npn \char_to_utfviii_bytes:n { \__kernel_codepoint_to_bytes:n }
+\cs_new:Npn \char_to_utfviii_bytes:n { \__kernel_codepoint_to_bytes:n }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP, deprecated]{\char_to_nfd:N, \char_to_nfd:n}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { \codepoint_to_nfd:n }
-\cs_gset:Npn \char_to_nfd:N #1 { \codepoint_to_nfd:n {`#1} }
+\cs_new:Npn \char_to_nfd:N #1 { \codepoint_to_nfd:n {`#1} }
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { \codepoint_to_nfd:n }
-\cs_gset:Npn \char_to_nfd:n { \codepoint_to_nfd:n }
+\cs_new:Npn \char_to_nfd:n { \codepoint_to_nfd:n }
% \end{macrocode}
% \end{macro}
%
@@ -592,21 +592,21 @@
% }
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n }
-\cs_gset:Npn \char_lower_case:N { \text_lowercase:n }
+\cs_new:Npn \char_lower_case:N { \text_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:n }
-\cs_gset:Npn \char_upper_case:N { \text_uppercase:n }
+\cs_new:Npn \char_upper_case:N { \text_uppercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n }
-\cs_gset:Npn \char_mixed_case:N { \text_titlecase_first:n }
+\cs_new:Npn \char_mixed_case:N { \text_titlecase_first:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:n }
-\cs_gset:Npn \char_fold_case:N { \str_casefold:n }
+\cs_new:Npn \char_fold_case:N { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:n }
-\cs_gset:Npn \char_str_lower_case:N { \str_lowercase:n }
+\cs_new:Npn \char_str_lower_case:N { \str_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_uppercase:n }
-\cs_gset:Npn \char_str_upper_case:N { \str_uppercase:n }
+\cs_new:Npn \char_str_upper_case:N { \str_uppercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_titlecase:n }
-\cs_gset:Npn \char_str_mixed_case:N { \str_titlecase:n }
+\cs_new:Npn \char_str_mixed_case:N { \str_titlecase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:n }
-\cs_gset:Npn \char_str_fold_case:N { \str_casefold:n }
+\cs_new:Npn \char_str_fold_case:N { \str_casefold:n }
% \end{macrocode}
% \end{macro}
%
@@ -619,23 +619,23 @@
% }
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \text_lowercase:n }
-\cs_gset:Npn \char_lowercase:N { \text_lowercase:n }
+\cs_new:Npn \char_lowercase:N { \text_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \text_uppercase:n }
-\cs_gset:Npn \char_uppercase:N { \text_uppercase:n }
+\cs_new:Npn \char_uppercase:N { \text_uppercase:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \text_titlecase_first:n }
-\cs_gset:Npn \char_titlecase:N { \text_titlecase_first:n }
+\cs_new:Npn \char_titlecase:N { \text_titlecase_first:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_casefold:n }
-\cs_gset:Npn \char_foldcase:N { \str_casefold:n }
+\cs_new:Npn \char_foldcase:N { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_lowercase:n }
-\cs_gset:Npn \char_str_lowercase:N { \str_lowercase:n }
+\cs_new:Npn \char_str_lowercase:N { \str_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 }
{ \tl_to_str:e { \text_titlecase_first:n } }
-\cs_gset:Npn \char_str_titlecase:N #1
+\cs_new:Npn \char_str_titlecase:N #1
{ \tl_to_str:e { \text_titlecase_first:n {#1} } }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_uppercase:n }
-\cs_gset:Npn \char_str_uppercase:N { \str_uppercase:n }
+\cs_new:Npn \char_str_uppercase:N { \str_uppercase:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_casefold:n }
-\cs_gset:Npn \char_str_foldcase:N { \str_casefold:n }
+\cs_new:Npn \char_str_foldcase:N { \str_casefold:n }
% \end{macrocode}
% \end{macro}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
index 695e47a444a..a48a24df238 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
@@ -71,7 +71,7 @@ and all files in that bundle must be distributed together.
% This isn't included in the typeset documentation because it's a bit
% ugly:
%<*class>
-\ProvidesExplClass{l3doc}{2024-02-20}{}
+\ProvidesExplClass{l3doc}{2024-03-14}{}
{L3 Experimental documentation class}
%</class>
% \fi
@@ -84,7 +84,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
% \maketitle
% \tableofcontents
%
@@ -1655,7 +1655,7 @@ and all files in that bundle must be distributed together.
%
% \begin{macro}{\l@section, \l@subsection}
% Customise the table of contents (as we have so many sections).
-% Different design and/or structure is called for).
+% Different design and/or structure is called for.
% \begin{macrocode}
\@addtoreset{section}{part}
\cs_gset:Npn \l@section #1#2
@@ -2127,11 +2127,9 @@ and all files in that bundle must be distributed together.
{ \hyperlink { explTF } }
{ \mbox }
{
- \color{black}
\itshape TF
\makebox[0pt][r]
{
- \cs_if_exist:NT \Codedoc@explTF { \color{red} }
\underline { \phantom{\itshape TF} \kern-0.1em }
}
}
@@ -3206,18 +3204,22 @@ and all files in that bundle must be distributed together.
\tl_set:Nn \l_@@_tmpa_tl {#1}
\tl_replace_all:NnV \l_@@_tmpa_tl
{ ~ } \c_catcode_other_space_tl
- \@@_macroname_prefix:o \l_@@_tmpa_tl
- \@@_macroname_suffix:N #2
+ \@@_print_macroname_aux:on
+ \l_@@_tmpa_tl { \bool_if:NT #2 { \@@_typeset_TF: } }
}
}
-\cs_new_protected:Npn \@@_macroname_prefix:n #1
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_print_macroname_aux:nn}
+% |#1| is prefix, |#2| is optional |TF| suffix.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_macroname_aux:nn #1#2
{
\@@_if_macro_internal:nTF {#1}
- { \@@_typeset_aux:n {#1} } {#1}
+ { \@@_typeset_aux:n { #1 #2 } } { #1 #2 }
}
-\cs_generate_variant:Nn \@@_macroname_prefix:n { o }
-\cs_new_protected:Npn \@@_macroname_suffix:N #1
- { \bool_if:NTF #1 { \@@_typeset_TF: } { } }
+\cs_generate_variant:Nn \@@_print_macroname_aux:nn { o }
% \end{macrocode}
% \end{macro}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
index fe60a6f312e..c973d593c52 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index aaf0d04d29f..7e507b75984 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index 1159101ca5f..3a4d1c06dc3 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
index 7604c2c2ba5..40614c7348c 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
index cb209349049..6d00047e4da 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
index fd75e1bb5a1..1f4ea5d34dc 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index 76b7a8cdb28..a7401407cd0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
index 5b95dc543e9..0459331326a 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index 571cb9864a9..5b5f947c384 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index 51e747a7449..bcd16a4b683 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx
index efedd0fffba..b26d8e7f265 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
index a0984d5f362..c95704085cb 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index a313f9b0bef..53b85a7cc83 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
index a2c8eb81db8..cdbdf38ee1d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index a19ce341958..bddb146be7d 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx
index f2073b5e52d..26a084733da 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index 70e41d5a4d3..e1a3dd89a03 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
index 98cf15b281f..21cefc166c1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx
index 23c7f6ac4e7..0d589c9549f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index 5983dc2f481..11dbcdceeff 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
index 97ebfe22953..1517840431b 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -58,7 +58,7 @@
% close to that of \pkg{l3intarray}. The size of the array is fixed and
% must be given at point of initialisation
%
-% \begin{function}[added = 2018-05-05]{\fparray_new:Nn}
+% \begin{function}[added = 2018-05-05]{\fparray_new:Nn, \fparray_new:cn}
% \begin{syntax}
% \cs{fparray_new:Nn} \meta{fparray~var} \Arg{size}
% \end{syntax}
@@ -68,7 +68,7 @@
% assignments are always global.
% \end{function}
%
-% \begin{function}[EXP, added = 2018-05-05]{\fparray_count:N}
+% \begin{function}[EXP, added = 2018-05-05]{\fparray_count:N, \fparray_count:c}
% \begin{syntax}
% \cs{fparray_count:N} \meta{fparray~var}
% \end{syntax}
@@ -76,7 +76,7 @@
% variable}. This is performed in constant time.
% \end{function}
%
-% \begin{function}[added = 2018-05-05]{\fparray_gset:Nnn}
+% \begin{function}[added = 2018-05-05]{\fparray_gset:Nnn, \fparray_gset:cnn}
% \begin{syntax}
% \cs{fparray_gset:Nnn} \meta{fparray~var} \Arg{position} \Arg{value}
% \end{syntax}
@@ -87,7 +87,7 @@
% Assignments are always global.
% \end{function}
%
-% \begin{function}[added = 2018-05-05]{\fparray_gzero:N}
+% \begin{function}[added = 2018-05-05]{\fparray_gzero:N, \fparray_gzero:c}
% \begin{syntax}
% \cs{fparray_gzero:N} \meta{fparray~var}
% \end{syntax}
@@ -96,7 +96,10 @@
% \end{function}
%
% \begin{function}[EXP, added = 2018-05-05]
-% {\fparray_item:Nn, \fparray_item_to_tl:Nn}
+% {
+% \fparray_item:Nn, \fparray_item:cn
+% \fparray_item_to_tl:Nn, \fparray_item_to_tl:cn
+% }
% \begin{syntax}
% \cs{fparray_item:Nn} \meta{fparray~var} \Arg{position}
% \end{syntax}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index 0eacdb25e7f..9fa2a547ffd 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -1215,7 +1215,7 @@
}
\cs_new:Npn \@@_abs:N #1
{ \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: }
-\cs_set:Npn \int_max:nn #1#2
+\cs_new:Npn \int_max:nn #1#2
{
\int_value:w \exp_after:wN \@@_maxmin:wwN
\int_value:w \@@_eval:w #1 \exp_after:wN ;
@@ -1223,7 +1223,7 @@
>
\exp_stop_f:
}
-\cs_set:Npn \int_min:nn #1#2
+\cs_new:Npn \int_min:nn #1#2
{
\int_value:w \exp_after:wN \@@_maxmin:wwN
\int_value:w \@@_eval:w #1 \exp_after:wN ;
@@ -1395,10 +1395,10 @@
\cs_if_exist:NTF \tex_omathchardef:D
{ \cs_new_eq:NN \@@_constdef:Nw \tex_omathchardef:D }
{ \cs_new_eq:NN \@@_constdef:Nw \tex_chardef:D }
- \@@_constdef:Nw \c_@@_max_constdef_int 1114111 ~
+ \tex_global:D \@@_constdef:Nw \c_@@_max_constdef_int 1114111 ~
\else:
\cs_new_eq:NN \@@_constdef:Nw \tex_mathchardef:D
- \tex_mathchardef:D \c_@@_max_constdef_int 32767 ~
+ \tex_global:D \@@_constdef:Nw \c_@@_max_constdef_int 32767 ~
\fi:
% \end{macrocode}
% \end{variable}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
index 4dd308a5c5c..5704a2ab756 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
index be8aed20d9e..480425d7306 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index 9000132775f..5ea436176f4 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
index e7970a7e2fa..bd56f1ed3a8 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index f112b99215a..3d177f63452 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -267,7 +267,7 @@
\lua_now:n , \lua_now:e
}
{
- \cs_set:Npn #1 ##1
+ \cs_gset:Npn #1 ##1
{
\msg_expandable_error:nnn
{ luatex } { luatex-required } { #1 }
@@ -276,7 +276,7 @@
\clist_map_inline:nn
{ \lua_shipout_e:n , \lua_shipout:n, \lua_load_module:n }
{
- \cs_set_protected:Npn #1 ##1
+ \cs_gset_protected:Npn #1 ##1
{
\msg_error:nnn
{ luatex } { luatex-required } { #1 }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index 75ba84a6ff3..3acae8d111d 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index 0782a08aa6c..3e78d86acfd 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
index 0310e7c6ad6..7ffd0c1c056 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index e596e4cfb7c..8bbdd6a5870 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index dcf14be5367..878b9eb7586 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index c465fa251c8..000063bc005 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -820,43 +820,46 @@
% \begin{macro}{
% \@@_new_conditional_n:Nnnn,
% \@@_new_conditional_N:Nnnn,
+% \@@_new_conditional_n_aux:NNNn,
+% \@@_new_conditional_N_aux:NNNn
% }
% These macros implement the two possibilities for branching quark
-% conditionals, passing
-% the right arguments to \cs{@@_new_conditional_aux_do:NNnnn},
-% which defines some auxiliaries and defines the
-% main conditionals.
+% conditionals. To avoid constructing without defining the
+% \cs[no-index]{__\meta{type}_if_quark_\meta{name}:w} helper,
+% \texttt{N}-type function accepts a \cs{prg_do_nothing:} as
+% a placeholder.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_new_conditional_n:Nnnn
- { \@@_new_conditional_aux_do:NNnnn \use_i:nn }
-\cs_new_protected:Npn \@@_new_conditional_N:Nnnn
- { \@@_new_conditional_aux_do:NNnnn \use_ii:nn }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{
-% \@@_new_conditional_aux_do:NNnnn,
-% \@@_new_conditional_define:NNNNn,
-% }
-% Similar to the previous macros, but branching conditionals only
-% require one auxiliary, so we take a shortcut. In
-% \cs{@@_new_conditional_define:NNNNn}, |#4| is \cs{use_i:nn} to
-% define the \texttt{n}-type function (which needs an auxiliary) and
-% is \cs{use_ii:nn} to define the \texttt{N}-type function.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_new_conditional_aux_do:NNnnn #1 #2 #3 #4
+\cs_new_protected:Npn \@@_new_conditional_n:Nnnn #1 #2 #3
+ {
+ \exp_args:Ncc \@@_new_conditional_n_aux:NNNn
+ { __ #3 _if_quark_ #2 :w } { q__ #3 _ #2 } #1
+ }
+\cs_new_protected:Npn \@@_new_conditional_N:Nnnn #1 #2 #3
{
- \exp_args:Ncc \@@_new_conditional_define:NNNNn
- { __ #4 _if_quark_ #3 :w } { q__ #4 _ #3 } #2 #1
+ \exp_args:NNc \@@_new_conditional_N_aux:NNNn
+ \prg_do_nothing: { q__ #3 _ #2 } #1
}
-\cs_new_protected:Npn \@@_new_conditional_define:NNNNn #1 #2 #3 #4 #5
+\cs_new_protected:Npn \@@_new_conditional_n_aux:NNNn #1 #2 #3 #4
{
- #4 { \cs_gset:Npn #1 ##1 #2 ##2 ? ##3 ?! { ##1 ##2 } } { }
- \exp_args:Nno \use:n { \prg_new_conditional:Npnn #3 ##1 {#5} }
+ \cs_gset:Npn #1 ##1 #2 ##2 ? ##3 ?! { ##1##2 }
+ \prg_new_conditional:Npnn #3 ##1 {#4}
{
- #4 { \@@_if_empty_if:o { #1 {} ##1 {} ?! #2 ??! } }
- { \if_meaning:w #2 ##1 }
- \prg_return_true: \else: \prg_return_false: \fi:
+ \@@_if_empty_if:o { #1 {} ##1 {} ?! #2 ??! }
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+ }
+\cs_new_protected:Npn \@@_new_conditional_N_aux:NNNn #1 #2 #3 #4
+ {
+ \prg_new_conditional:Npnn #3 ##1 {#4}
+ {
+ \if_meaning:w #2 ##1
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
}
}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
index 428870c4534..395be76907a 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -4155,7 +4155,7 @@
% incorrect). That's clunky, but not too expensive, since it's only
% one test.
% \begin{macrocode}
-\cs_set:Npn \@@_show_class:NnnnN #1#2#3#4#5
+\cs_new:Npn \@@_show_class:NnnnN #1#2#3#4#5
{
\group_begin:
\tl_build_begin:N \l_@@_build_tl
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index c200bf21f9e..5334e8fd888 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index c0dfc22a37b..1839c8a2e56 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
index b96e3f3b2bd..818f605e076 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
index e7b7ecf44dd..be850b31099 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
index 827cc994f5b..88ad33c74b1 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index 9a0fb8dcf3f..feec1232fd0 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -324,6 +324,58 @@
% Execute \meta{tokens} through shell escape at shipout.
% \end{function}
%
+% \section{System queries}
+%
+% Some queries can be made about the file system, etc., without needing to
+% use unrestricted shell escape. This is carried out using the script
+% \texttt{l3sys-query}, which is documented separately. The wrappers here
+% use this script, if available, to obtain system information that is
+% not directly available within the \TeX{} run. Note that if restricted
+% shell escape is disabled, no results can be obtained.
+%
+% \begin{function}[added = 2024-03-08]
+% {\sys_get_query:nN, \sys_get_query:nnN, \sys_get_query:nnnN}
+% \begin{syntax}
+% \cs{sys_get_query:nN} \Arg{cmd} \Arg{tl var}
+% \cs{sys_get_query:nnN} \Arg{cmd} \Arg{spec} \Arg{tl var}
+% \cs{sys_get_query:nnnN} \Arg{cmd} \Arg{options} \Arg{spec} \Arg{tl var}
+% \end{syntax}
+% Sets the \meta{tl var} to the information returned by the
+% \texttt{l3sys-query} \meta{cmd}, potentially supplying the \meta{options}
+% and \meta{spec} to the query call. The valid \meta{cmd} names are at present
+% \begin{itemize}
+% \item \texttt{pwd} Returns the present working directory
+% \item \texttt{ls} Returns a directory listing, using the \meta{spec} to
+% select files and applying the \meta{options} if given
+% \end{itemize}
+% The \meta{spec} is likely to contain the wildcards |*| or |?|,
+% and will automatically be passed to
+% the script without shell expansion. In a glob is needed within the
+% \meta{options}, this will need to be protected from shell expansion
+% using |'| tokens.
+%
+% The \meta{spec} and \meta{options}, if given, are expanded fully
+% before passing to the underlying script.
+%
+% If more than one line of text is returned by the \meta{cmd}, these will be
+% separated by character~13 (|^^M|) tokens of category code~12. In most
+% cases, \cs{sys_split_query:nnnN} should be preferred when multi-line
+% output is expected.
+% \end{function}
+%
+% \begin{function}[added = 2024-03-08]
+% {\sys_split_query:nN, \sys_split_query:nnN, \sys_split_query:nnnN}
+% \begin{syntax}
+% \cs{sys_split_query:nN} \Arg{cmd} \Arg{seq}
+% \cs{sys_split_query:nnN} \Arg{cmd} \Arg{spec} \Arg{seq}
+% \cs{sys_split_query:nnnN} \Arg{cmd} \Arg{options} \Arg{spec} \Arg{seq}
+% \end{syntax}
+% Works as described for \cs{sys_split_query:nnnN}, but sets the \meta{seq}
+% to contain one entry for each line returned by \texttt{l3sys-query}.
+% This function should therefore be preferred where multi-line return is
+% expected, e.g.~for the \texttt{ls} command.
+% \end{function}
+%
% \section{Loading configuration data}
%
% \begin{function}[added = 2019-09-12]{\sys_load_backend:n}
@@ -390,6 +442,12 @@
%<*tex>
% \end{macrocode}
%
+% \begin{macro}{\l_@@_tmp_tl}
+% \begin{macrocode}
+\tl_new:N \l_@@_tmp_tl
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Detecting the engine}
%
% \begin{macro}{\@@_const:nn}
@@ -1083,6 +1141,107 @@ end
% \end{macrocode}
% \end{macro}
%
+% \subsection{System queries}
+%
+% \begin{macro}{\sys_get_query:nN}
+% \begin{macro}{\sys_get_query:nnN}
+% \begin{macro}
+% {
+% \sys_get_query:nnnN,
+% \@@_get_query_auxi:nnnN, \@@_get_query_auxi:neeN,
+% \@@_get_query_auxii:nnnN, \@@_get_query_auxii:neeN
+% }
+% Calling the query system is quite straight-forward: most of the effort is
+% in making the read-back catcode-safe. We also want to trim off the trailing
+% |^^M| from the last line.
+% \begin{macrocode}
+\cs_new_protected:Npn \sys_get_query:nN #1#2
+ { \sys_get_query:nnnN {#1} { } { } #2 }
+\cs_new_protected:Npn \sys_get_query:nnN #1#2#3
+ { \sys_get_query:nnnN {#1} { } {#2} #3 }
+\cs_new_protected:Npn \sys_get_query:nnnN #1#2#3#4
+ {
+ \str_clear:N #4
+ \@@_get_query_auxi:neeN {#1} {#2} {#3} #4
+ }
+\cs_new:Npn \@@_get_query_auxi:nnnN #1#2#3#4
+ {
+ \@@_get_query_auxii:neeN {#1}
+ { \tl_if_blank:nF {#2} { \tl_to_str:n { ~ #2 } } }
+ {
+ \tl_if_blank:nF {#3}
+ {
+ \c_space_tl
+ \sys_if_shell_restricted:F '
+ \tl_to_str:n {#3}
+ \sys_if_shell_restricted:F '
+ }
+ }
+ #4
+ }
+\cs_generate_variant:Nn \@@_get_query_auxi:nnnN { nee }
+\cs_new_protected:Npn \@@_get_query_auxii:nnnN #1#2#3#4
+ {
+ \sys_if_shell:T
+ {
+ \sys_get_shell:nnN
+ { l3sys-query~#1 #2 #3 }
+ {
+ \int_step_inline:nnn { 0 } { `a - 1 }
+ { \char_set_catcode_other:n {##1} }
+ \int_step_inline:nnn { `Z + 1 } { 127 }
+ { \char_set_catcode_other:n {##1} }
+ \tex_endlinechar:D 13 \scan_stop:
+ }
+ \l_@@_tmp_tl
+ \tl_if_empty:NF \l_@@_tmp_tl
+ {
+ \exp_after:wN \@@_get_query:Nw \exp_after:wN #4
+ \l_@@_tmp_tl \q_stop
+ }
+ }
+ }
+\cs_generate_variant:Nn \@@_get_query_auxii:nnnN { nee }
+\group_begin:
+ \tex_lccode:D `\* = 13 \scan_stop:
+ \tex_lowercase:D
+ {
+ \group_end:
+ \cs_new_protected:Npn \@@_get_query:Nw #1#2 * \q_stop
+ }
+ { \tl_set:Nn #1 {#2} }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\sys_split_query:nN}
+% \begin{macro}{\sys_split_query:nnN}
+% \begin{macro}{\sys_split_query:nnnN}
+% A wrapper for convenience.
+% \begin{macrocode}
+\cs_new_protected:Npn \sys_split_query:nN #1#2
+ { \sys_split_query:nnnN {#1} { } { } #2 }
+\cs_new_protected:Npn \sys_split_query:nnN #1#2#3
+ { \sys_split_query:nnnN {#1} { } {#2} #3 }
+\group_begin:
+ \tex_lccode:D `\* = 13 \scan_stop:
+ \tex_lowercase:D
+ {
+ \group_end:
+ \cs_new_protected:Npn \sys_split_query:nnnN #1#2#3#4
+ {
+ \seq_clear:N #4
+ \sys_get_query:nnnN {#1} {#2} {#3} \l_@@_tmp_tl
+ \tl_if_empty:NF \l_@@_tmp_tl
+ { \seq_set_split:NnV #4 * \l_@@_tmp_tl }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \subsubsection{Held over from \pkg{l3file}}
%
% \begin{variable}{\g_file_curr_name_str}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
index 8a5677806c3..0547db28b1d 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
index fff01a52551..d364c321994 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
index 6de37faa622..8f92c1eae95 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
index bdbd7c8d278..5feff565b9c 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -889,12 +889,12 @@
% {\c_@@_chardef_group_end_token, \c_@@_mathchardef_group_end_token}
% Markers for implict char handling.
% \begin{macrocode}
-\tex_chardef:D \c_@@_chardef_space_token = `\ %
-\tex_mathchardef:D \c_@@_mathchardef_space_token = `\ %
-\tex_chardef:D \c_@@_chardef_group_begin_token = `\{ % `\}
-\tex_mathchardef:D \c_@@_mathchardef_group_begin_token = `\{ % `\} `\{
-\tex_chardef:D \c_@@_chardef_group_end_token = `\} % `\{
-\tex_mathchardef:D \c_@@_mathchardef_group_end_token = `\} %
+\tex_global:D \tex_chardef:D \c_@@_chardef_space_token = `\ %
+\tex_global:D \tex_mathchardef:D \c_@@_mathchardef_space_token = `\ %
+\tex_global:D \tex_chardef:D \c_@@_chardef_group_begin_token = `\{ % `\}
+\tex_global:D \tex_mathchardef:D \c_@@_mathchardef_group_begin_token = `\{ % `\} `\{
+\tex_global:D \tex_chardef:D \c_@@_chardef_group_end_token = `\} % `\{
+\tex_global:D \tex_mathchardef:D \c_@@_mathchardef_group_end_token = `\} %
% \end{macrocode}
% \end{variable}
% \end{variable}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
index 776b360434b..d965050c76a 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx
index 1fc841ca783..175b7bc24fe 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index ed83e3bc815..0938e7cd5e6 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index b11e4859db0..cd538ee6d05 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -2376,7 +2376,7 @@ end
}
}
{
- \tex_chardef:D \c_@@_A_int = `A ~ %
+ \tex_global:D \tex_chardef:D \c_@@_A_int = `A ~ %
\use:e
{
\prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N #1
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
index b4a70b24adb..cd552800b07 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 2024-02-20}
+% \date{Released 2024-03-14}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
index a65b0239dda..817d37a46c1 100644
--- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
@@ -62,7 +62,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-18}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -154,7 +154,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2024-02-18}{}
+\ProvidesExplPackage{l3keys2e}{2024-03-14}{}
{LaTeX2e option processing using LaTeX3 keys}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
index 3a97e469031..8baebbfc190 100644
--- a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-18}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -171,7 +171,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfp}{2024-02-18}{}
+\ProvidesExplPackage{xfp}{2024-03-14}{}
{L3 Floating point unit}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
index 6dba694d397..4b731d1e0f6 100644
--- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
@@ -67,12 +67,27 @@
% }^^A
% }
%
-% \date{Released 2024-02-18}
+% \date{Released 2024-03-14}
%
% \maketitle
%
% \begin{documentation}
%
+% \section{Introduction}
+%
+% \begin{center}
+% \bfseries This package is obsolete with the October 2020 \LaTeX{} release.
+% \end{center}
+%
+% With new formats, \cs{NewDocumentCommand}, etc., are available in
+% the format. Other than for a small number of now-deprecated
+% argument types and support functions, package authors should transition
+% their code to avoid loading \pkg{xparse}. An updated version of the
+% documentation covering the full set of functionality available in
+% the kernel is available in \texttt{usrguide}.
+%
+% \section{Old introduction}
+%
% The \pkg{xparse} package provides a high-level interface for
% producing document-level commands. In that way, it is intended as
% a replacement for the \LaTeXe{} \cs{newcommand} macro. However,
@@ -1064,7 +1079,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xparse}{2024-02-18}{}
+\ProvidesExplPackage{xparse}{2024-03-14}{}
{L3 Experimental document command parser}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
index 7a956d82bf8..4aac33434a4 100644
--- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
@@ -5,7 +5,7 @@
% Copyright (C) 1999 Frank Mittelbach, Chris Rowley, David Carlisle
% (C) 2004-2010 Frank Mittelbach, The LaTeX Project
% (C) 2011-2024 The LaTeX 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
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-18}
+% \date{Released 2024-03-14}
%
% \maketitle
%
@@ -695,8 +695,8 @@
%
% \begin{macro}{\DeclareRestrictedTemplate}
% \begin{macro}{\DeclareObjectType}
-% If the new kernel code is not loaded, make a couple of compatibility
-% additions. Otherwise, hand over to the frozen version.
+% If the new kernel code is not loaded, hand over to the frozen version.
+% Otherwise, make a couple of compatibility additions.
% \begin{macrocode}
\@ifundefined{NewTemplateType}
{%
@@ -704,12 +704,12 @@
\endinput
}
{%
- \ProvidesExplPackage{xtemplate}{2023-10-10}{}
+ \ProvidesExplPackage{xtemplate}{2024-03-14}{}
{L3 Experimental prototype document functions}
\long\protected\def\DeclareRestrictedTemplate#1#2#3#4{%
- \DeclareTemplateCopy{#1}{#3}{#2}%
- \EditTemplateDefaults{#1}{#3}{#4}%
- }%
+ \DeclareTemplateCopy{#1}{#3}{#2}%
+ \EditTemplateDefaults{#1}{#3}{#4}%
+ }%
}
\ExplSyntaxOn
\cs_new_protected:Npn \DeclareObjectType #1#2
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
index 128c0026999..667093f3174 100644
--- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvipdfmx.def}{2024-02-20}{}
+ {l3backend-dvipdfmx.def}{2024-03-14}{}
{L3 backend support: dvipdfmx}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -798,20 +798,17 @@
%% File: l3backend-opacity.dtx
\bool_lazy_and:nnT
{ \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p:}
+ { \pdfmanagement_if_active_p: }
{
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
{ opacity 1 } { << /ca ~ 1 /CA ~ 1 >> }
}
\tl_new:N \l__opacity_backend_fill_tl
\tl_new:N \l__opacity_backend_stroke_tl
+\tl_set:Nn \l__opacity_backend_fill_tl { 1 }
+\tl_set:Nn \l__opacity_backend_stroke_tl { 1 }
\cs_new_protected:Npn \__opacity_backend_select:n #1
{
- \exp_args:Ne \__opacity_backend_select_aux:n
- { \fp_eval:n { min(max(0,#1),1) } }
- }
-\cs_new_protected:Npn \__opacity_backend_select_aux:n #1
- {
\tl_set:Nn \l__opacity_backend_fill_tl {#1}
\tl_set:Nn \l__opacity_backend_stroke_tl {#1}
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
@@ -821,12 +818,6 @@
{ /opacity #1 ~ gs }
\group_insert_after:N \__opacity_backend_reset:
}
-\bool_lazy_and:nnF
- { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p:}
- {
- \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { }
- }
\cs_new_protected:Npn \__opacity_backend_reset:
{
\__kernel_backend_literal_pdf:n
@@ -834,20 +825,20 @@
}
\cs_new_protected:Npn \__opacity_backend_fill:n #1
{
- \__opacity_backend_fill_stroke:ee
- { \fp_eval:n { min(max(0,#1),1) } }
- \l__opacity_backend_stroke_tl
+ \exp_args:Nno \__opacity_backend_fill_stroke:nn
+ { #1 }
+ { \l__opacity_backend_stroke_tl }
}
\cs_new_protected:Npn \__opacity_backend_stroke:n #1
{
- \__opacity_backend_fill_stroke:ee
- \l__opacity_backend_fill_tl
- { \fp_eval:n { min(max(0,#1),1) } }
+ \exp_args:No \__opacity_backend_fill_stroke:nn
+ { \l__opacity_backend_fill_tl }
+ { #1 }
}
\cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2
{
\str_if_eq:nnTF {#1} {#2}
- { \__opacity_backend_select_aux:n {#1} }
+ { \__opacity_backend_select:n {#1} }
{
\tl_set:Nn \l__opacity_backend_fill_tl {#1}
\tl_set:Nn \l__opacity_backend_stroke_tl {#2}
@@ -855,14 +846,20 @@
{ opacity.fill #1 }
{ << /ca ~ #1 >> }
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
- { opacity.stroke #1 }
+ { opacity.stroke #2 }
{ << /CA ~ #2 >> }
\__kernel_backend_literal_pdf:n
{ /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs }
\group_insert_after:N \__opacity_backend_reset:
}
}
-\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee }
+\bool_lazy_and:nnF
+ { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
+ { \pdfmanagement_if_active_p: }
+ {
+ \cs_gset_protected:Npn \__opacity_backend_select:n #1 { }
+ \cs_gset_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { }
+ }
%%
%%
%% End of file `l3backend-dvipdfmx.def'.
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
index b808ec8c6de..d5bd655a922 100644
--- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
+++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvips.def}{2024-02-20}{}
+ {l3backend-dvips.def}{2024-03-14}{}
{L3 backend support: dvips}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -388,13 +388,14 @@
\cs_generate_variant:Nn \__draw_backend_literal:n { e }
\cs_new_protected:Npn \__draw_backend_begin:
{
- \__kernel_backend_literal:n { ps::[begin] }
+ \__draw_backend_literal:n { [begin] }
+ \__draw_backend_literal:n { /draw.x~currentpoint~/draw.y~exch~def~def }
\__draw_backend_literal:n { @beginspecial }
}
\cs_new_protected:Npn \__draw_backend_end:
{
\__draw_backend_literal:n { @endspecial }
- \__kernel_backend_literal:n { ps::[end] }
+ \__draw_backend_literal:n { [end] }
}
\cs_new_protected:Npn \__draw_backend_scope_begin:
{ \__draw_backend_literal:n { save } }
@@ -559,7 +560,10 @@
}
\cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5
{
- \__draw_backend_literal:n { @endspecial }
+ \__draw_backend_literal:n { save }
+ \__draw_backend_literal:n { 72~Resolution~div~72~VResolution~div~neg~scale }
+ \__draw_backend_literal:n { magscale { 1~DVImag~div~dup~scale } if }
+ \__draw_backend_literal:n { draw.x~neg~draw.y~neg~translate }
\__draw_backend_literal:n { [end] }
\__draw_backend_literal:n { [begin] }
\__draw_backend_literal:n { save }
@@ -575,7 +579,7 @@
\__draw_backend_literal:n { restore }
\__draw_backend_literal:n { [end] }
\__draw_backend_literal:n { [begin] }
- \__draw_backend_literal:n { @beginspecial }
+ \__draw_backend_literal:n { restore }
}
%% File: l3backend-graphics.dtx
\cs_new_protected:Npn \__graphics_backend_loaded:n #1
@@ -1025,25 +1029,20 @@
%% File: l3backend-opacity.dtx
\cs_new_protected:Npn \__opacity_backend_select:n #1
{
- \exp_args:Ne \__opacity_backend_select_aux:n
- { \fp_eval:n { min(max(0,#1),1) } }
- }
-\cs_new_protected:Npn \__opacity_backend_select_aux:n #1
- {
\__opacity_backend:nnn {#1} { fill } { ca }
\__opacity_backend:nnn {#1} { stroke } { CA }
}
\cs_new_protected:Npn \__opacity_backend_fill:n #1
{
- \__opacity_backend:enn
- { \fp_eval:n { min(max(0,#1),1) } }
+ \__opacity_backend:nnn
+ { #1 }
{ fill }
{ ca }
}
\cs_new_protected:Npn \__opacity_backend_stroke:n #1
{
- \__opacity_backend:enn
- { \fp_eval:n { min(max(0,#1),1) } }
+ \__opacity_backend:nnn
+ { #1 }
{ stroke }
{ CA }
}
@@ -1066,7 +1065,6 @@
ifelse
}
}
-\cs_generate_variant:Nn \__opacity_backend:nnn { e }
%%
%%
%% End of file `l3backend-dvips.def'.
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
index a51db469052..2e3c3cacb44 100644
--- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
+++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvisvgm.def}{2024-02-20}{}
+ {l3backend-dvisvgm.def}{2024-03-14}{}
{L3 backend support: dvisvgm}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -663,9 +663,9 @@
\cs_new_protected:Npn \__opacity_backend_fill:n #1
{ \__opacity_backend:nn {#1} { fill- } }
\cs_new_protected:Npn \__opacity_backend_stroke:n #1
- { \__opacity_backend:nn { {#1} } { stroke- } }
+ { \__opacity_backend:nn {#1} { stroke- } }
\cs_new_protected:Npn \__opacity_backend:nn #1#2
- { \__kernel_backend_scope:e { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } }
+ { \__kernel_backend_scope:e { #2 opacity = " #1 " } }
%%
%%
%% End of file `l3backend-dvisvgm.def'.
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
index e4369908111..aaa8312d5d8 100644
--- a/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
+++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-luatex.def}{2024-02-20}{}
+ {l3backend-luatex.def}{2024-03-14}{}
{L3 backend support: PDF output (LuaTeX)}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -838,7 +838,7 @@
%% File: l3backend-opacity.dtx
\bool_lazy_and:nnT
{ \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p:}
+ { \pdfmanagement_if_active_p: }
{
\__kernel_color_backend_stack_init:Nnn \c__opacity_backend_stack_int
{ page ~ direct } { /opacity 1 ~ gs }
@@ -847,13 +847,10 @@
}
\tl_new:N \l__opacity_backend_fill_tl
\tl_new:N \l__opacity_backend_stroke_tl
+\tl_set:Nn \l__opacity_backend_fill_tl { 1 }
+\tl_set:Nn \l__opacity_backend_stroke_tl { 1 }
\cs_new_protected:Npn \__opacity_backend_select:n #1
{
- \exp_args:Ne \__opacity_backend_select_aux:n
- { \fp_eval:n { min(max(0,#1),1) } }
- }
-\cs_new_protected:Npn \__opacity_backend_select_aux:n #1
- {
\tl_set:Nn \l__opacity_backend_fill_tl {#1}
\tl_set:Nn \l__opacity_backend_stroke_tl {#1}
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
@@ -863,32 +860,26 @@
{ /opacity #1 ~ gs }
\group_insert_after:N \__opacity_backend_reset:
}
-\bool_lazy_and:nnF
- { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p:}
- {
- \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { }
- }
\cs_new_protected:Npn \__opacity_backend_reset:
{
\__kernel_color_backend_stack_pop:n \c__opacity_backend_stack_int
}
\cs_new_protected:Npn \__opacity_backend_fill:n #1
{
- \__opacity_backend_fill_stroke:ee
- { \fp_eval:n { min(max(0,#1),1) } }
- \l__opacity_backend_stroke_tl
+ \exp_args:Nno \__opacity_backend_fill_stroke:nn
+ { #1 }
+ { \l__opacity_backend_stroke_tl }
}
\cs_new_protected:Npn \__opacity_backend_stroke:n #1
{
- \__opacity_backend_fill_stroke:ee
- \l__opacity_backend_fill_tl
- { \fp_eval:n { min(max(0,#1),1) } }
+ \exp_args:No \__opacity_backend_fill_stroke:nn
+ { \l__opacity_backend_fill_tl }
+ { #1 }
}
\cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2
{
\str_if_eq:nnTF {#1} {#2}
- { \__opacity_backend_select_aux:n {#1} }
+ { \__opacity_backend_select:n {#1} }
{
\tl_set:Nn \l__opacity_backend_fill_tl {#1}
\tl_set:Nn \l__opacity_backend_stroke_tl {#2}
@@ -896,14 +887,20 @@
{ opacity.fill #1 }
{ << /ca ~ #1 >> }
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
- { opacity.stroke #1 }
+ { opacity.stroke #2 }
{ << /CA ~ #2 >> }
\__kernel_color_backend_stack_push:nn \c__opacity_backend_stack_int
{ /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs }
\group_insert_after:N \__opacity_backend_reset:
}
}
-\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee }
+\bool_lazy_and:nnF
+ { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
+ { \pdfmanagement_if_active_p: }
+ {
+ \cs_gset_protected:Npn \__opacity_backend_select:n #1 { }
+ \cs_gset_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { }
+ }
%%
%%
%% End of file `l3backend-luatex.def'.
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
index 0258ebe3284..2ef1d26d116 100644
--- a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-pdftex.def}{2024-02-20}{}
+ {l3backend-pdftex.def}{2024-03-14}{}
{L3 backend support: PDF output (pdfTeX)}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -837,7 +837,7 @@
%% File: l3backend-opacity.dtx
\bool_lazy_and:nnT
{ \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p:}
+ { \pdfmanagement_if_active_p: }
{
\__kernel_color_backend_stack_init:Nnn \c__opacity_backend_stack_int
{ page ~ direct } { /opacity 1 ~ gs }
@@ -846,13 +846,10 @@
}
\tl_new:N \l__opacity_backend_fill_tl
\tl_new:N \l__opacity_backend_stroke_tl
+\tl_set:Nn \l__opacity_backend_fill_tl { 1 }
+\tl_set:Nn \l__opacity_backend_stroke_tl { 1 }
\cs_new_protected:Npn \__opacity_backend_select:n #1
{
- \exp_args:Ne \__opacity_backend_select_aux:n
- { \fp_eval:n { min(max(0,#1),1) } }
- }
-\cs_new_protected:Npn \__opacity_backend_select_aux:n #1
- {
\tl_set:Nn \l__opacity_backend_fill_tl {#1}
\tl_set:Nn \l__opacity_backend_stroke_tl {#1}
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
@@ -862,32 +859,26 @@
{ /opacity #1 ~ gs }
\group_insert_after:N \__opacity_backend_reset:
}
-\bool_lazy_and:nnF
- { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p:}
- {
- \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { }
- }
\cs_new_protected:Npn \__opacity_backend_reset:
{
\__kernel_color_backend_stack_pop:n \c__opacity_backend_stack_int
}
\cs_new_protected:Npn \__opacity_backend_fill:n #1
{
- \__opacity_backend_fill_stroke:ee
- { \fp_eval:n { min(max(0,#1),1) } }
- \l__opacity_backend_stroke_tl
+ \exp_args:Nno \__opacity_backend_fill_stroke:nn
+ { #1 }
+ { \l__opacity_backend_stroke_tl }
}
\cs_new_protected:Npn \__opacity_backend_stroke:n #1
{
- \__opacity_backend_fill_stroke:ee
- \l__opacity_backend_fill_tl
- { \fp_eval:n { min(max(0,#1),1) } }
+ \exp_args:No \__opacity_backend_fill_stroke:nn
+ { \l__opacity_backend_fill_tl }
+ { #1 }
}
\cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2
{
\str_if_eq:nnTF {#1} {#2}
- { \__opacity_backend_select_aux:n {#1} }
+ { \__opacity_backend_select:n {#1} }
{
\tl_set:Nn \l__opacity_backend_fill_tl {#1}
\tl_set:Nn \l__opacity_backend_stroke_tl {#2}
@@ -895,14 +886,20 @@
{ opacity.fill #1 }
{ << /ca ~ #1 >> }
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
- { opacity.stroke #1 }
+ { opacity.stroke #2 }
{ << /CA ~ #2 >> }
\__kernel_color_backend_stack_push:nn \c__opacity_backend_stack_int
{ /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs }
\group_insert_after:N \__opacity_backend_reset:
}
}
-\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee }
+\bool_lazy_and:nnF
+ { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
+ { \pdfmanagement_if_active_p: }
+ {
+ \cs_gset_protected:Npn \__opacity_backend_select:n #1 { }
+ \cs_gset_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { }
+ }
%%
%%
%% End of file `l3backend-pdftex.def'.
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
index bab5a7d20ce..798bd686f2a 100644
--- a/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
+++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-xetex.def}{2024-02-20}{}
+ {l3backend-xetex.def}{2024-03-14}{}
{L3 backend support: XeTeX}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -845,20 +845,17 @@
%% File: l3backend-opacity.dtx
\bool_lazy_and:nnT
{ \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p:}
+ { \pdfmanagement_if_active_p: }
{
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
{ opacity 1 } { << /ca ~ 1 /CA ~ 1 >> }
}
\tl_new:N \l__opacity_backend_fill_tl
\tl_new:N \l__opacity_backend_stroke_tl
+\tl_set:Nn \l__opacity_backend_fill_tl { 1 }
+\tl_set:Nn \l__opacity_backend_stroke_tl { 1 }
\cs_new_protected:Npn \__opacity_backend_select:n #1
{
- \exp_args:Ne \__opacity_backend_select_aux:n
- { \fp_eval:n { min(max(0,#1),1) } }
- }
-\cs_new_protected:Npn \__opacity_backend_select_aux:n #1
- {
\tl_set:Nn \l__opacity_backend_fill_tl {#1}
\tl_set:Nn \l__opacity_backend_stroke_tl {#1}
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
@@ -868,12 +865,6 @@
{ /opacity #1 ~ gs }
\group_insert_after:N \__opacity_backend_reset:
}
-\bool_lazy_and:nnF
- { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p:}
- {
- \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { }
- }
\cs_new_protected:Npn \__opacity_backend_reset:
{
\__kernel_backend_literal_pdf:n
@@ -881,20 +872,20 @@
}
\cs_new_protected:Npn \__opacity_backend_fill:n #1
{
- \__opacity_backend_fill_stroke:ee
- { \fp_eval:n { min(max(0,#1),1) } }
- \l__opacity_backend_stroke_tl
+ \exp_args:Nno \__opacity_backend_fill_stroke:nn
+ { #1 }
+ { \l__opacity_backend_stroke_tl }
}
\cs_new_protected:Npn \__opacity_backend_stroke:n #1
{
- \__opacity_backend_fill_stroke:ee
- \l__opacity_backend_fill_tl
- { \fp_eval:n { min(max(0,#1),1) } }
+ \exp_args:No \__opacity_backend_fill_stroke:nn
+ { \l__opacity_backend_fill_tl }
+ { #1 }
}
\cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2
{
\str_if_eq:nnTF {#1} {#2}
- { \__opacity_backend_select_aux:n {#1} }
+ { \__opacity_backend_select:n {#1} }
{
\tl_set:Nn \l__opacity_backend_fill_tl {#1}
\tl_set:Nn \l__opacity_backend_stroke_tl {#2}
@@ -902,14 +893,20 @@
{ opacity.fill #1 }
{ << /ca ~ #1 >> }
\pdfmanagement_add:nnn { Page / Resources / ExtGState }
- { opacity.stroke #1 }
+ { opacity.stroke #2 }
{ << /CA ~ #2 >> }
\__kernel_backend_literal_pdf:n
{ /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs }
\group_insert_after:N \__opacity_backend_reset:
}
}
-\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee }
+\bool_lazy_and:nnF
+ { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
+ { \pdfmanagement_if_active_p: }
+ {
+ \cs_gset_protected:Npn \__opacity_backend_select:n #1 { }
+ \cs_gset_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { }
+ }
%%
%%
%% End of file `l3backend-xetex.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
index 0c4871ea36f..b8b9460cfd3 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}{2024-02-20}{}
+\ProvidesExplPackage{l3benchmark}{2024-03-14}{}
{L3 Experimental benchmarking}
\fp_new:N \g_benchmark_duration_target_fp
\fp_gset:Nn \g_benchmark_duration_target_fp { 1 }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
index a38d6f149d1..901aea3d8c2 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
@@ -29,7 +29,7 @@
%% File: l3draw.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2024-02-20}{}
+\ProvidesExplPackage{l3draw}{2024-03-14}{}
{L3 Experimental core drawing support}
\scan_new:N \s__draw_mark
\scan_new:N \s__draw_stop
@@ -262,8 +262,8 @@
\bool_new:N \l__draw_corner_arc_bool
\cs_new_protected:Npn \draw_path_corner_arc:nn #1#2
{
- \dim_set:Nn \l__draw_corner_xarc_dim {#1}
- \dim_set:Nn \l__draw_corner_yarc_dim {#2}
+ \dim_set:Nn \l__draw_corner_xarc_dim { \fp_to_dim:n {#1} }
+ \dim_set:Nn \l__draw_corner_yarc_dim { \fp_to_dim:n {#2} }
\bool_lazy_and:nnTF
{ \dim_compare_p:nNn \l__draw_corner_xarc_dim = { 0pt } }
{ \dim_compare_p:nNn \l__draw_corner_yarc_dim = { 0pt } }
@@ -597,16 +597,18 @@
{ \draw_path_ellipse:nnn {#1} { #2 , 0pt } { 0pt , #2 } }
\cs_new_protected:Npn \draw_path_rectangle:nn #1#2
{
- \__draw_point_process:nnn
+ \bool_lazy_or:nnTF
+ { \l__draw_corner_arc_bool }
+ { \l__draw_matrix_active_bool }
{
- \bool_lazy_or:nnTF
- { \l__draw_corner_arc_bool }
- { \l__draw_matrix_active_bool }
- { \__draw_path_rectangle_rounded:nnnn }
- { \__draw_path_rectangle:nnnn }
+ \__draw_point_process:nnn \__draw_path_rectangle_rounded:nnnn
+ {#1} {#2}
+ }
+ {
+ \__draw_point_process:nnn \__draw_path_rectangle:nnnn
+ { (#1) + ( \l__draw_xshift_dim , \l__draw_yshift_dim ) }
+ { #2 }
}
- {#1}
- {#2}
}
\cs_new_protected:Npn \__draw_path_rectangle:nnnn #1#2#3#4
{
@@ -637,8 +639,8 @@
\__draw_point_process:nnn
{
\__draw_path_grid_auxi:eennnn
- { \dim_eval:n { \dim_abs:n {#1} } }
- { \dim_eval:n { \dim_abs:n {#2} } }
+ { \dim_abs:n {#1} }
+ { \dim_abs:n {#2} }
}
{#3} {#4}
}
@@ -658,8 +660,8 @@
\cs_new_protected:Npn \__draw_path_grid_auxiii:nnnnnn #1#2#3#4#5#6
{
\__draw_path_grid_auxiv:eennnnnn
- { \fp_to_dim:n { #1 * trunc(#3/(#1)) } }
- { \fp_to_dim:n { #2 * trunc(#4/(#2)) } }
+ { \fp_to_dim:n { #1 * ceil(#3/(#1)) } }
+ { \fp_to_dim:n { #2 * ceil(#4/(#2)) } }
{#1} {#2} {#3} {#4} {#5} {#6}
}
\cs_new_protected:Npn \__draw_path_grid_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8
@@ -685,7 +687,6 @@
\bool_new:N \l__draw_path_use_clip_bool
\bool_new:N \l__draw_path_use_fill_bool
\bool_new:N \l__draw_path_use_stroke_bool
-\bool_new:N \l__draw_path_use_bb_bool
\bool_new:N \l__draw_path_use_clear_bool
\cs_new_protected:Npn \draw_path_use:n #1
{
@@ -703,6 +704,23 @@
}
{ \__draw_path_use:n { #1 , clear } }
}
+\cs_new_protected:Npn \draw_path_replace_bb:
+ {
+ \__draw_path_replace_bb:NnN x { max } +
+ \__draw_path_replace_bb:NnN y { max } +
+ \__draw_path_replace_bb:NnN x { min } -
+ \__draw_path_replace_bb:NnN y { min } -
+ \__draw_softpath_clear:
+ \__draw_path_reset_limits:
+ }
+\cs_new_protected:Npn \__draw_path_replace_bb:NnN #1#2#3
+ {
+ \dim_gset:cn { g__draw_ #1#2 _dim }
+ {
+ \dim_use:c { g__draw_path_ #1#2 _dim }
+ #3 0.5 \g__draw_linewidth_dim
+ }
+ }
\cs_new_protected:Npn \__draw_path_use:n #1
{
\bool_set_false:N \l__draw_path_use_clip_bool
@@ -745,7 +763,10 @@
}
}
\bool_if:NT \l__draw_path_use_clear_bool
- { \__draw_softpath_clear: }
+ {
+ \__draw_softpath_clear:
+ \__draw_path_reset_limits:
+ }
}
\cs_new_protected:Npn \__draw_path_use_action_draw:
{
@@ -758,12 +779,12 @@
}
\cs_new_protected:Npn \__draw_path_use_stroke_bb:
{
- \__draw_path_use_stroke_bb_aux:NnN x { max } +
- \__draw_path_use_stroke_bb_aux:NnN y { max } +
- \__draw_path_use_stroke_bb_aux:NnN x { min } -
- \__draw_path_use_stroke_bb_aux:NnN y { min } -
+ \__draw_path_use_bb:NnN x { max } +
+ \__draw_path_use_bb:NnN y { max } +
+ \__draw_path_use_bb:NnN x { min } -
+ \__draw_path_use_bb:NnN y { min } -
}
-\cs_new_protected:Npn \__draw_path_use_stroke_bb_aux:NnN #1#2#3
+\cs_new_protected:Npn \__draw_path_use_bb:NnN #1#2#3
{
\dim_compare:nNnF { \dim_use:c { g__draw_ #1#2 _dim } } = { #3 -\c_max_dim }
{
@@ -1540,12 +1561,14 @@
{ \__draw_backend_lineto:nn {#1} {#2} }
\cs_new_protected:Npn \__draw_softpath_moveto_op:nn #1#2
{ \__draw_backend_moveto:nn {#1} {#2} }
-\cs_new_protected:Npn \__draw_softpath_roundpoint_op:nn #1#2 { }
+\cs_new_protected:Npn \__draw_softpath_roundpoint_op:nn #1#2
+ { \__draw_softpath_roundpoint_op:nn }
\cs_new_protected:Npn \__draw_softpath_rectangle_opi:nn #1#2
{ \__draw_softpath_rectangle_opi:nnNnn {#1} {#2} }
\cs_new_protected:Npn \__draw_softpath_rectangle_opi:nnNnn #1#2#3#4#5
{ \__draw_backend_rectangle:nnnn {#1} {#2} {#4} {#5} }
- \cs_new_protected:Npn \__draw_softpath_rectangle_opii:nn #1#2 { }
+\cs_new_protected:Npn \__draw_softpath_rectangle_opii:nn #1#2
+ { \__draw_softpath_rectangle_opii:nn }
\tl_new:N \l__draw_softpath_main_tl
\tl_new:N \l__draw_softpath_part_tl
\tl_new:N \l__draw_softpath_curve_end_tl
@@ -1826,6 +1849,7 @@
\fp_zero:N \l__draw_matrix_b_fp
\fp_zero:N \l__draw_matrix_c_fp
\fp_set:Nn \l__draw_matrix_d_fp { 1 }
+ \bool_set_false:N \l__draw_matrix_active_bool
}
\cs_new_protected:Npn \draw_transform_shift_reset:
{
@@ -1898,7 +1922,7 @@
\fp_to_dim:n
{
#1 +
- ( #3 * \l__draw_matrix_a_fp + #4 * \l__draw_matrix_b_fp )
+ ( #3 * \l__draw_matrix_a_fp + #4 * \l__draw_matrix_c_fp )
}
}
\dim_set:Nn \l__draw_yshift_dim
@@ -1906,7 +1930,7 @@
\fp_to_dim:n
{
#2 +
- ( #3 * \l__draw_matrix_c_fp + #4 * \l__draw_matrix_d_fp )
+ ( #3 * \l__draw_matrix_b_fp + #4 * \l__draw_matrix_d_fp )
}
}
}
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
index 5ed4c89cc3b..767f6dd660a 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3graphics.dtx
-\ProvidesExplPackage{l3graphics}{2024-02-20}{}
+\ProvidesExplPackage{l3graphics}{2024-03-14}{}
{L3 Experimental graphics inclusion support}
\dim_new:N \l__graphics_internal_dim
\ior_new:N \l__graphics_internal_ior
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty b/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
index 0a2efdb9e64..fb7b9c97bd3 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
@@ -20,8 +20,9 @@
%%
%% File: l3opacity.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3opacity}{2024-02-20}{}
+\ProvidesExplPackage{l3opacity}{2024-03-14}{}
{L3 Experimental opacity support}
+\fp_new:N \l__opacity_tmp_fp
\cs_new_protected:Npn \opacity_select:n #1
{ \__opacity_select:nN {#1} \__opacity_backend_select:n }
\cs_new_protected:Npn \opacity_fill:n #1
@@ -29,14 +30,13 @@
\cs_new_protected:Npn \opacity_stroke:n #1
{ \__opacity_select:nN {#1} \__opacity_backend_stroke:n }
\cs_new_protected:Npn \__opacity_select:nN #1#2
- { \exp_args:Ne \__opacity_select_aux:nN { \fp_eval:n {#1} } #2 }
-\cs_new_protected:Npn \__opacity_select_aux:nN #1#2
{
+ \fp_set:Nn \l__opacity_tmp_fp { #1 }
\bool_lazy_or:nnTF
- { \fp_compare_p:nNn {#1} < { 0 } }
- { \fp_compare_p:nNn {#1} > { 1 } }
+ { \fp_compare_p:nNn \l__opacity_tmp_fp < \c_zero_fp }
+ { \fp_compare_p:nNn \l__opacity_tmp_fp > \c_one_fp }
{ \msg_error:nnn { opacity } { out-of-range } {#1} }
- { #2 {#1} }
+ { \exp_args:Ne #2 { \fp_use:N \l__opacity_tmp_fp } }
}
\msg_new:nnnn { opacity } { out-of-range }
{ Opacity~value~out~of~range. }
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 056a8239407..2bdd71ddb7d 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}{2024-02-20}{}
+\ProvidesExplPackage{l3str-format}{2024-03-14}{}
{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
deleted file mode 100644
index f08e91bba4b..00000000000
--- a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
+++ /dev/null
@@ -1,211 +0,0 @@
-%%
-%% This is file `l3sys-shell.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% l3sys-shell.dtx (with options: `package')
-%%
-%% Copyright (C) 2018-2024 The LaTeX 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:
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% This file is part of the "l3experimental bundle" (The Work in LPPL)
-%% and all files in that bundle must be distributed together.
-%%
-%% File: l3sys-shell.dtx
-\RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2024-02-20}{}
- {L3 Experimental system shell functions}
-\scan_new:N \s__sys_stop
-\quark_new:N \q__sys_nil
-\__kernel_quark_new_conditional:Nn \__sys_quark_if_nil:N { F }
-\cs_new:Npn \__sys_path_to_win:n #1
- {
- \exp_after:wN \__sys_path_to_win:w \tl_to_str:n {#1} ~ \s__sys_stop
- }
-\cs_new:Npn \__sys_path_to_win:w #1 ~ #2 \s__sys_stop
- {
- \__sys_path_to_win:N #1 \q__sys_nil
- \tl_if_empty:nF {#2}
- {
- \c_space_tl
- \__sys_path_to_win:w #2 \s__sys_stop
- }
- }
-\cs_new:Npn \__sys_path_to_win:N #1
- {
- \__sys_quark_if_nil:NF #1
- {
- \token_if_eq_meaning:NNTF #1 /
- { \c_backslash_str }
- {#1}
- \__sys_path_to_win:N
- }
- }
-\cs_new_protected:Npe \sys_shell_cp:nn #1#2
- {
- \sys_if_shell_unrestricted:T
- {
- \sys_shell_now:e
- {
- \sys_if_platform_unix:T
- {
- cp~-f~ \exp_not:N \tl_to_str:n {#1} ~
- \exp_not:N \tl_to_str:n {#2}
- }
- \sys_if_platform_windows:T
- {
- copy~/y~ \exp_not:N \__sys_path_to_win:n {#1} ~
- \exp_not:N \__sys_path_to_win:n {#2}
- }
- }
- }
- }
-\cs_new_protected:Npe \sys_shell_mkdir:n #1
- {
- \sys_if_shell_unrestricted:T
- {
- \sys_shell_now:e
- {
- \sys_if_platform_unix:T
- { mkdir~-p~ \exp_not:N \tl_to_str:n {#1} }
- \sys_if_platform_windows:T
- {
- if~not~exist~
- \exp_not:N \__sys_path_to_win:n { #1 / nul } ~
- mkdir~ \exp_not:N \__sys_path_to_win:n {#1}
- }
- }
- }
- }
-\cs_new_protected:Npe \sys_shell_mv:nn #1#2
- {
- \sys_if_shell_unrestricted:T
- {
- \sys_shell_now:e
- {
- \sys_if_platform_unix:T
- {
- mv~ \exp_not:N \tl_to_str:n {#1} ~
- \exp_not:N \tl_to_str:n {#2}
- }
- \sys_if_platform_windows:T
- {
- copy~/y~ \exp_not:N \__sys_path_to_win:n {#1} ~
- \exp_not:N \__sys_path_to_win:n {#2}
- \token_to_str:N & \token_to_str:N &
- del~/f~/q~\exp_not:N \__sys_path_to_win:n {#1}
- }
- }
- }
- }
-\cs_new_protected:Npe \sys_shell_rm:n #1
- {
- \sys_if_shell_unrestricted:T
- {
- \sys_shell_now:e
- {
- \sys_if_platform_unix:T
- { rm~-f~ \exp_not:N \tl_to_str:n {#1} }
- \sys_if_platform_windows:T
- { del~/f~/q~ \exp_not:N \__sys_path_to_win:n {#1} }
- }
- }
- }
-\cs_new_protected:Npe \sys_shell_rmdir:n #1
- {
- \sys_if_shell_unrestricted:T
- {
- \sys_shell_mkdir:n {#1}
- \sys_shell_now:e
- {
- \sys_if_platform_unix:T
- { rm~-rf~ \exp_not:N \tl_to_str:n {#1} }
- \sys_if_platform_windows:T
- { rmdir~/s~/q~ \exp_not:N \__sys_path_to_win:n {#1} }
- }
- }
- }
-\seq_new:N \l__sys_tmp_seq
-\tl_new:N \l__sys_tmp_tl
-\cs_new_protected:Npe \sys_get_shell_pwd:N #1
- {
- \sys_if_shell_unrestricted:T
- {
- \exp_not:N \sys_get_shell:nnN
- {
- \sys_if_platform_unix:T { pwd }
- \sys_if_platform_windows:T { cd }
- }
- {
- \char_set_catcode_other:N \exp_not:N \\
- \char_set_catcode_other:N \exp_not:N \#
- \char_set_catcode_other:N \exp_not:N \~
- \char_set_catcode_other:N \exp_not:N \%
- \char_set_catcode_space:N \exp_not:N \ %
- \tex_endlinechar:D -1 \scan_stop:
- }
- \exp_not:N \l__sys_tmp_tl
- \str_set:NV #1 \exp_not:N \l__sys_tmp_tl
- }
- }
-\cs_new_protected:Npe \sys_shell_split_ls:nN #1#2
- {
- \sys_if_shell_unrestricted:T
- {
- \exp_not:N \exp_args:Ne \exp_not:N \sys_get_shell:nnN
- {
- \sys_if_platform_unix:T { ls~-1~ #1 }
- \sys_if_platform_windows:T
- { dir~/b~/s~ \exp_not:N \__sys_path_to_win:n {#1} }
- }
- {
- \ExplSyntaxOff
- \char_set_catcode_other:N \exp_not:N \\
- \char_set_catcode_other:N \exp_not:N \#
- \char_set_catcode_other:N \exp_not:N \~
- \char_set_catcode_other:N \exp_not:N \%
- \char_set_catcode_other:n { 13 }
- }
- \exp_not:N \l__sys_tmp_tl
- \str_set:NV \exp_not:N \l__sys_tmp_tl \exp_not:N \l__sys_tmp_tl
- \seq_set_split:NnV #2 { \char_generate:nn { `\^^M } { 12 } }
- \exp_not:N \l__sys_tmp_tl
- \seq_pop_right:NN #2 \exp_not:N \l__sys_tmp_tl
- \exp_not:N \tl_if_blank:eTF { \exp_not:N \seq_item:Nn #2 { 1 } }
- { \seq_clear:N #2 }
- \sys_if_platform_windows:T
- {
- \sys_get_shell_pwd:N \exp_not:N \l__sys_tmp_tl
- \exp_not:N \exp_args:NV \exp_not:N \__sys_shell_split_ls:nN
- \exp_not:N \l__sys_tmp_tl #2
- }
- }
- }
-\sys_if_platform_windows:T
- {
- \cs_new_protected:Npe \__sys_shell_split_ls:nN #1#2
- {
- \cs_set:Npn \exp_not:N \__sys_shell_split_ls:w #1 \c_backslash_str { }
- \seq_set_eq:NN \exp_not:N \l__sys_tmp_seq #2
- \seq_clear:N #2
- \seq_map_inline:Nn \exp_not:N \l__sys_tmp_seq
- {
- \tl_set:Ne \exp_not:N \l__sys_tmp_tl
- { \exp_not:N \__sys_shell_split_ls:w ##1 }
- \tl_replace_all:Nnn \exp_not:N \l__sys_tmp_tl
- { \c_backslash_str } { / }
- \seq_put_right:NV #2 \exp_not:N \l__sys_tmp_tl
- }
- }
- \cs_new:Npn \__sys_shell_split_ls:w { }
- }
-%%
-%%
-%% End of file `l3sys-shell.sty'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
index 8e0aad65502..063610202dd 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: xcoffins.dtx
-\ProvidesExplPackage{xcoffins}{2024-02-20}{}
+\ProvidesExplPackage{xcoffins}{2024-03-14}{}
{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 6cedfc70fd0..4bda3024317 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}{2024-02-20}{}
+\ProvidesExplPackage{l3galley}{2024-03-14}{}
{L3 Experimental galley code}
\int_new:N \l__galley_tmp_int
\seq_new:N \g__galley_tmpa_seq
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
index e74c47800fb..47e9e04c17e 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: xgalley.dtx
-\ProvidesExplPackage{xgalley}{2024-02-20}{}
+\ProvidesExplPackage{xgalley}{2024-03-14}{}
{L3 Experimental galley}
\RequirePackage{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 324ff825f1c..bc4dfe706a4 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -75,7 +75,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-02-20}%
+\def\ExplFileDate{2024-03-14}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -235,7 +235,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\catcode 124 = 12\relax
\catcode 126 = 10\relax
\endlinechar = 32\relax
-\chardef\l__kernel_expl_bool = 1\relax
+\global\chardef\l__kernel_expl_bool = 1\relax
\protected \def \ExplSyntaxOn
{
\bool_if:NF \l__kernel_expl_bool
@@ -1450,47 +1450,47 @@ Type H <return> for immediate help}\def~{\errmessage{%
\tex_let:D \tex_right:D \normalright
\tex_fi:D
%% File: l3basics.dtx
-\tex_let:D \if_true: \tex_iftrue:D
-\tex_let:D \if_false: \tex_iffalse:D
-\tex_let:D \or: \tex_or:D
-\tex_let:D \else: \tex_else:D
-\tex_let:D \fi: \tex_fi:D
-\tex_let:D \reverse_if:N \tex_unless:D
-\tex_let:D \if:w \tex_if:D
-\tex_let:D \if_charcode:w \tex_if:D
-\tex_let:D \if_catcode:w \tex_ifcat:D
-\tex_let:D \if_meaning:w \tex_ifx:D
-\tex_let:D \if_bool:N \tex_ifodd:D
-\tex_let:D \if_mode_math: \tex_ifmmode:D
-\tex_let:D \if_mode_horizontal: \tex_ifhmode:D
-\tex_let:D \if_mode_vertical: \tex_ifvmode:D
-\tex_let:D \if_mode_inner: \tex_ifinner:D
-\tex_let:D \if_cs_exist:N \tex_ifdefined:D
-\tex_let:D \if_cs_exist:w \tex_ifcsname:D
-\tex_let:D \cs:w \tex_csname:D
-\tex_let:D \cs_end: \tex_endcsname:D
-\tex_let:D \exp_after:wN \tex_expandafter:D
-\tex_let:D \exp_not:N \tex_noexpand:D
-\tex_let:D \exp_not:n \tex_unexpanded:D
-\tex_let:D \exp:w \tex_romannumeral:D
-\tex_chardef:D \exp_end: = 0 ~
-\tex_let:D \token_to_meaning:N \tex_meaning:D
-\tex_let:D \cs_meaning:N \tex_meaning:D
-\tex_let:D \tl_to_str:n \tex_detokenize:D
-\tex_let:D \token_to_str:N \tex_string:D
-\tex_let:D \__kernel_tl_to_str:w \tex_detokenize:D
-\tex_let:D \scan_stop: \tex_relax:D
-\tex_let:D \group_begin: \tex_begingroup:D
-\tex_let:D \group_end: \tex_endgroup:D
-\tex_let:D \if_int_compare:w \tex_ifnum:D
-\tex_let:D \__int_to_roman:w \tex_romannumeral:D
-\tex_let:D \group_insert_after:N \tex_aftergroup:D
-\tex_long:D \tex_def:D \exp_args:Nc #1#2
+\tex_global:D \tex_let:D \if_true: \tex_iftrue:D
+\tex_global:D \tex_let:D \if_false: \tex_iffalse:D
+\tex_global:D \tex_let:D \or: \tex_or:D
+\tex_global:D \tex_let:D \else: \tex_else:D
+\tex_global:D \tex_let:D \fi: \tex_fi:D
+\tex_global:D \tex_let:D \reverse_if:N \tex_unless:D
+\tex_global:D \tex_let:D \if:w \tex_if:D
+\tex_global:D \tex_let:D \if_charcode:w \tex_if:D
+\tex_global:D \tex_let:D \if_catcode:w \tex_ifcat:D
+\tex_global:D \tex_let:D \if_meaning:w \tex_ifx:D
+\tex_global:D \tex_let:D \if_bool:N \tex_ifodd:D
+\tex_global:D \tex_let:D \if_mode_math: \tex_ifmmode:D
+\tex_global:D \tex_let:D \if_mode_horizontal: \tex_ifhmode:D
+\tex_global:D \tex_let:D \if_mode_vertical: \tex_ifvmode:D
+\tex_global:D \tex_let:D \if_mode_inner: \tex_ifinner:D
+\tex_global:D \tex_let:D \if_cs_exist:N \tex_ifdefined:D
+\tex_global:D \tex_let:D \if_cs_exist:w \tex_ifcsname:D
+\tex_global:D \tex_let:D \cs:w \tex_csname:D
+\tex_global:D \tex_let:D \cs_end: \tex_endcsname:D
+\tex_global:D \tex_let:D \exp_after:wN \tex_expandafter:D
+\tex_global:D \tex_let:D \exp_not:N \tex_noexpand:D
+\tex_global:D \tex_let:D \exp_not:n \tex_unexpanded:D
+\tex_global:D \tex_let:D \exp:w \tex_romannumeral:D
+\tex_global:D \tex_chardef:D \exp_end: = 0 ~
+\tex_global:D \tex_let:D \token_to_meaning:N \tex_meaning:D
+\tex_global:D \tex_let:D \cs_meaning:N \tex_meaning:D
+\tex_global:D \tex_let:D \tl_to_str:n \tex_detokenize:D
+\tex_global:D \tex_let:D \token_to_str:N \tex_string:D
+\tex_global:D \tex_let:D \__kernel_tl_to_str:w \tex_detokenize:D
+\tex_global:D \tex_let:D \scan_stop: \tex_relax:D
+\tex_global:D \tex_let:D \group_begin: \tex_begingroup:D
+\tex_global:D \tex_let:D \group_end: \tex_endgroup:D
+\tex_global:D \tex_let:D \if_int_compare:w \tex_ifnum:D
+\tex_global:D \tex_let:D \__int_to_roman:w \tex_romannumeral:D
+\tex_global:D \tex_let:D \group_insert_after:N \tex_aftergroup:D
+\tex_long:D \tex_gdef:D \exp_args:Nc #1#2
{ \exp_after:wN #1 \cs:w #2 \cs_end: }
-\tex_long:D \tex_def:D \exp_args:cc #1#2
+\tex_long:D \tex_gdef:D \exp_args:cc #1#2
{ \cs:w #1 \exp_after:wN \cs_end: \cs:w #2 \cs_end: }
-\tex_def:D \token_to_str:c { \exp_args:Nc \token_to_str:N }
-\tex_long:D \tex_def:D \cs_meaning:c #1
+\tex_gdef:D \token_to_str:c { \exp_args:Nc \token_to_str:N }
+\tex_long:D \tex_gdef:D \cs_meaning:c #1
{
\if_cs_exist:w #1 \cs_end:
\exp_after:wN \use_i:nn
@@ -1500,168 +1500,168 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp_args:Nc \cs_meaning:N {#1} }
{ \tl_to_str:n {undefined} }
}
-\tex_let:D \token_to_meaning:c = \cs_meaning:c
-\tex_chardef:D \c_zero_int = 0 ~
+\tex_global:D \tex_let:D \token_to_meaning:c = \cs_meaning:c
+\tex_global:D \tex_chardef:D \c_zero_int = 0 ~
\tex_ifdefined:D \tex_luatexversion:D
- \tex_chardef:D \c_max_register_int = 65 535 ~
+ \tex_global:D \tex_chardef:D \c_max_register_int = 65 535 ~
\tex_else:D
\tex_ifdefined:D \tex_omathchardef:D
- \tex_omathchardef:D \c_max_register_int = 65535 ~
+ \tex_global:D \tex_omathchardef:D \c_max_register_int = 65535 ~
\tex_else:D
- \tex_mathchardef:D \c_max_register_int = 32767 ~
+ \tex_global:D \tex_mathchardef:D \c_max_register_int = 32767 ~
\tex_fi:D
\tex_fi:D
-\tex_let:D \cs_set_nopar:Npn \tex_def:D
-\tex_let:D \cs_set_nopar:Npe \tex_edef:D
-\tex_let:D \cs_set_nopar:Npx \tex_edef:D
-\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npn
- { \tex_long:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npe
- { \tex_long:D \tex_edef:D }
-\tex_let:D \cs_set:Npx \cs_set:Npe
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npn
- { \tex_protected:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npe
- { \tex_protected:D \tex_edef:D }
-\tex_let:D \cs_set_protected_nopar:Npx \cs_set_protected_nopar:Npe
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npn
- { \tex_protected:D \tex_long:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npe
- { \tex_protected:D \tex_long:D \tex_edef:D }
-\tex_let:D \cs_set_protected:Npx \cs_set_protected:Npe
-\tex_let:D \cs_gset_nopar:Npn \tex_gdef:D
-\tex_let:D \cs_gset_nopar:Npe \tex_xdef:D
-\tex_let:D \cs_gset_nopar:Npx \tex_xdef:D
-\cs_set_protected:Npn \cs_gset:Npn
+\tex_global:D \tex_let:D \cs_gset_nopar:Npn \tex_gdef:D
+\tex_global:D \tex_let:D \cs_gset_nopar:Npe \tex_xdef:D
+\tex_global:D \tex_let:D \cs_gset_nopar:Npx \tex_xdef:D
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset:Npn
{ \tex_long:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset:Npe
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset:Npe
{ \tex_long:D \tex_xdef:D }
-\tex_let:D \cs_gset:Npx \cs_gset:Npe
-\cs_set_protected:Npn \cs_gset_protected_nopar:Npn
+\tex_global:D \tex_let:D \cs_gset:Npx \cs_gset:Npe
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected_nopar:Npn
{ \tex_protected:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset_protected_nopar:Npe
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected_nopar:Npe
{ \tex_protected:D \tex_xdef:D }
-\tex_let:D \cs_gset_protected_nopar:Npx \cs_gset_protected_nopar:Npe
-\cs_set_protected:Npn \cs_gset_protected:Npn
+\tex_global:D \tex_let:D \cs_gset_protected_nopar:Npx \cs_gset_protected_nopar:Npe
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected:Npn
{ \tex_protected:D \tex_long:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset_protected:Npe
+\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected:Npe
{ \tex_protected:D \tex_long:D \tex_xdef:D }
-\tex_let:D \cs_gset_protected:Npx \cs_gset_protected:Npe
-\cs_set_nopar:Npn \l__exp_internal_tl { }
-\cs_set:Npn \use:c #1 { \cs:w #1 \cs_end: }
-\cs_set_protected:Npn \use:x #1
+\tex_global:D \tex_let:D \cs_gset_protected:Npx \cs_gset_protected:Npe
+\tex_global:D \tex_let:D \cs_set_nopar:Npn \tex_def:D
+\tex_global:D \tex_let:D \cs_set_nopar:Npe \tex_edef:D
+\tex_global:D \tex_let:D \cs_set_nopar:Npx \tex_edef:D
+\cs_gset_protected:Npn \cs_set:Npn
+ { \tex_long:D \tex_def:D }
+\cs_gset_protected:Npn \cs_set:Npe
+ { \tex_long:D \tex_edef:D }
+\tex_global:D \tex_let:D \cs_set:Npx \cs_set:Npe
+\cs_gset_protected:Npn \cs_set_protected_nopar:Npn
+ { \tex_protected:D \tex_def:D }
+\cs_gset_protected:Npn \cs_set_protected_nopar:Npe
+ { \tex_protected:D \tex_edef:D }
+\tex_global:D \tex_let:D \cs_set_protected_nopar:Npx \cs_set_protected_nopar:Npe
+\cs_gset_protected:Npn \cs_set_protected:Npn
+ { \tex_protected:D \tex_long:D \tex_def:D }
+\cs_gset_protected:Npn \cs_set_protected:Npe
+ { \tex_protected:D \tex_long:D \tex_edef:D }
+\tex_global:D \tex_let:D \cs_set_protected:Npx \cs_set_protected:Npe
+\cs_gset_nopar:Npn \l__exp_internal_tl { }
+\cs_gset:Npn \use:c #1 { \cs:w #1 \cs_end: }
+\cs_gset_protected:Npn \use:x #1
{
\cs_set_nopar:Npx \l__exp_internal_tl {#1}
\l__exp_internal_tl
}
-\cs_set:Npn \use:e #1 { \tex_expanded:D {#1} }
-\cs_set:Npn \use:n #1 {#1}
-\cs_set:Npn \use:nn #1#2 {#1#2}
-\cs_set:Npn \use:nnn #1#2#3 {#1#2#3}
-\cs_set:Npn \use:nnnn #1#2#3#4 {#1#2#3#4}
-\cs_set:Npn \use_i:nn #1#2 {#1}
-\cs_set:Npn \use_ii:nn #1#2 {#2}
-\cs_set:Npn \use_i:nnn #1#2#3 {#1}
-\cs_set:Npn \use_ii:nnn #1#2#3 {#2}
-\cs_set:Npn \use_iii:nnn #1#2#3 {#3}
-\cs_set:Npn \use_i:nnnn #1#2#3#4 {#1}
-\cs_set:Npn \use_ii:nnnn #1#2#3#4 {#2}
-\cs_set:Npn \use_iii:nnnn #1#2#3#4 {#3}
-\cs_set:Npn \use_iv:nnnn #1#2#3#4 {#4}
-\cs_set:Npn \use_i:nnnnn #1#2#3#4#5 {#1}
-\cs_set:Npn \use_ii:nnnnn #1#2#3#4#5 {#2}
-\cs_set:Npn \use_iii:nnnnn #1#2#3#4#5 {#3}
-\cs_set:Npn \use_iv:nnnnn #1#2#3#4#5 {#4}
-\cs_set:Npn \use_v:nnnnn #1#2#3#4#5 {#5}
-\cs_set:Npn \use_i:nnnnnn #1#2#3#4#5#6 {#1}
-\cs_set:Npn \use_ii:nnnnnn #1#2#3#4#5#6 {#2}
-\cs_set:Npn \use_iii:nnnnnn #1#2#3#4#5#6 {#3}
-\cs_set:Npn \use_iv:nnnnnn #1#2#3#4#5#6 {#4}
-\cs_set:Npn \use_v:nnnnnn #1#2#3#4#5#6 {#5}
-\cs_set:Npn \use_vi:nnnnnn #1#2#3#4#5#6 {#6}
-\cs_set:Npn \use_i:nnnnnnn #1#2#3#4#5#6#7 {#1}
-\cs_set:Npn \use_ii:nnnnnnn #1#2#3#4#5#6#7 {#2}
-\cs_set:Npn \use_iii:nnnnnnn #1#2#3#4#5#6#7 {#3}
-\cs_set:Npn \use_iv:nnnnnnn #1#2#3#4#5#6#7 {#4}
-\cs_set:Npn \use_v:nnnnnnn #1#2#3#4#5#6#7 {#5}
-\cs_set:Npn \use_vi:nnnnnnn #1#2#3#4#5#6#7 {#6}
-\cs_set:Npn \use_vii:nnnnnnn #1#2#3#4#5#6#7 {#7}
-\cs_set:Npn \use_i:nnnnnnnn #1#2#3#4#5#6#7#8 {#1}
-\cs_set:Npn \use_ii:nnnnnnnn #1#2#3#4#5#6#7#8 {#2}
-\cs_set:Npn \use_iii:nnnnnnnn #1#2#3#4#5#6#7#8 {#3}
-\cs_set:Npn \use_iv:nnnnnnnn #1#2#3#4#5#6#7#8 {#4}
-\cs_set:Npn \use_v:nnnnnnnn #1#2#3#4#5#6#7#8 {#5}
-\cs_set:Npn \use_vi:nnnnnnnn #1#2#3#4#5#6#7#8 {#6}
-\cs_set:Npn \use_vii:nnnnnnnn #1#2#3#4#5#6#7#8 {#7}
-\cs_set:Npn \use_viii:nnnnnnnn #1#2#3#4#5#6#7#8 {#8}
-\cs_set:Npn \use_i:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#1}
-\cs_set:Npn \use_ii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#2}
-\cs_set:Npn \use_iii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#3}
-\cs_set:Npn \use_iv:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#4}
-\cs_set:Npn \use_v:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#5}
-\cs_set:Npn \use_vi:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#6}
-\cs_set:Npn \use_vii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#7}
-\cs_set:Npn \use_viii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#8}
-\cs_set:Npn \use_ix:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#9}
-\cs_set:Npn \use_i_ii:nnn #1#2#3 {#1#2}
-\cs_set:Npn \use_ii_i:nn #1#2 { #2 #1 }
-\cs_set:Npn \use_none_delimit_by_q_nil:w #1 \q_nil { }
-\cs_set:Npn \use_none_delimit_by_q_stop:w #1 \q_stop { }
-\cs_set:Npn \use_none_delimit_by_q_recursion_stop:w #1 \q_recursion_stop { }
-\cs_set:Npn \use_i_delimit_by_q_nil:nw #1#2 \q_nil {#1}
-\cs_set:Npn \use_i_delimit_by_q_stop:nw #1#2 \q_stop {#1}
-\cs_set:Npn \use_i_delimit_by_q_recursion_stop:nw
+\cs_gset:Npn \use:e #1 { \tex_expanded:D {#1} }
+\cs_gset:Npn \use:n #1 {#1}
+\cs_gset:Npn \use:nn #1#2 {#1#2}
+\cs_gset:Npn \use:nnn #1#2#3 {#1#2#3}
+\cs_gset:Npn \use:nnnn #1#2#3#4 {#1#2#3#4}
+\cs_gset:Npn \use_i:nn #1#2 {#1}
+\cs_gset:Npn \use_ii:nn #1#2 {#2}
+\cs_gset:Npn \use_i:nnn #1#2#3 {#1}
+\cs_gset:Npn \use_ii:nnn #1#2#3 {#2}
+\cs_gset:Npn \use_iii:nnn #1#2#3 {#3}
+\cs_gset:Npn \use_i:nnnn #1#2#3#4 {#1}
+\cs_gset:Npn \use_ii:nnnn #1#2#3#4 {#2}
+\cs_gset:Npn \use_iii:nnnn #1#2#3#4 {#3}
+\cs_gset:Npn \use_iv:nnnn #1#2#3#4 {#4}
+\cs_gset:Npn \use_i:nnnnn #1#2#3#4#5 {#1}
+\cs_gset:Npn \use_ii:nnnnn #1#2#3#4#5 {#2}
+\cs_gset:Npn \use_iii:nnnnn #1#2#3#4#5 {#3}
+\cs_gset:Npn \use_iv:nnnnn #1#2#3#4#5 {#4}
+\cs_gset:Npn \use_v:nnnnn #1#2#3#4#5 {#5}
+\cs_gset:Npn \use_i:nnnnnn #1#2#3#4#5#6 {#1}
+\cs_gset:Npn \use_ii:nnnnnn #1#2#3#4#5#6 {#2}
+\cs_gset:Npn \use_iii:nnnnnn #1#2#3#4#5#6 {#3}
+\cs_gset:Npn \use_iv:nnnnnn #1#2#3#4#5#6 {#4}
+\cs_gset:Npn \use_v:nnnnnn #1#2#3#4#5#6 {#5}
+\cs_gset:Npn \use_vi:nnnnnn #1#2#3#4#5#6 {#6}
+\cs_gset:Npn \use_i:nnnnnnn #1#2#3#4#5#6#7 {#1}
+\cs_gset:Npn \use_ii:nnnnnnn #1#2#3#4#5#6#7 {#2}
+\cs_gset:Npn \use_iii:nnnnnnn #1#2#3#4#5#6#7 {#3}
+\cs_gset:Npn \use_iv:nnnnnnn #1#2#3#4#5#6#7 {#4}
+\cs_gset:Npn \use_v:nnnnnnn #1#2#3#4#5#6#7 {#5}
+\cs_gset:Npn \use_vi:nnnnnnn #1#2#3#4#5#6#7 {#6}
+\cs_gset:Npn \use_vii:nnnnnnn #1#2#3#4#5#6#7 {#7}
+\cs_gset:Npn \use_i:nnnnnnnn #1#2#3#4#5#6#7#8 {#1}
+\cs_gset:Npn \use_ii:nnnnnnnn #1#2#3#4#5#6#7#8 {#2}
+\cs_gset:Npn \use_iii:nnnnnnnn #1#2#3#4#5#6#7#8 {#3}
+\cs_gset:Npn \use_iv:nnnnnnnn #1#2#3#4#5#6#7#8 {#4}
+\cs_gset:Npn \use_v:nnnnnnnn #1#2#3#4#5#6#7#8 {#5}
+\cs_gset:Npn \use_vi:nnnnnnnn #1#2#3#4#5#6#7#8 {#6}
+\cs_gset:Npn \use_vii:nnnnnnnn #1#2#3#4#5#6#7#8 {#7}
+\cs_gset:Npn \use_viii:nnnnnnnn #1#2#3#4#5#6#7#8 {#8}
+\cs_gset:Npn \use_i:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#1}
+\cs_gset:Npn \use_ii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#2}
+\cs_gset:Npn \use_iii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#3}
+\cs_gset:Npn \use_iv:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#4}
+\cs_gset:Npn \use_v:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#5}
+\cs_gset:Npn \use_vi:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#6}
+\cs_gset:Npn \use_vii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#7}
+\cs_gset:Npn \use_viii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#8}
+\cs_gset:Npn \use_ix:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#9}
+\cs_gset:Npn \use_i_ii:nnn #1#2#3 {#1#2}
+\cs_gset:Npn \use_ii_i:nn #1#2 { #2 #1 }
+\cs_gset:Npn \use_none_delimit_by_q_nil:w #1 \q_nil { }
+\cs_gset:Npn \use_none_delimit_by_q_stop:w #1 \q_stop { }
+\cs_gset:Npn \use_none_delimit_by_q_recursion_stop:w #1 \q_recursion_stop { }
+\cs_gset:Npn \use_i_delimit_by_q_nil:nw #1#2 \q_nil {#1}
+\cs_gset:Npn \use_i_delimit_by_q_stop:nw #1#2 \q_stop {#1}
+\cs_gset:Npn \use_i_delimit_by_q_recursion_stop:nw
#1#2 \q_recursion_stop {#1}
-\cs_set:Npn \use_none:n #1 { }
-\cs_set:Npn \use_none:nn #1#2 { }
-\cs_set:Npn \use_none:nnn #1#2#3 { }
-\cs_set:Npn \use_none:nnnn #1#2#3#4 { }
-\cs_set:Npn \use_none:nnnnn #1#2#3#4#5 { }
-\cs_set:Npn \use_none:nnnnnn #1#2#3#4#5#6 { }
-\cs_set:Npn \use_none:nnnnnnn #1#2#3#4#5#6#7 { }
-\cs_set:Npn \use_none:nnnnnnnn #1#2#3#4#5#6#7#8 { }
-\cs_set:Npn \use_none:nnnnnnnnn #1#2#3#4#5#6#7#8#9 { }
-\cs_set_protected:Npn \__kernel_if_debug:TF #1#2 {#2}
-\cs_set_protected:Npn \debug_on:n #1
+\cs_gset:Npn \use_none:n #1 { }
+\cs_gset:Npn \use_none:nn #1#2 { }
+\cs_gset:Npn \use_none:nnn #1#2#3 { }
+\cs_gset:Npn \use_none:nnnn #1#2#3#4 { }
+\cs_gset:Npn \use_none:nnnnn #1#2#3#4#5 { }
+\cs_gset:Npn \use_none:nnnnnn #1#2#3#4#5#6 { }
+\cs_gset:Npn \use_none:nnnnnnn #1#2#3#4#5#6#7 { }
+\cs_gset:Npn \use_none:nnnnnnnn #1#2#3#4#5#6#7#8 { }
+\cs_gset:Npn \use_none:nnnnnnnnn #1#2#3#4#5#6#7#8#9 { }
+\cs_gset_protected:Npn \__kernel_if_debug:TF #1#2 {#2}
+\cs_gset_protected:Npn \debug_on:n #1
{
\sys_load_debug:
\cs_if_exist:NT \__debug_all_on:
{ \debug_on:n {#1} }
}
-\cs_set_protected:Npn \debug_off:n #1
+\cs_gset_protected:Npn \debug_off:n #1
{
\sys_load_debug:
\cs_if_exist:NT \__debug_all_on:
{ \debug_off:n {#1} }
}
-\cs_set_protected:Npn \debug_suspend: { }
-\cs_set_protected:Npn \debug_resume: { }
-\cs_set_nopar:Npn \g__debug_deprecation_on_tl { }
-\cs_set_nopar:Npn \g__debug_deprecation_off_tl { }
-\cs_set_protected:Npn \__kernel_deprecation_code:nn #1#2
+\cs_gset_protected:Npn \debug_suspend: { }
+\cs_gset_protected:Npn \debug_resume: { }
+\cs_gset_nopar:Npn \g__debug_deprecation_on_tl { }
+\cs_gset_nopar:Npn \g__debug_deprecation_off_tl { }
+\cs_gset_protected:Npn \__kernel_deprecation_code:nn #1#2
{
\tl_gput_right:Nn \g__debug_deprecation_on_tl {#1}
\tl_gput_right:Nn \g__debug_deprecation_off_tl {#2}
}
-\cs_set:Npn \prg_return_true:
+\cs_gset:Npn \prg_return_true:
{ \exp_after:wN \use_i:nn \exp:w }
-\cs_set:Npn \prg_return_false:
+\cs_gset:Npn \prg_return_false:
{ \exp_after:wN \use_ii:nn \exp:w}
-\cs_set:Npn \__prg_use_none_delimit_by_q_recursion_stop:w
+\cs_gset:Npn \__prg_use_none_delimit_by_q_recursion_stop:w
#1 \q__prg_recursion_stop { }
-\cs_set_protected:Npn \prg_set_conditional:Npnn
+\cs_gset_protected:Npn \prg_set_conditional:Npnn
{ \__prg_generate_conditional_parm:NNNpnn \cs_set:Npn e }
-\cs_set_protected:Npn \prg_gset_conditional:Npnn
+\cs_gset_protected:Npn \prg_gset_conditional:Npnn
{ \__prg_generate_conditional_parm:NNNpnn \cs_gset:Npn e }
-\cs_set_protected:Npn \prg_new_conditional:Npnn
+\cs_gset_protected:Npn \prg_new_conditional:Npnn
{ \__prg_generate_conditional_parm:NNNpnn \cs_new:Npn e }
-\cs_set_protected:Npn \prg_set_protected_conditional:Npnn
+\cs_gset_protected:Npn \prg_set_protected_conditional:Npnn
{ \__prg_generate_conditional_parm:NNNpnn \cs_set_protected:Npn p }
-\cs_set_protected:Npn \prg_gset_protected_conditional:Npnn
+\cs_gset_protected:Npn \prg_gset_protected_conditional:Npnn
{ \__prg_generate_conditional_parm:NNNpnn \cs_gset_protected:Npn p }
-\cs_set_protected:Npn \prg_new_protected_conditional:Npnn
+\cs_gset_protected:Npn \prg_new_protected_conditional:Npnn
{ \__prg_generate_conditional_parm:NNNpnn \cs_new_protected:Npn p }
-\cs_set_protected:Npn \__prg_generate_conditional_parm:NNNpnn #1#2#3#4#
+\cs_gset_protected:Npn \__prg_generate_conditional_parm:NNNpnn #1#2#3#4#
{
\use:e
{
@@ -1670,19 +1670,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
#1 #2 {#4}
}
-\cs_set_protected:Npn \prg_set_conditional:Nnn
+\cs_gset_protected:Npn \prg_set_conditional:Nnn
{ \__prg_generate_conditional_count:NNNnn \cs_set:Npn e }
-\cs_set_protected:Npn \prg_gset_conditional:Nnn
+\cs_gset_protected:Npn \prg_gset_conditional:Nnn
{ \__prg_generate_conditional_count:NNNnn \cs_set:Npn e }
-\cs_set_protected:Npn \prg_new_conditional:Nnn
+\cs_gset_protected:Npn \prg_new_conditional:Nnn
{ \__prg_generate_conditional_count:NNNnn \cs_new:Npn e }
-\cs_set_protected:Npn \prg_set_protected_conditional:Nnn
+\cs_gset_protected:Npn \prg_set_protected_conditional:Nnn
{ \__prg_generate_conditional_count:NNNnn \cs_set_protected:Npn p }
-\cs_set_protected:Npn \prg_gset_protected_conditional:Nnn
+\cs_gset_protected:Npn \prg_gset_protected_conditional:Nnn
{ \__prg_generate_conditional_count:NNNnn \cs_gset_protected:Npn p }
-\cs_set_protected:Npn \prg_new_protected_conditional:Nnn
+\cs_gset_protected:Npn \prg_new_protected_conditional:Nnn
{ \__prg_generate_conditional_count:NNNnn \cs_new_protected:Npn p }
-\cs_set_protected:Npn \__prg_generate_conditional_count:NNNnn #1#2#3
+\cs_gset_protected:Npn \__prg_generate_conditional_count:NNNnn #1#2#3
{
\use:e
{
@@ -1691,7 +1691,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
#1 #2
}
-\cs_set_protected:Npn \__prg_generate_conditional_count:nnNNNnn #1#2#3#4#5
+\cs_gset_protected:Npn \__prg_generate_conditional_count:nnNNNnn #1#2#3#4#5
{
\__kernel_cs_parm_from_arg_count:nnF
{ \__prg_generate_conditional:nnNNNnnn {#1} {#2} #3 #4 #5 }
@@ -1703,7 +1703,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\use_none:nn
}
}
-\cs_set_protected:Npn \__prg_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8
+\cs_gset_protected:Npn \__prg_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8
{
\if_meaning:w \c_false_bool #3
\msg_error:nne { kernel } { missing-colon }
@@ -1724,12 +1724,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_not:n { , \q__prg_recursion_tail , \q__prg_recursion_stop }
}
}
-\cs_set:Npn \__prg_generate_conditional_test:w
+\cs_gset:Npn \__prg_generate_conditional_test:w
#1 \prg_return_true: \else: \prg_return_false: \fi: \s__prg_mark #2
{ #2 {#1} }
-\cs_set:Npn \__prg_generate_conditional_fast:nw #1#2 \exp_not:n #3
+\cs_gset:Npn \__prg_generate_conditional_fast:nw #1#2 \exp_not:n #3
{ \exp_not:n { {#1} \use_i:nn } }
-\cs_set_protected:Npn \__prg_generate_conditional:NNnnnnNw #1#2#3#4#5#6#7#8 ,
+\cs_gset_protected:Npn \__prg_generate_conditional:NNnnnnNw #1#2#3#4#5#6#7#8 ,
{
\if_meaning:w \q__prg_recursion_tail #8
\exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w
@@ -1746,7 +1746,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1 #2 {#3} {#4} {#5} {#6} #7
\__prg_generate_conditional:NNnnnnNw #1 #2 {#3} {#4} {#5} {#6} #7
}
-\cs_set_protected:Npn \__prg_generate_p_form:wNNnnnnN
+\cs_gset_protected:Npn \__prg_generate_p_form:wNNnnnnN
#1 \s__prg_stop #2#3#4#5#6#7#8
{
\if_meaning:w e #3
@@ -1765,7 +1765,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \token_to_str:c { #4 _p: #5 } }
}
}
-\cs_set_protected:Npn \__prg_generate_T_form:wNNnnnnN
+\cs_gset_protected:Npn \__prg_generate_T_form:wNNnnnnN
#1 \s__prg_stop #2#3#4#5#6#7#8
{
#8
@@ -1773,7 +1773,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ { #7 \exp_end: \use:n \use_none:n } }
{ #7 \__prg_T_true:w \fi: \use_none:n }
}
-\cs_set_protected:Npn \__prg_generate_F_form:wNNnnnnN
+\cs_gset_protected:Npn \__prg_generate_F_form:wNNnnnnN
#1 \s__prg_stop #2#3#4#5#6#7#8
{
#8
@@ -1781,7 +1781,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ { #7 \exp_end: { } } }
{ #7 \__prg_F_true:w \fi: \use:n }
}
-\cs_set_protected:Npn \__prg_generate_TF_form:wNNnnnnN
+\cs_gset_protected:Npn \__prg_generate_TF_form:wNNnnnnN
#1 \s__prg_stop #2#3#4#5#6#7#8
{
#8
@@ -1789,17 +1789,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ { #7 \exp_end: } }
{ #7 \__prg_TF_true:w \fi: \use_ii:nn }
}
-\cs_set:Npn \__prg_p_true:w \fi: \c_false_bool { \fi: \c_true_bool }
-\cs_set:Npn \__prg_T_true:w \fi: \use_none:n { \fi: \use:n }
-\cs_set:Npn \__prg_F_true:w \fi: \use:n { \fi: \use_none:n }
-\cs_set:Npn \__prg_TF_true:w \fi: \use_ii:nn { \fi: \use_i:nn }
-\cs_set_protected:Npn \prg_set_eq_conditional:NNn
+\cs_gset:Npn \__prg_p_true:w \fi: \c_false_bool { \fi: \c_true_bool }
+\cs_gset:Npn \__prg_T_true:w \fi: \use_none:n { \fi: \use:n }
+\cs_gset:Npn \__prg_F_true:w \fi: \use:n { \fi: \use_none:n }
+\cs_gset:Npn \__prg_TF_true:w \fi: \use_ii:nn { \fi: \use_i:nn }
+\cs_gset_protected:Npn \prg_set_eq_conditional:NNn
{ \__prg_set_eq_conditional:NNNn \cs_set_eq:cc }
-\cs_set_protected:Npn \prg_gset_eq_conditional:NNn
+\cs_gset_protected:Npn \prg_gset_eq_conditional:NNn
{ \__prg_set_eq_conditional:NNNn \cs_gset_eq:cc }
-\cs_set_protected:Npn \prg_new_eq_conditional:NNn
+\cs_gset_protected:Npn \prg_new_eq_conditional:NNn
{ \__prg_set_eq_conditional:NNNn \cs_new_eq:cc }
-\cs_set_protected:Npn \__prg_set_eq_conditional:NNNn #1#2#3#4
+\cs_gset_protected:Npn \__prg_set_eq_conditional:NNNn #1#2#3#4
{
\use:e
{
@@ -1811,7 +1811,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_not:n { , \q__prg_recursion_tail , \q__prg_recursion_stop }
}
}
-\cs_set_protected:Npn \__prg_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6
+\cs_gset_protected:Npn \__prg_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6
{
\if_meaning:w \c_false_bool #3
\msg_error:nne { kernel } { missing-colon }
@@ -1825,7 +1825,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__prg_set_eq_conditional_loop:nnnnNw {#1} {#2} {#4} {#5}
}
-\cs_set_protected:Npn \__prg_set_eq_conditional_loop:nnnnNw #1#2#3#4#5#6 ,
+\cs_gset_protected:Npn \__prg_set_eq_conditional_loop:nnnnNw #1#2#3#4#5#6 ,
{
\if_meaning:w \q__prg_recursion_tail #6
\exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w
@@ -1842,42 +1842,42 @@ Type H <return> for immediate help}\def~{\errmessage{%
#5 {#1} {#2} {#3} {#4}
\__prg_set_eq_conditional_loop:nnnnNw {#1} {#2} {#3} {#4} #5
}
-\cs_set:Npn \__prg_set_eq_conditional_p_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6
+\cs_gset:Npn \__prg_set_eq_conditional_p_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6
{ #2 { #3 _p : #4 } { #5 _p : #6 } }
-\cs_set:Npn \__prg_set_eq_conditional_TF_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6
+\cs_gset:Npn \__prg_set_eq_conditional_TF_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6
{ #2 { #3 : #4 TF } { #5 : #6 TF } }
-\cs_set:Npn \__prg_set_eq_conditional_T_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6
+\cs_gset:Npn \__prg_set_eq_conditional_T_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6
{ #2 { #3 : #4 T } { #5 : #6 T } }
-\cs_set:Npn \__prg_set_eq_conditional_F_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6
+\cs_gset:Npn \__prg_set_eq_conditional_F_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6
{ #2 { #3 : #4 F } { #5 : #6 F } }
-\tex_chardef:D \c_true_bool = 1 ~
-\tex_chardef:D \c_false_bool = 0 ~
-\cs_set:Npn \cs_to_str:N
+\tex_global:D \tex_chardef:D \c_true_bool = 1 ~
+\tex_global:D \tex_chardef:D \c_false_bool = 0 ~
+\cs_gset:Npn \cs_to_str:N
{
\tex_romannumeral:D
\if:w \token_to_str:N \ \__cs_to_str:w \fi:
\exp_after:wN \__cs_to_str:N \token_to_str:N
}
-\cs_set:Npn \__cs_to_str:N #1 { \c_zero_int }
-\cs_set:Npn \__cs_to_str:w #1 \__cs_to_str:N
+\cs_gset:Npn \__cs_to_str:N #1 { \c_zero_int }
+\cs_gset:Npn \__cs_to_str:w #1 \__cs_to_str:N
{ - \int_value:w \fi: \exp_after:wN \c_zero_int }
-\cs_set_protected:Npn \__cs_tmp:w #1
+\cs_gset_protected:Npn \__cs_tmp:w #1
{
- \cs_set:Npn \cs_split_function:N ##1
+ \cs_gset:Npn \cs_split_function:N ##1
{
\exp_after:wN \exp_after:wN \exp_after:wN
\__cs_split_function_auxi:w
\cs_to_str:N ##1 \s__cs_mark \c_true_bool
#1 \s__cs_mark \c_false_bool \s__cs_stop
}
- \cs_set:Npn \__cs_split_function_auxi:w
+ \cs_gset:Npn \__cs_split_function_auxi:w
##1 #1 ##2 \s__cs_mark ##3##4 \s__cs_stop
{ \__cs_split_function_auxii:w ##1 \s__cs_mark \s__cs_stop {##2} ##3 }
- \cs_set:Npn \__cs_split_function_auxii:w ##1 \s__cs_mark ##2 \s__cs_stop
+ \cs_gset:Npn \__cs_split_function_auxii:w ##1 \s__cs_mark ##2 \s__cs_stop
{ {##1} }
}
\exp_after:wN \__cs_tmp:w \token_to_str:N :
-\prg_set_conditional:Npnn \cs_if_exist:N #1 { p , T , F , TF }
+\prg_gset_conditional:Npnn \cs_if_exist:N #1 { p , T , F , TF }
{
\if_meaning:w #1 \scan_stop:
\use_i:nnnn
@@ -1891,7 +1891,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_if_exist:NTF \tex_lastnamedcs:D
{
- \prg_set_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF }
+ \prg_gset_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF }
{
\if_cs_exist:w #1 \cs_end:
\__cs_if_exist_c_aux:
@@ -1900,11 +1900,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_return_false:
\fi:
}
- \cs_set:Npn \__cs_if_exist_c_aux:
+ \cs_gset:Npn \__cs_if_exist_c_aux:
{ \fi: \exp_after:wN \if_meaning:w \tex_lastnamedcs:D \scan_stop: \else: }
}
{
- \prg_set_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF }
+ \prg_gset_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF }
{
\if_cs_exist:w #1 \cs_end:
\__cs_if_exist_c_aux:w
@@ -1916,10 +1916,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_return_false:
\fi:
}
- \cs_set:Npn \__cs_if_exist_c_aux:w \fi: \use_none:n #1 \if_false:
+ \cs_gset:Npn \__cs_if_exist_c_aux:w \fi: \use_none:n #1 \if_false:
{ \fi: \exp_after:wN \if_meaning:w \cs:w #1 \cs_end: \scan_stop: \else: }
}
-\prg_set_conditional:Npnn \cs_if_free:N #1 { p , T , F , TF }
+\prg_gset_conditional:Npnn \cs_if_free:N #1 { p , T , F , TF }
{
\if_cs_exist:N #1
\else:
@@ -1933,7 +1933,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_if_exist:NTF \tex_lastnamedcs:D
{
- \prg_set_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF }
+ \prg_gset_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF }
{
\if_cs_exist:w #1 \cs_end:
\__cs_if_free_c_aux:w
@@ -1944,11 +1944,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_return_false:
\fi:
}
- \cs_set:Npn \__cs_if_free_c_aux:w \fi: \if_true:
+ \cs_gset:Npn \__cs_if_free_c_aux:w \fi: \if_true:
{ \fi: \exp_after:wN \if_meaning:w \tex_lastnamedcs:D \scan_stop: }
}
{
- \prg_set_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF }
+ \prg_gset_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF }
{
\if_cs_exist:w #1 \cs_end:
\__cs_if_free_c_aux:w
@@ -1960,54 +1960,54 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_return_false:
\fi:
}
- \cs_set:Npn \__cs_if_free_c_aux:w \fi: \use_none:n #1 \if_true:
+ \cs_gset:Npn \__cs_if_free_c_aux:w \fi: \use_none:n #1 \if_true:
{ \fi: \exp_after:wN \if_meaning:w \cs:w #1 \cs_end: \scan_stop: }
}
-\cs_set:Npn \cs_if_exist_use:NTF #1#2
+\cs_gset:Npn \cs_if_exist_use:NTF #1#2
{ \cs_if_exist:NTF #1 { #1 #2 } }
-\cs_set:Npn \cs_if_exist_use:NF #1
+\cs_gset:Npn \cs_if_exist_use:NF #1
{ \cs_if_exist:NTF #1 #1 }
-\cs_set:Npn \cs_if_exist_use:NT #1 #2
+\cs_gset:Npn \cs_if_exist_use:NT #1 #2
{ \cs_if_exist:NT #1 { #1 #2 } }
-\cs_set:Npn \cs_if_exist_use:N #1
+\cs_gset:Npn \cs_if_exist_use:N #1
{ \cs_if_exist:NT #1 #1 }
\cs_if_exist:NTF \tex_lastnamedcs:D
{
- \cs_set:Npn \cs_if_exist_use:cTF #1
+ \cs_gset:Npn \cs_if_exist_use:cTF #1
{
\if_cs_exist:w #1 \cs_end:
\__cs_if_exist_use_aux:w
\fi:
\use_ii:nn
}
- \cs_set:Npn \__cs_if_exist_use_aux:w \fi: \use_ii:nn
+ \cs_gset:Npn \__cs_if_exist_use_aux:w \fi: \use_ii:nn
{ \fi: \exp_after:wN \__cs_if_exist_use_aux:Nnn \tex_lastnamedcs:D }
}
{
- \cs_set:Npn \cs_if_exist_use:cTF #1
+ \cs_gset:Npn \cs_if_exist_use:cTF #1
{
\if_cs_exist:w #1 \cs_end:
\__cs_if_exist_use_aux:w
\fi:
\use_iii:nnn {#1}
}
- \cs_set:Npn \__cs_if_exist_use_aux:w \fi: \use_iii:nnn #1
+ \cs_gset:Npn \__cs_if_exist_use_aux:w \fi: \use_iii:nnn #1
{ \fi: \exp_after:wN \__cs_if_exist_use_aux:Nnn \cs:w #1 \cs_end: }
}
-\cs_set:Npn \__cs_if_exist_use_aux:Nnn #1#2
+\cs_gset:Npn \__cs_if_exist_use_aux:Nnn #1#2
{
\if_meaning:w #1 \scan_stop:
\exp_after:wN \use_iii:nnn
\fi:
\use_i:nn { #1 #2 }
}
-\cs_set:Npn \cs_if_exist_use:cF #1
+\cs_gset:Npn \cs_if_exist_use:cF #1
{ \cs_if_exist_use:cTF {#1} {} }
-\cs_set:Npn \cs_if_exist_use:cT #1#2
+\cs_gset:Npn \cs_if_exist_use:cT #1#2
{ \cs_if_exist_use:cTF {#1} {#2} {} }
-\cs_set:Npn \cs_if_exist_use:c #1
+\cs_gset:Npn \cs_if_exist_use:c #1
{ \cs_if_exist_use:cTF {#1} {} {} }
-\cs_set_protected:Npn \msg_error:nnee #1#2#3#4
+\cs_gset_protected:Npn \msg_error:nnee #1#2#3#4
{
\tex_newlinechar:D = `\^^J \scan_stop:
\tex_errmessage:D
@@ -2020,17 +2020,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\tex_end:D
}
-\cs_set_protected:Npn \msg_error:nne #1#2#3
+\cs_gset_protected:Npn \msg_error:nne #1#2#3
{ \msg_error:nnee {#1} {#2} {#3} { } }
-\cs_set_protected:Npn \msg_error:nn #1#2
+\cs_gset_protected:Npn \msg_error:nn #1#2
{ \msg_error:nnee {#1} {#2} { } { } }
-\cs_set:Npn \msg_line_context:
+\cs_gset:Npn \msg_line_context:
{ on~line~ \tex_the:D \tex_inputlineno:D }
-\cs_set_protected:Npn \iow_log:e
+\cs_gset_protected:Npn \iow_log:e
{ \tex_immediate:D \tex_write:D -1 }
-\cs_set_protected:Npn \iow_term:e
+\cs_gset_protected:Npn \iow_term:e
{ \tex_immediate:D \tex_write:D 16 }
-\cs_set_protected:Npn \__kernel_chk_if_free_cs:N #1
+\cs_gset_protected:Npn \__kernel_chk_if_free_cs:N #1
{
\cs_if_free:NF #1
{
@@ -2038,11 +2038,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \token_to_str:N #1 } { \token_to_meaning:N #1 }
}
}
-\cs_set_protected:Npn \__kernel_chk_if_free_cs:c
+\cs_gset_protected:Npn \__kernel_chk_if_free_cs:c
{ \exp_args:Nc \__kernel_chk_if_free_cs:N }
\cs_set:Npn \__cs_tmp:w #1#2
{
- \cs_set_protected:Npn #1 ##1
+ \cs_gset_protected:Npn #1 ##1
{
\__kernel_chk_if_free_cs:N ##1
#2 ##1
@@ -2124,7 +2124,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\exp_args:Nc \cs_undefine:N {#1}
}
-\cs_set_protected:Npn \__kernel_cs_parm_from_arg_count:nnF #1#2
+\cs_new_protected:Npn \__kernel_cs_parm_from_arg_count:nnF #1#2
{
\exp_args:Ne \__cs_parm_from_arg_count_test:nnF
{
@@ -2145,7 +2145,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{#1}
}
-\cs_set_protected:Npn \__cs_parm_from_arg_count_test:nnF #1#2
+\cs_new_protected:Npn \__cs_parm_from_arg_count_test:nnF #1#2
{
\if_meaning:w \c_false_bool #1
\exp_after:wN \use_ii:nn
@@ -3375,23 +3375,37 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__quark_new_test_define_tl:nNnNNn {##1##2} #2 {##2} }
\cs_new_protected:Npn \__quark_new_test_define_break_ifx:nNNNNn #1 #2 #3
{ \__quark_new_test_define_ifx:nNnNNn {##1##2} #2 {##2} }
-\cs_new_protected:Npn \__quark_new_conditional_n:Nnnn
- { \__quark_new_conditional_aux_do:NNnnn \use_i:nn }
-\cs_new_protected:Npn \__quark_new_conditional_N:Nnnn
- { \__quark_new_conditional_aux_do:NNnnn \use_ii:nn }
-\cs_new_protected:Npn \__quark_new_conditional_aux_do:NNnnn #1 #2 #3 #4
+\cs_new_protected:Npn \__quark_new_conditional_n:Nnnn #1 #2 #3
{
- \exp_args:Ncc \__quark_new_conditional_define:NNNNn
- { __ #4 _if_quark_ #3 :w } { q__ #4 _ #3 } #2 #1
+ \exp_args:Ncc \__quark_new_conditional_n_aux:NNNn
+ { __ #3 _if_quark_ #2 :w } { q__ #3 _ #2 } #1
}
-\cs_new_protected:Npn \__quark_new_conditional_define:NNNNn #1 #2 #3 #4 #5
+\cs_new_protected:Npn \__quark_new_conditional_N:Nnnn #1 #2 #3
{
- #4 { \cs_gset:Npn #1 ##1 #2 ##2 ? ##3 ?! { ##1 ##2 } } { }
- \exp_args:Nno \use:n { \prg_new_conditional:Npnn #3 ##1 {#5} }
+ \exp_args:NNc \__quark_new_conditional_N_aux:NNNn
+ \prg_do_nothing: { q__ #3 _ #2 } #1
+ }
+\cs_new_protected:Npn \__quark_new_conditional_n_aux:NNNn #1 #2 #3 #4
+ {
+ \cs_gset:Npn #1 ##1 #2 ##2 ? ##3 ?! { ##1##2 }
+ \prg_new_conditional:Npnn #3 ##1 {#4}
+ {
+ \__quark_if_empty_if:o { #1 {} ##1 {} ?! #2 ??! }
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+ }
+\cs_new_protected:Npn \__quark_new_conditional_N_aux:NNNn #1 #2 #3 #4
+ {
+ \prg_new_conditional:Npnn #3 ##1 {#4}
{
- #4 { \__quark_if_empty_if:o { #1 {} ##1 {} ?! #2 ??! } }
- { \if_meaning:w #2 ##1 }
- \prg_return_true: \else: \prg_return_false: \fi:
+ \if_meaning:w #2 ##1
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
}
}
\cs_set:Npn \__quark_tmp:w #1#2
@@ -6305,7 +6319,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \__int_abs:N #1
{ \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: }
-\cs_set:Npn \int_max:nn #1#2
+\cs_new:Npn \int_max:nn #1#2
{
\int_value:w \exp_after:wN \__int_maxmin:wwN
\int_value:w \__int_eval:w #1 \exp_after:wN ;
@@ -6313,7 +6327,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
>
\exp_stop_f:
}
-\cs_set:Npn \int_min:nn #1#2
+\cs_new:Npn \int_min:nn #1#2
{
\int_value:w \exp_after:wN \__int_maxmin:wwN
\int_value:w \__int_eval:w #1 \exp_after:wN ;
@@ -6405,10 +6419,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_if_exist:NTF \tex_omathchardef:D
{ \cs_new_eq:NN \__int_constdef:Nw \tex_omathchardef:D }
{ \cs_new_eq:NN \__int_constdef:Nw \tex_chardef:D }
- \__int_constdef:Nw \c__int_max_constdef_int 1114111 ~
+ \tex_global:D \__int_constdef:Nw \c__int_max_constdef_int 1114111 ~
\else:
\cs_new_eq:NN \__int_constdef:Nw \tex_mathchardef:D
- \tex_mathchardef:D \c__int_max_constdef_int 32767 ~
+ \tex_global:D \__int_constdef:Nw \c__int_max_constdef_int 32767 ~
\fi:
\cs_new_protected:Npn \int_zero:N #1 { #1 = \c_zero_int }
\cs_new_protected:Npn \int_gzero:N #1 { \tex_global:D #1 = \c_zero_int }
@@ -7536,6 +7550,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\group_end:
\int_new:N \g__kernel_prg_map_int
%% File: l3sys.dtx
+\tl_new:N \l__sys_tmp_tl
\cs_new_protected:Npn \__sys_const:nn #1#2
{
\bool_if:nTF {#2}
@@ -7939,6 +7954,78 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__sys_const:nn { sys_if_shell_restricted }
{ \int_compare_p:nNn \c_sys_shell_escape_int = 2 }
}
+\cs_new_protected:Npn \sys_get_query:nN #1#2
+ { \sys_get_query:nnnN {#1} { } { } #2 }
+\cs_new_protected:Npn \sys_get_query:nnN #1#2#3
+ { \sys_get_query:nnnN {#1} { } {#2} #3 }
+\cs_new_protected:Npn \sys_get_query:nnnN #1#2#3#4
+ {
+ \str_clear:N #4
+ \__sys_get_query_auxi:neeN {#1} {#2} {#3} #4
+ }
+\cs_new:Npn \__sys_get_query_auxi:nnnN #1#2#3#4
+ {
+ \__sys_get_query_auxii:neeN {#1}
+ { \tl_if_blank:nF {#2} { \tl_to_str:n { ~ #2 } } }
+ {
+ \tl_if_blank:nF {#3}
+ {
+ \c_space_tl
+ \sys_if_shell_restricted:F '
+ \tl_to_str:n {#3}
+ \sys_if_shell_restricted:F '
+ }
+ }
+ #4
+ }
+\cs_generate_variant:Nn \__sys_get_query_auxi:nnnN { nee }
+\cs_new_protected:Npn \__sys_get_query_auxii:nnnN #1#2#3#4
+ {
+ \sys_if_shell:T
+ {
+ \sys_get_shell:nnN
+ { l3sys-query~#1 #2 #3 }
+ {
+ \int_step_inline:nnn { 0 } { `a - 1 }
+ { \char_set_catcode_other:n {##1} }
+ \int_step_inline:nnn { `Z + 1 } { 127 }
+ { \char_set_catcode_other:n {##1} }
+ \tex_endlinechar:D 13 \scan_stop:
+ }
+ \l__sys_tmp_tl
+ \tl_if_empty:NF \l__sys_tmp_tl
+ {
+ \exp_after:wN \__sys_get_query:Nw \exp_after:wN #4
+ \l__sys_tmp_tl \q_stop
+ }
+ }
+ }
+\cs_generate_variant:Nn \__sys_get_query_auxii:nnnN { nee }
+\group_begin:
+ \tex_lccode:D `\* = 13 \scan_stop:
+ \tex_lowercase:D
+ {
+ \group_end:
+ \cs_new_protected:Npn \__sys_get_query:Nw #1#2 * \q_stop
+ }
+ { \tl_set:Nn #1 {#2} }
+\cs_new_protected:Npn \sys_split_query:nN #1#2
+ { \sys_split_query:nnnN {#1} { } { } #2 }
+\cs_new_protected:Npn \sys_split_query:nnN #1#2#3
+ { \sys_split_query:nnnN {#1} { } {#2} #3 }
+\group_begin:
+ \tex_lccode:D `\* = 13 \scan_stop:
+ \tex_lowercase:D
+ {
+ \group_end:
+ \cs_new_protected:Npn \sys_split_query:nnnN #1#2#3#4
+ {
+ \seq_clear:N #4
+ \sys_get_query:nnnN {#1} {#2} {#3} \l__sys_tmp_tl
+ \tl_if_empty:NF \l__sys_tmp_tl
+ { \seq_set_split:NnV #4 * \l__sys_tmp_tl }
+ }
+ }
\__sys_everyjob:n
{ \cs_gset_eq:NN \g_file_curr_name_str \tex_jobname:D }
\cs_new_protected:Npn \sys_finalise:
@@ -9167,7 +9254,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
{
- \tex_chardef:D \c__token_A_int = `A ~ %
+ \tex_global:D \tex_chardef:D \c__token_A_int = `A ~ %
\use:e
{
\prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N #1
@@ -26935,7 +27022,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__regex_show_one:n
{ `-group~end \__regex_msg_repeated:nnN {#3} {#4} #5 }
}
-\cs_set:Npn \__regex_show_class:NnnnN #1#2#3#4#5
+\cs_new:Npn \__regex_show_class:NnnnN #1#2#3#4#5
{
\group_begin:
\tl_build_begin:N \l__regex_build_tl
@@ -29774,8 +29861,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
#5 #1
{
- \fp_set:Nn \l__box_scale_x_fp { ( #2 ) / \box_wd:N #1 }
- \fp_set:Nn \l__box_scale_y_fp { ( #3 ) / ( #4 ) }
+ \fp_set:Nn \l__box_scale_x_fp { ( \dim_to_fp:n {#2} ) / \box_wd:N #1 }
+ \fp_set:Nn \l__box_scale_y_fp
+ { ( \dim_to_fp:n {#3} ) / ( \dim_to_fp:n {#4} ) }
\fp_compare:nNnTF \l__box_scale_x_fp > \l__box_scale_y_fp
{ \fp_set_eq:NN \l__box_scale_x_fp \l__box_scale_y_fp }
{ \fp_set_eq:NN \l__box_scale_y_fp \l__box_scale_x_fp }
@@ -32320,7 +32408,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\cs_set_protected:Npn \__coffin_calculate_intersection:nnnnnn #1#2#3#4#5#6
+\cs_new_protected:Npn \__coffin_calculate_intersection:nnnnnn #1#2#3#4#5#6
{
\fp_compare:nNnTF {#1} = {#2}
{ \bool_set_true:N \l__coffin_error_bool }
@@ -33117,7 +33205,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\lua_now:n , \lua_now:e
}
{
- \cs_set:Npn #1 ##1
+ \cs_gset:Npn #1 ##1
{
\msg_expandable_error:nnn
{ luatex } { luatex-required } { #1 }
@@ -33126,7 +33214,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\clist_map_inline:nn
{ \lua_shipout_e:n , \lua_shipout:n, \lua_load_module:n }
{
- \cs_set_protected:Npn #1 ##1
+ \cs_gset_protected:Npn #1 ##1
{
\msg_error:nnn
{ luatex } { luatex-required } { #1 }
@@ -34083,12 +34171,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
\tl_new:N \l__text_math_mode_tl
-\tex_chardef:D \c__text_chardef_space_token = `\ %
-\tex_mathchardef:D \c__text_mathchardef_space_token = `\ %
-\tex_chardef:D \c__text_chardef_group_begin_token = `\{ % `\}
-\tex_mathchardef:D \c__text_mathchardef_group_begin_token = `\{ % `\} `\{
-\tex_chardef:D \c__text_chardef_group_end_token = `\} % `\{
-\tex_mathchardef:D \c__text_mathchardef_group_end_token = `\} %
+\tex_global:D \tex_chardef:D \c__text_chardef_space_token = `\ %
+\tex_global:D \tex_mathchardef:D \c__text_mathchardef_space_token = `\ %
+\tex_global:D \tex_chardef:D \c__text_chardef_group_begin_token = `\{ % `\}
+\tex_global:D \tex_mathchardef:D \c__text_mathchardef_group_begin_token = `\{ % `\} `\{
+\tex_global:D \tex_chardef:D \c__text_chardef_group_end_token = `\} % `\{
+\tex_global:D \tex_mathchardef:D \c__text_mathchardef_group_end_token = `\} %
\cs_new:Npn \text_expand:n #1
{
\__kernel_exp_not:w \exp_after:wN
@@ -37084,7 +37172,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\tl_if_blank:nF {#3} { Use~ \tl_trim_spaces:n {#3} ~not~ }
#2~deprecated~on~#1.
}
-\cs_gset:Npn \cs_argument_spec:N { \cs_parameter_spec:N }
+\cs_new:Npn \cs_argument_spec:N { \cs_parameter_spec:N }
\cs_new_protected:Npn \iow_shipout_x:Nn { \iow_shipout_e:Nn }
\cs_generate_variant:Nn \iow_shipout_x:Nn { Nx , c, cx }
\cs_new_protected:cpn { \c__keys_props_root_str .str_set_x:N } #1
@@ -37103,11 +37191,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__keys_variable_set:NnnN #1 { tl } { g } x }
\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_x:c } #1
{ \__keys_variable_set:cnnN {#1} { tl } { g } x }
-\cs_set_protected:Npn \keys_set_filter:nnn { \keys_set_exclude_groups:nnn }
+\cs_new_protected:Npn \keys_set_filter:nnn { \keys_set_exclude_groups:nnn }
\cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno }
-\cs_set_protected:Npn \keys_set_filter:nnnN { \keys_set_exclude_groups:nnnN }
+\cs_new_protected:Npn \keys_set_filter:nnnN { \keys_set_exclude_groups:nnnN }
\cs_generate_variant:Nn \keys_set_filter:nnnN { nnV , nnv , nno }
-\cs_set_protected:Npn \keys_set_filter:nnnnN { \keys_set_exclude_groups:nnnnN }
+\cs_new_protected:Npn \keys_set_filter:nnnnN { \keys_set_exclude_groups:nnnnN }
\cs_generate_variant:Nn \keys_set_filter:nnnnN { nnV , nnv , nno }
\__kernel_patch_deprecation:nnNNpn { 2024-02-13 } { \msg_set:nnnn }
\cs_new_protected:Npn \msg_gset:nnnn { \msg_set:nnnn }
@@ -37129,76 +37217,76 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_generate_variant:Nn \pdf_object_write:nn { nx }
\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:n }
-\cs_gset:Npn \bool_case_true:n { \bool_case:n }
+\cs_new:Npn \bool_case_true:n { \bool_case:n }
\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nT }
-\cs_gset:Npn \bool_case_true:nT { \bool_case:nT }
+\cs_new:Npn \bool_case_true:nT { \bool_case:nT }
\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nF }
-\cs_gset:Npn \bool_case_true:nF { \bool_case:nF }
+\cs_new:Npn \bool_case_true:nF { \bool_case:nF }
\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nTF }
-\cs_gset:Npn \bool_case_true:nTF { \bool_case:nTF }
+\cs_new:Npn \bool_case_true:nTF { \bool_case:nTF }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:n }
-\cs_gset:Npn \str_lower_case:n { \str_lowercase:n }
+\cs_new:Npn \str_lower_case:n { \str_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:f }
-\cs_gset:Npn \str_lower_case:f { \str_lowercase:f }
+\cs_new:Npn \str_lower_case:f { \str_lowercase:f }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_uppercase:n }
-\cs_gset:Npn \str_upper_case:n { \str_uppercase:n }
+\cs_new:Npn \str_upper_case:n { \str_uppercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_uppercase:f }
-\cs_gset:Npn \str_upper_case:f { \str_uppercase:f }
+\cs_new:Npn \str_upper_case:f { \str_uppercase:f }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:n }
-\cs_gset:Npn \str_fold_case:n { \str_casefold:n }
+\cs_new:Npn \str_fold_case:n { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:V }
-\cs_gset:Npn \str_fold_case:V { \str_casefold:V }
+\cs_new:Npn \str_fold_case:V { \str_casefold:V }
\__kernel_patch_deprecation:nnNNpn { 2020-10-17 } { \str_casefold:n }
-\cs_gset:Npn \str_foldcase:n { \str_casefold:n }
+\cs_new:Npn \str_foldcase:n { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_casefold:V }
-\cs_gset:Npn \str_foldcase:V { \str_casefold:V }
+\cs_new:Npn \str_foldcase:V { \str_casefold:V }
\__kernel_patch_deprecation:nnNNpn { 2020-08-20 } { }
-\cs_gset_protected:Npn \str_declare_eight_bit_encoding:nnn #1
+\cs_new_protected:Npn \str_declare_eight_bit_encoding:nnn #1
{ \__str_declare_eight_bit_encoding:nnnn {#1} { 1114112 } }
\__kernel_patch_deprecation:nnNNpn { 2020-06-18 } { \seq_map_indexed_inline:Nn }
-\cs_gset_protected:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn }
+\cs_new_protected:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn }
\__kernel_patch_deprecation:nnNNpn { 2020-06-18 } { \seq_map_indexed_function:NN }
-\cs_gset:Npn \seq_indexed_map_function:NN { \seq_map_indexed_function:NN }
+\cs_new:Npn \seq_indexed_map_function:NN { \seq_map_indexed_function:NN }
\__kernel_patch_deprecation:nnNNpn { 2023-05-10 } { \seq_map_pairwise_function:NNN }
-\cs_gset:Npn \seq_mapthread_function:NNN { \seq_map_pairwise_function:NNN }
+\cs_new:Npn \seq_mapthread_function:NNN { \seq_map_pairwise_function:NNN }
\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_set_map_e:NNn }
-\cs_gset_protected:Npn \seq_set_map_x:NNn { \seq_set_map_e:NNn }
+\cs_new_protected:Npn \seq_set_map_x:NNn { \seq_set_map_e:NNn }
\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_gset_map_e:NNn }
-\cs_gset_protected:Npn \seq_gset_map_x:NNn { \seq_gset_map_e:NNn }
+\cs_new_protected:Npn \seq_gset_map_x:NNn { \seq_gset_map_e:NNn }
\__kernel_patch_deprecation:nnNNpn { 2021-01-11 } { (no~longer~required) }
-\cs_gset_protected:Npn \sys_load_deprecation: { }
+\cs_new_protected:Npn \sys_load_deprecation: { }
\__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:n }
-\cs_gset:Npn \text_titlecase:n #1
+\cs_new:Npn \text_titlecase:n #1
{ \text_titlecase_first:n { \text_lowercase:n {#1} } }
\__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:nn }
-\cs_gset:Npn \text_titlecase:nn #1#2
+\cs_new:Npn \text_titlecase:nn #1#2
{ \text_titlecase_first:nn {#1} { \text_lowercase:n {#2} } }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n }
-\cs_gset:Npn \tl_lower_case:n #1
+\cs_new:Npn \tl_lower_case:n #1
{ \text_lowercase:n {#1} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:nn }
-\cs_gset:Npn \tl_lower_case:nn #1#2
+\cs_new:Npn \tl_lower_case:nn #1#2
{ \text_lowercase:nn {#1} {#2} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:n }
-\cs_gset:Npn \tl_upper_case:n #1
+\cs_new:Npn \tl_upper_case:n #1
{ \text_uppercase:n {#1} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:nn }
-\cs_gset:Npn \tl_upper_case:nn #1#2
+\cs_new:Npn \tl_upper_case:nn #1#2
{ \text_uppercase:nn {#1} {#2} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n }
-\cs_gset:Npn \tl_mixed_case:n #1
+\cs_new:Npn \tl_mixed_case:n #1
{ \text_titlecase_first:n {#1} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:nn }
-\cs_gset:Npn \tl_mixed_case:nn #1#2
+\cs_new:Npn \tl_mixed_case:nn #1#2
{ \text_titlecase_first:nn {#1} {#2} }
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:Nn }
-\cs_gset:Npn \tl_case:Nn { \token_case_meaning:Nn }
+\cs_new:Npn \tl_case:Nn { \token_case_meaning:Nn }
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnT }
-\cs_gset:Npn \tl_case:NnT { \token_case_meaning:NnT }
+\cs_new:Npn \tl_case:NnT { \token_case_meaning:NnT }
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnF }
-\cs_gset:Npn \tl_case:NnF { \token_case_meaning:NnF }
+\cs_new:Npn \tl_case:NnF { \token_case_meaning:NnF }
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnTF }
-\cs_gset:Npn \tl_case:NnTF { \token_case_meaning:NnTF }
+\cs_new:Npn \tl_case:NnTF { \token_case_meaning:NnTF }
\cs_generate_variant:Nn \tl_case:Nn { c }
\prg_generate_conditional_variant:Nnn \tl_case:Nn
{ c } { T , F , TF }
@@ -37209,45 +37297,45 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_patch_deprecation:nnNNpn { 2023-10-25 } { \tl_build_get_intermediate:NN }
\cs_new_protected:Npn \tl_build_get:NN { \tl_build_get_intermediate:NN }
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { [ \codepoint_generate:nn ] }
-\cs_gset:Npn \char_to_utfviii_bytes:n { \__kernel_codepoint_to_bytes:n }
+\cs_new:Npn \char_to_utfviii_bytes:n { \__kernel_codepoint_to_bytes:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { \codepoint_to_nfd:n }
-\cs_gset:Npn \char_to_nfd:N #1 { \codepoint_to_nfd:n {`#1} }
+\cs_new:Npn \char_to_nfd:N #1 { \codepoint_to_nfd:n {`#1} }
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { \codepoint_to_nfd:n }
-\cs_gset:Npn \char_to_nfd:n { \codepoint_to_nfd:n }
+\cs_new:Npn \char_to_nfd:n { \codepoint_to_nfd:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n }
-\cs_gset:Npn \char_lower_case:N { \text_lowercase:n }
+\cs_new:Npn \char_lower_case:N { \text_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:n }
-\cs_gset:Npn \char_upper_case:N { \text_uppercase:n }
+\cs_new:Npn \char_upper_case:N { \text_uppercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n }
-\cs_gset:Npn \char_mixed_case:N { \text_titlecase_first:n }
+\cs_new:Npn \char_mixed_case:N { \text_titlecase_first:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:n }
-\cs_gset:Npn \char_fold_case:N { \str_casefold:n }
+\cs_new:Npn \char_fold_case:N { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:n }
-\cs_gset:Npn \char_str_lower_case:N { \str_lowercase:n }
+\cs_new:Npn \char_str_lower_case:N { \str_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_uppercase:n }
-\cs_gset:Npn \char_str_upper_case:N { \str_uppercase:n }
+\cs_new:Npn \char_str_upper_case:N { \str_uppercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_titlecase:n }
-\cs_gset:Npn \char_str_mixed_case:N { \str_titlecase:n }
+\cs_new:Npn \char_str_mixed_case:N { \str_titlecase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:n }
-\cs_gset:Npn \char_str_fold_case:N { \str_casefold:n }
+\cs_new:Npn \char_str_fold_case:N { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \text_lowercase:n }
-\cs_gset:Npn \char_lowercase:N { \text_lowercase:n }
+\cs_new:Npn \char_lowercase:N { \text_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \text_uppercase:n }
-\cs_gset:Npn \char_uppercase:N { \text_uppercase:n }
+\cs_new:Npn \char_uppercase:N { \text_uppercase:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \text_titlecase_first:n }
-\cs_gset:Npn \char_titlecase:N { \text_titlecase_first:n }
+\cs_new:Npn \char_titlecase:N { \text_titlecase_first:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_casefold:n }
-\cs_gset:Npn \char_foldcase:N { \str_casefold:n }
+\cs_new:Npn \char_foldcase:N { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_lowercase:n }
-\cs_gset:Npn \char_str_lowercase:N { \str_lowercase:n }
+\cs_new:Npn \char_str_lowercase:N { \str_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 }
{ \tl_to_str:e { \text_titlecase_first:n } }
-\cs_gset:Npn \char_str_titlecase:N #1
+\cs_new:Npn \char_str_titlecase:N #1
{ \tl_to_str:e { \text_titlecase_first:n {#1} } }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_uppercase:n }
-\cs_gset:Npn \char_str_uppercase:N { \str_uppercase:n }
+\cs_new:Npn \char_str_uppercase:N { \str_uppercase:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_casefold:n }
-\cs_gset:Npn \char_str_foldcase:N { \str_casefold:n }
+\cs_new:Npn \char_str_foldcase:N { \str_casefold:n }
\tl_map_inline:nn
{
{ catcode } { catcode_remove }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index e57bdbe49e7..213c07e7254 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{2024-02-20}%
+\def\ExplFileDate{2024-03-14}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
@@ -57,6 +57,13 @@
}%
\expandafter\edef\csname ver@expl3-generic.tex\endcsname
{\ExplFileDate\space L3 programming layer}%
+\ifnum\currentgrouplevel=0 %
+\else
+ \errhelp{expl3 cannot be loaded inside a group:
+ reading the code has been aborted.}%
+ \errmessage{expl3 Error: Loading attempted inside a group!}%
+ \expandafter\endinput
+\fi
\expandafter\edef\csname l@expl@tidy@tl\endcsname
{%
\catcode64=\the\catcode64\relax
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
index a40c3a3176d..6120a015e75 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-02-20}%
+\def\ExplFileDate{2024-03-14}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index 03a22d85e19..4fcce5872d7 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{2024-02-20}%
+\def\ExplFileDate{2024-03-14}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3debug.def b/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
index 1021e5373e7..dd2820e0385 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3debug.dtx
-\ProvidesExplFile{l3debug.def}{2024-02-20}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2024-03-14}{}{L3 Debugging support}
\scan_new:N \s__debug_stop
\cs_new:Npn \__debug_use_i_delimit_by_s_stop:nw #1 #2 \s__debug_stop {#1}
\quark_new:N \q__debug_recursion_tail
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
index 5c0b0436c63..c91ab01446c 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
@@ -20,7 +20,7 @@
%%
%% File: l3doc.dtx
\RequirePackage{calc}
-\ProvidesExplClass{l3doc}{2024-02-20}{}
+\ProvidesExplClass{l3doc}{2024-03-14}{}
{L3 Experimental documentation class}
\clist_new:N \g_docinput_clist
\seq_new:N \g_doc_functions_seq
@@ -768,11 +768,9 @@
{ \hyperlink { explTF } }
{ \mbox }
{
- \color{black}
\itshape TF
\makebox[0pt][r]
{
- \cs_if_exist:NT \Codedoc@explTF { \color{red} }
\underline { \phantom{\itshape TF} \kern-0.1em }
}
}
@@ -1487,18 +1485,16 @@
\tl_set:Nn \l__codedoc_tmpa_tl {#1}
\tl_replace_all:NnV \l__codedoc_tmpa_tl
{ ~ } \c_catcode_other_space_tl
- \__codedoc_macroname_prefix:o \l__codedoc_tmpa_tl
- \__codedoc_macroname_suffix:N #2
+ \__codedoc_print_macroname_aux:on
+ \l__codedoc_tmpa_tl { \bool_if:NT #2 { \__codedoc_typeset_TF: } }
}
}
-\cs_new_protected:Npn \__codedoc_macroname_prefix:n #1
+\cs_new_protected:Npn \__codedoc_print_macroname_aux:nn #1#2
{
\__codedoc_if_macro_internal:nTF {#1}
- { \__codedoc_typeset_aux:n {#1} } {#1}
+ { \__codedoc_typeset_aux:n { #1 #2 } } { #1 #2 }
}
-\cs_generate_variant:Nn \__codedoc_macroname_prefix:n { o }
-\cs_new_protected:Npn \__codedoc_macroname_suffix:N #1
- { \bool_if:NTF #1 { \__codedoc_typeset_TF: } { } }
+\cs_generate_variant:Nn \__codedoc_print_macroname_aux:nn { o }
\providecommand \MacroLongFont
{
\fontfamily{lmtt}\fontseries{lc}\small
diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
index d5bf6774074..7a35d81618e 100644
--- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{l3keys2e}{2024-02-18}{}
+\ProvidesExplPackage{l3keys2e}{2024-03-14}{}
{LaTeX2e option processing using LaTeX3 keys}
\cs_if_exist:NT \ProcessKeysOptions
{ \file_input_stop: }
diff --git a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
index 00c7b7ee07f..995615e80e5 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{xfp}{2024-02-18}{}
+\ProvidesExplPackage{xfp}{2024-03-14}{}
{L3 Floating point unit}
\ProvideExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} }
\ProvideExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} }
diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
index 7f2fb07719c..e09776c5644 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
@@ -60,7 +60,7 @@
}
}
\ExplSyntaxOff
-\ProvidesExplPackage{xparse}{2024-02-18}{}
+\ProvidesExplPackage{xparse}{2024-03-14}{}
{L3 Experimental document command parser}
\clist_new:N \l__cmd_options_clist
\DeclareOption* { \clist_put_right:NV \l__cmd_options_clist \CurrentOption }
diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
index d3fc0172cd9..e4ce40461c7 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
@@ -25,12 +25,12 @@
\endinput
}
{%
- \ProvidesExplPackage{xtemplate}{2023-10-10}{}
+ \ProvidesExplPackage{xtemplate}{2024-03-14}{}
{L3 Experimental prototype document functions}
\long\protected\def\DeclareRestrictedTemplate#1#2#3#4{%
- \DeclareTemplateCopy{#1}{#3}{#2}%
- \EditTemplateDefaults{#1}{#3}{#4}%
- }%
+ \DeclareTemplateCopy{#1}{#3}{#2}%
+ \EditTemplateDefaults{#1}{#3}{#4}%
+ }%
}
\ExplSyntaxOn
\cs_new_protected:Npn \DeclareObjectType #1#2