texlive[75045] Master: l3 (28apr25)
commits+karl at tug.org
commits+karl at tug.org
Mon Apr 28 21:50:11 CEST 2025
Revision: 75045
https://tug.org/svn/texlive?view=revision&revision=75045
Author: karl
Date: 2025-04-28 21:50:11 +0200 (Mon, 28 Apr 2025)
Log Message:
-----------
l3 (28apr25)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex/l3backend/README.md
trunk/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdfannot.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins
trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3bitset.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3graphics.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
trunk/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
trunk/Master/tlpkg/bin/c2lx
Added Paths:
-----------
trunk/Master/texmf-dist/source/latex/l3kernel/l3benchmark.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3opacity.dtx
Removed Paths:
-------------
trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/
trunk/Master/texmf-dist/doc/latex/l3experimental/l3opacity/
trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/
trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/
trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/
trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/
Modified: trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md 2025-04-28 19:50:11 UTC (rev 75045)
@@ -6,6 +6,11 @@
## [Unreleased]
+## [2025-04-14]
+
+### Fixed
+- End-of-opacity behavior with `dvips`
+
## [2025-03-14]
### Fixed
@@ -368,7 +373,8 @@
- Include `l3backend` in file names
- Moved backend code to internal for each 'parent' module
-[Unreleased]: https://github.com/latex3/latex3/compare/2025-03-14...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2025-04-14...HEAD
+[2025-04-14]: https://github.com/latex3/latex3/compare/2025-03-14...2025-04-14
[2025-03-14]: https://github.com/latex3/latex3/compare/2025-03-10...2025-03-14
[2025-03-10]: https://github.com/latex3/latex3/compare/2024-05-08...2025-03-10
[2024-05-08]: https://github.com/latex3/latex3/compare/2024-04-11...2024-05-08
Modified: trunk/Master/texmf-dist/doc/latex/l3backend/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/README.md 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/README.md 2025-04-28 19:50:11 UTC (rev 75045)
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2025-03-14
+Release 2025-04-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
Modified: trunk/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md 2025-04-28 19:50:11 UTC (rev 75045)
@@ -7,6 +7,12 @@
## [Unreleased]
+## [2025-04-14]
+
+### Removed
+- `l3benchmark` package: integrated into `l3kernel`
+- `l3opacity` package: integrated into `l3kernel`
+
## [2025-03-26]
### Added
@@ -346,7 +352,8 @@
- 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/2025-03-26...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2025-04-14...HEAD
+[2025-04-14]: https://github.com/latex3/latex3/compare/2025-03-26...2025-04-14
[2025-03-26]: https://github.com/latex3/latex3/compare/2025-03-10...2025-03-26
[2025-03-10]: https://github.com/latex3/latex3/compare/2024-03-14...2025-03-10
[2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-20...2024-03-14
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md 2025-04-28 19:50:11 UTC (rev 75045)
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2025-03-26
+Release 2025-04-14
Overview
--------
@@ -21,18 +21,11 @@
Currently included in the CTAN release of l3experimental are the following
bundles:
-* `l3benchmark`
* `l3draw`
-* `l3opacity`
* `l3str`
* `xcoffins`
* `xgalley`
-`l3benchmark`
--------------
-
-This module provides support for benchmarking the performance of code.
-
`l3draw`
--------
@@ -40,11 +33,6 @@
interfaces are heavily inspired by the `pgf` layer of the widely-used
TikZ system.
-`l3opacity`
--------
-
-This module provides support for opacity in PDF output.
-
`l3str`
-------
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md 2025-04-28 19:50:11 UTC (rev 75045)
@@ -7,6 +7,16 @@
## [Unreleased]
+## [2025-04-14]
+
+### Added
+- Module `l3benchmark`, moved from `l3experimental` to stable status
+- Module `l3opacity`, moved from `l3experimental` to stable status
+
+### Fixed
+- Filter out `\bgroup`/`\egroup` in `\text_purify:n`
+- Inherit keys recursively (issue \#1720)
+
## [2025-03-26]
### Added
@@ -50,6 +60,9 @@
### Added
- `\int_step_tokens:nn`, `\int_step_tokens:nnn`, and `\int_step_tokens:nnnn`
+### Deprecated
+- `\sys_if_timer_exist:(TF)`
+
### Fixed
- Check conditionals are defined when creating variants (see \#1189)
@@ -1873,7 +1886,8 @@
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2025-03-26...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2025-04-14...HEAD
+[2025-04-14]: https://github.com/latex3/latex3/compare/2025-03-26...2025-04-14
[2025-03-26]: https://github.com/latex3/latex3/compare/2025-03-10...2025-03-26
[2025-03-10]: https://github.com/latex3/latex3/compare/2025-01-18...2025-03-10
[2025-01-18]: https://github.com/latex3/latex3/compare/2025-01-14...2025-01-18
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md 2025-04-28 19:50:11 UTC (rev 75045)
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2025-03-26
+Release 2025-04-14
Overview
--------
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex 2025-04-28 19:50:11 UTC (rev 75045)
@@ -58,7 +58,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2025-03-26}
+\date{Released 2025-04-14}
\pagenumbering{roman}
\maketitle
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.tex 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.tex 2025-04-28 19:50:11 UTC (rev 75045)
@@ -99,7 +99,7 @@
The code in \pkg{expl3} is now entirely self-contained, loading no other
third-party packages, and can also be loaded as a generic package with plain
-\TeX{}, \emph{etc.} These changes make it much easier to diagnose problems and
+\TeX{}, etc. These changes make it much easier to diagnose problems and
make \pkg{expl3} more useful. In particular it can be used as a programming
language for generic packages, that then can run without modifications under
different formats!
@@ -175,7 +175,7 @@
There are additional elements to consider here, for example whether lines are
the best way to model the length of shaping, how to handle headings, cut-outs
-at page breaks, \emph{etc.}
+at page breaks, etc.
\section{Globally optimized pagination of documents}
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt 2025-04-28 19:50:11 UTC (rev 75045)
@@ -85,6 +85,10 @@
\str_lower_case:n 2020-01-03
\str_upper_case:f 2020-01-03
\str_upper_case:n 2020-01-03
+\sys_if_timer_exist:F 2025-03-27
+\sys_if_timer_exist:T 2025-03-27
+\sys_if_timer_exist:TF 2025-03-27
+\sys_if_timer_exist_p: 2025-03-27
\seq_indexed_map_inline:Nn 2020-06-18
\seq_indexed_map_function:NN 2020-06-18
\seq_gset_map_x:NNn 2023-10-26
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex 2025-04-28 19:50:11 UTC (rev 75045)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2025-03-26}
+\date{Released 2025-04-14}
\begin{document}
@@ -72,7 +72,7 @@
where the number should follow directly.
\item
Where in line verbatim text is used, it should be marked up
- using the \verb=|...|= construct (\emph{i.e.}~vertical bars delimit
+ using the \verb=|...|= construct (i.e., vertical bars delimit
the verbatim text).
\item In line quotes should be marked up using the \cs{enquote}
function.
@@ -117,7 +117,7 @@
paragraph and an example is then given.
With the exception of simple runs of parameter (|{#1}|, |#1#2|,
-\emph{etc.}), everything should be divided up using spaces to make the code
+etc.), everything should be divided up using spaces to make the code
more readable. In general, these will be single spaces, but in some
places it makes more sense to align parts of the code to emphasise
similarity. (Tabs should not be used for introducing white space.)
@@ -270,7 +270,7 @@
...
}
\end{verbatim}
-The use of \texttt{aux_i}, \texttt{aux_ii}, \emph{etc.}\ is discouraged as this
+The use of \texttt{aux_i}, \texttt{aux_ii}, etc.\ is discouraged as this
conflicts with the convention used by \cs{use_i:nn} and related functions.
\section{Functions with `weird' arguments}
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex 2025-04-28 19:50:11 UTC (rev 75045)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2025-03-26}
+\date{Released 2025-04-14}
\newcommand{\TF}{\textit{(TF)}}
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex 2025-04-28 19:50:11 UTC (rev 75045)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2025-03-26}
+\date{Released 2025-04-14}
\newcommand{\TF}{\textit{(TF)}}
@@ -172,7 +172,7 @@
\begin{verbatim}
> \mypkg_inner:N=\long macro:#1->\foo #1.
\end{verbatim}
-i.e.~the hash is not doubled, but is now the parameter of this macro.
+i.e., the hash is not doubled, but is now the parameter of this macro.
Exactly the same concept applies to anywhere that inline code is nested in
\pkg{expl3}, for example inline mapping code, key definitions, etc.
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex 2025-04-28 19:50:11 UTC (rev 75045)
@@ -57,7 +57,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2025-03-26}
+\date{Released 2025-04-14}
\pagenumbering{roman}
\maketitle
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex 2025-04-28 19:50:11 UTC (rev 75045)
@@ -347,7 +347,7 @@
\pkg{expl3} expects a \enquote{variable}, e.g.~a \texttt{prop}, \texttt{seq},
etc. Therefore, the programmer should ensure that \texttt{c}-type expansion is
only applied when the resulting \texttt{N}-type token will definitely exist,
-i.e.~when it is either defined prior to the application of the \texttt{c}-type
+i.e., when it is either defined prior to the application of the \texttt{c}-type
expansion or will be by the underlying \texttt{N}-type function.
\subsection{Scratch variables}
@@ -638,8 +638,13 @@
\DocInput{l3coffins.dtx}
\DocInput{l3color.dtx}
\DocInput{l3graphics.dtx}
+\DocInput{l3opacity.dtx}
\DocInput{l3pdf.dtx}
+\part{Utilities}
+
+\DocInput{l3benchmark.dtx}
+
% implementation part only
\ExplSyntaxOn
\clist_gput_right:Nn \g_docinput_clist { l3deprecation.dtx }
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-14}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2025-03-14}{}
+ {l3backend-dvipdfmx.def}{2025-04-14}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2025-03-14}{}
+ {l3backend-dvips.def}{2025-04-14}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2025-03-14}{}
+ {l3backend-dvisvgm.def}{2025-04-14}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2025-03-14}{}
+ {l3backend-luatex.def}{2025-04-14}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2025-03-14}{}
+ {l3backend-pdftex.def}{2025-04-14}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2025-03-14}{}
+ {l3backend-xetex.def}{2025-04-14}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-14}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-14}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-14}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-14}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -838,7 +838,7 @@
% \begin{macro}{\@@_backend_include_dequote:w}
% The backend here has built-in support for basic graphic inclusion (see
% \texttt{dvisvgm.def} for a more complex approach, needed if clipping,
-% \emph{etc.}, is covered at the graphic backend level). We have to deal
+% etc., is covered at the graphic backend level). We have to deal
% with the fact that the image reference point is at the \emph{top}, so
% there is a need for a vertical shift to put it in the right place.
% The other issue is that |#1| must be quote-corrected. The
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-14}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-14}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -74,6 +74,7 @@
% \begin{macro}{\@@_backend_select:n}
% \begin{macro}{\@@_backend_fill:n, \@@_backend_stroke:n}
% \begin{macro}{\@@_backend:nnn}
+% \begin{macro}{\@@_backend_reset_fill:, \@@_backend_reset_stroke:}
% 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
@@ -85,6 +86,8 @@
{
\@@_backend:nnn {#1} { fill } { ca }
\@@_backend:nnn {#1} { stroke } { CA }
+ \group_insert_after:N \@@_backend_reset_fill:
+ \group_insert_after:N \@@_backend_reset_stroke:
}
\cs_new_protected:Npn \@@_backend_fill:n #1
{
@@ -92,6 +95,7 @@
{ #1 }
{ fill }
{ ca }
+ \group_insert_after:N \@@_backend_reset_fill:
}
\cs_new_protected:Npn \@@_backend_stroke:n #1
{
@@ -99,6 +103,7 @@
{ #1 }
{ stroke }
{ CA }
+ \group_insert_after:N \@@_backend_reset_stroke:
}
\cs_new_protected:Npn \@@_backend:nnn #1#2#3
{
@@ -119,10 +124,25 @@
ifelse
}
}
+\cs_new_protected:Npn \@@_backend_reset_fill:
+ {
+ \@@_backend:nnn
+ { 1 }
+ { fill }
+ { ca }
+ }
+\cs_new_protected:Npn \@@_backend_reset_stroke:
+ {
+ \@@_backend:nnn
+ { 1 }
+ { stroke }
+ { CA }
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macrocode}
%</dvips>
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-14}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdfannot.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdfannot.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdfannot.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-14}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -226,7 +226,7 @@
% \begin{macro}[EXP]{\@@_point_unit_vector:nn}
% \begin{macro}[EXP]{\@@_point_unit_vector:nnn, \@@_point_unit_vector:enn}
% The outcome is the normalised vector from $(0,0)$ in the direction of
-% the point, \emph{i.e.}
+% the point, i.e.
% \[
% P_{x} = \frac{x}{\sqrt{x^{2} + y^{2}}} \quad
% P_{y} = \frac{y}{\sqrt{x^{2} + y^{2}}}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -419,7 +419,7 @@
% Functions supporting the calculation of points (coordinates) are expandable
% and may be used outside of the drawing environment. The outputs of all of the
% point functions are tuples. This output form is then suitable as \emph{input}
-% for subsequent point calculations, \emph{i.e.}~where a \meta{point} is required
+% for subsequent point calculations, i.e., where a \meta{point} is required
% it may be given as a tuple. This \emph{may} include units and surrounding
% parentheses, for example
% \begin{verbatim}
@@ -605,7 +605,7 @@
% 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
% should start. The first \meta{length} applies to the part of the path
-% \enquote{leading in} to the corner (\emph{i.e.}~from the previous path
+% \enquote{leading in} to the corner (i.e., from the previous path
% operation), and the second to that \enquote{leading out}. If both
% values are \texttt{0pt} then corners will not be rounded. The values
% apply within the scope of the current \TeX{} group.
@@ -690,7 +690,7 @@
% \subsubsection{Path operations on drawing axes}
%
% The standard path functions are all influenced by the active transformation
-% matrix, \emph{i.e.}~the work relative to the drawing axes rather than
+% matrix, i.e., the work relative to the drawing axes rather than
% the canvas.
%
% \begin{function}{\draw_path_moveto:n}
@@ -741,7 +741,7 @@
% Joins the current path to the \meta{end} with a curved line defined by
% cubic Bézier points \meta{control1} and \meta{control2}. The bounding box
% of the path (and image) will fully-contain the curve and control points,
-% \emph{i.e.}~it may be bigger than strictly necessary to contain the curve
+% i.e., it may be bigger than strictly necessary to contain the curve
% \emph{alone}.
% \begin{demo}
% \draw_begin:
@@ -763,7 +763,7 @@
% Joins the current path to the \meta{end} with a curved line defined by
% quadratic Bézier point \meta{control}. The bounding box
% of the path (and image) will fully-contain the curve and computed (cubic)
-% control points, \emph{i.e.}~it may be bigger than strictly necessary to
+% control points, i.e., it may be bigger than strictly necessary to
% contain the curve \emph{alone}.
% \begin{demo}
% \draw_begin:
@@ -953,7 +953,7 @@
% \subsubsection{Path operations on canvas axes}
%
% For \emph{specialist} work, a small number of functions are provided
-% which work relative to the canvas axes, \emph{i.e.}~these functions
+% which work relative to the canvas axes, i.e., these functions
% ignore the transformation matrix.
%
% \begin{function}{\draw_path_canvas_moveto:n}
@@ -1064,7 +1064,6 @@
% \end{demo}
% If the \meta{point} is given, the pole intersection of the coffine is
% placed there: otherwise it is positioned at the origin of the drawing.
-
% \end{function}
%
% \subsection{Transformations}
@@ -1227,7 +1226,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2025-03-26}{}
+\ProvidesExplPackage{l3draw}{2025-04-14}{}
{L3 Experimental core drawing support}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -166,7 +166,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2025-03-26}{}
+\ProvidesExplPackage{l3str-format}{2025-04-14}{}
{L3 Experimental string formatting}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -83,7 +83,7 @@
% vertical mode (right). Notice that the later case results in a greater
% number of handles being available. As illustrated, each handle
% results from the intersection of two poles. For example, the centre
-% of the coffin is marked |(hc,vc)|, \emph{i.e.}~it is the
+% of the coffin is marked |(hc,vc)|, i.e., it is the
% point of intersection of the horizontal centre pole with the
% vertical centre pole. New handles are generated automatically when
% poles are added to a coffin: handles are \enquote{dynamic} entities.
@@ -156,7 +156,7 @@
% box of the coffin;
% \item[hc] a pole running vertically through the centre of the coffin
% half-way between the left- and right-hand edges of the bounding
-% box (\emph{i.e.}~the \enquote{horizontal centre});
+% box (i.e., the \enquote{horizontal centre});
% \item[r] a pole running along the right-hand edge of the bounding
% box of the coffin;
% \item[b] a pole running along the bottom edge of the bounding
@@ -163,7 +163,7 @@
% box of the coffin;
% \item[vc] a pole running horizontally through the centre of the
% coffin half-way between the bottom and top edges of the bounding
-% box (\emph{i.e.}~the \enquote{vertical centre});
+% box (i.e., the \enquote{vertical centre});
% \item[t] a pole running along the top edge of the bounding
% box of the coffin;
% \item[H] a pole running along the baseline of the typeset material
@@ -370,7 +370,7 @@
% process will expand. The new bounding box will be the smallest
% rectangle covering the bounding boxes of the two input coffins.
% When the starred variant of \cs{JoinCoffins} is used, the bounding
-% box of \meta{coffin1} is not altered, \emph{i.e.}~\meta{coffin2} may
+% box of \meta{coffin1} is not altered, i.e., \meta{coffin2} may
% protrude outside of the bounding box of the updated \meta{coffin1}.
% The difference between the two forms of alignment is best illustrated
% using a visual example. In Figure~\ref{fgr:alignment}, the two
@@ -411,7 +411,7 @@
% \meta{coffin1-pole2}, and \meta{handle2}, the point of intersection
% of \meta{coffin2-pole1} and \meta{coffin2-pole2}. If the two
% \meta{poles} are not specified, \cs{JoinCoffins} will use the
-% default value |(H,l)|, \emph{i.e.}~the reference point used by \TeX\
+% default value |(H,l)|, i.e., the reference point used by \TeX\
% for the underlying box. Once the two \meta{handles} have been
% located, \meta{coffin2} is then attached to \meta{coffin1} such that
% the relationship between \meta{handle1} and \meta{handle2} is
@@ -461,10 +461,10 @@
% \texttt{l}, \texttt{r}, \texttt{hc}, \emph{etc}.
% \item Poles derived from \meta{coffin1}, such as
% \texttt{\meta{coffin1}-l}, \texttt{\meta{coffin1}-r},
-% \texttt{\meta{coffin1}-hc}, \emph{etc.}
+% \texttt{\meta{coffin1}-hc}, etc.
% \item Poles derived from \meta{coffin2}, such as
% \texttt{\meta{coffin2}-l}, \texttt{\meta{coffin2}-r},
-% \texttt{\meta{coffin2}-hc}, \emph{etc.}
+% \texttt{\meta{coffin2}-hc}, etc.
% \end{enumerate}
%
% Applying this ability allows a series of joining operations to
@@ -672,7 +672,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2025-03-26}{}
+\ProvidesExplPackage{xcoffins}{2025-04-14}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
@@ -886,7 +886,7 @@
% \begin{macro}{\CoffinDepth, \CoffinHeight, \CoffinTotalHeigth, \CoffinWidth}
% Nothing too complex, except that the total height is set up as an
% expression so that it will act correctly if prefixed with a negative
-% sign, \emph{etc.}
+% sign, etc.
% \begin{macrocode}
\NewDocumentCommand \CoffinDepth { m }
{ \dim_eval:n { \coffin_dp:N #1 } }
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -481,14 +481,14 @@
% comma-separated list of penalty values. The list applies as follows:
% \begin{itemize}
% \item[\texttt{club}] Penalties for breaking after the first, second,
-% third, \emph{etc.}~line of the paragraph.
+% third, etc.~line of the paragraph.
% \item[\texttt{display_club}] Penalties for breaking after the first,
-% second, third, \emph{etc.}~line after a display math environment.
+% second, third, etc.~line after a display math environment.
% \item[\texttt{display_club}] Penalties for breaking before the last,
-% penultimate, antepenultimate, \emph{etc.}~line before a display
+% penultimate, antepenultimate, etc.~line before a display
% math environment.
% \item[\texttt{widow}] Penalties for breaking before the last,
-% penultimate, antepenultimate, \emph{etc.}~line of the paragraph.
+% penultimate, antepenultimate, etc.~line of the paragraph.
% \end{itemize}
% In all cases, these penalties apply in addition to the general interline
% penalty or to any \enquote{special} line penalties.
@@ -512,7 +512,7 @@
% \end{syntax}
% Sets \enquote{special} interline penalties to be used in place of
% the standard value, specified as a comma-separated \meta{penalty list}.
-% The \meta{penalties} apply to the first, second, third, \emph{etc.}~line
+% The \meta{penalties} apply to the first, second, third, etc.~line
% of the paragraph.
% \end{function}
%
@@ -686,7 +686,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2025-03-26}{}
+\ProvidesExplPackage{l3galley}{2025-04-14}{}
{L3 Experimental galley code}
% \end{macrocode}
%
@@ -1451,7 +1451,7 @@
% \begin{variable}{\g_@@_last_box}
% A temporary box to hold the box inserted by \TeX{} when a paragraph
% is inserted with an indent. The galley actually inserts the space
-% (\emph{i.e.}~\cs{tex_parindent:D} is globally zero), but there is
+% (i.e., \cs{tex_parindent:D} is globally zero), but there is
% still an empty box to test for.
% \begin{macrocode}
\box_new:N \g_@@_last_box
@@ -2051,7 +2051,7 @@
% \cs{tex_spacefactor:D} needs to be set, while \cs{tex_xspacefactor:D}
% is left alone. However, this is only necessary for fonts which have
% a stretch component to the inter-word spacing in the first place,
-% \emph{i.e.}~monospaced fonts require no changes. The code therefore
+% i.e., monospaced fonts require no changes. The code therefore
% checks whether there is any stretch, and if there is uses the fixed
% component to set \cs{tex_spaceskip:D}. If there is a stretch component
% (non-zero \cs{tex_fontdimen:D} \texttt{3}), then the \cs{teX_spaceskip:D}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -149,7 +149,7 @@
% This template sets up the typesetting area such that typeset material
% runs from |left-margin| away from the left edge of the galley to
% |right-margin| away from the right edge of the galley. Both of these
-% distances are absolute, \emph{i.e.}~no account is taken of previous
+% distances are absolute, i.e., no account is taken of previous
% |measure| settings. Either on or both values may be negative, in which
% case the typeset material will protrude outside of the edges of the
% galley.
@@ -551,7 +551,7 @@
% This object type determines how \TeX{} determines the behaviour when
% the paragraph-breaking algorithm is calculating whether to break up a
% paragraph. Thus for example an instance of this object type may prevent
-% breaks within a paragraph, forbid widows or orphans, \emph{etc.}
+% breaks within a paragraph, forbid widows or orphans, etc.
% \end{TemplateInterfaceDescription}
%
% \begin{TemplateDescription}{paragraph-breaking}{std}
@@ -731,7 +731,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2025-03-26}{}
+\ProvidesExplPackage{xgalley}{2025-04-14}{}
{L3 Experimental galley}
\RequirePackage{xtemplate,l3galley}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -22,9 +22,7 @@
%
% for those people who are interested.
%
-%<*driver|generic|package|2ekernel>
-%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2025-03-26}%
+\def\ExplFileDate{2025-04-14}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -205,7 +203,7 @@
% are used in arguments to functions; they are not used directly but are
% manipulated by functions (including getting and setting functions).
% Functions and variables with a related functionality (for example accessing
-% counters, or manipulating token lists, \emph{etc.})\ are collected together
+% counters, or manipulating token lists, etc.)\ are collected together
% into a
% \emph{module}.
%
@@ -218,7 +216,7 @@
% \cs{l_tmpa_box} is a local variable (hence the~|l_| prefix)
% corresponding to a box register.\\
% \cs{g_tmpa_int} is a global variable (hence the~|g_| prefix)
-% corresponding to an integer register (i.e.~a \TeX{} count
+% corresponding to an integer register (i.e., a \TeX{} count
% register).\\
% \cs{c_empty_tl} is the constant~(|c_|) token list variable
% that is always empty.
@@ -588,7 +586,7 @@
% only the variable name itself. Instead a suitable number of
% \cs{exp_after:wN} would be necessary (together with extra braces) to
% change the order of expansion,\footnote{\cs{exp_after:wN} is
-% the \LaTeX3 name for the \TeX{} \tn{expandafter} primitive.} \emph{i.e.}
+% the \LaTeX3 name for the \TeX{} \tn{expandafter} primitive.} i.e.
% \begin{quote}
% \cs{exp_after:wN} \\
% | |\cs{seq_gpush:Nn} \\
@@ -889,7 +887,7 @@
% }
% \end{verbatim}
% where spaces are used around |{| and |}| except for isolated
-% |#1|, |#2|, \emph{etc.}
+% |#1|, |#2|, etc.
% \item Put different code items on separate lines: readability is
% much more useful than compactness.
% \item Use long, descriptive names for functions and variables,
@@ -1054,9 +1052,9 @@
% for all files from the same source, it has to match. Thus the loaders
% simply save this information with a new name.
% \begin{macrocode}
-%<*loader>
+%<*2ekernel|generic|package>
\let\ExplLoaderFileDate\ExplFileDate
-%</loader>
+%</2ekernel|generic|package>
% \end{macrocode}
% \end{macro}
%
@@ -1093,7 +1091,7 @@
% (Done this way avoids having two very similar blocks for \LaTeXe{} and
% other formats.)
% \begin{macrocode}
-%<*!loader>
+%<*code>
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -1134,12 +1132,12 @@
\fi
\fi
\next
-%</!loader>
+%</code>
% \end{macrocode}
%
% A reload test for the payload, just in case.
% \begin{macrocode}
-%<*!loader>
+%<*code>
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname ver at expl3-code.tex\endcsname\relax
\expandafter\edef\csname ver at expl3-code.tex\endcsname
@@ -1150,7 +1148,7 @@
\else
\expandafter\endinput
\fi
-%</!loader>
+%</code>
% \end{macrocode}
%
% All good: log the version of the code used (for log completeness). As this
@@ -1158,7 +1156,7 @@
% needs to work without \LaTeXe{}, just write the information directly to the
% log.
% \begin{macrocode}
-%<*!loader>
+%<*code>
\immediate\write-1 %
{%
Package: expl3
@@ -1165,7 +1163,7 @@
\ExplFileDate\space
L3 programming layer (code)%
}%
-%</!loader>
+%</code>
% \end{macrocode}
%
% \subsection{\LaTeXe{} loaders}
@@ -1176,7 +1174,7 @@
% the code here must be safe against re-loading.
%
% \begin{macrocode}
-%<*package&loader|2ekernel>
+%<*2ekernel|package>
% \end{macrocode}
%
% Identify the package or add to the format message.
@@ -1192,13 +1190,13 @@
}%
\fi
%</2ekernel>
-%<*!2ekernel>
+%<*package>
\ProvidesPackage{expl3}
[%
\ExplFileDate\space
L3 programming layer (loader)
]%
-%</!2ekernel>
+%</package>
% \end{macrocode}
%
% \begin{macro}{\ProvidesExplPackage, \ProvidesExplClass, \ProvidesExplFile}
@@ -1646,7 +1644,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package&loader|2ekernel>
+%</2ekernel|package>
% \end{macrocode}
%
% \subsection{Generic loader}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins 2025-04-28 19:50:11 UTC (rev 75045)
@@ -58,70 +58,72 @@
{
\file{expl3-code.tex}
{
- \from{expl3.dtx} {package}
- \from{l3bootstrap.dtx} {package}
- \from{l3names.dtx} {package,tex}
- \from{l3basics.dtx} {package}
- \from{l3expan.dtx} {package}
- \from{l3quark.dtx} {package}
- \from{l3tl.dtx} {package}
- \from{l3tl-build.dtx} {package}
- \from{l3str.dtx} {package}
- \from{l3seq.dtx} {package}
- \from{l3int.dtx} {package}
- \from{l3flag.dtx} {package}
- \from{l3prg.dtx} {package}
- \from{l3sys.dtx} {package,tex}
- \from{l3clist.dtx} {package}
- \from{l3token.dtx} {package,tex}
- \from{l3prop.dtx} {package}
- \from{l3msg.dtx} {package}
- \from{l3file.dtx} {package}
- \from{l3skip.dtx} {package}
- \from{l3keys.dtx} {package}
- \from{l3intarray.dtx} {package,tex}
- \from{l3fp.dtx} {package}
- \from{l3fp-aux.dtx} {package}
- \from{l3fp-traps.dtx} {package}
- \from{l3fp-round.dtx} {package}
- \from{l3fp-parse.dtx} {package}
- \from{l3fp-assign.dtx} {package}
- \from{l3fp-logic.dtx} {package}
- \from{l3fp-basics.dtx} {package}
- \from{l3fp-extended.dtx}{package}
- \from{l3fp-expo.dtx} {package}
- \from{l3fp-trig.dtx} {package}
- \from{l3fp-convert.dtx} {package}
- \from{l3fp-random.dtx} {package}
- \from{l3fp-types.dtx} {package}
- \from{l3fp-symbolic.dtx}{package}
- \from{l3fp-functions.dtx}{package}
- \from{l3fparray.dtx} {package}
- \from{l3bitset.dtx} {package}
- \from{l3cctab.dtx} {package}
- \from{l3sort.dtx} {package}
- \from{l3str-convert.dtx}{package}
- \from{l3tl-analysis.dtx}{package}
- \from{l3regex.dtx} {package}
- \from{l3box.dtx} {package}
- \from{l3color.dtx} {package}
- \from{l3graphics.dtx} {package}
- \from{l3pdf.dtx} {package,tex}
- \from{l3coffins.dtx} {package}
- \from{l3luatex.dtx} {package,tex}
- \from{l3unicode.dtx} {package}
- \from{l3text.dtx} {package}
- \from{l3text-case.dtx} {package}
- \from{l3text-map.dtx} {package}
- \from{l3text-purify.dtx}{package}
- \from{l3legacy.dtx} {package}
- \from{l3deprecation.dtx}{package}
+ \from{expl3.dtx} {code}
+ \from{l3bootstrap.dtx} {code}
+ \from{l3names.dtx} {code}
+ \from{l3basics.dtx} {code}
+ \from{l3expan.dtx} {code}
+ \from{l3quark.dtx} {code}
+ \from{l3tl.dtx} {code}
+ \from{l3tl-build.dtx} {code}
+ \from{l3str.dtx} {code}
+ \from{l3seq.dtx} {code}
+ \from{l3int.dtx} {code}
+ \from{l3flag.dtx} {code}
+ \from{l3prg.dtx} {code}
+ \from{l3sys.dtx} {code}
+ \from{l3clist.dtx} {code}
+ \from{l3token.dtx} {code}
+ \from{l3prop.dtx} {code}
+ \from{l3msg.dtx} {code}
+ \from{l3file.dtx} {code}
+ \from{l3skip.dtx} {code}
+ \from{l3keys.dtx} {code}
+ \from{l3intarray.dtx} {code}
+ \from{l3fp.dtx} {code}
+ \from{l3fp-aux.dtx} {code}
+ \from{l3fp-traps.dtx} {code}
+ \from{l3fp-round.dtx} {code}
+ \from{l3fp-parse.dtx} {code}
+ \from{l3fp-assign.dtx} {code}
+ \from{l3fp-logic.dtx} {code}
+ \from{l3fp-basics.dtx} {code}
+ \from{l3fp-extended.dtx}{code}
+ \from{l3fp-expo.dtx} {code}
+ \from{l3fp-trig.dtx} {code}
+ \from{l3fp-convert.dtx} {code}
+ \from{l3fp-random.dtx} {code}
+ \from{l3fp-types.dtx} {code}
+ \from{l3fp-symbolic.dtx}{code}
+ \from{l3fp-functions.dtx}{code}
+ \from{l3fparray.dtx} {code}
+ \from{l3bitset.dtx} {code}
+ \from{l3cctab.dtx} {code}
+ \from{l3sort.dtx} {code}
+ \from{l3str-convert.dtx}{code}
+ \from{l3tl-analysis.dtx}{code}
+ \from{l3benchmark.dtx} {code}
+ \from{l3regex.dtx} {code}
+ \from{l3box.dtx} {code}
+ \from{l3color.dtx} {code}
+ \from{l3graphics.dtx} {code}
+ \from{l3opacity.dtx} {code}
+ \from{l3pdf.dtx} {code}
+ \from{l3coffins.dtx} {code}
+ \from{l3luatex.dtx} {code}
+ \from{l3unicode.dtx} {code}
+ \from{l3text.dtx} {code}
+ \from{l3text-case.dtx} {code}
+ \from{l3text-map.dtx} {code}
+ \from{l3text-purify.dtx}{code}
+ \from{l3legacy.dtx} {code}
+ \from{l3deprecation.dtx}{code}
}
}
-\generate{\file{expl3.sty} {\from{expl3.dtx} {package,loader}}}
-\generate{\file{expl3.ltx} {\from{expl3.dtx} {2ekernel,loader}}}
-\generate{\file{expl3-generic.tex}{\from{expl3.dtx} {generic,loader}}}
+\generate{\file{expl3.sty} {\from{expl3.dtx} {package}}}
+\generate{\file{expl3.ltx} {\from{expl3.dtx} {2ekernel}}}
+\generate{\file{expl3-generic.tex}{\from{expl3.dtx} {generic}}}
\generate{\file{l3doc.cls} {\from{l3doc.dtx} {class}}}
% not distributed:
@@ -146,7 +148,7 @@
\file{l3str-enc-iso885916.def} {\from{l3str-convert.dtx}{iso885916}}%
}
-\generate{\file{l3debug.def} {\from{l3debug.dtx} {package}}}
+\generate{\file{l3debug.def} {\from{l3debug.dtx} {def}}}
\generate{\file{l3docstrip.tex} {\from{l3docstrip.dtx} {program}}}
@@ -172,12 +174,12 @@
\endpreamble
\nopostamble
\generate{\file{expl3.lua}{
- \from{l3luatex.dtx}{package,lua}
- \from{l3names.dtx}{package,lua}
- \from{l3sys.dtx}{package,lua}
- \from{l3token.dtx}{package,lua}
- \from{l3intarray.dtx}{package,lua}
- \from{l3pdf.dtx}{package,lua}
+ \from{l3luatex.dtx}{lua}
+ \from{l3names.dtx}{lua}
+ \from{l3sys.dtx}{lua}
+ \from{l3token.dtx}{lua}
+ \from{l3intarray.dtx}{lua}
+ \from{l3pdf.dtx}{lua}
}}
\endbatchfile
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -131,7 +131,7 @@
% As \TeX{} is a macro language, creating new functions means
% creating macros. At point of use, a function is replaced by
% the replacement text (\enquote{code}) in which each parameter
-% in the code (|#1|, |#2|, \emph{etc.}) is replaced the appropriate
+% in the code (|#1|, |#2|, etc.) is replaced the appropriate
% arguments absorbed by the function. In the following, \meta{code}
% is therefore used as a shorthand for \enquote{replacement text}.
%
@@ -218,7 +218,7 @@
% \end{syntax}
% Creates \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% The definition is global and an error results if the
% \meta{function} is already defined.
% \end{function}
@@ -234,7 +234,7 @@
% \end{syntax}
% Creates \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% When the \meta{function} is used the \meta{parameters} absorbed
% cannot contain \cs{par} tokens. The definition is global and
% an error results if the \meta{function} is already defined.
@@ -251,7 +251,7 @@
% \end{syntax}
% Creates \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% The \meta{function} will not expand within an \texttt{e}-type or
% or \texttt{x}-type
% argument. The definition is global and an error results if the
@@ -269,7 +269,7 @@
% \end{syntax}
% Creates \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% When the \meta{function} is used the \meta{parameters} absorbed
% cannot contain \cs{par} tokens. The \meta{function} will not
% expand within an \texttt{e}-type or \texttt{x}-type argument. The definition is global
@@ -287,7 +287,7 @@
% \end{syntax}
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% The assignment of a meaning to the \meta{function} is restricted to
% the current \TeX{} group level.
% \end{function}
@@ -303,7 +303,7 @@
% \end{syntax}
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% When the \meta{function} is used the \meta{parameters} absorbed
% cannot contain \cs{par} tokens. The assignment of a meaning
% to the \meta{function} is restricted to the current \TeX{} group
@@ -321,7 +321,7 @@
% \end{syntax}
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% The assignment of a meaning to the \meta{function} is restricted to
% the current \TeX{} group level. The \meta{function} will
% not expand within an \texttt{e}-type or \texttt{x}-type argument.
@@ -338,7 +338,7 @@
% \end{syntax}
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% When the \meta{function} is used the \meta{parameters} absorbed
% cannot contain \cs{par} tokens. The assignment of a meaning
% to the \meta{function} is restricted to the current \TeX{} group
@@ -357,7 +357,7 @@
% \end{syntax}
% Globally sets \meta{function} to expand to \meta{code} as replacement
% text. Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% The assignment of a meaning to the \meta{function} is \emph{not}
% restricted to the current \TeX{} group level: the assignment is
% global.
@@ -374,7 +374,7 @@
% \end{syntax}
% Globally sets \meta{function} to expand to \meta{code} as replacement
% text. Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% When the \meta{function} is used the \meta{parameters} absorbed
% cannot contain \cs{par} tokens. The assignment of a meaning to the
% \meta{function} is \emph{not} restricted to the current \TeX{}
@@ -392,7 +392,7 @@
% \end{syntax}
% Globally sets \meta{function} to expand to \meta{code} as replacement
% text. Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% The assignment of a meaning to the \meta{function} is \emph{not}
% restricted to the current \TeX{} group level: the assignment is
% global. The \meta{function} will not expand within an
@@ -410,7 +410,7 @@
% \end{syntax}
% Globally sets \meta{function} to expand to \meta{code} as replacement
% text. Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
-% \emph{etc.}) will be replaced by those absorbed by the function.
+% etc.) will be replaced by those absorbed by the function.
% When the \meta{function} is used the \meta{parameters} absorbed
% cannot contain \cs{par} tokens. The assignment of a meaning to the
% \meta{function} is \emph{not} restricted to the current \TeX{}
@@ -432,7 +432,7 @@
% Creates \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function. The definition is global and
% an error results if the \meta{function} is already defined.
% \end{function}
@@ -448,7 +448,7 @@
% Creates \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens. The definition is global and
% an error results if the \meta{function} is already defined.
@@ -465,7 +465,7 @@
% Creates \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function. The \meta{function} will not expand within an \texttt{e}-type
% or \texttt{x}-type argument. The definition is global and
% an error results if the \meta{function} is already defined.
@@ -482,7 +482,7 @@
% Creates \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens. The \meta{function} will not
% expand within an \texttt{e}-type or \texttt{x}-type argument. The definition is global and
@@ -500,7 +500,7 @@
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function.
% The assignment of a meaning to the \meta{function} is restricted to
% the current \TeX{} group level.
@@ -517,7 +517,7 @@
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens.
% The assignment of a meaning to the \meta{function} is restricted to
@@ -535,7 +535,7 @@
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function. The \meta{function} will not expand within an \texttt{e}-type
% or \texttt{x}-type argument.
% The assignment of a meaning to the \meta{function} is restricted to
@@ -553,7 +553,7 @@
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens. The \meta{function} will not
% expand within an \texttt{e}-type or \texttt{x}-type argument.
@@ -572,7 +572,7 @@
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function.
% The assignment of a meaning to the \meta{function} is global.
% \end{function}
@@ -588,7 +588,7 @@
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens.
% The assignment of a meaning to the \meta{function} is global.
@@ -605,7 +605,7 @@
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function. The \meta{function} will not expand within an \texttt{e}-type
% or \texttt{x}-type argument.
% The assignment of a meaning to the \meta{function} is global.
@@ -622,7 +622,7 @@
% Sets \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
-% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
+% (|#1|, |#2|, etc.) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens. The \meta{function} will not
% expand within an \texttt{e}-type or \texttt{x}-type argument.
@@ -846,8 +846,8 @@
% \begin{syntax}
% \cs{cs_split_function:N} \meta{function}
% \end{syntax}
-% Splits the \meta{function} into the \meta{name} (\emph{i.e.}~the part
-% before the colon) and the \meta{signature} (\emph{i.e.}~after the colon).
+% Splits the \meta{function} into the \meta{name} (i.e., the part
+% before the colon) and the \meta{signature} (i.e., after the colon).
% This information is then placed in the input stream
% in three parts: the \meta{name}, the
% \meta{signature} and a logic token indicating if a colon was found
@@ -951,7 +951,7 @@
% \begin{verbatim}
% abc { def }
% \end{verbatim}
-% \emph{i.e.} only the outer braces are removed.
+% i.e. only the outer braces are removed.
% \begin{texnote}
% The \cs{use:n} function is equivalent to \LaTeXe{}'s \tn{@firstofone}.
% \end{texnote}
@@ -1011,7 +1011,7 @@
% \begin{verbatim}
% abc { def }
% \end{verbatim}
-% \emph{i.e.} the outer braces are removed and the third group
+% i.e. the outer braces are removed and the third group
% is removed.
% \end{function}
%
@@ -1045,10 +1045,10 @@
% input stream, leaving nothing on the resulting input stream.
% These functions work after a single expansion. One or more of the
% \texttt{n} arguments may be an unbraced single token
-% (\emph{i.e.}~an \texttt{N} argument).
+% (i.e., an \texttt{N} argument).
% \begin{texnote}
% These are equivalent to \LaTeXe{}'s \tn{@gobble}, \tn{@gobbletwo},
-% \emph{etc.}
+% etc.
% \end{texnote}
% \end{function}
%
@@ -1176,7 +1176,7 @@
% \cs{cs_if_eq:NNTF} \meta{cs_1} \meta{cs_2} \Arg{true code} \Arg{false code}
% \end{syntax}
% Compares the definition of two \meta{control sequences} and
-% is logically \texttt{true} if they are the same, \emph{i.e.}~if they have exactly
+% is logically \texttt{true} if they are the same, i.e., if they have exactly
% the same definition when examined with \cs{cs_show:N}.
% \end{function}
%
@@ -1366,7 +1366,7 @@
% \section{\pkg{l3basics} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \subsection{Renaming some \TeX{} primitives (again)}
@@ -2055,7 +2055,7 @@
% \@@_generate_conditional_test:w,
% \@@_generate_conditional_fast:nw,
% }
-% The workhorse here is going through a list of desired forms, \emph{i.e.},
+% The workhorse here is going through a list of desired forms, i.e.,
% |p|, |TF|, |T| and |F|. The first three arguments come from splitting up
% the base form of the conditional, which gives the name, signature
% and a boolean to signal whether or not there was a colon in the
@@ -2335,8 +2335,8 @@
% \begin{syntax}
% \cs{@@_count_signature:N} \meta{function}
% \end{syntax}
-% Splits the \meta{function} into the \meta{name} (\emph{i.e.}~the part
-% before the colon) and the \meta{signature} (\emph{i.e.}~after the colon).
+% Splits the \meta{function} into the \meta{name} (i.e., the part
+% before the colon) and the \meta{signature} (i.e., after the colon).
% The \meta{number} of tokens in the \meta{signature} is then left in
% the input stream. If there was no \meta{signature} then the result is
% the marker value $-1$.
@@ -2698,7 +2698,7 @@
%
% \begin{macro}{\__kernel_chk_if_free_cs:N, \__kernel_chk_if_free_cs:c}
% This command is called by \cs{cs_new_nopar:Npn} and \cs{cs_new_eq:NN}
-% \emph{etc.}\
+% etc.\
% to make sure that the argument sequence is not already in use. If
% it is, an error is signalled. It checks if \meta{csname} is
% undefined or \cs{scan_stop:}. Otherwise an error message is
@@ -2980,7 +2980,7 @@
% \begin{macro}[EXP]{\@@_count_signature:N, \@@_count_signature:c}
% \begin{macro}[EXP]{\@@_count_signature:n}
% \begin{macro}[EXP]{\@@_count_signature:nnN}
-% Counting the number of tokens in the signature, \emph{i.e.}, the
+% Counting the number of tokens in the signature, i.e., the
% number of arguments the function should take. Since this is not
% used in any time-critical function, we simply use \cs{tl_count:n} if
% there is a signature, otherwise $-1$ arguments to signal an error.
@@ -3496,7 +3496,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Added: trunk/Master/texmf-dist/source/latex/l3kernel/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3benchmark.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3benchmark.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -0,0 +1,490 @@
+% \iffalse meta-comment
+%
+%% File: l3benchmark.dtx
+%
+% Copyright (C) 2011-2025 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 "l3kernel bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver>
+\documentclass[full]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \pkg{l3benchmark} module\\ Benchmarking^^A
+% }
+%
+% \author{^^A
+% The \LaTeX{} Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team at latex-project.org}
+% {latex-team at latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2025-04-14}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \section{Benchmark}
+%
+% \begin{variable}[added = 2025-03-17]{\g_benchmark_duration_target_fp}
+% This variable (default value: $1$) controls roughly for how long
+% \cs{benchmark:n} will repeat code to more accurately benchmark it.
+% The actual duration of one call to \cs{benchmark:n} typically lasts
+% between half and twice \cs{g_benchmark_duration_target_fp} seconds,
+% unless of course running the code only once already lasts longer
+% than this.
+% \end{variable}
+%
+% \begin{variable}[added = 2025-03-17]{\g_benchmark_time_fp, \g_benchmark_ops_fp}
+% These variables store the results of the most recently run benchmark.
+% \cs{g_benchmark_time_fp} stores the time \TeX{} took in seconds, and
+% \cs{g_benchmark_ops_fp} stores the estimated number of elementary
+% operations. The latter is not set by
+% \cs{benchmark_tic:}/\cs{benchmark_toc:}.
+% \end{variable}
+%
+% \begin{function}[added = 2025-03-17]{\benchmark_once:n, \benchmark_once_silent:n}
+% \begin{syntax}
+% \cs{benchmark_once_silent:n} \Arg{code}
+% \cs{benchmark_once:n} \Arg{code}
+% \end{syntax}
+% Determines the time \cs{g_benchmark_time_fp} (in seconds) taken by
+% \TeX{} to run the \meta{code}, and an estimated number
+% \cs{g_benchmark_ops_fp} of elementary operations. In addition,
+% \cs{benchmark_once:n} prints these values to the terminal. The
+% \meta{code} is run only once so the time may be quite inaccurate for
+% fast code.
+% \end{function}
+%
+% \begin{function}[added = 2025-03-17]{\benchmark:n, \benchmark_silent:n}
+% \begin{syntax}
+% \cs{benchmark:n} \Arg{code}
+% \end{syntax}
+% Determines the time \cs{g_benchmark_time_fp} (in seconds) taken by
+% \TeX{} to run the \meta{code}, and an estimated number
+% \cs{g_benchmark_ops_fp} of elementary operations. In addition,
+% \cs{benchmark:n} prints these values to the terminal. The
+% \meta{code} may be run many times and not within a group, thus code
+% with side-effects may cause problems.
+% \end{function}
+%
+% \begin{function}[added = 2025-03-17]{\benchmark_tic:, \benchmark_toc:}
+% \begin{syntax}
+% \cs{benchmark_tic:} \meta{slow code} \cs{benchmark_toc:}
+% \end{syntax}
+% When it is not possible to run \cs{benchmark:n} (e.g., the code is
+% part of the execution of a package which cannot be looped) the
+% tic/toc commands can be used instead to time between two points in
+% the code. When executed, \cs{benchmark_tic:} will print a line to the
+% terminal, and \cs{benchmark_toc:} will print a matching line with a
+% time to indicate the duration between them in seconds.
+% These commands can be nested.
+% \end{function}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3benchmark} implementation}
+%
+% Our working unit is the scaled second, namely $2^{-16}$ seconds.
+%
+% \begin{macrocode}
+%<*code>
+% \end{macrocode}
+%
+% \subsection{Benchmarking code}
+%
+% \begin{macrocode}
+%<@@=benchmark>
+% \end{macrocode}
+%
+% \begin{variable}{\g_benchmark_duration_target_fp}
+% The benchmark is constrained to take roughly (from half to twice)
+% \cs{g_benchmark_duration_target_fp} seconds, unless one iteration of
+% the code takes longer.
+% \begin{macrocode}
+\fp_new:N \g_benchmark_duration_target_fp
+\fp_gset:Nn \g_benchmark_duration_target_fp { 1 }
+% \end{macrocode}
+% \end{variable}
+%
+% \subsubsection{Raw measurement}
+%
+% \begin{variable}{\g_@@_nesting_int}
+% \begin{macro}{\@@_raw:nN, \@@_raw_aux:N, \@@_raw_end:N}
+% Store in the given integer variable the time it took to perform a given
+% piece of code, in scaled seconds. We call \cs{sys_timer:} as
+% close before and after the code as possible. We store the
+% intermediate result in a new integer when \cs{@@_raw:nN} is
+% nested.
+% \begin{macrocode}
+\int_new:N \g_@@_nesting_int
+\cs_new_protected:Npn \@@_raw:nN #1
+ {
+ \int_gincr:N \g_@@_nesting_int
+ \exp_args:Nc \@@_raw_aux:N
+ { g_@@_ \int_use:N \g_@@_nesting_int _int }
+ \@@_raw_aux:
+ #1
+ \@@_raw_end:N
+ }
+\cs_new_protected:Npn \@@_raw_aux:N #1
+ {
+ \int_gzero_new:N #1
+ \cs_gset_protected:Npn \@@_raw_aux: { \int_gset:Nn #1 { \sys_timer: } }
+ }
+\cs_new_protected:Npn \@@_raw_end:N #1
+ {
+ \int_gset:Nn #1
+ {
+ \sys_timer: -
+ \int_use:c { g_@@_ \int_use:N \g_@@_nesting_int _int }
+ }
+ \int_gdecr:N \g_@@_nesting_int
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{variable}
+%
+% \begin{macro}{\@@_raw_replicate:nnN, \@@_tmp:w}
+% Here, we wish to measure the time it takes for the piece of code
+% |#2| to be run |#1| times, and store the result in the
+% integer~|#3|.
+%
+% If the number of copies required is large, defining \cs{@@_tmp:w}
+% would exhaust \TeX{}'s main memory. In that case, we replicate
+% $|#1|/5000$ times the given code before passing it to the main call
+% to \cs{@@_tmp:w}. Of course the division rounds to an integer, so
+% that step introduces a relative error of order at most
+% $5000/500000$, less than many other sources of variability.
+%
+% We subtract the time for another call to \cs{@@_tmp:w}, with the
+% same arguments (to capture the time it takes to read the argument)
+% but empty expansion.
+% \begin{macrocode}
+\cs_new_eq:NN \@@_tmp:w ?
+\cs_new_protected:Npn \@@_raw_replicate:nnN #1
+ {
+ \int_compare:nNnTF {#1} > { 500000 }
+ { \@@_raw_replicate_large:nnN {#1} }
+ { \@@_raw_replicate_small:nnN {#1} }
+ }
+\cs_new_protected:Npn \@@_raw_replicate_large:nnN #1#2
+ {
+ \cs_set:Npe \@@_tmp:w ##1 { \prg_replicate:nn { 5000 } {##1} }
+ \exp_args:Nno \@@_raw_replicate:nnN { #1 / 5000 }
+ { \@@_tmp:w {#2} }
+ }
+\cs_new_protected:Npn \@@_raw_replicate_small:nnN #1#2
+ {
+ \cs_set:Npe \@@_tmp:w ##1##2 { \prg_replicate:nn {#1} {##1} }
+ \@@_raw:nN { \@@_tmp:w {#2} { } } \g_@@_time_int
+ \exp_args:No \@@_raw_replicate_aux:nnN
+ { \int_use:N \g_@@_time_int } {#2}
+ }
+\cs_new_protected:Npn \@@_raw_replicate_aux:nnN #1#2#3
+ {
+ \@@_raw:nN { \@@_tmp:w { } {#2} } \g_@@_time_int
+ \int_gset:Nn #3 { #1 - \g_@@_time_int }
+ \cs_set_eq:NN \@@_tmp:w \prg_do_nothing:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Main benchmarking}
+%
+% \begin{variable}{\g_benchmark_time_fp, \g_benchmark_ops_fp}
+% Functions such as \cs{benchmark:n} store the measured time in
+% \cs{g_benchmark_time_fp} (in seconds) and the estimated number of
+% operations in \cs{g_benchmark_ops_fp}.
+% \begin{macrocode}
+\fp_new:N \g_benchmark_time_fp
+\fp_new:N \g_benchmark_ops_fp
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_duration_int}
+% A conversion of \cs{g_benchmark_duration_target_fp} seconds into scaled seconds.
+% \begin{macrocode}
+\int_new:N \g_@@_duration_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_time_int, \g_@@_time_a_int, \g_@@_time_b_int, \g_@@_time_c_int, \g_@@_time_d_int}
+% These variables hold the time for running a piece of code, as an
+% integer in scaled seconds.
+% \begin{macrocode}
+\int_new:N \g_@@_time_int
+\int_new:N \g_@@_time_a_int
+\int_new:N \g_@@_time_b_int
+\int_new:N \g_@@_time_c_int
+\int_new:N \g_@@_time_d_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_repeat_int}
+% Holds the number of times that the piece of code was
+% repeated when timing.
+% \begin{macrocode}
+\int_new:N \g_@@_repeat_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_code_tl}
+% Holds the piece of code to repeat.
+% \begin{macrocode}
+\tl_new:N \g_@@_code_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\benchmark_once:n, \benchmark_once_silent:n}
+% Convert the raw time from scaled seconds to seconds, and convert to
+% a number of operations. It is important to measure the elementary
+% operation before running the user code because both measurements use
+% the same temporary variables.
+% \begin{macrocode}
+\cs_new_protected:Npn \benchmark_once:n #1
+ {
+ \benchmark_once_silent:n {#1}
+ \@@_display:
+ }
+\cs_new_protected:Npn \benchmark_once_silent:n #1
+ {
+ \@@_measure_op:
+ \@@_raw:nN {#1} \g_@@_time_int
+ \fp_gset:Nn \g_benchmark_time_fp { \g_@@_time_int / 65536 }
+ \fp_gset:Nn \g_benchmark_ops_fp { \g_benchmark_time_fp / \g_@@_one_op_fp }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\benchmark:n}
+% After setting up some variables the work is done by \cs{@@_aux:}.
+% \begin{macrocode}
+\cs_new_protected:Npn \benchmark:n #1
+ {
+ \benchmark_silent:n {#1}
+ \@@_display:
+ }
+\cs_new_protected:Npn \benchmark_silent:n #1
+ {
+ \@@_measure_op:
+ \tl_gset:Nn \g_@@_code_tl {#1}
+ \@@_aux:
+ \fp_gset:Nn \g_benchmark_ops_fp { \g_benchmark_time_fp / \g_@@_one_op_fp }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_aux:}
+% The main timing function. First time the user code once. If that
+% took more than half the allotted time (\cs{g_@@_duration_int}) we're
+% done. If that took much less, repeatedly quadruple the number of
+% copies until it takes a reasonable amount of time. Once we reach a
+% reasonable time (or we risk an overflow), compute a number of times
+% that can fit in one quarter of the allotted time and measure that
+% four times. To save time we reuse the result of the first pass if
+% \cs{g_@@_repeat_int} is one. Once we have four results, find the
+% smallest, divided by $65536$ and by the number of repetitions, and
+% display that.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_aux:
+ {
+ \int_gset:Nn \g_@@_repeat_int { 1 }
+ \@@_raw:nN { \g_@@_code_tl } \g_@@_time_int
+ \int_compare:nNnF \g_@@_time_int < { \g_@@_duration_int / 2 }
+ { \prg_break: }
+ \bool_until_do:nn
+ {
+ \int_compare_p:nNn \g_@@_time_int > { \g_@@_duration_int / 32 }
+ || \int_compare_p:nNn \g_@@_repeat_int > { \c_max_int / 4 }
+ }
+ {
+ \int_gset:Nn \g_@@_repeat_int { 4 * \g_@@_repeat_int }
+ \@@_run:N \g_@@_time_int
+ }
+ \int_gset:Nn \g_@@_repeat_int
+ {
+ \fp_to_int:n
+ {
+ max ( 1 , min ( \c_max_int ,
+ \g_@@_duration_int * \g_@@_repeat_int /
+ \int_eval:n { 4 * \g_@@_time_int } ) )
+ }
+ }
+ \int_compare:nNnTF \g_@@_repeat_int = 1
+ { \int_gset_eq:NN \g_@@_time_a_int \g_@@_time_int }
+ { \@@_run:N \g_@@_time_a_int }
+ \@@_run:N \g_@@_time_b_int
+ \@@_run:N \g_@@_time_c_int
+ \@@_run:N \g_@@_time_d_int
+ \int_gset:Nn \g_@@_time_int
+ {
+ \int_min:nn
+ { \int_min:nn \g_@@_time_a_int \g_@@_time_b_int }
+ { \int_min:nn \g_@@_time_c_int \g_@@_time_d_int }
+ }
+ \prg_break_point:
+ \int_compare:nNnT \g_@@_time_int < 3 { \int_gzero:N \g_@@_time_int }
+ \fp_gset:Nn \g_benchmark_time_fp
+ { \g_@@_time_int / \g_@@_repeat_int / 65536 }
+ }
+\cs_new_protected:Npn \@@_run:N
+ { \exp_args:NNo \@@_raw_replicate:nnN \g_@@_repeat_int { \g_@@_code_tl } }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Display}
+%
+% \begin{variable}{\g_@@_one_op_fp}
+% Time for one operation.
+% \begin{macrocode}
+\fp_new:N \g_@@_one_op_fp
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_measure_op:}
+% Measure one arbitrary single operation (which we put in \cs{g_@@_code_tl}).
+% This uses a common auxiliary \cs{@@_aux:} with the main benchmark function.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_measure_op:
+ {
+ \int_gset:Nn \g_@@_duration_int
+ { \fp_to_int:n { 65536 * \g_benchmark_duration_target_fp } / 4 }
+ \tl_gset:Nn \g_@@_code_tl
+ { \int_gadd:Nn \g_@@_duration_int { 0 } }
+ \@@_aux:
+ \fp_gset:Nn \g_@@_one_op_fp { max(\g_benchmark_time_fp, 1e-8) }
+ \int_gset:Nn \g_@@_duration_int
+ { \fp_to_int:n { 65536 * \g_benchmark_duration_target_fp } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_fp_to_tl:N, \@@_fp_to_tl_aux:nN}
+% Similar to \cs{fp_to_tl:N} but rounds to $3$ significant digits and
+% uses scientific notation starting from |1e3|.
+% \begin{macrocode}
+\cs_new:Npn \@@_fp_to_tl:N #1
+ {
+ \fp_compare:nTF { abs(#1) < 1000 }
+ { \fp_to_tl:n { round(#1, 2 - logb(#1)) } }
+ {
+ \exp_args:Nf \@@_fp_to_tl_aux:nN
+ { \fp_to_int:n { logb(#1) } } #1
+ }
+ }
+\cs_new:Npn \@@_fp_to_tl_aux:nN #1#2
+ { \fp_to_tl:n { round(#2 * 1e-#1, 2) } e#1 }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_display:}
+% Function to display the time that was measured and the estimated
+% number of operations.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_display:
+ {
+ \iow_term:e
+ {
+ \@@_fp_to_tl:N \g_benchmark_time_fp \c_space_tl seconds \c_space_tl
+ ( \@@_fp_to_tl:N \g_benchmark_ops_fp \c_space_tl ops)
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Benchmark tic toc}
+%
+% \begin{variable}{\g_@@_tictoc_int, \g_@@_tictoc_seq, \l_@@_tictoc_pop_tl}
+% \begin{macrocode}
+\int_new:N \g_@@_tictoc_int
+\seq_new:N \g_@@_tictoc_seq
+\tl_new:N \l_@@_tictoc_pop_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[EXP]{\@@_tictoc_prefix:}
+% We include the package name in analogy with continuation lines of
+% error/warning messages.
+% \begin{macrocode}
+\cs_new:Npn \@@_tictoc_prefix:
+ {
+ (l3benchmark) \c_space_tl
+ + \prg_replicate:nn { \g_@@_tictoc_int } { -+ } \c_space_tl
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\benchmark_tic:}
+% \begin{macrocode}
+\cs_new_protected:Npn \benchmark_tic:
+ {
+ \iow_term:e { \@@_tictoc_prefix: TIC }
+ \exp_args:NNf \seq_gput_right:Nn \g_@@_tictoc_seq { \sys_timer: }
+ \int_gincr:N \g_@@_tictoc_int
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\benchmark_toc:, \@@_toc:}
+% \begin{macrocode}
+\cs_new:Npn \benchmark_toc:
+ {
+ \seq_gpop_right:NNTF \g_@@_tictoc_seq \l_@@_tictoc_pop_tl
+ { \@@_toc: }
+ { \msg_error:nn { benchmark } { toc-first } }
+ }
+\cs_new_protected:Npn \@@_toc:
+ {
+ \int_gdecr:N \g_@@_tictoc_int
+ \fp_gset:Nn \g_benchmark_time_fp
+ { ( \sys_timer: - \l_@@_tictoc_pop_tl ) / 65536 }
+ \iow_term:e
+ {
+ \@@_tictoc_prefix:
+ TOC: \c_space_tl
+ \@@_fp_to_tl:N \g_benchmark_time_fp \c_space_tl s
+ }
+ }
+\msg_new:nnn { benchmark } { toc-first }
+ {
+ \token_to_str:N \benchmark_toc: \c_space_tl without~
+ \token_to_str:N \benchmark_tic: \c_space_tl !
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</code>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
Property changes on: trunk/Master/texmf-dist/source/latex/l3kernel/l3benchmark.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bitset.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bitset.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bitset.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -297,7 +297,7 @@
% \section{\pkg{l3bitset} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -638,7 +638,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -134,7 +134,7 @@
% \section{\pkg{l3bootstrap} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
%<@@=kernel>
% \end{macrocode}
%
@@ -349,7 +349,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -715,7 +715,7 @@
% depth. The updated \meta{box} is an |hbox|, irrespective of the nature
% of the \meta{box} before the resizing is applied. The final size of the
% \meta{box} is the smaller of \Arg{x-size} and \Arg{y-size},
-% \emph{i.e.}~the result fits within the dimensions specified. Negative
+% i.e., the result fits within the dimensions specified. Negative
% sizes cause the material in the \meta{box} to be reversed in direction,
% but the reference point of the \meta{box} is unchanged. Thus a negative
% \meta{y-size} results in the \meta{box} having a depth dependent on the
@@ -738,7 +738,7 @@
% depth). The updated \meta{box} is an |hbox|, irrespective of the nature
% of the \meta{box} before the resizing is applied. The final size of the
% \meta{box} is the smaller of \Arg{x-size} and \Arg{y-size},
-% \emph{i.e.}~the result fits within the dimensions specified. Negative
+% i.e., the result fits within the dimensions specified. Negative
% sizes cause the material in the \meta{box} to be reversed in direction,
% but the reference point of the \meta{box} is unchanged. Thus a negative
% \meta{y-size} results in the \meta{box} having a depth dependent on the
@@ -990,7 +990,7 @@
% \section{\pkg{l3box} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2519,10 +2519,9 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
-
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -194,7 +194,7 @@
% \section{\pkg{l3cctab} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -965,7 +965,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -427,7 +427,7 @@
%
% The functions described in this section apply a specified function
% to each item of a comma list.
-% All mappings are done at the current group level, \emph{i.e.}~any
+% All mappings are done at the current group level, i.e., any
% local assignments made by the \meta{function} or \meta{code} discussed
% below remain in effect after the loop.
%
@@ -557,7 +557,7 @@
% Leaves the number of items in the \meta{clist~var} in the input
% stream as an \meta{integer denotation}. The total number of items
% in a \meta{clist~var} includes those which are duplicates,
-% \emph{i.e.}~every item in a \meta{clist~var} is counted.
+% i.e., every item in a \meta{clist~var} is counted.
% \end{function}
%
% \section{Using the content of comma lists directly}
@@ -682,7 +682,7 @@
% \cs{clist_pop:NN} \meta{clist~var} \meta{tl~var}
% \end{syntax}
% Pops the left-most item from a \meta{clist~var} into the
-% \meta{tl~var}, \emph{i.e.}~removes the item from the
+% \meta{tl~var}, i.e., removes the item from the
% comma list and stores it in the \meta{tl~var}.
% Both of the variables are assigned locally.
% \end{function}
@@ -692,7 +692,7 @@
% \cs{clist_gpop:NN} \meta{clist~var} \meta{tl~var}
% \end{syntax}
% Pops the left-most item from a \meta{clist~var} into the
-% \meta{tl~var}, \emph{i.e.}~removes the item from the
+% \meta{tl~var}, i.e., removes the item from the
% comma list and stores it in the \meta{tl~var}.
% The \meta{clist~var} is modified globally, while the assignment of
% the \meta{tl~var} is local.
@@ -706,7 +706,7 @@
% input stream. The value of the \meta{tl~var} is
% not defined in this case and should not be relied upon. If the
% \meta{clist~var} is non-empty, pops the top item from the
-% \meta{clist~var} in the \meta{tl~var}, \emph{i.e.}~removes
+% \meta{clist~var} in the \meta{tl~var}, i.e., removes
% the item from the \meta{clist~var}. Both the \meta{clist~var} and the
% \meta{tl~var} are assigned locally.
% \end{function}
@@ -719,7 +719,7 @@
% input stream. The value of the \meta{tl~var} is
% not defined in this case and should not be relied upon. If the
% \meta{clist~var} is non-empty, pops the top item from the
-% \meta{clist~var} in the \meta{tl~var}, \emph{i.e.}~removes
+% \meta{clist~var} in the \meta{tl~var}, i.e., removes
% the item from the \meta{clist~var}. The \meta{clist~var} is modified
% globally, while the \meta{tl~var} is assigned locally.
% \end{function}
@@ -839,7 +839,7 @@
% \TestFiles{m3clist002}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2269,7 +2269,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,16 +43,92 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
% \begin{documentation}
%
-% The material in this module provides the low-level support system
-% for coffins. For details about the design concept of a coffin, see
-% the \pkg{xcoffins} module (in the \pkg{l3experimental} bundle).
+% In \pkg{expl3} terminology, a \enquote{coffin} is a box containing
+% typeset material. Along with the box itself, the coffin structure
+% includes information on the size and shape of the box, which makes
+% it possible to align two or more coffins easily. This is achieved
+% by providing a series of \enquote{poles} for each coffin. These
+% are horizontal and vertical lines through the coffin at defined
+% positions, for example the top or horizontal centre. The points
+% where these poles intersect are called \enquote{handles}. Two
+% coffins can then be aligned by describing the relationship between
+% a handle on one coffin with a handle on the second. In words, an
+% example might then read
+% \begin{quote}
+% Align the top-left handle of coffin A with the bottom-right
+% handle of coffin B.
+% \end{quote}
%
+% The locations of coffin handles are much easier to understand
+% visually. Figure~\ref{fgr:handles} shows the standard handle
+% positions for a coffin typeset in horizontal mode (left) and in
+% vertical mode (right). Notice that the later case results in a greater
+% number of handles being available. As illustrated, each handle
+% results from the intersection of two poles. For example, the centre
+% of the coffin is marked |(hc,vc)|, i.e., it is the
+% point of intersection of the horizontal centre pole with the
+% vertical centre pole. New handles are generated automatically when
+% poles are added to a coffin: handles are \enquote{dynamic} entities.
+%
+% \begin{figure}
+% \hfil
+% \begin{minipage}{0.4\textwidth}
+% \ExplSyntaxOn
+% \hcoffin_set:Nn \l_tmpa_coffin
+% { \color_select:n { black!10!white } \rule { 1in } { 1in } }
+% \coffin_display_handles:Nn \l_tmpa_coffin { blue }
+% \end{minipage}
+% \hfil
+% \begin{minipage}{0.4\textwidth}
+% \ExplSyntaxOn
+% \vcoffin_set:Nnn \l_tmpa_coffin { 1in }
+% { \color_select:n { black!10!white } \rule { 1in } { 1in } }
+% \coffin_display_handles:Nn \l_tmpa_coffin { blue }
+% \end{minipage}
+% \hfil
+% \caption{Standard coffin handles: left, horizontal coffin; right,
+% vertical coffin}
+% \label{fgr:handles}
+% \end{figure}
+%
+% \section{Controlling coffin poles}
+%
+% A number of standard poles are automatically generated when the coffin
+% is set or an alignment takes place. The standard poles for all coffins
+% are:
+% \begin{itemize}[font = \ttfamily]
+% \item[l] a pole running along the left-hand edge of the bounding
+% box of the coffin;
+% \item[hc] a pole running vertically through the centre of the coffin
+% half-way between the left- and right-hand edges of the bounding
+% box (i.e., the \enquote{horizontal centre});
+% \item[r] a pole running along the right-hand edge of the bounding
+% box of the coffin;
+% \item[b] a pole running along the bottom edge of the bounding
+% box of the coffin;
+% \item[vc] a pole running horizontally through the centre of the
+% coffin half-way between the bottom and top edges of the bounding
+% box (i.e., the \enquote{vertical centre});
+% \item[t] a pole running along the top edge of the bounding
+% box of the coffin;
+% \item[H] a pole running along the baseline of the typeset material
+% contained in the coffin.
+% \end{itemize}
+% In addition, coffins containing vertical-mode material also
+% feature poles which reflect the richer nature of these systems:
+% \begin{itemize}
+% \item[B] a pole running along the baseline of the material at the
+% bottom of the coffin.
+% \item[T] a pole running along the baseline of the material at the top
+% of the coffin.
+% \end{itemize}
+%
% \section{Creating and initialising coffins}
%
% \begin{function}[added = 2011-08-17]{\coffin_new:N, \coffin_new:c}
@@ -255,7 +331,7 @@
% ~~\Arg{x-offset} \Arg{y-offset}
% \end{syntax}
% This function attaches \meta{coffin_2} to \meta{coffin_1} such that the bounding box
-% of \meta{coffin_1} is not altered, \emph{i.e.}~\meta{coffin_2} can
+% of \meta{coffin_1} is not altered, i.e., \meta{coffin_2} can
% protrude outside of the bounding box of the coffin. The alignment
% is carried out by first calculating \meta{handle_1}, the
% point of intersection of \meta{coffin_1-pole_1} and
@@ -452,7 +528,7 @@
% \section{\pkg{l3coffins} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2593,7 +2669,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -277,7 +277,7 @@
% These commands set the current color (|.|): other more specialised functions
% such as fill and stroke selectors do \emph{not} adjust this value.
%
-% \begin{function}[updated = 2024-12-24]{\color_select:n}
+% \begin{function}[updated = 2024-12-24]{\color_select:n, \color_select:V}
% \begin{syntax}
% \cs{color_select:n} \Arg{color expression}
% \end{syntax}
@@ -285,7 +285,8 @@
% color specification for typeset material.
% \end{function}
%
-% \begin{function}{\color_select:nn}
+% \begin{function}
+% {\color_select:nn, \color_select:nV, \color_select:Vn, \color_select:VV}
% \begin{syntax}
% \cs{color_select:nn} \Arg{model(s)} \Arg{value(s)}
% \end{syntax}
@@ -521,7 +522,7 @@
% \section{\pkg{l3color} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -532,7 +533,7 @@
%
% \begin{variable}
% {\l_@@_current_tl}
-% The color currently active for foreground (text, \emph{etc.}) material.
+% The color currently active for foreground (text, etc.) material.
% This is stored in the form of a color model followed by one or more
% values. There are four pre-defined models, three of which take numerical
% values in the range $[0,1]$:
@@ -1437,8 +1438,9 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\color_select:n}
-% \begin{macro}{\color_select:nn}
+% \begin{macro}{\color_select:n, \color_select:V}
+% \begin{macro}
+% {\color_select:nn, \color_select:nV, \color_select:Vn, \color_select:VV}
% \begin{macro}{\@@_select_main:Nnn}
% \begin{macro}{\@@_select_main:Nw, \@@_select_loop:Nw}
% \begin{macro}{\@@_select:nnN}
@@ -1454,6 +1456,7 @@
\@@_finalise_current:
\@@_select:N \l_@@_current_tl
}
+\cs_generate_variant:Nn \color_select:n { V }
\cs_new_protected:Npn \color_select:nn #1#2
{
\@@_select_main:Nnn \l_@@_current_tl {#1} {#2}
@@ -1460,6 +1463,7 @@
\@@_finalise_current:
\@@_select:N \l_@@_current_tl
}
+\cs_generate_variant:Nn \color_select:nn { nV , V , VV }
% \end{macrocode}
% If the first color model is the fixed one, or if there is no fixed
% model, we don't need most of the data: just set up and apply the backend
@@ -2028,7 +2032,6 @@
\@@_tmp:w { HTML } { rgb }
\@@_tmp:w { space-sep-cmyk } { cmyk }
\@@_tmp:w { space-sep-rgb } { rgb }
-
\group_end:
% \end{macrocode}
% \end{macro}
@@ -3250,7 +3253,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -60,7 +60,7 @@
% see~\ref{sec:l3kernel-functions:l3debug-internals}.
%
% \begin{macrocode}
-%<*package>
+%<*def>
% \end{macrocode}
%
% \begin{macrocode}
@@ -69,7 +69,7 @@
%
% Standard file identification.
% \begin{macrocode}
-\ProvidesExplFile{l3debug.def}{2025-03-26}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2025-04-14}{}{L3 Debugging support}
% \end{macrocode}
%
% \begin{variable}{\s_@@_stop}
@@ -1470,7 +1470,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</def>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -63,7 +63,7 @@
% \section{\pkg{l3deprecation} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -459,6 +459,19 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[deprecated, EXP, pTF]{\sys_if_timer_exist:}
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2025-03-26 } { (no~longer~required) }
+\cs_new:Npn \sys_if_timer_exist:T #1 {#1}
+\__kernel_patch_deprecation:nnNNpn { 2025-03-26 } { (no~longer~required) }
+\cs_new:Npn \sys_if_timer_exist:F #1 { }
+\__kernel_patch_deprecation:nnNNpn { 2025-03-26 } { (no~longer~required) }
+\cs_new:Npn \sys_if_timer_exist:TF #1#2 {#1}
+\__kernel_patch_deprecation:nnNNpn { 2025-03-26 } { (no~longer~required) }
+\cs_new:Npn \sys_if_timer_exist_p: { \c_true_bool }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Deprecated \pkg{l3text} functions}
%
% \begin{macrocode}
@@ -684,7 +697,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -71,7 +71,7 @@
% This isn't included in the typeset documentation because it's a bit
% ugly:
%<*class>
-\ProvidesExplClass{l3doc}{2025-03-26}{}
+\ProvidesExplClass{l3doc}{2025-04-14}{}
{L3 Experimental documentation class}
%</class>
% \fi
@@ -84,7 +84,7 @@
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
% \maketitle
% \tableofcontents
%
@@ -138,11 +138,11 @@
%
% \begin{itemize}
% \item Provides \cs{DescribeRoutine} and the \env{routine}
-% environment (\emph{etc.}) for MetaFont and MetaPost code.
+% environment (etc.) for MetaFont and MetaPost code.
% \item Provides \cs{DescribeVariable} and the \env{variable}
-% environment (\emph{etc.}) for more general code.
+% environment (etc.) for more general code.
% \item Provides \cs{Describe} and the \env{Code} environment
-% (\emph{etc.}) as a generalisation of the above two
+% (etc.) as a generalisation of the above two
% instantiations.
% \item Small tweaks to the DocStrip system to aid non-\LaTeX{} use.
% \end{itemize}
@@ -472,7 +472,7 @@
% \cs{tl_if_empty:NTF} \meta{tl~var} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{tl~var} is entirely empty
-% (\emph{i.e.}~contains no tokens at all).
+% (i.e., contains no tokens at all).
% \end{function}
% \end{verbatim}
% \hrulefill
@@ -485,7 +485,7 @@
% \cs{tl_if_empty:NTF} \meta{tl~var} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{tl~var} is entirely empty
-% (\emph{i.e.}~contains no tokens at all).
+% (i.e., contains no tokens at all).
% \end{function}
% \end{minipage}
% \end{framed}
@@ -585,7 +585,7 @@
% \env{function} and \env{macro} respectively, its name is stored in a
% sequence for later processing.
%
-% At the end of the document (\emph{i.e.}, after the \file{.dtx} file
+% At the end of the document (i.e., after the \file{.dtx} file
% has finished processing), the list of names is analysed to check
% whether all defined functions have been documented and vice versa. The
% results are printed in the console output.
@@ -681,7 +681,7 @@
%
% \begin{variable}{\l_@@_output_coffin}
% The \env{function} environment is typeset by combining coffins
-% containing various pieces (function names, description, \emph{etc.})
+% containing various pieces (function names, description, etc.)
% into this coffin.
% \begin{macrocode}
\coffin_new:N \l_@@_output_coffin
@@ -2837,7 +2837,6 @@
\multicolumn { 2 } { @{} r @{} }
{ \scriptsize New: \, \l_@@_date_added_tl } \\
}
-
\tl_if_empty:NF \l_@@_date_updated_tl
{
\multicolumn { 2 } { @{} r @{} }
@@ -4300,7 +4299,7 @@
% \item key
% \item macro
% \item module
-% \item index `type' (\texttt{main}/\texttt{usage}/\emph{etc.})
+% \item index `type' (\texttt{main}/\texttt{usage}/etc.)
% \item boolean whether internal command
% \end{arguments}
% \begin{macrocode}
@@ -4340,7 +4339,7 @@
% \item index subheading string
% \item index subheading text
% \item index subheading suffix (appended to both arg 3 and 4)
-% \item index `type' (\texttt{main}/\texttt{usage}/\emph{etc.})
+% \item index `type' (\texttt{main}/\texttt{usage}/etc.)
% \end{arguments}
% \begin{macrocode}
{
@@ -4620,7 +4619,6 @@
{
\tl_to_str:n
{
-
alignment, ampersand, atsign, backslash, catcode, circumflex,
code, colon, document, dollar, e, empty, false, hash, inf,
initex, job, left, log, math, mark, max, minus, nan, nil, no,
@@ -4628,7 +4626,6 @@
stop, term, tilde, tmpa, tmpb, true, underscore, zero, one, two,
three, four, five, six, seven, eight, nine, ten, eleven, twelve,
thirteen, fourteen, fifteen, sixteen, thirty, hundred
-
}
}
% \end{macrocode}
@@ -4706,7 +4703,7 @@
% These definitions are only used by the \LaTeX3 documentation; they are
% not necessary for third-party users of \cls{l3doc}. In time this will
% be broken into a separate package that is specifically loaded in the
-% various \pkg{expl3} modules, \emph{etc.}
+% various \pkg{expl3} modules, etc.
%
% \begin{macrocode}
%<*cfg>
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -553,7 +553,7 @@
% These functions absorb four arguments and expand the second, third
% and fourth as detailed by their argument specifier. The first
% argument of the function is then the next item on the input stream,
-% followed by the expansion of the second argument, \emph{etc.}
+% followed by the expansion of the second argument, etc.
% \end{function}
%
% \section{Unbraced expansion}
@@ -912,7 +912,7 @@
% \section{\pkg{l3expan} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1586,7 +1586,7 @@
% need a method to invoke \TeX's expansion mechanism in such a way
% that (a) we are able to stop it in a controlled manner and (b) the
% result of what triggered the expansion in the first place is null,
-% i.e.\@, that we do not get any unwanted side effects. There aren't
+% i.e., that we do not get any unwanted side effects. There aren't
% that many possibilities in \TeX{}; in fact the one explained below
% might well be the only one (as normally the result of expansion is
% not null).
@@ -2401,7 +2401,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -137,7 +137,7 @@
% \meta{stream} is available for access immediately and will remain
% allocated to \meta{file name} until a \cs{iow_close:N} instruction
% is given or the \TeX{} run ends. Opening a file for writing clears
-% any existing content in the file (\emph{i.e.}~writing is \emph{not}
+% any existing content in the file (i.e., writing is \emph{not}
% additive).
% \end{function}
%
@@ -296,7 +296,7 @@
% \end{texnote}
% \end{function}
%
-% All mappings are done at the current group level, \emph{i.e.}~any
+% All mappings are done at the current group level, i.e., any
% local assignments made by the \meta{function} or \meta{code} discussed
% below remain in effect after the loop.
%
@@ -456,7 +456,7 @@
% \cs{iow_now:Nn} \meta{stream} \Arg{tokens}
% \end{syntax}
% This function writes \meta{tokens} to the specified
-% \meta{stream} immediately (\emph{i.e.}~the write operation is called
+% \meta{stream} immediately (i.e., the write operation is called
% on expansion of \cs{iow_now:Nn}).
% \end{function}
%
@@ -485,7 +485,7 @@
% \cs{iow_shipout:Nn} \meta{stream} \Arg{tokens}
% \end{syntax}
% This function writes \meta{tokens} to the specified
-% \meta{stream} when the current page is finalised (\emph{i.e.}~at
+% \meta{stream} when the current page is finalised (i.e., at
% shipout). The \texttt{e}-type variants expand the \meta{tokens}
% at the point where the function is used but \emph{not} when the
% resulting tokens are written to the \meta{stream}
@@ -508,7 +508,7 @@
% \cs{iow_shipout_e:Nn} \meta{stream} \Arg{tokens}
% \end{syntax}
% This function writes \meta{tokens} to the specified
-% \meta{stream} when the current page is finalised (\emph{i.e.}~at
+% \meta{stream} when the current page is finalised (i.e., at
% shipout). The \meta{tokens} are expanded at the time of writing
% in addition to any expansion when the function is used. This makes
% these functions suitable for including material finalised during
@@ -529,7 +529,7 @@
% \end{syntax}
% Inserts \meta{char} into the output stream. Useful when trying to
% write difficult characters such as |%|, |{|, |}|,
-% \emph{etc.}~in messages, for example:
+% etc.~in messages, for example:
% \begin{verbatim}
% \iow_now:Ne \g_my_iow { \iow_char:N \{ text \iow_char:N \} }
% \end{verbatim}
@@ -586,11 +586,11 @@
%
% Any expandable material in the \meta{text} which is not to be expanded
% on wrapping should be converted to a string using \cs{token_to_str:N},
-% \cs{tl_to_str:n}, \cs{tl_to_str:N}, \emph{etc.}
+% \cs{tl_to_str:n}, \cs{tl_to_str:N}, etc.
%
% The result of the wrapping operation is passed as a braced argument to the
% \meta{function}, which is typically a wrapper around a write
-% operation. The output of \cs{iow_wrap:nnnN} (\emph{i.e.}~the argument
+% operation. The output of \cs{iow_wrap:nnnN} (i.e., the argument
% passed to the \meta{function}) consists of characters of category
% \enquote{other} (category code~12), with the exception of spaces which
% have category \enquote{space} (category code~10). This means that the
@@ -685,7 +685,7 @@
% }
% Contain the directory, name and extension of the current file. The
% directory is empty if the file was loaded without an explicit
-% path (\emph{i.e.}~if it is in the \TeX{} search path), and does
+% path (i.e., if it is in the \TeX{} search path), and does
% \emph{not} end in |/| other than the case that it is exactly equal
% to the root directory. The \meta{name} and \meta{ext} parts together
% make up the file name, thus the \meta{name} part may be thought of
@@ -895,7 +895,7 @@
% \end{syntax}
% Searches for \meta{file name} in the path as detailed for
% \cs{file_if_exist:nTF}, and if found sets the \meta{tl var} the
-% fully-qualified name of the file, \emph{i.e.}~the path and file name.
+% fully-qualified name of the file, i.e., the path and file name.
% This includes an extension |.tex| when the given \meta{file name}
% has no extension but the file found has that extension.
% In the non-branching version, the \meta{tl var} will be set to
@@ -908,7 +908,7 @@
% \end{syntax}
% Searches for \meta{file name} in the path as detailed for
% \cs{file_if_exist:nTF}, and if found leaves the
-% fully-qualified name of the file, \emph{i.e.}~the path and file name,
+% fully-qualified name of the file, i.e., the path and file name,
% in the input stream.
% This includes an extension |.tex| when the given \meta{file name}
% has no extension but the file found has that extension.
@@ -1067,7 +1067,7 @@
% \TestFiles{m3file001}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \subsection{Input operations}
@@ -4048,7 +4048,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -183,7 +183,7 @@
% \section{\pkg{l3flag} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -388,7 +388,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
% \maketitle
%
% \begin{documentation}
@@ -54,7 +54,7 @@
% \section{\pkg{l3fp-assign} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -311,7 +311,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -56,7 +56,7 @@
% \section{\pkg{l3fp-aux} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -175,7 +175,7 @@
% \end{tabular}
% \end{table}
%
-% Calculations are done in base $10000$, \emph{i.e.} one myriad.
+% Calculations are done in base $10000$, i.e. one myriad.
%
% \subsection{Using arguments and semicolons}
%
@@ -1302,7 +1302,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -55,7 +55,7 @@
% \section{\pkg{l3fp-basics} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1062,7 +1062,7 @@
% Unfortunately, things are not as easy as they seem. In particular, we
% want all intermediate steps to be positive, since negative results
% would require extra calculations at the end. This requires that
-% $Q_{A} \leq 10^{4} A / Z$ \emph{etc.} A reasonable attempt would be
+% $Q_{A} \leq 10^{4} A / Z$ etc. A reasonable attempt would be
% to define $Q_{A}$ as
% \begin{equation*}
% \cs{int_eval:n} \left\{
@@ -1404,7 +1404,7 @@
% contribution of $5 \cdot P + \operatorname{sign}(T)$ with $T = 2 E -
% P Z$. This amounts to adding $P / 2$ to $Q_{D}$, with an extra
% \meta{rounding} digit. This \meta{rounding} digit is $0$ or $5$ if
-% $T$ does not contribute, \emph{i.e.,} if $0 = T = 2 E - P Z$, in
+% $T$ does not contribute, i.e., if $0 = T = 2 E - P Z$, in
% other words if $10^{16} A / Z$ is an integer or half-integer.
% Otherwise it is in the appropriate range, $[1,4]$ or $[6,9]$. This
% is precise enough for rounding purposes (in any mode).
@@ -1474,7 +1474,7 @@
% \end{quote}
% Here, $\varepsilon = \operatorname{sign}(T)$ is $0$ in case $2E=PZ$,
% $1$ in case $2E>PZ$, which means that $P$ was the correct value, but
-% not with an exact quotient, and $-1$ if $2E<PZ$, \emph{i.e.}, $P$
+% not with an exact quotient, and $-1$ if $2E<PZ$, i.e., $P$
% was an overestimate. The packing function we define now does
% nothing special: it removes the $10^{6}$ and carries two digits (for
% the $10^{5}$'s and the $10^{4}$'s).
@@ -2188,7 +2188,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -56,7 +56,7 @@
% \section{\texttt{l3fp-convert} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -489,7 +489,7 @@
% \@@_from_dim:wnnnnwNw,
% }
% The dimension expression (which can in fact be a glue expression) is
-% evaluated, converted to a number (\emph{i.e.}, expressed in scaled
+% evaluated, converted to a number (i.e., expressed in scaled
% points), then multiplied by $2^{-16} = 0.0000152587890625$ to give a
% value expressed in points. The auxiliary \cs{@@_mul_npos_o:Nww}
% expects the desired \meta{final sign} and two floating point
@@ -573,7 +573,7 @@
% \end{macro}
%
% \begin{macro}[EXP]{\fp_max:nn, \fp_min:nn}
-% Similar to \cs{fp_abs:n}, for consistency with \cs{int_max:nn}, \emph{etc.}
+% Similar to \cs{fp_abs:n}, for consistency with \cs{int_max:nn}, etc.
% \begin{macrocode}
\cs_new:Npn \fp_max:nn #1#2
{ \fp_to_decimal:n { max ( \@@_parse:n {#1} , \@@_parse:n {#2} ) } }
@@ -623,7 +623,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -55,7 +55,7 @@
% \section{\pkg{l3fp-expo} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -297,7 +297,7 @@
% \right\rfloor.
% \]
% (The $1/2$ comes from how \eTeX{} rounds.) As for division, it is
-% easy to see that $Q_{1} \leq 10^4 A / Z$, \emph{i.e.}, $Q_{1}$
+% easy to see that $Q_{1} \leq 10^4 A / Z$, i.e., $Q_{1}$
% is an underestimate.
%
% Exactly as we did for division, we set $B = 10^4 A - Q_{1}Z$. Then
@@ -1395,7 +1395,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -55,7 +55,7 @@
% \section{\pkg{l3fp-extended} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1276,7 +1276,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-functions.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -55,7 +55,7 @@
% \section{\pkg{l3fp-functions} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -283,7 +283,7 @@
% ^^A todo: add check for number of args
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -55,7 +55,7 @@
% \section{\pkg{l3fp-logic} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -173,7 +173,7 @@
% if $x=y$, $1$ if $x>y$, and $2$ otherwise (denoted as $x?y$). If
% either operand is \texttt{nan}, stop the comparison with
% \cs{@@_compare_nan:w} returning $2$. If $x$ is negative, swap the
-% outputs $1$ and $-1$ (\emph{i.e.}, $>$ and $<$); we can henceforth
+% outputs $1$ and $-1$ (i.e., $>$ and $<$); we can henceforth
% assume that $x\geq 0$. If $y\geq 0$, and they have the same type,
% either they are normal and we compare them with
% \cs{@@_compare_npos:nwnw}, or they are equal. If $y\geq 0$, but of
@@ -748,7 +748,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -55,7 +55,7 @@
% \section{\pkg{l3fp-parse} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2890,7 +2890,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -55,7 +55,7 @@
% \section{\pkg{l3fp-random} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -623,7 +623,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -56,7 +56,7 @@
% \section{\pkg{l3fp-round} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -98,7 +98,6 @@
}
\cs_new:Npn \@@_parse_round:Nw #1 #2 \@@_round_to_nearest:NNN #3#4
{ #2 #1 #3 }
-
% \end{macrocode}
% \end{macro}
%
@@ -342,7 +341,7 @@
% $15$ (non-all-zero) digits before \meta{digit_1}, subtract from it
% $\meta{final sign}0.0\ldots{}0\meta{digit_2}$, where there are $16$~zeros.
% If in the current rounding mode the result should be rounded down,
-% then this function returns |1\exp_stop_f:|. Otherwise, \emph{i.e.},
+% then this function returns |1\exp_stop_f:|. Otherwise, i.e.,
% if the result is rounded back to the first operand, then this function
% returns |0\exp_stop_f:|.
%
@@ -585,7 +584,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-symbolic.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -55,7 +55,7 @@
% \section{\pkg{l3fp-symbolic} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -693,7 +693,7 @@
% comparisons, |round|, |atan|, |acot|.
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
% \maketitle
%
% \begin{documentation}
@@ -54,7 +54,7 @@
% \section{\pkg{l3fp-traps} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -398,7 +398,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -55,7 +55,7 @@
% \section{\pkg{l3fp-trig} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1718,7 +1718,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-types.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -55,7 +55,7 @@
% \section{\pkg{l3fp-types} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -176,7 +176,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -67,7 +67,7 @@
% and parentheses.
% \item Comparison operators: $x\mathop{\mathtt{<}}y$,
% $x\mathop{\mathtt{<=}}y$, $x\mathop{\mathtt{>?}}y$,
-% $x\mathop{\mathtt{!=}}y$ \emph{etc.}
+% $x\mathop{\mathtt{!=}}y$ etc.
% \item Boolean logic: sign $\operatorname{sign} x$,
% negation $\mathop{!}x$, conjunction
% $x\mathop{\&\&}y$, disjunction $x\mathop{\vert\vert}y$, ternary
@@ -1003,7 +1003,7 @@
% replaced by $\pm\infty$), or an underflow (resulting in $\pm 0$).
%
% The result is thus $\pm 0$ if and only if \meta{significand} contains no
-% non-zero digit (\emph{i.e.}, consists only in characters~|0|, and an
+% non-zero digit (i.e., consists only in characters~|0|, and an
% optional period), or if there is an underflow. Note that a
% single dot is currently a valid floating point number, equal to~$+0$,
% but that is not guaranteed to remain true.
@@ -1289,7 +1289,7 @@
% or~\nan{}; if $n=\nan{}$, this yields \nan{}; if
% $n$~is neither $\pm\infty$ nor an integer, then an \enquote{invalid
% operation} exception is raised. When \meta{fp expr_2} is omitted,
-% $n=0$, \emph{i.e.}, \meta{fp expr_1} is rounded to an integer. The
+% $n=0$, i.e., \meta{fp expr_1} is rounded to an integer. The
% rounding direction depends on the function.
% \begin{itemize}
% \item |round| yields the multiple of~$10^{-n}$ closest to~$x$,
@@ -1338,7 +1338,7 @@
% \end{syntax}
% Computes the sine, cosine, tangent, cotangent, cosecant, or secant
% of the \meta{fp expr} given in radians. For arguments given in
-% degrees, see \texttt{sind}, \texttt{cosd}, \emph{etc.} Note that
+% degrees, see \texttt{sind}, \texttt{cosd}, etc. Note that
% since $\pi$~is irrational, $\operatorname{sin}(8\mathrm{pi})$ is not quite
% zero, while its analogue $\operatorname{sind}(8\times 180)$ is exactly
% zero. The trigonometric functions are undefined for
@@ -1362,7 +1362,7 @@
% \end{syntax}
% Computes the sine, cosine, tangent, cotangent, cosecant, or secant
% of the \meta{fp expr} given in degrees. For arguments given in
-% radians, see \texttt{sin}, \texttt{cos}, \emph{etc.} Note that
+% radians, see \texttt{sin}, \texttt{cos}, etc. Note that
% since $\pi$~is irrational, $\operatorname{sin}(8\mathrm{pi})$ is not quite
% zero, while its analogue $\operatorname{sind}(8\times 180)$ is exactly
% zero. The trigonometric functions are undefined for
@@ -1386,7 +1386,7 @@
% \meta{fp expr} and returns the result in radians, in the range
% $[-\pi/2,\pi/2]$ for \texttt{asin} and \texttt{acsc} and $[0,\pi]$
% for \texttt{acos} and \texttt{asec}. For a result in degrees, use
-% \texttt{asind}, \emph{etc.} If the argument of |asin| or |acos|
+% \texttt{asind}, etc. If the argument of |asin| or |acos|
% lies outside the range $[-1,1]$, or the argument of |acsc| or |asec|
% inside the range $(-1,1)$, an \enquote{invalid operation} exception
% is raised. \enquote{Underflow} and \enquote{overflow} occur when
@@ -1406,7 +1406,7 @@
% \meta{fp expr} and returns the result in degrees, in the range
% $[-90,90]$ for \texttt{asind} and \texttt{acscd} and $[0,180]$ for
% \texttt{acosd} and \texttt{asecd}. For a result in radians, use
-% \texttt{asin}, \emph{etc.} If the argument of |asind| or |acosd| lies
+% \texttt{asin}, etc. If the argument of |asind| or |acosd| lies
% outside the range $[-1,1]$, or the argument of |acscd| or |asecd|
% inside the range $(-1,1)$, an \enquote{invalid operation} exception
% is raised. \enquote{Underflow} and \enquote{overflow} occur when
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -136,7 +136,7 @@
% \section{\pkg{l3fparray} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -420,7 +420,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3graphics.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3graphics.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -176,7 +176,7 @@
% \section{\pkg{l3graphics} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -778,7 +778,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -814,7 +814,7 @@
% The resulting tokens are digits with category code $12$ (other) and
% letters with category code $11$ (letter).
% \begin{texnote}
-% This is a generic version of \cs{int_to_bin:n}, \emph{etc.}
+% This is a generic version of \cs{int_to_bin:n}, etc.
% \end{texnote}
% \end{function}
%
@@ -1061,7 +1061,7 @@
% \end{syntax}
% Selects a case to execute based on the value of the \meta{integer}. The
% first case (\meta{case_0}) is executed if \meta{integer} is $0$, the second
-% (\meta{case_1}) if the \meta{integer} is $1$, \emph{etc.} The
+% (\meta{case_1}) if the \meta{integer} is $1$, etc. The
% \meta{integer} may be a literal, a constant or an integer
% expression (\emph{e.g.}~using \cs{int_eval:n}).
% \begin{texnote}
@@ -1092,7 +1092,7 @@
% \section{\pkg{l3int} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2748,7 +2748,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -58,7 +58,7 @@
% \item The size of the array is fixed and must be given at
% point of initialisation
% \item The absolute value of each entry has maximum $2^{30}-1$
-% (\emph{i.e.}~one power lower than the usual \cs{c_max_int}
+% (i.e., one power lower than the usual \cs{c_max_int}
% ceiling of $2^{31}-1$)
% \end{itemize}
% The use of \texttt{intarray} data is therefore recommended for cases where
@@ -187,11 +187,11 @@
% \section{\pkg{l3intarray} implementation}
%
% \begin{macrocode}
-%<*package>
+%<@@=intarray>
% \end{macrocode}
%
% \begin{macrocode}
-%<@@=intarray>
+%<*code>
% \end{macrocode}
%
% There are two implementations for this module: One \cs{fontdimen} based one
@@ -199,7 +199,6 @@
%
% Both versions do not allow negative array sizes.
% \begin{macrocode}
-%<*tex>
\msg_new:nnn { kernel } { negative-array-size }
{ Size~of~array~may~not~be~negative:~#1 }
% \end{macrocode}
@@ -229,7 +228,7 @@
% \begin{macrocode}
\int_new:N \g_@@_table_int
\int_new:N \l_@@_bad_index_int
-%</tex>
+%</code>
% \end{macrocode}
% \end{variable}
%
@@ -254,7 +253,7 @@
% Every \texttt{intarray} must be global; it's enough to run this
% check in \cs{intarray_new:Nn}.
% \begin{macrocode}
-%<*tex>
+%<*code>
\cs_new_protected:Npn \@@_new:N #1
{
\__kernel_chk_if_free_cs:N #1
@@ -272,7 +271,7 @@
}
}
\cs_generate_variant:Nn \intarray_new:Nn { c }
-%</tex>
+%</code>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -358,9 +357,9 @@
% \end{macrocode}
%
% \begin{macrocode}
-%<*tex>
+%<*code>
\cs_generate_variant:Nn \intarray_count:N { c }
-%</tex>
+%</code>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -401,7 +400,7 @@
% \cs{int_value:w}. The user version checks the position and value
% are within bounds.
% \begin{macrocode}
-%<*tex>
+%<*code>
\cs_new_protected:Npn \__kernel_intarray_gset:Nnn #1#2#3
{ \@@_gset:w #2 #1 #3 \scan_stop: }
\cs_new_protected:Npn \intarray_gset:Nnn #1#2#3
@@ -413,7 +412,7 @@
}
}
\cs_generate_variant:Nn \intarray_gset:Nnn { c }
-%</tex>
+%</code>
% \end{macrocode}
% \end{macro}
%
@@ -429,9 +428,9 @@
end
end, 'global', 'protected')
%</lua>
-%<*tex>
+%<*code>
\cs_generate_variant:Nn \intarray_gzero:N { c }
-%</tex>
+%</code>
% \end{macrocode}
% \end{macro}
%
@@ -469,7 +468,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%<*tex>
+%<*code>
\cs_new:Npn \__kernel_intarray_item:Nn #1#2
{ \@@_item:w #2 #1 }
\cs_new:Npn \intarray_item:Nn #1#2
@@ -524,7 +523,7 @@
% an issue since the delimiter is always just a comma or a comma and a space.
% In both cases \texttt{sprint(2, ...)} provides the right catcodes.
% \begin{macrocode}
-%</tex>
+%</code>
%<*lua>
local concat = table.concat
luacmd('@@_to_clist:Nn', function()
@@ -539,13 +538,13 @@
% \begin{macro}[rEXP]{\__kernel_intarray_range_to_clist:Nnn, \@@_range_to_clist:w}
% Loop through part of the array.
% \begin{macrocode}
-%<*tex>
+%<*code>
\cs_new:Npn \__kernel_intarray_range_to_clist:Nnn #1#2#3
{
\@@_range_to_clist:w #1
\int_eval:n {#2} ~ \int_eval:n {#3} ~
}
-%</tex>
+%</code>
%<*lua>
luacmd('@@_range_to_clist:w', function()
local t = @@_table()
@@ -560,12 +559,12 @@
% \begin{macro}{\__kernel_intarray_gset_range_from_clist:Nnn, \@@_gset_range:nNw}
% Loop through part of the array. We allow additional commas at the end.
% \begin{macrocode}
-%<*tex>
+%<*code>
\cs_new_protected:Npn \__kernel_intarray_gset_range_from_clist:Nnn #1#2#3
{
\@@_gset_range:w \int_eval:w #2 #1 #3 , , \scan_stop:
}
-%</tex>
+%</code>
%<*lua>
luacmd('@@_gset_range:w', function()
local from = scan_int()
@@ -595,7 +594,7 @@
% since the Lua implementation accepts all integers which could be tested with
% \cs{tex_ifabsnum:D}.
% \begin{macrocode}
-%<*tex>
+%<*code>
\cs_new_protected:Npn \@@_gset_overflow_test:nw #1
{
}
@@ -965,8 +964,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</tex>
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -232,7 +232,7 @@
% Carries out expansion on the \meta{expandable tokens} before preventing
% further expansion of the \meta{content} as for \cs{exp_not:n}. Typically,
% the \meta{expandable tokens} will alter the nature of the \meta{content},
-% \emph{i.e.}~allow it to be generated in some way.
+% i.e., allow it to be generated in some way.
% \end{function}
%
% \begin{variable}{\l__kernel_expl_bool}
@@ -412,7 +412,7 @@
% This integer is used by non-expandable mapping functions to track
% the level of nesting in force. The functions
% \cs[no-index]{\meta{type}_map_1:w},
-% \cs[no-index]{\meta{type}_map_2:w}, \emph{etc.}, labelled by
+% \cs[no-index]{\meta{type}_map_2:w}, etc., labelled by
% \cs{g__kernel_prg_map_int}
% hold functions to be mapped over various list datatypes in inline
% and variable mappings.
@@ -595,7 +595,7 @@
% Carries out expansion on the \meta{expandable tokens} before conversion of
% the \meta{tokens} to a string as describe for \cs{tl_to_str:n}. Typically,
% the \meta{expandable tokens} will alter the nature of the \meta{tokens},
-% \emph{i.e.}~allow it to be generated in some way. This function requires
+% i.e., allow it to be generated in some way. This function requires
% only a single expansion.
% \end{function}
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -160,7 +160,7 @@
%
% Key properties are applied in the reading order and so the ordering
% is significant. Key properties which define \enquote{actions}, such
-% as |.code:n|, |.tl_set:N|, \emph{etc.}, override one another.
+% as |.code:n|, |.tl_set:N|, etc., override one another.
% Some other properties are mutually exclusive, notably |.value_required:n|
% and |.value_forbidden:n|, and so they replace one another. However,
% properties covering non-exclusive behaviours may be given in any order. Thus
@@ -495,7 +495,7 @@
% \end{syntax}
% Defines \meta{key} to set \meta{string variable} to \meta{value},
% which will be subjected to an \texttt{e}-type expansion
-% (\emph{i.e.}~using \cs{str_set:Ne}). If the variable does not exist,
+% (i.e., using \cs{str_set:Ne}). If the variable does not exist,
% it is created globally at the point that the key is set up.
% \end{function}
%
@@ -515,7 +515,7 @@
% \end{syntax}
% Defines \meta{key} to set \meta{tl~var} to \meta{value},
% which will be subjected to an \texttt{e}-type expansion
-% (\emph{i.e.}~using \cs{tl_set:Ne}). If the variable does not exist,
+% (i.e., using \cs{tl_set:Ne}). If the variable does not exist,
% it is created globally at the point that the key is set up.
% \end{function}
%
@@ -610,7 +610,7 @@
% available to indicate the name of the current choice, and its position in
% the comma list. The position is indexed from~$1$. Note that, as with
% standard key code generated using \texttt{.code:n}, the value passed to
-% the key (i.e.~the choice name) is also available as |#1|.
+% the key (i.e., the choice name) is also available as |#1|.
% \end{variable}
%
% On the other hand, it is sometimes useful to create choices which
@@ -631,7 +631,7 @@
% should \emph{not} use \cs{l_keys_choice_tl} or \cs{l_keys_choice_int}.
% These variables do not have defined behaviour when used outside of
% code created using \texttt{.choices:nn}
-% (\emph{i.e.}~anything might happen).
+% (i.e., anything might happen).
%
% It is possible to allow choice keys to take values which have not previously
% been defined by adding code for the special \texttt{unknown} choice. The
@@ -856,7 +856,7 @@
%
% In addition, \cs{keys_set_known:nnN} and \cs{keys_set_known:nnnN}
% store the key--value pairs for unknown keys in the \meta{tl~var}
-% in comma-separated form (\emph{i.e.}~an edited version of the
+% in comma-separated form (i.e., an edited version of the
% \meta{keyval list}). When a \meta{root} is given
% (\cs{keys_set_known:nnnN}), the key--value entries are returned
% relative to this point in the key tree. When it is absent, only the
@@ -885,7 +885,7 @@
%
% In addition, \cs{keys_set_groups:nnnN} and \cs{keys_set_groups:nnnnN}
% store the key--value pairs for skipped keys in the \meta{tl~var}
-% in comma-separated form (\emph{i.e.}~an edited version of the
+% in comma-separated form (i.e., an edited version of the
% \meta{keyval list}). When a \meta{root} is given
% (\cs{keys_set_groups:nnnnN}), the key--value entries are returned
% relative to this point in the key tree. When it is absent, only the
@@ -915,7 +915,7 @@
% In addition, \cs{keys_set_exclude_groups:nnnN} and
% \cs{keys_set_exclude_groups:nnnnN} store the key--value pairs for
% skipped keys in the \meta{tl~var} in comma-separated form
-% (\emph{i.e.}~an edited version of the \meta{keyval list}). When a
+% (i.e., an edited version of the \meta{keyval list}). When a
% \meta{root} is given (\cs{keys_set_exclude_groups:nnnnN}), the
% key--value entries are returned relative to this point in the key
% tree. When it is absent, only the key name and value are provided.
@@ -950,7 +950,7 @@
% \cs{keys_if_exist_p:nn} \Arg{module} \Arg{key} \\
% \cs{keys_if_exist:nnTF} \Arg{module} \Arg{key} \Arg{true code} \Arg{false code}
% \end{syntax}
-% Tests if the \meta{key} exists for \meta{module}, \emph{i.e.}~if any code
+% Tests if the \meta{key} exists for \meta{module}, i.e., if any code
% has been defined for \meta{key}.
% \end{function}
%
@@ -961,7 +961,7 @@
% \cs{keys_if_choice_exist:nnnTF} \Arg{module} \Arg{key} \Arg{choice} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{choice} is defined for the \meta{key} within the
-% \meta{module}, \emph{i.e.}~if any code has been defined for
+% \meta{module}, i.e., if any code has been defined for
% \meta{key}/\meta{choice}. The test is \texttt{false} if the \meta{key}
% itself is not defined.
% \end{function}
@@ -1112,7 +1112,7 @@
% \section{\pkg{l3keys} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \subsection{Low-level interface}
@@ -1611,6 +1611,13 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\l_@@_inherit_bool}
+% For inheritance, particularly for recursion.
+% \begin{macrocode}
+\bool_new:N \l_@@_inherit_bool
+% \end{macrocode}
+% \end{variable}
+%
% \begin{variable}{\l_@@_inherit_clist}
% For normalisation.
% \begin{macrocode}
@@ -3273,6 +3280,7 @@
% \end{macro}
%
% \begin{macro}{\@@_execute:, \@@_execute_inherit:, \@@_execute_unknown:}
+% \begin{macro}{\@@_execute_inherit:n}
% \begin{macro}[EXP]{\@@_execute:nn, \@@_execute:no}
% \begin{macro}{\@@_store_unused:,\@@_store_unused_aux:}
% Actually executing a key is done in two parts. First, look for the
@@ -3296,25 +3304,38 @@
}
}
% \end{macrocode}
-% To deal with the case where there is no hit, we leave
-% \cs{@@_execute_unknown:} in the input stream and clean it up using the
-% break function: that avoids needing a boolean.
+% Dealing with inheritance and recursion makes life a little interesting.
% \begin{macrocode}
\cs_new_protected:Npn \@@_execute_inherit:
{
+ \bool_set_false:N \l_@@_inherit_bool
\clist_map_inline:cn
{ \c_@@_inherit_root_str \@@_parent:o \l_keys_path_str }
+ { \@@_excute_inherit:n {##1} }
+ \bool_if:NF \l_@@_inherit_bool
+ { \@@_execute_unknown: }
+ }
+\cs_new_protected:Npn \@@_excute_inherit:n #1
+ {
+ \cs_if_exist:cTF
+ { \c_@@_inherit_root_str #1 }
{
+ \clist_map_inline:cn { \c_@@_inherit_root_str #1 }
+ { \@@_excute_inherit:n {##1} }
+ \bool_if:NT \l_@@_inherit_bool
+ { \clist_map_break: }
+ }
+ {
\cs_if_exist:cT
- { \c_@@_code_root_str ##1 / \l_keys_key_str }
+ { \c_@@_code_root_str #1 / \l_keys_key_str }
{
- \str_set:Nn \l_@@_inherit_str {##1}
- \cs_if_exist_use:c { \c_@@_check_root_str ##1 / \l_keys_key_str }
- \@@_execute:no { ##1 / \l_keys_key_str } \l_keys_value_tl
- \clist_map_break:n \use_none:n
+ \str_set:Nn \l_@@_inherit_str {#1}
+ \cs_if_exist_use:c { \c_@@_check_root_str #1 / \l_keys_key_str }
+ \@@_execute:no { #1 / \l_keys_key_str } \l_keys_value_tl
+ \clist_map_break:n
+ { \bool_set_true:N \l_@@_inherit_bool }
}
}
- \@@_execute_unknown:
}
\cs_new_protected:Npn \@@_execute_unknown:
{
@@ -3433,6 +3454,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}[EXP]{\@@_choice_find:n}
% \begin{macro}[EXP]{\@@_choice_find:nn}
@@ -3729,7 +3751,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
%\end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -93,7 +93,7 @@
% \section{\pkg{l3legacy} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -153,7 +153,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -84,7 +84,7 @@
% converting line ends to spaces in the usual \TeX{} manner and which
% respects currently-applicable \TeX{} category codes. The resulting
% \meta{\Lua{} input} is passed to the \Lua{} interpreter when the
-% current page is finalised (\emph{i.e.}~at shipout). Each
+% current page is finalised (i.e., at shipout). Each
% \cs{lua_shipout:n} block is treated by \Lua{} as a separate chunk.
% The \Lua{} interpreter will execute the \meta{\Lua{} input} during the
% page-building routine: no \TeX{} expansion of the \meta{\Lua{} input}
@@ -194,19 +194,15 @@
% \section{\pkg{l3luatex} implementation}
%
% \begin{macrocode}
-%<*package>
+%<@@=lua>
% \end{macrocode}
%
% \subsection{Breaking out to \Lua{}}
%
% \begin{macrocode}
-%<*tex>
+%<*code>
% \end{macrocode}
%
-% \begin{macrocode}
-%<@@=lua>
-% \end{macrocode}
-%
% \begin{macro}[EXP]{\@@_escape:n, \@@_now:n, \@@_shipout:n}
% Copies of primitives.
% \begin{macrocode}
@@ -293,7 +289,6 @@
The~feature~you~are~using~is~only~available~
with~the~LuaTeX~engine.~LaTeX3~ignored~'#1'.
}
-
\msg_new:nnnn { luatex } { module-not-found }
{ Lua~module~`#1'~not~found. }
{
@@ -303,13 +298,12 @@
The~Lua~loader~provided~this~additional~information: \\
#2
}
-
\prop_gput:Nnn \g_msg_module_name_prop { luatex } { LaTeX }
\prop_gput:Nnn \g_msg_module_type_prop { luatex } { }
% \end{macrocode}
%
% \begin{macrocode}
-%</tex>
+%</code>
% \end{macrocode}
%
% \subsection{\Lua{} functions for internal use}
@@ -660,10 +654,6 @@
%
% \subsection{Preserving iniTeX Lua data for runs}
%
-% \begin{macrocode}
-%<@@=lua>
-% \end{macrocode}
-%
% The Lua state is not dumped when a format is written, therefore any Lua
% variables filled doing format building need to be restored in order to
% be accessible during normal runs.
@@ -741,10 +731,6 @@
%</lua>
% \end{macrocode}
%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
%\end{implementation}
%
%\PrintIndex
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -736,7 +736,7 @@
% \section{\pkg{l3msg} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1758,7 +1758,7 @@
% Redirections which are less specific than the argument of
% \cs{@@_use_redirect_module:n} are not attempted. This argument is
% empty for a class redirection, \texttt{/module} for a module
-% redirection, \emph{etc.} Loop through the sequence to find the most
+% redirection, etc. Loop through the sequence to find the most
% specific redirection, with module |##1|. The loop is interrupted
% after testing for a redirection for |##1| equal to the argument |#1|
% (least specific redirection allowed). When a redirection is found,
@@ -2041,12 +2041,6 @@
LaTeX~has~been~asked~to~replace~an~empty~pattern~by~'#1':~that~
would~lead~to~an~infinite~loop!
}
-\cs_if_exist:NF \tex_elapsedtime:D
- {
- \msg_new:nnnn { kernel } { no-elapsed-time }
- { No~clock~detected~for~#1. }
- { The~current~engine~provides~no~way~to~access~the~system~time. }
- }
\msg_new:nnnn { kernel } { non-base-function }
{ Function~'#1'~is~not~a~base~function }
{
@@ -2454,7 +2448,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -75,10 +75,6 @@
%
% \section{\pkg{l3names} implementation}
%
-% \begin{macrocode}
-%<*package&tex>
-% \end{macrocode}
-%
% The prefix here is \texttt{kernel}. A few places need |@@| to be left
% as is; this is obtained as |@@@@|.
% \begin{macrocode}
@@ -85,6 +81,10 @@
%<@@=kernel>
% \end{macrocode}
%
+% \begin{macrocode}
+%<*code>
+% \end{macrocode}
+%
% The code here simply renames all of the primitives to new, internal,
% names.
%
@@ -112,9 +112,8 @@
%
% To allow extracting \enquote{just the names}, a bit of DocStrip fiddling.
% \begin{macrocode}
-%</package&tex>
-%<*names|tex>
-%<*names|package>
+%</code>
+%<*names|code>
% \end{macrocode}
%
% In the current incarnation of this module, all \TeX{} primitives
@@ -694,8 +693,8 @@
% for \LuaTeX{} tracking all of that would be hard. Instead, we now check that
% we only save primitives if they actually exist.
% \begin{macrocode}
-%</names|package>
-%<*package>
+%</names|code>
+%<*code>
\tex_long:D \tex_def:D \use_ii:nn #1#2 {#2}
\tex_long:D \tex_def:D \use_none:n #1 { }
\tex_long:D \tex_def:D \@@_primitive:NN #1#2
@@ -705,8 +704,8 @@
\tex_fi:D
\use_none:n { \tex_global:D \tex_let:D #2 #1 }
}
-%</package>
-%<*names|package>
+%</code>
+%<*names|code>
% \end{macrocode}
% Some \pdfTeX{} primitives are handled here because they got dropped in
% \LuaTeX{} but the corresponding internal names are emulated later. The
@@ -1272,10 +1271,8 @@
% \end{macrocode}
% End of the \enquote{just the names} part of the source.
% \begin{macrocode}
-%</names|package>
-%</names|tex>
-%<*package>
-%<*tex>
+%</names|code>
+%<*code>
% \end{macrocode}
%
% The job is done: close the group (using the primitive renamed!).
@@ -1453,7 +1450,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</tex>
+%</code>
% \end{macrocode}
%
% In \LuaTeX{}, we additionally emulate some primitives using Lua code.
@@ -1559,10 +1556,6 @@
%</lua>
% \end{macrocode}
%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
% \end{implementation}
%
% \PrintIndex
Added: trunk/Master/texmf-dist/source/latex/l3kernel/l3opacity.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3opacity.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3opacity.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -0,0 +1,153 @@
+% \iffalse meta-comment
+%
+%% File: l3opacity.dtx
+%
+% Copyright (C) 2021-2025 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 "l3kernel bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver>
+\documentclass[full]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \pkg{l3opacity} module\\ Opacity (transparency) support^^A
+% }
+%
+% \author{^^A
+% The \LaTeX{} Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team at latex-project.org}
+% {latex-team at latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2025-04-14}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \section{Selecting opacity}
+%
+% Opacity (transparency) shares many characteristics with color. However,
+% limitations in terms of backends mean that it is not always possible
+% to use a dedicated stack for tracking opacity. The best results when
+% breaking pages are therefore likely to result using direct PDF output
+% (\pdfTeX{}, \LuaTeX{}).
+%
+% For users of PostScript-based routes, note that there are security
+% restrictions which can prevent opacity being available in output. In
+% 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 = 2025-03-27]{\opacity_select:n}
+% \begin{syntax}
+% \cs{opacity_select:n} \Arg{expression}
+% \end{syntax}
+% Evaluates the \meta{expression}, which should yield a value in the range $[0,1]$.
+% This is then activated as an opacity for both filling and stroking.
+% \end{function}
+%
+% \begin{function}[added = 2025-03-27]{\opacity_fill:n, \opacity_stroke:n}
+% \begin{syntax}
+% \cs{opacity_fill:n} \Arg{expression}
+% \end{syntax}
+% Evaluates the \meta{expression}, which should yield a value in the range $[0,1]$.
+% This is then activated as an opacity for filling or stroking, respectively.
+% \end{function}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3opacity} implementation}
+%
+% \begin{macrocode}
+%<*code>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=opacity>
+% \end{macrocode}
+%
+% Transitional support.
+% \begin{macrocode}
+\cs_if_exist:NT \@expl at finalise@setup@@@@
+ {
+ \tl_gput_right:Nn \@expl at finalise@setup@@@@
+ { \declare at file@substitution { l3opacity.sty } { null.tex } }
+ }
+% \end{macrocode}
+%
+% \begin{variable}{\l_@@_tmp_fp}
+% 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}
+% 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 }
+\cs_new_protected:Npn \opacity_fill:n #1
+ { \@@_select:nN {#1} \@@_backend_fill:n }
+\cs_new_protected:Npn \opacity_stroke:n #1
+ { \@@_select:nN {#1} \@@_backend_stroke:n }
+\cs_new_protected:Npn \@@_select:nN #1#2
+ {
+ \fp_set:Nn \l_@@_tmp_fp { #1 }
+ \bool_lazy_or:nnTF
+ { \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} }
+ { \exp_args:Ne #2 { \fp_use:N \l_@@_tmp_fp } }
+ }
+\msg_new:nnnn { opacity } { out-of-range }
+ { Opacity~value~out~of~range. }
+ {
+ LaTeX~was~asked~to~set~opacity~of~#1,~but~only~values~in~the~range~
+ 0~to~1~are~supported.
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</code>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
Property changes on: trunk/Master/texmf-dist/source/latex/l3kernel/l3opacity.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -324,15 +324,11 @@
% \section{\pkg{l3pdf} implementation}
%
% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \begin{macrocode}
%<@@=pdf>
% \end{macrocode}
%
% \begin{macrocode}
-%<*tex>
+%<*code>
% \end{macrocode}
%
% \begin{variable}{\s_@@_stop}
@@ -416,7 +412,7 @@
\exp_args:Ne \@@_backend_object_id:n
{ \@@_object_retrieve:n {#1} }
}
-%</tex>
+%</code>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -465,7 +461,7 @@
% \end{macrocode}
% Whereas in \TeX{} we use integer constants.
% \begin{macrocode}
-%<*tex>
+%<*code>
\sys_if_engine_luatex:F
{
\cs_new_protected:Npn \@@_object_record:nN #1#2
@@ -529,7 +525,7 @@
\exp_args:Ne \@@_backend_object_id:n
{ \@@_object_retrieve:ne {#1} { \int_eval:n {#2} } }
}
-%</tex>
+%</code>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -565,7 +561,7 @@
% The non-Lua approach is to divide the range into blocks, and store in integer
% arrays that can simulate dynamic assignment.
% \begin{macrocode}
-%<*tex>
+%<*code>
\sys_if_engine_luatex:F
{
\cs_new_protected:Npn \@@_object_record:nnN #1#2#3
@@ -824,13 +820,9 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</tex>
+%</code>
% \end{macrocode}
%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
% \end{implementation}
%
% \PrintIndex
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -131,7 +131,7 @@
% the second argument to \cs{prg_set_conditional:Npnn}: this should
% match the \meta{argument specification} but this is not enforced. The
% |Nnn| versions infer the number of arguments from the argument
-% specification given (\emph{cf.}~\cs{cs_new:Nn}, \emph{etc.}). Within
+% specification given (\emph{cf.}~\cs{cs_new:Nn}, etc.). Within
% the \meta{code}, the functions \cs{prg_return_true:} and
% \cs{prg_return_false:} are used to indicate the logical outcomes of
% the test.
@@ -224,7 +224,7 @@
% employ two canonical booleans: \cs{c_true_bool} or
% \cs{c_false_bool}. Besides preventing problems as described above, it
% also allows us to implement a simple boolean parser supporting the
-% logical operations And, Or, Not, \emph{etc.}\ which can then be used on
+% logical operations And, Or, Not, etc.\ which can then be used on
% both the boolean type and predicate functions.
%
% All conditional |\bool_| functions except assignments are expandable
@@ -234,7 +234,7 @@
% \begin{texnote}
% The \texttt{bool} data type is not implemented using the
% \tn{iffalse}/\tn{iftrue} primitives, in contrast to \tn{newif},
-% \emph{etc.}, in plain \TeX{}, \LaTeXe{} and so on. Programmers should
+% etc., in plain \TeX{}, \LaTeXe{} and so on. Programmers should
% not base use of \texttt{bool} switches on any particular expectation
% of the implementation.
% \end{texnote}
@@ -837,7 +837,7 @@
% \TestFiles{m3prg001.lvt,m3prg002.lvt,m3prg003.lvt}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \subsection{Primitive conditionals}
@@ -1808,7 +1808,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -582,7 +582,7 @@
% \meta{tl~var} is not defined in this case and should
% not be relied upon. If the \meta{key} is present in
% the \meta{property list}, pops the corresponding \meta{value}
-% in the \meta{tl~var}, \emph{i.e.}~removes the item from
+% in the \meta{tl~var}, i.e., removes the item from
% the \meta{property list}.
% Both the \meta{property list} and the \meta{tl~var}
% are assigned locally.
@@ -604,7 +604,7 @@
% \meta{tl~var} is not defined in this case and should
% not be relied upon. If the \meta{key} is present in
% the \meta{property list}, pops the corresponding \meta{value}
-% in the \meta{tl~var}, \emph{i.e.}~removes the item from
+% in the \meta{tl~var}, i.e., removes the item from
% the \meta{property list}.
% The \meta{property list} is modified globally, while the
% \meta{tl~var} is assigned locally.
@@ -612,7 +612,7 @@
%
% \section{Mapping over property lists}
%
-% All mappings are done at the current group level, \emph{i.e.}~any
+% All mappings are done at the current group level, i.e., any
% local assignments made by the \meta{function} or \meta{code} discussed
% below remain in effect after the loop.
%
@@ -770,7 +770,7 @@
% \TestFiles{m3prop001, m3prop002, m3prop003, m3prop004, m3show001}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2628,7 +2628,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -61,7 +61,7 @@
% This would result in an endless loop!
%
% They are meant to be used as delimiter in weird functions, the most
-% common use case being the `stop token' (\emph{i.e.}~\cs{q_stop}).
+% common use case being the `stop token' (i.e., \cs{q_stop}).
% For example, when writing a macro to parse a user-defined date
% \begin{verbatim}
% \date_parse:n {19/June/1981}
@@ -353,7 +353,7 @@
% \TestFiles{m3quark001.lvt}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \subsection{Quarks}
@@ -1000,7 +1000,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -209,7 +209,7 @@
% \item[\\v] Any vertical space character,
% equivalent to |[\^^J\^^K\^^L\^^M]|. Note that |\^^K| is a vertical space,
% but not a space, for compatibility with Perl.
-% \item[\\w] Any word character, \emph{i.e.},
+% \item[\\w] Any word character, i.e.,
% alphanumerics and underscore, equivalent to the explicit
% class |[A-Za-z0-9\_]|.
% \item[\\D] Any token not matched by |\d|.
@@ -245,7 +245,7 @@
% In character classes, only |[|, |^|, |-|, |]|, |\| and spaces are
% special, and should be escaped. Other non-alphanumeric characters can
% still be escaped without harm. Any escape sequence which matches a
-% single character (|\d|, |\D|, \emph{etc.}) is supported in character
+% single character (|\d|, |\D|, etc.) is supported in character
% classes. If the first character is |^|, then
% the meaning of the character class is inverted; |^| appearing anywhere
% else in the range is not special. If the first character (possibly
@@ -770,7 +770,7 @@
% \meta{tl~var} and replaces the first match with the
% \meta{replacement}. In the \meta{replacement},
% |\0| represents the full match, |\1| represents the contents of the
-% first capturing group, |\2| of the second, \emph{etc.}
+% first capturing group, |\2| of the second, etc.
% The result is assigned locally to \meta{tl~var}.
% \end{function}
%
@@ -787,7 +787,7 @@
% contents of the \meta{tl~var}
% by the \meta{replacement}, where |\0| represents
% the full match, |\1| represents the contents of the first capturing
-% group, |\2| of the second, \emph{etc.} Every match is treated
+% group, |\2| of the second, etc. Every match is treated
% independently, and matches cannot overlap. The result is assigned
% locally to \meta{tl~var}.
% \end{function}
@@ -999,7 +999,7 @@
% \section{\pkg{l3regex} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1584,7 +1584,7 @@
% \@@_prop_d:, \@@_prop_h:, \@@_prop_s:,
% \@@_prop_v:, \@@_prop_w:, \@@_prop_N:
% }
-% Character property tests for |\d|, |\W|, \emph{etc.} These character
+% Character property tests for |\d|, |\W|, etc. These character
% properties are not affected by the |(?i)| option. The characters
% recognized by each one are as follows: |\d=[0-9]|,
% |\w=[0-9A-Z_a-z]|, \verb*+\s=[\ \^^I\^^J\^^L\^^M]+,
@@ -1688,7 +1688,7 @@
%
% Before actually parsing the regular expression or the replacement
% text, we go through them once, converting |\n| to the character $10$,
-% \emph{etc.} In this pass, we also convert any special character
+% etc. In this pass, we also convert any special character
% (\texttt{*}, \texttt{?}, \texttt{\{}, etc.) or escaped alphanumeric
% character into a marker indicating that this was a special sequence,
% and replace escaped special characters and non-escaped alphanumeric
@@ -2318,7 +2318,7 @@
%
% \begin{macro}[EXP]{\@@_if_in_class_or_catcode:TF}
% Assertions are only allowed in modes $0$, $-2$, and $-6$,
-% \emph{i.e.}, even, non-positive modes.
+% i.e., even, non-positive modes.
% \begin{macrocode}
\cs_new:Npn \@@_if_in_class_or_catcode:TF
{
@@ -2353,7 +2353,7 @@
%
% \begin{macro}{\@@_chk_c_allowed:T}
% The |\c| escape sequence is only allowed in modes $0$ and $3$,
-% \emph{i.e.}, not within any other |\c| escape sequence.
+% i.e., not within any other |\c| escape sequence.
% \begin{macrocode}
\cs_new_protected:Npn \@@_chk_c_allowed:T
{
@@ -2895,7 +2895,7 @@
% \@@_compile_/w:, \@@_compile_/W:,
% \@@_compile_/N:,
% }
-% The constants \cs{@@_prop_d:}, \emph{etc.} hold
+% The constants \cs{@@_prop_d:}, etc. hold
% a list of tests which match the corresponding character
% class, and jump to the \cs{@@_break_point:TF} marker.
% As for a normal character, we check for quantifiers.
@@ -6614,7 +6614,7 @@
% terms of \texttt{:nnN} auxiliaries, defined in the coming
% subsections. The auxiliary is handed \cs{@@_build:n} or
% \cs{@@_build:N} with the appropriate regex argument, then all
-% other necessary arguments (replacement text, token list, \emph{etc.}
+% other necessary arguments (replacement text, token list, etc.
% The conditionals call \cs{@@_return:} to return either
% \texttt{true} or \texttt{false} once matching has been performed.
% \begin{macrocode}
@@ -8148,7 +8148,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -324,7 +324,7 @@
% Items can be recovered from either the left or the right of sequences.
% For implementation reasons, the actions at the left of the sequence are
% faster than those acting on the right. These functions all assign the
-% recovered material locally, \emph{i.e.}~setting the
+% recovered material locally, i.e., setting the
% \meta{tl~var} used with \cs{tl_set:Nn} and \emph{never}
% \cs{tl_gset:Nn}.
%
@@ -355,7 +355,7 @@
% \cs{seq_pop_left:NN} \meta{seq~var} \meta{tl~var}
% \end{syntax}
% Pops the left-most item from a \meta{seq~var} into the
-% \meta{tl~var}, \emph{i.e.}~removes the item from the
+% \meta{tl~var}, i.e., removes the item from the
% sequence and stores it in the \meta{tl~var}.
% Both of the variables are assigned locally. If \meta{seq~var} is
% empty the \meta{tl~var} is set to
@@ -367,7 +367,7 @@
% \cs{seq_gpop_left:NN} \meta{seq~var} \meta{tl~var}
% \end{syntax}
% Pops the left-most item from a \meta{seq~var} into the
-% \meta{tl~var}, \emph{i.e.}~removes the item from the
+% \meta{tl~var}, i.e., removes the item from the
% sequence and stores it in the \meta{tl~var}.
% The \meta{seq~var} is modified globally, while the assignment of
% the \meta{tl~var} is local.
@@ -380,7 +380,7 @@
% \cs{seq_pop_right:NN} \meta{seq~var} \meta{tl~var}
% \end{syntax}
% Pops the right-most item from a \meta{seq~var} into the
-% \meta{tl~var}, \emph{i.e.}~removes the item from the
+% \meta{tl~var}, i.e., removes the item from the
% sequence and stores it in the \meta{tl~var}.
% Both of the variables are assigned locally. If \meta{seq~var} is
% empty the \meta{tl~var} is set to
@@ -392,7 +392,7 @@
% \cs{seq_gpop_right:NN} \meta{seq~var} \meta{tl~var}
% \end{syntax}
% Pops the right-most item from a \meta{seq~var} into the
-% \meta{tl~var}, \emph{i.e.}~removes the item from the
+% \meta{tl~var}, i.e., removes the item from the
% sequence and stores it in the \meta{tl~var}.
% The \meta{seq~var} is modified globally, while the assignment of
% the \meta{tl~var} is local.
@@ -484,7 +484,7 @@
% not defined in this case and should not be relied upon. If the
% \meta{seq~var} is non-empty, pops the left-most item from the
% \meta{seq~var}
-% in the \meta{tl~var}, \emph{i.e.}~removes the item from the
+% in the \meta{tl~var}, i.e., removes the item from the
% \meta{seq~var}, then leaves the \meta{true code} in the input stream.
% Both the \meta{seq~var} and the \meta{tl~var} are assigned
% locally.
@@ -499,7 +499,7 @@
% input stream. The value of the \meta{tl~var} is
% not defined in this case and should not be relied upon. If the
% \meta{seq~var} is non-empty, pops the left-most item from the \meta{seq~var}
-% in the \meta{tl~var}, \emph{i.e.}~removes the item from the
+% in the \meta{tl~var}, i.e., removes the item from the
% \meta{seq~var}, then leaves the \meta{true code} in the input stream.
% The \meta{seq~var} is modified globally, while the \meta{tl~var}
% is assigned locally.
@@ -514,7 +514,7 @@
% input stream. The value of the \meta{tl~var} is
% not defined in this case and should not be relied upon. If the
% \meta{seq~var} is non-empty, pops the right-most item from the \meta{seq~var}
-% in the \meta{tl~var}, \emph{i.e.}~removes the item from the
+% in the \meta{tl~var}, i.e., removes the item from the
% \meta{seq~var}, then leaves the \meta{true code} in the input stream.
% Both the \meta{seq~var} and the \meta{tl~var} are assigned
% locally.
@@ -529,7 +529,7 @@
% input stream. The value of the \meta{tl~var} is
% not defined in this case and should not be relied upon. If the
% \meta{seq~var} is non-empty, pops the right-most item from the \meta{seq~var}
-% in the \meta{tl~var}, \emph{i.e.}~removes the item from the
+% in the \meta{tl~var}, i.e., removes the item from the
% \meta{seq~var}, then leaves the \meta{true code} in the input stream.
% The \meta{seq~var} is modified globally, while the
% \meta{tl~var} is assigned locally.
@@ -658,7 +658,7 @@
%
% \section{Mapping over sequences}
%
-% All mappings are done at the current group level, \emph{i.e.}~any
+% All mappings are done at the current group level, i.e., any
% local assignments made by the \meta{function} or \meta{code} discussed
% below remain in effect after the loop.
%
@@ -755,7 +755,7 @@
% items from both sequences from left to right. The \meta{function}
% receives two \texttt{n}-type arguments for each iteration. The mapping
% terminates when
-% the end of either sequence is reached (\emph{i.e.}~whichever sequence has
+% the end of either sequence is reached (i.e., whichever sequence has
% fewer items determines how many iterations
% occur).
% \end{function}
@@ -856,7 +856,7 @@
% Leaves the number of items in the \meta{seq~var} in the input
% stream as an \meta{integer denotation}. The total number of items
% in a \meta{seq~var} includes those which are empty and duplicates,
-% \emph{i.e.}~every item in a \meta{seq~var} is unique.
+% i.e., every item in a \meta{seq~var} is unique.
% \end{function}
%
% \section{Using the content of sequences directly}
@@ -978,7 +978,7 @@
% input stream. The value of the \meta{tl~var} is
% not defined in this case and should not be relied upon. If the
% \meta{seq~var} is non-empty, pops the top item from the
-% \meta{seq~var} in the \meta{tl~var}, \emph{i.e.}~removes the
+% \meta{seq~var} in the \meta{tl~var}, i.e., removes the
% item from the \meta{seq~var}. Both the \meta{seq~var} and the
% \meta{tl~var} are assigned locally.
% \end{function}
@@ -991,7 +991,7 @@
% input stream. The value of the \meta{tl~var} is
% not defined in this case and should not be relied upon. If the
% \meta{seq~var} is non-empty, pops the top item from the \meta{seq~var}
-% in the \meta{tl~var}, \emph{i.e.}~removes the item from the
+% in the \meta{tl~var}, i.e., removes the item from the
% \meta{seq~var}. The \meta{seq~var} is modified globally, while the
% \meta{tl~var} is assigned locally.
% \end{function}
@@ -1152,7 +1152,7 @@
% \TestFiles{m3seq002,m3seq003}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2827,7 +2827,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -507,7 +507,7 @@
% \begin{verbatim}
% \dim_to_decimal:n { 1bp }
% \end{verbatim}
-% leaves |1.00374| in the input stream, \emph{i.e.}~the magnitude of
+% leaves |1.00374| in the input stream, i.e., the magnitude of
% one \enquote{big point} when converted to (\TeX{}) points.
% \end{function}
%
@@ -526,7 +526,7 @@
% \begin{verbatim}
% \dim_to_decimal_in_bp:n { 1pt }
% \end{verbatim}
-% leaves |0.99628| in the input stream, \emph{i.e.}~the magnitude of
+% leaves |0.99628| in the input stream, i.e., the magnitude of
% one (\TeX{}) point when converted to big points.
% \begin{texnote}
% The implementation of this function is re-entrant: the result of
@@ -616,7 +616,7 @@
% \begin{verbatim}
% \dim_to_decimal_in_unit:nn { 1bp } { 1mm }
% \end{verbatim}
-% leaves |0.35278| in the input stream, \emph{i.e.}~the magnitude of
+% leaves |0.35278| in the input stream, i.e., the magnitude of
% one big point when expressed in millimetres. The conversions do
% \emph{not} guarantee that \TeX{} would yield identical results
% for the direct input in an equality test, thus for instance
@@ -804,7 +804,7 @@
% This function first evaluates each of the
% \meta{skip exprs} as described for \cs{skip_eval:n}.
% The two results are then compared for exact equality,
-% \emph{i.e.}~both the fixed and rubber components must be the same
+% i.e., both the fixed and rubber components must be the same
% for the test to be true.
% \end{function}
%
@@ -1148,7 +1148,7 @@
% \section{\pkg{l3skip} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2606,7 +2606,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -112,7 +112,7 @@
% \section{\pkg{l3sort} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1089,7 +1089,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -61,7 +61,7 @@
% \begin{itemize}
% \item The code points (\enquote{character codes}) are expressed as
% bytes following a given \enquote{encoding}. This can be
-% \textsc{utf-16}, \textsc{iso 8859-1}, \emph{etc.} See
+% \textsc{utf-16}, \textsc{iso 8859-1}, etc. See
% Table~\ref{tab:encodings} for a list of supported
% encodings.\footnote{Encodings and escapings will be added as they
% are requested.}
@@ -228,7 +228,7 @@
% tree-box.
% \item More encodings (see Heiko's \pkg{stringenc}). CESU?
% \item More escapings: \textsc{ascii85}, shell escapes, lua escapes,
-% \emph{etc.}?
+% etc.?
% \end{itemize}
%
% \end{documentation}
@@ -238,7 +238,7 @@
% \section{\pkg{l3str-convert} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -788,7 +788,7 @@
%
% First, if |#1| is a key in \cs{g_@@_alias_prop}, then the value
% \cs{l_@@_internal_tl} tells us what file to load. Loading is
-% skipped if the file was already read, \emph{i.e.}, if the conversion
+% skipped if the file was already read, i.e., if the conversion
% command based on \cs{l_@@_internal_tl} already exists. Otherwise,
% try to load the file; if that fails, there is an error, use the
% default empty name instead.
@@ -1832,7 +1832,7 @@
% \item \enquote{Missing continuation byte}: a leading byte is not
% followed by the right number of continuation bytes.
% \item \enquote{Extra continuation byte}: a continuation byte
-% appears where it was not expected, \emph{i.e.}, not after an
+% appears where it was not expected, i.e., not after an
% appropriate leading byte.
% \item \enquote{Overlong}: a Unicode character is expressed using
% more bytes than necessary, for instance, \hexnum{C0}\hexnum{80}
@@ -2661,7 +2661,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \subsubsection{\textsc{iso 8859} support}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -233,7 +233,7 @@
% \cs{str_if_empty:NTF} \meta{str~var} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{string variable} is entirely empty
-% (\emph{i.e.}~contains no characters at all).
+% (i.e., contains no characters at all).
% \end{function}
%
% \begin{function}[EXP,pTF, added = 2015-09-18]
@@ -380,7 +380,7 @@
%
% \section{Mapping over strings}
%
-% All mappings are done at the current group level, \emph{i.e.}~any
+% All mappings are done at the current group level, i.e., any
% local assignments made by the \meta{function} or \meta{code} discussed
% below remain in effect after the loop.
%
@@ -570,7 +570,7 @@
% \cs{str_item_ignore_spaces:nn} function skips spaces when counting
% characters. If the \meta{integer expression} is negative,
% characters are counted from the end of the \meta{string}. Hence,
-% $-1$ is the right-most character, \emph{etc.}
+% $-1$ is the right-most character, etc.
% \end{function}
%
% \begin{function}[EXP, added = 2015-09-18]
@@ -792,7 +792,7 @@
% \enquote{full} scheme defined by the Unicode Consortium
% (\emph{e.g.}~\SS{} folds to \texttt{SS}). As case-folding is
% a language-insensitive process, there is no special treatment of
-% Turkic input (\emph{i.e.}~\texttt{I} always folds to \texttt{i} and
+% Turkic input (i.e., \texttt{I} always folds to \texttt{i} and
% not to \texttt{\i}).
% \end{function}
%
@@ -871,7 +871,7 @@
% \section{\pkg{l3str} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2220,7 +2220,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -144,7 +144,7 @@
% |lualatex| (or |dvilualatex|),
% |pdflatex| (or |latex|), |platex|, |uplatex| or |xelatex| for \LaTeX{},
% similar names for plain \TeX{} (except \pdfTeX{} in DVI mode yields
-% |etex|), and |cont-en| for Con\TeX{}t (i.e.~the
+% |etex|), and |cont-en| for Con\TeX{}t (i.e., the
% \tn{fmtname}).
% \end{variable}
%
@@ -180,14 +180,6 @@
% scaled seconds ($2^{-16}$ seconds).
% \end{function}
%
-% \begin{function}[added = 2021-05-12, EXP, pTF]{\sys_if_timer_exist:}
-% \begin{syntax}
-% \cs{sys_if_timer_exist_p:}
-% \cs{sys_if_timer_exist:TF} \Arg{true code} \Arg{false code}
-% \end{syntax}
-% Tests whether current engine has timer support.
-% \end{function}
-%
% \section{Output format}
%
% \begin{function}[added = 2015-09-19, EXP, pTF]
@@ -223,7 +215,7 @@
% \cs{sys_if_platform_unix:TF} \Arg{true code} \Arg{false code}
% \end{syntax}
% Conditionals which allow platform-specific code to be used. The names
-% follow the \Lua{} |os.type()| function, \emph{i.e.}~all Unix-like systems
+% follow the \Lua{} |os.type()| function, i.e., all Unix-like systems
% are |unix| (including Linux and MacOS).
% \end{function}
%
@@ -466,8 +458,7 @@
% \subsection{Kernel code}
%
% \begin{macrocode}
-%<*package>
-%<*tex>
+%<*code>
% \end{macrocode}
%
% \begin{macro}{\l_@@_tmp_tl}
@@ -878,6 +869,7 @@
% \begin{macrocode}
\sys_if_engine_luatex:F
{ \int_const:Nn \c_@@_shell_stream_int { 18 } }
+%</code>
% \end{macrocode}
% \end{variable}
%
@@ -887,7 +879,6 @@
%
% For \LuaTeX{}, we use a pseudo-primitive to do the actual work.
% \begin{macrocode}
-%</tex>
%<*lua>
do
local os_exec = os.execute
@@ -909,7 +900,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%<*tex>
+%<*code>
\sys_if_engine_luatex:TF
{
\cs_new_protected:Npn \sys_shell_now:n #1
@@ -920,7 +911,7 @@
{ \iow_now:Nn \c_@@_shell_stream_int {#1} }
}
\cs_generate_variant:Nn \sys_shell_now:n { e, x }
-%</tex>
+%</code>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -955,7 +946,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%<*tex>
+%<*code>
\sys_if_engine_luatex:TF
{
\cs_new_protected:Npn \sys_shell_shipout:n #1
@@ -1101,7 +1092,7 @@
% locate the real primitive. The elapsed time will be
% available if this succeeds.
% \begin{macrocode}
-%</tex>
+%</code>
%<*lua>
local gettimeofday = os.gettimeofday
local epoch = gettimeofday() - os.clock()
@@ -1111,30 +1102,13 @@
write(tointeger((gettimeofday() - epoch)*65536 // 1))
end, 'global')
%</lua>
-%<*tex>
-\sys_if_engine_luatex:TF
+%<*code>
+\cs_new:Npe \sys_timer:
{
- \cs_new:Npn \sys_timer:
- { \@@_elapsedtime: }
+ \sys_if_engine_luatex:TF
+ { \exp_not:N \@@_elapsedtime: }
+ { \exp_not:N \int_value:w \exp_not:N \tex_elapsedtime:D }
}
- {
- \cs_if_exist:NTF \tex_elapsedtime:D
- {
- \cs_new:Npn \sys_timer:
- { \int_value:w \tex_elapsedtime:D }
- }
- {
- \cs_new:Npn \sys_timer:
- {
- \int_value:w
- \msg_expandable_error:nnn { kernel } { no-elapsed-time }
- { \sys_timer: }
- \c_zero_int
- }
- }
- }
-\@@_const:nn { sys_if_timer_exist }
- { \cs_if_exist_p:N \tex_elapsedtime:D || \cs_if_exist_p:N \@@_elapsedtime: }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1402,8 +1376,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</tex>
-%</package>
+%</code>
% \end{macrocode}
%
%\end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -56,7 +56,7 @@
% \section{\pkg{l3text-case} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -375,7 +375,7 @@
% as otherwise we pick up the wrong delimiter. The loop here is the same
% as the \texttt{expand} one, just passing the additional data long. If no
% close-math token is found then the final clean-up is forced
-% (i.e.~there is no assumption of \enquote{well-behaved} input in terms of
+% (i.e., there is no assumption of \enquote{well-behaved} input in terms of
% math mode).
% \begin{macrocode}
\cs_new:Npn \@@_change_case_N_type:nnnN #1#2#3#4
@@ -1200,7 +1200,6 @@
\@@_change_case_store:e
{ \@@_change_case_upper_el_stress:nn {#1} {#5} }
\@@_change_case_loop:nnnw {#2} {#3} {#4}
-
}
{
\@@_change_case_store:e
@@ -2324,7 +2323,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -56,7 +56,7 @@
% \section{\pkg{l3text-map} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -791,7 +791,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -56,7 +56,7 @@
% \section{\pkg{l3text-purify} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -259,7 +259,8 @@
% find one, check to see if we can expand control sequences: if not, they have
% to be dropped. We also allow for \LaTeXe{} \tn{protect}: there's an
% assumption that we don't have |\protect { \oops }| or similar, but that's
-% also in the expansion code and seems like a reasonable balance.
+% also in the expansion code and seems like a reasonable balance. Notice that
+% we filter out implicit begin/end group tokens to avoid issues.
% \begin{macrocode}
\cs_new:Npn \@@_purify_replace:N #1
{
@@ -275,8 +276,14 @@
{ l_@@_purify_ \token_to_str:N #1 _tl }
}
{
- \exp_args:Ne \@@_purify_replace_auxii:n
- { \@@_token_to_explicit:N #1 }
+ \bool_lazy_or:nnTF
+ { \token_if_group_begin_p:N #1 }
+ { \token_if_group_end_p:N #1 }
+ { \@@_purify_loop:w }
+ {
+ \exp_args:Ne \@@_purify_replace_auxii:n
+ { \@@_token_to_explicit:N #1 }
+ }
}
}
\cs_new:Npn \@@_purify_replace_auxi:n #1 { \@@_purify_loop:w #1 }
@@ -376,48 +383,6 @@
\text_declare_purify_equivalent:Nn \fontsize { \use_none:nn }
\text_declare_purify_equivalent:Nn \selectfont { }
\text_declare_purify_equivalent:Nn \usefont { \use_none:nnnn }
-\tl_map_inline:nn
- {
- \emph
- \text
- \textnormal
- \textrm
- \textsf
- \texttt
- \textbf
- \textmd
- \textit
- \textsl
- \textup
- \textsc
- \textulc
- }
- { \text_declare_purify_equivalent:Nn #1 { \use:n } }
-\tl_map_inline:nn
- {
- \normalfont
- \rmfamily
- \sffamily
- \ttfamily
- \bfseries
- \mdseries
- \itshape
- \scshape
- \slshape
- \upshape
- \em
- \Huge
- \LARGE
- \Large
- \footnotesize
- \huge
- \large
- \normalsize
- \scriptsize
- \small
- \tiny
- }
- { \text_declare_purify_equivalent:Nn #1 { } }
\exp_args:Nc \text_declare_purify_equivalent:Nn
{ @protected at testopt } { \use_none:nnn }
% \end{macrocode}
@@ -789,7 +754,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -402,7 +402,7 @@
% \section{\pkg{l3text} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1485,7 +1485,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -98,7 +98,7 @@
% Applies the \meta{inline function} to each individual \meta{token}
% in the \meta{token list}. The \meta{inline function} receives three
% arguments as explained above. As all other mappings the mapping is
-% done at the current group level, \emph{i.e.}~any local assignments
+% done at the current group level, i.e., any local assignments
% made by the \meta{inline function} remain in effect after the loop.
% \end{function}
%
@@ -178,7 +178,7 @@
% parameters.)
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \subsection{Variables and helper functions}
@@ -1663,7 +1663,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -133,7 +133,7 @@
% \section{\pkg{l3tl-build} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -348,7 +348,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -224,7 +224,7 @@
% \cs{tl_if_blank:nTF} \Arg{token list} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{token list} consists only of blank spaces
-% (\emph{i.e.}~contains no item). The test is \texttt{true} if
+% (i.e., contains no item). The test is \texttt{true} if
% \meta{token list} is zero or more explicit space characters
% (explicit tokens with character code~$32$ and category code~$10$),
% and is \texttt{false} otherwise.
@@ -236,7 +236,7 @@
% \cs{tl_if_empty:NTF} \meta{tl~var} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{tl~var} is entirely empty
-% (\emph{i.e.}~contains no tokens at all).
+% (i.e., contains no tokens at all).
% \end{function}
%
% \begin{function}[added = 2012-05-24, updated = 2012-06-05, EXP,pTF]
@@ -246,7 +246,7 @@
% \cs{tl_if_empty:nTF} \Arg{token list} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{token list} is entirely empty
-% (\emph{i.e.}~contains no tokens at all).
+% (i.e., contains no tokens at all).
% \end{function}
%
% \begin{function}[EXP,pTF]
@@ -257,7 +257,7 @@
% \end{syntax}
% Compares the content of \meta{tl~var_1} and \meta{tl~var_2} and
% is logically \texttt{true} if the two contain the same list of
-% tokens (\emph{i.e.}~identical in both the list of characters they
+% tokens (i.e., identical in both the list of characters they
% contain and the category codes of those characters). Thus for example
% \begin{verbatim}
% \tl_set:Nn \l_tmpa_tl { abc }
@@ -348,7 +348,7 @@
% \cs{tl_if_single:NTF} \meta{tl~var} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the content of the \meta{tl~var} consists of a single \meta{item},
-% \emph{i.e.}~is a single normal token (neither an explicit space
+% i.e., is a single normal token (neither an explicit space
% character nor a begin-group character) or a single brace group,
% surrounded by optional spaces on both sides. In other words, such a
% token list has token count $1$ according to \cs{tl_count:N}.
@@ -359,7 +359,7 @@
% \cs{tl_if_single_p:n} \Arg{token list}
% \cs{tl_if_single:nTF} \Arg{token list} \Arg{true code} \Arg{false code}
% \end{syntax}
-% Tests if the \meta{token list} has exactly one \meta{item}, \emph{i.e.}~is
+% Tests if the \meta{token list} has exactly one \meta{item}, i.e., is
% a single normal token (neither an explicit space character nor a
% begin-group character) or a single brace group, surrounded by
% optional spaces on both sides. In other words, such a token list has
@@ -371,7 +371,7 @@
% \cs{tl_if_single_token_p:n} \Arg{token list}
% \cs{tl_if_single_token:nTF} \Arg{token list} \Arg{true code} \Arg{false code}
% \end{syntax}
-% Tests if the token list consists of exactly one token, \emph{i.e.}~is
+% Tests if the token list consists of exactly one token, i.e., is
% either a single space character or a single normal token.
% Token groups (|{|\ldots|}|) are not single tokens.
% \end{function}
@@ -793,7 +793,7 @@
%
% \subsection{Mapping over token lists}
%
-% All mappings are done at the current group level, \emph{i.e.}~any
+% All mappings are done at the current group level, i.e., any
% local assignments made by the \meta{function} or \meta{code} discussed
% below remain in effect after the loop.
%
@@ -1248,7 +1248,7 @@
% \meta{tl~var} and replaces the first match with the
% \meta{replacement}. In the \meta{replacement},
% |\0| represents the full match, |\1| represents the contents of the
-% first capturing group, |\2| of the second, \emph{etc.}
+% first capturing group, |\2| of the second, etc.
% Theses are alternative names for \cs{regex_replace_once:nnN} and friends,
% with arguments re-ordered for \meta{tl~var} setting;
% See \pkg{l3regex} chapter for more details of the \meta{regex}
@@ -1270,7 +1270,7 @@
% contents of the \meta{tl~var}
% by the \meta{replacement}, where |\0| represents
% the full match, |\1| represent the contents of the first capturing
-% group, |\2| of the second, \emph{etc.} Every match is treated
+% group, |\2| of the second, etc. Every match is treated
% independently, and matches cannot overlap.
% Theses are alternative names for \cs{regex_replace_all:nnN} and friends,
% with arguments re-ordered for \meta{tl~var} setting;
@@ -1413,7 +1413,7 @@
% A marker for the absence of an argument. This constant |tl| can safely
% be typeset (\emph{cf.}~\cs{q_nil}), with the result being |-NoValue-|.
% It is important to note that \cs{c_novalue_tl} is constructed such that it
-% will \emph{not} match the simple text input |-NoValue-|, \emph{i.e.}
+% will \emph{not} match the simple text input |-NoValue-|, i.e.
% that
% \begin{verbatim}
% \tl_if_eq:NnTF \c_novalue_tl { -NoValue- }
@@ -1452,7 +1452,7 @@
% \section{\pkg{l3tl} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -3280,7 +3280,7 @@
% \end{verbatim}
% would give the wrong result for |\tl_tail:n { a { bc } }| (the braces would
% be stripped). Thus the only safe way to proceed is to first check that
-% there is an item to grab (\emph{i.e.}~that the argument is not blank) and
+% there is an item to grab (i.e., that the argument is not blank) and
% assuming there is to dispose of the first item. As with \cs{tl_head:n},
% the result is protected from further expansion by \tn{unexpanded}.
% While we could optimise the test here, this would leave some tokens
@@ -4089,7 +4089,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -807,7 +807,7 @@
% expands the \meta{function}. The \meta{token} remains in
% the input stream as the next item after the \meta{function}.
% The \meta{token} here may be \verb*| |, |{| or |}| (assuming
-% normal \TeX{} category codes), \emph{i.e.}~it is not necessarily the
+% normal \TeX{} category codes), i.e., it is not necessarily the
% next argument which would be grabbed by a normal function.
% \end{function}
%
@@ -820,7 +820,7 @@
% expands the \meta{function}. The \meta{token} remains in
% the input stream as the next item after the \meta{function}.
% The \meta{token} here may be \verb*| |, |{| or |}| (assuming
-% normal \TeX{} category codes), \emph{i.e.}~it is not necessarily the
+% normal \TeX{} category codes), i.e., it is not necessarily the
% next argument which would be grabbed by a normal function.
% \end{function}
%
@@ -935,7 +935,7 @@
% \begin{texnote}
% This is essentially a macro-based implementation of how \TeX{} handles
% the search for a left brace after for example \tn{everypar}, except that
-% any non-expandable token cleanly ends the \meta{filler} (i.e.~it does not
+% any non-expandable token cleanly ends the \meta{filler} (i.e., it does not
% lead to a \TeX{} error).
%
% In contrast to \TeX{}'s filler removal, a construct
@@ -999,7 +999,7 @@
% the \meta{inline function} is called with arguments
% \cs{exp_after:wN} |{| \cs{if_false:} |}| \cs{fi:}, $123$ and~$1$.
%
-% The mapping is done at the current group level, \emph{i.e.}~any
+% The mapping is done at the current group level, i.e., any
% local assignments made by the \meta{inline function} remain in
% effect after the loop. Within the code, \cs{l_peek_token} is set
% equal (as a token, not a token list) to the token under
@@ -1242,17 +1242,12 @@
% \section{\pkg{l3token} implementation}
%
% \begin{macrocode}
-%<*package>
+%<@@=char>
% \end{macrocode}
-%
% \begin{macrocode}
-%<*tex>
+%<*code>
% \end{macrocode}
%
-% \begin{macrocode}
-%<@@=char>
-% \end{macrocode}
-%
% \subsection{Internal auxiliaries}
%
% \begin{variable}{\s_@@_stop}
@@ -2062,7 +2057,7 @@
%
% \begin{macro}[pTF]{\token_if_cs:N}
% Check if token has same catcode as a control sequence. This
-% follows the same pattern as for \cs{token_if_letter:N} \emph{etc.}
+% follows the same pattern as for \cs{token_if_letter:N} etc.
% We use \cs{scan_stop:} for this.
% \begin{macrocode}
\prg_new_conditional:Npnn \token_if_cs:N #1 { p , T , F , TF }
@@ -2307,7 +2302,7 @@
% \begin{macrocode}
\sys_if_engine_luatex:TF
{
-%</tex>
+%</code>
%<*lua>
do
local get_next = token.get_next
@@ -2368,7 +2363,7 @@
end, "global")
end
%</lua>
-%<*tex>
+%<*code>
\prg_new_conditional:Npnn \token_if_primitive:N #1 { p , T , F , TF }
{
\@@_if_primitive_lua:N #1
@@ -2923,13 +2918,9 @@
% \end{macro}
%
% \begin{macrocode}
-%</tex>
+%</code>
% \end{macrocode}
%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
% \end{implementation}
%
% \PrintIndex
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2025-03-26}
+% \date{Released 2025-04-14}
%
% \maketitle
%
@@ -116,7 +116,7 @@
% letters divide codepoints into broader groups, which are then refined
% by the lowercase letter. For example, codepoints representing letters
% all have identifiers starting \texttt{L}, for example \texttt{Lu}
-% (uppercase letter), \texttt{Lt} (titlecase letter), \emph{etc.}
+% (uppercase letter), \texttt{Lt} (titlecase letter), etc.
% Full details are available in the documentation provided by the Unicode
% Consortium: see
% \url{https://www.unicode.org/reports/tr44/#General_Category_Values}
@@ -140,7 +140,7 @@
% \section{\pkg{l3unicode} implementation}
%
% \begin{macrocode}
-%<*package>
+%<*code>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1133,7 +1133,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</package>
+%</code>
% \end{macrocode}
%
% \end{implementation}
Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def 2025-04-28 19:50:11 UTC (rev 75045)
@@ -27,7 +27,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvipdfmx.def}{2025-03-14}{}
+ {l3backend-dvipdfmx.def}{2025-04-14}{}
{L3 backend support: dvipdfmx}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def 2025-04-28 19:50:11 UTC (rev 75045)
@@ -27,7 +27,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvips.def}{2025-03-14}{}
+ {l3backend-dvips.def}{2025-04-14}{}
{L3 backend support: dvips}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -1029,6 +1029,8 @@
{
\__opacity_backend:nnn {#1} { fill } { ca }
\__opacity_backend:nnn {#1} { stroke } { CA }
+ \group_insert_after:N \__opacity_backend_reset_fill:
+ \group_insert_after:N \__opacity_backend_reset_stroke:
}
\cs_new_protected:Npn \__opacity_backend_fill:n #1
{
@@ -1036,6 +1038,7 @@
{ #1 }
{ fill }
{ ca }
+ \group_insert_after:N \__opacity_backend_reset_fill:
}
\cs_new_protected:Npn \__opacity_backend_stroke:n #1
{
@@ -1043,6 +1046,7 @@
{ #1 }
{ stroke }
{ CA }
+ \group_insert_after:N \__opacity_backend_reset_stroke:
}
\cs_new_protected:Npn \__opacity_backend:nnn #1#2#3
{
@@ -1063,6 +1067,20 @@
ifelse
}
}
+\cs_new_protected:Npn \__opacity_backend_reset_fill:
+ {
+ \__opacity_backend:nnn
+ { 1 }
+ { fill }
+ { ca }
+ }
+\cs_new_protected:Npn \__opacity_backend_reset_stroke:
+ {
+ \__opacity_backend:nnn
+ { 1 }
+ { stroke }
+ { CA }
+ }
%%
%%
%% End of file `l3backend-dvips.def'.
Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def 2025-04-28 19:50:11 UTC (rev 75045)
@@ -27,7 +27,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvisvgm.def}{2025-03-14}{}
+ {l3backend-dvisvgm.def}{2025-04-14}{}
{L3 backend support: dvisvgm}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def 2025-04-28 19:50:11 UTC (rev 75045)
@@ -27,7 +27,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-luatex.def}{2025-03-14}{}
+ {l3backend-luatex.def}{2025-04-14}{}
{L3 backend support: PDF output (LuaTeX)}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def 2025-04-28 19:50:11 UTC (rev 75045)
@@ -27,7 +27,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-pdftex.def}{2025-03-14}{}
+ {l3backend-pdftex.def}{2025-04-14}{}
{L3 backend support: PDF output (pdfTeX)}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def 2025-04-28 19:50:11 UTC (rev 75045)
@@ -27,7 +27,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-xetex.def}{2025-03-14}{}
+ {l3backend-xetex.def}{2025-04-14}{}
{L3 backend support: XeTeX}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty 2025-04-28 19:50:11 UTC (rev 75045)
@@ -28,8 +28,7 @@
%%
%% File: l3draw.dtx
\RequirePackage{expl3}
-
-\ProvidesExplPackage{l3draw}{2025-03-26}{}
+\ProvidesExplPackage{l3draw}{2025-04-14}{}
{L3 Experimental core drawing support}
\scan_new:N \s__draw_mark
\scan_new:N \s__draw_stop
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty 2025-04-28 19:50:11 UTC (rev 75045)
@@ -20,7 +20,7 @@
%%
%% File: l3str-format.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2025-03-26}{}
+\ProvidesExplPackage{l3str-format}{2025-04-14}{}
{L3 Experimental string formatting}
\cs_generate_variant:Nn \use:nn { nf }
\cs_generate_variant:Nn \use:nnn { fnf }
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty 2025-04-28 19:50:11 UTC (rev 75045)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: xcoffins.dtx
-\ProvidesExplPackage{xcoffins}{2025-03-26}{}
+\ProvidesExplPackage{xcoffins}{2025-04-14}{}
{L3 Experimental design level coffins}
\keys_define:nn { coffin }
{
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty 2025-04-28 19:50:11 UTC (rev 75045)
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{l3galley}{2025-03-26}{}
+\ProvidesExplPackage{l3galley}{2025-04-14}{}
{L3 Experimental galley code}
\int_new:N \l__galley_tmp_int
\seq_new:N \g__galley_tmpa_seq
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty 2025-04-28 19:50:11 UTC (rev 75045)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: xgalley.dtx
-\ProvidesExplPackage{xgalley}{2025-03-26}{}
+\ProvidesExplPackage{xgalley}{2025-04-14}{}
{L3 Experimental galley}
\RequirePackage{xtemplate,l3galley}
\clist_new:N \l__galley_tmpa_clist
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex 2025-04-28 19:50:11 UTC (rev 75045)
@@ -4,64 +4,66 @@
%%
%% The original source files were:
%%
-%% expl3.dtx (with options: `package')
-%% l3bootstrap.dtx (with options: `package')
-%% l3names.dtx (with options: `package,tex')
-%% l3basics.dtx (with options: `package')
-%% l3expan.dtx (with options: `package')
-%% l3quark.dtx (with options: `package')
-%% l3tl.dtx (with options: `package')
-%% l3tl-build.dtx (with options: `package')
-%% l3str.dtx (with options: `package')
-%% l3seq.dtx (with options: `package')
-%% l3int.dtx (with options: `package')
-%% l3flag.dtx (with options: `package')
-%% l3prg.dtx (with options: `package')
-%% l3sys.dtx (with options: `package,tex')
-%% l3clist.dtx (with options: `package')
-%% l3token.dtx (with options: `package,tex')
-%% l3prop.dtx (with options: `package')
-%% l3msg.dtx (with options: `package')
-%% l3file.dtx (with options: `package')
-%% l3skip.dtx (with options: `package')
-%% l3keys.dtx (with options: `package')
-%% l3intarray.dtx (with options: `package,tex')
-%% l3fp.dtx (with options: `package')
-%% l3fp-aux.dtx (with options: `package')
-%% l3fp-traps.dtx (with options: `package')
-%% l3fp-round.dtx (with options: `package')
-%% l3fp-parse.dtx (with options: `package')
-%% l3fp-assign.dtx (with options: `package')
-%% l3fp-logic.dtx (with options: `package')
-%% l3fp-basics.dtx (with options: `package')
-%% l3fp-extended.dtx (with options: `package')
-%% l3fp-expo.dtx (with options: `package')
-%% l3fp-trig.dtx (with options: `package')
-%% l3fp-convert.dtx (with options: `package')
-%% l3fp-random.dtx (with options: `package')
-%% l3fp-types.dtx (with options: `package')
-%% l3fp-symbolic.dtx (with options: `package')
-%% l3fp-functions.dtx (with options: `package')
-%% l3fparray.dtx (with options: `package')
-%% l3bitset.dtx (with options: `package')
-%% l3cctab.dtx (with options: `package')
-%% l3sort.dtx (with options: `package')
-%% l3str-convert.dtx (with options: `package')
-%% l3tl-analysis.dtx (with options: `package')
-%% l3regex.dtx (with options: `package')
-%% l3box.dtx (with options: `package')
-%% l3color.dtx (with options: `package')
-%% l3graphics.dtx (with options: `package')
-%% l3pdf.dtx (with options: `package,tex')
-%% l3coffins.dtx (with options: `package')
-%% l3luatex.dtx (with options: `package,tex')
-%% l3unicode.dtx (with options: `package')
-%% l3text.dtx (with options: `package')
-%% l3text-case.dtx (with options: `package')
-%% l3text-map.dtx (with options: `package')
-%% l3text-purify.dtx (with options: `package')
-%% l3legacy.dtx (with options: `package')
-%% l3deprecation.dtx (with options: `package')
+%% expl3.dtx (with options: `code')
+%% l3bootstrap.dtx (with options: `code')
+%% l3names.dtx (with options: `code')
+%% l3basics.dtx (with options: `code')
+%% l3expan.dtx (with options: `code')
+%% l3quark.dtx (with options: `code')
+%% l3tl.dtx (with options: `code')
+%% l3tl-build.dtx (with options: `code')
+%% l3str.dtx (with options: `code')
+%% l3seq.dtx (with options: `code')
+%% l3int.dtx (with options: `code')
+%% l3flag.dtx (with options: `code')
+%% l3prg.dtx (with options: `code')
+%% l3sys.dtx (with options: `code')
+%% l3clist.dtx (with options: `code')
+%% l3token.dtx (with options: `code')
+%% l3prop.dtx (with options: `code')
+%% l3msg.dtx (with options: `code')
+%% l3file.dtx (with options: `code')
+%% l3skip.dtx (with options: `code')
+%% l3keys.dtx (with options: `code')
+%% l3intarray.dtx (with options: `code')
+%% l3fp.dtx (with options: `code')
+%% l3fp-aux.dtx (with options: `code')
+%% l3fp-traps.dtx (with options: `code')
+%% l3fp-round.dtx (with options: `code')
+%% l3fp-parse.dtx (with options: `code')
+%% l3fp-assign.dtx (with options: `code')
+%% l3fp-logic.dtx (with options: `code')
+%% l3fp-basics.dtx (with options: `code')
+%% l3fp-extended.dtx (with options: `code')
+%% l3fp-expo.dtx (with options: `code')
+%% l3fp-trig.dtx (with options: `code')
+%% l3fp-convert.dtx (with options: `code')
+%% l3fp-random.dtx (with options: `code')
+%% l3fp-types.dtx (with options: `code')
+%% l3fp-symbolic.dtx (with options: `code')
+%% l3fp-functions.dtx (with options: `code')
+%% l3fparray.dtx (with options: `code')
+%% l3bitset.dtx (with options: `code')
+%% l3cctab.dtx (with options: `code')
+%% l3sort.dtx (with options: `code')
+%% l3str-convert.dtx (with options: `code')
+%% l3tl-analysis.dtx (with options: `code')
+%% l3benchmark.dtx (with options: `code')
+%% l3regex.dtx (with options: `code')
+%% l3box.dtx (with options: `code')
+%% l3color.dtx (with options: `code')
+%% l3graphics.dtx (with options: `code')
+%% l3opacity.dtx (with options: `code')
+%% l3pdf.dtx (with options: `code')
+%% l3coffins.dtx (with options: `code')
+%% l3luatex.dtx (with options: `code')
+%% l3unicode.dtx (with options: `code')
+%% l3text.dtx (with options: `code')
+%% l3text-case.dtx (with options: `code')
+%% l3text-map.dtx (with options: `code')
+%% l3text-purify.dtx (with options: `code')
+%% l3legacy.dtx (with options: `code')
+%% l3deprecation.dtx (with options: `code')
%%
%% Copyright (C) 1990-2025 The LaTeX Project
%%
@@ -76,7 +78,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2025-03-26}%
+\def\ExplFileDate{2025-04-14}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -8074,29 +8076,12 @@
\cs_new_protected:Npn \sys_gset_rand_seed:n #1
{ \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: }
}
-\sys_if_engine_luatex:TF
+\cs_new:Npe \sys_timer:
{
- \cs_new:Npn \sys_timer:
- { \__sys_elapsedtime: }
+ \sys_if_engine_luatex:TF
+ { \exp_not:N \__sys_elapsedtime: }
+ { \exp_not:N \int_value:w \exp_not:N \tex_elapsedtime:D }
}
- {
- \cs_if_exist:NTF \tex_elapsedtime:D
- {
- \cs_new:Npn \sys_timer:
- { \int_value:w \tex_elapsedtime:D }
- }
- {
- \cs_new:Npn \sys_timer:
- {
- \int_value:w
- \msg_expandable_error:nnn { kernel } { no-elapsed-time }
- { \sys_timer: }
- \c_zero_int
- }
- }
- }
-\__sys_const:nn { sys_if_timer_exist }
- { \cs_if_exist_p:N \tex_elapsedtime:D || \cs_if_exist_p:N \__sys_elapsedtime: }
\__sys_everyjob:n
{
\int_const:Nn \c_sys_shell_escape_int
@@ -11173,12 +11158,6 @@
LaTeX~has~been~asked~to~replace~an~empty~pattern~by~'#1':~that~
would~lead~to~an~infinite~loop!
}
-\cs_if_exist:NF \tex_elapsedtime:D
- {
- \msg_new:nnnn { kernel } { no-elapsed-time }
- { No~clock~detected~for~#1. }
- { The~current~engine~provides~no~way~to~access~the~system~time. }
- }
\msg_new:nnnn { kernel } { non-base-function }
{ Function~'#1'~is~not~a~base~function }
{
@@ -13911,6 +13890,7 @@
\int_new:N \l_keys_choice_int
\tl_new:N \l_keys_choice_tl
\clist_new:N \l__keys_groups_clist
+\bool_new:N \l__keys_inherit_bool
\clist_new:N \l__keys_inherit_clist
\str_new:N \l_keys_key_str
\tl_new:N \l_keys_key_tl
@@ -14846,19 +14826,34 @@
}
\cs_new_protected:Npn \__keys_execute_inherit:
{
+ \bool_set_false:N \l__keys_inherit_bool
\clist_map_inline:cn
{ \c__keys_inherit_root_str \__keys_parent:o \l_keys_path_str }
+ { \__keys_excute_inherit:n {##1} }
+ \bool_if:NF \l__keys_inherit_bool
+ { \__keys_execute_unknown: }
+ }
+\cs_new_protected:Npn \__keys_excute_inherit:n #1
+ {
+ \cs_if_exist:cTF
+ { \c__keys_inherit_root_str #1 }
{
+ \clist_map_inline:cn { \c__keys_inherit_root_str #1 }
+ { \__keys_excute_inherit:n {##1} }
+ \bool_if:NT \l__keys_inherit_bool
+ { \clist_map_break: }
+ }
+ {
\cs_if_exist:cT
- { \c__keys_code_root_str ##1 / \l_keys_key_str }
+ { \c__keys_code_root_str #1 / \l_keys_key_str }
{
- \str_set:Nn \l__keys_inherit_str {##1}
- \cs_if_exist_use:c { \c__keys_check_root_str ##1 / \l_keys_key_str }
- \__keys_execute:no { ##1 / \l_keys_key_str } \l_keys_value_tl
- \clist_map_break:n \use_none:n
+ \str_set:Nn \l__keys_inherit_str {#1}
+ \cs_if_exist_use:c { \c__keys_check_root_str #1 / \l_keys_key_str }
+ \__keys_execute:no { #1 / \l_keys_key_str } \l_keys_value_tl
+ \clist_map_break:n
+ { \bool_set_true:N \l__keys_inherit_bool }
}
}
- \__keys_execute_unknown:
}
\cs_new_protected:Npn \__keys_execute_unknown:
{
@@ -16036,7 +16031,6 @@
}
\cs_new:Npn \__fp_parse_round:Nw #1 #2 \__fp_round_to_nearest:NNN #3#4
{ #2 #1 #3 }
-
\int_const:Nn \c__fp_five_int { 5 }
\cs_new:Npn \__fp_round_return_one:
{ \exp_after:wN 1 \exp_after:wN \exp_stop_f: \exp:w }
@@ -25588,6 +25582,204 @@
{ is~empty #3 }
{ contains~the~tokens: #2 #4 }
}
+%% File: l3benchmark.dtx
+\fp_new:N \g_benchmark_duration_target_fp
+\fp_gset:Nn \g_benchmark_duration_target_fp { 1 }
+\int_new:N \g__benchmark_nesting_int
+\cs_new_protected:Npn \__benchmark_raw:nN #1
+ {
+ \int_gincr:N \g__benchmark_nesting_int
+ \exp_args:Nc \__benchmark_raw_aux:N
+ { g__benchmark_ \int_use:N \g__benchmark_nesting_int _int }
+ \__benchmark_raw_aux:
+ #1
+ \__benchmark_raw_end:N
+ }
+\cs_new_protected:Npn \__benchmark_raw_aux:N #1
+ {
+ \int_gzero_new:N #1
+ \cs_gset_protected:Npn \__benchmark_raw_aux: { \int_gset:Nn #1 { \sys_timer: } }
+ }
+\cs_new_protected:Npn \__benchmark_raw_end:N #1
+ {
+ \int_gset:Nn #1
+ {
+ \sys_timer: -
+ \int_use:c { g__benchmark_ \int_use:N \g__benchmark_nesting_int _int }
+ }
+ \int_gdecr:N \g__benchmark_nesting_int
+ }
+\cs_new_eq:NN \__benchmark_tmp:w ?
+\cs_new_protected:Npn \__benchmark_raw_replicate:nnN #1
+ {
+ \int_compare:nNnTF {#1} > { 500000 }
+ { \__benchmark_raw_replicate_large:nnN {#1} }
+ { \__benchmark_raw_replicate_small:nnN {#1} }
+ }
+\cs_new_protected:Npn \__benchmark_raw_replicate_large:nnN #1#2
+ {
+ \cs_set:Npe \__benchmark_tmp:w ##1 { \prg_replicate:nn { 5000 } {##1} }
+ \exp_args:Nno \__benchmark_raw_replicate:nnN { #1 / 5000 }
+ { \__benchmark_tmp:w {#2} }
+ }
+\cs_new_protected:Npn \__benchmark_raw_replicate_small:nnN #1#2
+ {
+ \cs_set:Npe \__benchmark_tmp:w ##1##2 { \prg_replicate:nn {#1} {##1} }
+ \__benchmark_raw:nN { \__benchmark_tmp:w {#2} { } } \g__benchmark_time_int
+ \exp_args:No \__benchmark_raw_replicate_aux:nnN
+ { \int_use:N \g__benchmark_time_int } {#2}
+ }
+\cs_new_protected:Npn \__benchmark_raw_replicate_aux:nnN #1#2#3
+ {
+ \__benchmark_raw:nN { \__benchmark_tmp:w { } {#2} } \g__benchmark_time_int
+ \int_gset:Nn #3 { #1 - \g__benchmark_time_int }
+ \cs_set_eq:NN \__benchmark_tmp:w \prg_do_nothing:
+ }
+\fp_new:N \g_benchmark_time_fp
+\fp_new:N \g_benchmark_ops_fp
+\int_new:N \g__benchmark_duration_int
+\int_new:N \g__benchmark_time_int
+\int_new:N \g__benchmark_time_a_int
+\int_new:N \g__benchmark_time_b_int
+\int_new:N \g__benchmark_time_c_int
+\int_new:N \g__benchmark_time_d_int
+\int_new:N \g__benchmark_repeat_int
+\tl_new:N \g__benchmark_code_tl
+\cs_new_protected:Npn \benchmark_once:n #1
+ {
+ \benchmark_once_silent:n {#1}
+ \__benchmark_display:
+ }
+\cs_new_protected:Npn \benchmark_once_silent:n #1
+ {
+ \__benchmark_measure_op:
+ \__benchmark_raw:nN {#1} \g__benchmark_time_int
+ \fp_gset:Nn \g_benchmark_time_fp { \g__benchmark_time_int / 65536 }
+ \fp_gset:Nn \g_benchmark_ops_fp { \g_benchmark_time_fp / \g__benchmark_one_op_fp }
+ }
+\cs_new_protected:Npn \benchmark:n #1
+ {
+ \benchmark_silent:n {#1}
+ \__benchmark_display:
+ }
+\cs_new_protected:Npn \benchmark_silent:n #1
+ {
+ \__benchmark_measure_op:
+ \tl_gset:Nn \g__benchmark_code_tl {#1}
+ \__benchmark_aux:
+ \fp_gset:Nn \g_benchmark_ops_fp { \g_benchmark_time_fp / \g__benchmark_one_op_fp }
+ }
+\cs_new_protected:Npn \__benchmark_aux:
+ {
+ \int_gset:Nn \g__benchmark_repeat_int { 1 }
+ \__benchmark_raw:nN { \g__benchmark_code_tl } \g__benchmark_time_int
+ \int_compare:nNnF \g__benchmark_time_int < { \g__benchmark_duration_int / 2 }
+ { \prg_break: }
+ \bool_until_do:nn
+ {
+ \int_compare_p:nNn \g__benchmark_time_int > { \g__benchmark_duration_int / 32 }
+ || \int_compare_p:nNn \g__benchmark_repeat_int > { \c_max_int / 4 }
+ }
+ {
+ \int_gset:Nn \g__benchmark_repeat_int { 4 * \g__benchmark_repeat_int }
+ \__benchmark_run:N \g__benchmark_time_int
+ }
+ \int_gset:Nn \g__benchmark_repeat_int
+ {
+ \fp_to_int:n
+ {
+ max ( 1 , min ( \c_max_int ,
+ \g__benchmark_duration_int * \g__benchmark_repeat_int /
+ \int_eval:n { 4 * \g__benchmark_time_int } ) )
+ }
+ }
+ \int_compare:nNnTF \g__benchmark_repeat_int = 1
+ { \int_gset_eq:NN \g__benchmark_time_a_int \g__benchmark_time_int }
+ { \__benchmark_run:N \g__benchmark_time_a_int }
+ \__benchmark_run:N \g__benchmark_time_b_int
+ \__benchmark_run:N \g__benchmark_time_c_int
+ \__benchmark_run:N \g__benchmark_time_d_int
+ \int_gset:Nn \g__benchmark_time_int
+ {
+ \int_min:nn
+ { \int_min:nn \g__benchmark_time_a_int \g__benchmark_time_b_int }
+ { \int_min:nn \g__benchmark_time_c_int \g__benchmark_time_d_int }
+ }
+ \prg_break_point:
+ \int_compare:nNnT \g__benchmark_time_int < 3 { \int_gzero:N \g__benchmark_time_int }
+ \fp_gset:Nn \g_benchmark_time_fp
+ { \g__benchmark_time_int / \g__benchmark_repeat_int / 65536 }
+ }
+\cs_new_protected:Npn \__benchmark_run:N
+ { \exp_args:NNo \__benchmark_raw_replicate:nnN \g__benchmark_repeat_int { \g__benchmark_code_tl } }
+\fp_new:N \g__benchmark_one_op_fp
+\cs_new_protected:Npn \__benchmark_measure_op:
+ {
+ \int_gset:Nn \g__benchmark_duration_int
+ { \fp_to_int:n { 65536 * \g_benchmark_duration_target_fp } / 4 }
+ \tl_gset:Nn \g__benchmark_code_tl
+ { \int_gadd:Nn \g__benchmark_duration_int { 0 } }
+ \__benchmark_aux:
+ \fp_gset:Nn \g__benchmark_one_op_fp { max(\g_benchmark_time_fp, 1e-8) }
+ \int_gset:Nn \g__benchmark_duration_int
+ { \fp_to_int:n { 65536 * \g_benchmark_duration_target_fp } }
+ }
+\cs_new:Npn \__benchmark_fp_to_tl:N #1
+ {
+ \fp_compare:nTF { abs(#1) < 1000 }
+ { \fp_to_tl:n { round(#1, 2 - logb(#1)) } }
+ {
+ \exp_args:Nf \__benchmark_fp_to_tl_aux:nN
+ { \fp_to_int:n { logb(#1) } } #1
+ }
+ }
+\cs_new:Npn \__benchmark_fp_to_tl_aux:nN #1#2
+ { \fp_to_tl:n { round(#2 * 1e-#1, 2) } e#1 }
+\cs_new_protected:Npn \__benchmark_display:
+ {
+ \iow_term:e
+ {
+ \__benchmark_fp_to_tl:N \g_benchmark_time_fp \c_space_tl seconds \c_space_tl
+ ( \__benchmark_fp_to_tl:N \g_benchmark_ops_fp \c_space_tl ops)
+ }
+ }
+\int_new:N \g__benchmark_tictoc_int
+\seq_new:N \g__benchmark_tictoc_seq
+\tl_new:N \l__benchmark_tictoc_pop_tl
+\cs_new:Npn \__benchmark_tictoc_prefix:
+ {
+ (l3benchmark) \c_space_tl
+ + \prg_replicate:nn { \g__benchmark_tictoc_int } { -+ } \c_space_tl
+ }
+\cs_new_protected:Npn \benchmark_tic:
+ {
+ \iow_term:e { \__benchmark_tictoc_prefix: TIC }
+ \exp_args:NNf \seq_gput_right:Nn \g__benchmark_tictoc_seq { \sys_timer: }
+ \int_gincr:N \g__benchmark_tictoc_int
+ }
+\cs_new:Npn \benchmark_toc:
+ {
+ \seq_gpop_right:NNTF \g__benchmark_tictoc_seq \l__benchmark_tictoc_pop_tl
+ { \__benchmark_toc: }
+ { \msg_error:nn { benchmark } { toc-first } }
+ }
+\cs_new_protected:Npn \__benchmark_toc:
+ {
+ \int_gdecr:N \g__benchmark_tictoc_int
+ \fp_gset:Nn \g_benchmark_time_fp
+ { ( \sys_timer: - \l__benchmark_tictoc_pop_tl ) / 65536 }
+ \iow_term:e
+ {
+ \__benchmark_tictoc_prefix:
+ TOC: \c_space_tl
+ \__benchmark_fp_to_tl:N \g_benchmark_time_fp \c_space_tl s
+ }
+ }
+\msg_new:nnn { benchmark } { toc-first }
+ {
+ \token_to_str:N \benchmark_toc: \c_space_tl without~
+ \token_to_str:N \benchmark_tic: \c_space_tl !
+ }
%% File: l3regex.dtx
\cs_new_eq:NN \__regex_int_eval:w \tex_numexpr:D
\cs_new_protected:Npn \__regex_standard_escapechar:
@@ -30386,7 +30578,6 @@
}
#6 #1 \l__box_internal_box
}
-
%% File: l3color.dtx
\cs_new_eq:NN \color_group_begin: \group_begin:
\cs_new_eq:NN \color_group_end: \group_end:
@@ -30915,6 +31106,7 @@
\__color_finalise_current:
\__color_select:N \l__color_current_tl
}
+\cs_generate_variant:Nn \color_select:n { V }
\cs_new_protected:Npn \color_select:nn #1#2
{
\__color_select_main:Nnn \l__color_current_tl {#1} {#2}
@@ -30921,6 +31113,7 @@
\__color_finalise_current:
\__color_select:N \l__color_current_tl
}
+\cs_generate_variant:Nn \color_select:nn { nV , V , VV }
\cs_new_protected:Npn \__color_select_main:Nnn #1#2#3
{
\use:e
@@ -31267,7 +31460,6 @@
\__color_tmp:w { HTML } { rgb }
\__color_tmp:w { space-sep-cmyk } { cmyk }
\__color_tmp:w { space-sep-rgb } { rgb }
-
\group_end:
\cs_new_protected:cpn { __color_export_comma-sep-cmyk:Nw }
#1#2 ~ #3 ~ #4 ~ #5 \s__color_stop
@@ -32516,6 +32708,34 @@
LaTeX~was~asked~to~include~an~graphic~of~type~'#1',~
but~this~is~not~supported~by~the~current~driver~(production~route).
}
+%% File: l3opacity.dtx
+\cs_if_exist:NT \@expl at finalise@setup@@
+ {
+ \tl_gput_right:Nn \@expl at finalise@setup@@
+ { \declare at file@substitution { l3opacity.sty } { null.tex } }
+ }
+\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
+ { \__opacity_select:nN {#1} \__opacity_backend_fill:n }
+\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
+ {
+ \fp_set:Nn \l__opacity_tmp_fp { #1 }
+ \bool_lazy_or:nnTF
+ { \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} }
+ { \exp_args:Ne #2 { \fp_use:N \l__opacity_tmp_fp } }
+ }
+\msg_new:nnnn { opacity } { out-of-range }
+ { Opacity~value~out~of~range. }
+ {
+ LaTeX~was~asked~to~set~opacity~of~#1,~but~only~values~in~the~range~
+ 0~to~1~are~supported.
+ }
%% File: l3pdf.dtx
\scan_new:N \s__pdf_stop
\bool_new:N \g__pdf_init_bool
@@ -34079,7 +34299,6 @@
The~feature~you~are~using~is~only~available~
with~the~LuaTeX~engine.~LaTeX3~ignored~'#1'.
}
-
\msg_new:nnnn { luatex } { module-not-found }
{ Lua~module~`#1'~not~found. }
{
@@ -34089,7 +34308,6 @@
The~Lua~loader~provided~this~additional~information: \\
#2
}
-
\prop_gput:Nnn \g_msg_module_name_prop { luatex } { LaTeX }
\prop_gput:Nnn \g_msg_module_type_prop { luatex } { }
%% File: l3unicode.dtx
@@ -36195,7 +36413,6 @@
\__text_change_case_store:e
{ \__text_change_case_upper_el_stress:nn {#1} {#5} }
\__text_change_case_loop:nnnw {#2} {#3} {#4}
-
}
{
\__text_change_case_store:e
@@ -37727,8 +37944,14 @@
{ l__text_purify_ \token_to_str:N #1 _tl }
}
{
- \exp_args:Ne \__text_purify_replace_auxii:n
- { \__text_token_to_explicit:N #1 }
+ \bool_lazy_or:nnTF
+ { \token_if_group_begin_p:N #1 }
+ { \token_if_group_end_p:N #1 }
+ { \__text_purify_loop:w }
+ {
+ \exp_args:Ne \__text_purify_replace_auxii:n
+ { \__text_token_to_explicit:N #1 }
+ }
}
}
\cs_new:Npn \__text_purify_replace_auxi:n #1 { \__text_purify_loop:w #1 }
@@ -37786,48 +38009,6 @@
\text_declare_purify_equivalent:Nn \fontsize { \use_none:nn }
\text_declare_purify_equivalent:Nn \selectfont { }
\text_declare_purify_equivalent:Nn \usefont { \use_none:nnnn }
-\tl_map_inline:nn
- {
- \emph
- \text
- \textnormal
- \textrm
- \textsf
- \texttt
- \textbf
- \textmd
- \textit
- \textsl
- \textup
- \textsc
- \textulc
- }
- { \text_declare_purify_equivalent:Nn #1 { \use:n } }
-\tl_map_inline:nn
- {
- \normalfont
- \rmfamily
- \sffamily
- \ttfamily
- \bfseries
- \mdseries
- \itshape
- \scshape
- \slshape
- \upshape
- \em
- \Huge
- \LARGE
- \Large
- \footnotesize
- \huge
- \large
- \normalsize
- \scriptsize
- \small
- \tiny
- }
- { \text_declare_purify_equivalent:Nn #1 { } }
\exp_args:Nc \text_declare_purify_equivalent:Nn
{ @protected at testopt } { \use_none:nnn }
\text_declare_purify_equivalent:Nn \begin { \use:c }
@@ -38316,6 +38497,14 @@
\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_new_protected:Npn \sys_load_deprecation: { }
+\__kernel_patch_deprecation:nnNNpn { 2025-03-26 } { (no~longer~required) }
+\cs_new:Npn \sys_if_timer_exist:T #1 {#1}
+\__kernel_patch_deprecation:nnNNpn { 2025-03-26 } { (no~longer~required) }
+\cs_new:Npn \sys_if_timer_exist:F #1 { }
+\__kernel_patch_deprecation:nnNNpn { 2025-03-26 } { (no~longer~required) }
+\cs_new:Npn \sys_if_timer_exist:TF #1#2 {#1}
+\__kernel_patch_deprecation:nnNNpn { 2025-03-26 } { (no~longer~required) }
+\cs_new:Npn \sys_if_timer_exist_p: { \c_true_bool }
\__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:n }
\cs_new:Npn \text_titlecase:n #1
{ \text_titlecase_first:n { \text_lowercase:n {#1} } }
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex 2025-04-28 19:50:11 UTC (rev 75045)
@@ -4,7 +4,7 @@
%%
%% The original source files were:
%%
-%% expl3.dtx (with options: `generic,loader')
+%% expl3.dtx (with options: `generic')
%%
%% Copyright (C) 1990-2025 The LaTeX Project
%%
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2025-03-26}%
+\def\ExplFileDate{2025-04-14}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -4,7 +4,7 @@
%%
%% The original source files were:
%%
-%% expl3.dtx (with options: `2ekernel,loader')
+%% expl3.dtx (with options: `2ekernel')
%%
%% Copyright (C) 1990-2025 The LaTeX Project
%%
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2025-03-26}%
+\def\ExplFileDate{2025-04-14}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.lua 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.lua 2025-04-28 19:50:11 UTC (rev 75045)
@@ -4,12 +4,12 @@
--
-- The original source files were:
--
--- l3luatex.dtx (with options: `package,lua')
--- l3names.dtx (with options: `package,lua')
--- l3sys.dtx (with options: `package,lua')
--- l3token.dtx (with options: `package,lua')
--- l3intarray.dtx (with options: `package,lua')
--- l3pdf.dtx (with options: `package,lua')
+-- l3luatex.dtx (with options: `lua')
+-- l3names.dtx (with options: `lua')
+-- l3sys.dtx (with options: `lua')
+-- l3token.dtx (with options: `lua')
+-- l3intarray.dtx (with options: `lua')
+-- l3pdf.dtx (with options: `lua')
--
-- Copyright (C) 1990-2025 The LaTeX Project
--
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty 2025-04-28 19:50:11 UTC (rev 75045)
@@ -4,7 +4,7 @@
%%
%% The original source files were:
%%
-%% expl3.dtx (with options: `package,loader')
+%% expl3.dtx (with options: `package')
%%
%% Copyright (C) 1990-2025 The LaTeX Project
%%
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2025-03-26}%
+\def\ExplFileDate{2025-04-14}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3debug.def 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3debug.def 2025-04-28 19:50:11 UTC (rev 75045)
@@ -4,7 +4,7 @@
%%
%% The original source files were:
%%
-%% l3debug.dtx (with options: `package')
+%% l3debug.dtx (with options: `def')
%%
%% Copyright (C) 1990-2025 The LaTeX Project
%%
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3debug.dtx
-\ProvidesExplFile{l3debug.def}{2025-03-26}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2025-04-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
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls 2025-04-28 19:50:11 UTC (rev 75045)
@@ -20,7 +20,7 @@
%%
%% File: l3doc.dtx
\RequirePackage{calc}
-\ProvidesExplClass{l3doc}{2025-03-26}{}
+\ProvidesExplClass{l3doc}{2025-04-14}{}
{L3 Experimental documentation class}
\clist_new:N \g_docinput_clist
\seq_new:N \g_doc_functions_seq
@@ -1230,7 +1230,6 @@
\multicolumn { 2 } { @{} r @{} }
{ \scriptsize New: \, \l__codedoc_date_added_tl } \\
}
-
\tl_if_empty:NF \l__codedoc_date_updated_tl
{
\multicolumn { 2 } { @{} r @{} }
@@ -2413,7 +2412,6 @@
{
\tl_to_str:n
{
-
alignment, ampersand, atsign, backslash, catcode, circumflex,
code, colon, document, dollar, e, empty, false, hash, inf,
initex, job, left, log, math, mark, max, minus, nan, nil, no,
@@ -2421,7 +2419,6 @@
stop, term, tilde, tmpa, tmpb, true, underscore, zero, one, two,
three, four, five, six, seven, eight, nine, ten, eleven, twelve,
thirteen, fourteen, fifteen, sixteen, thirty, hundred
-
}
}
\GlossaryPrologue
Modified: trunk/Master/tlpkg/bin/c2lx
===================================================================
--- trunk/Master/tlpkg/bin/c2lx 2025-04-28 19:48:18 UTC (rev 75044)
+++ trunk/Master/tlpkg/bin/c2lx 2025-04-28 19:50:11 UTC (rev 75045)
@@ -26,6 +26,9 @@
shift; label=ldev
pkgs="latex-amsmath-dev latex-firstaid-dev latex-graphics-dev latex-lab-dev"
pkgs="$pkgs latex-tools-dev latex-base-dev l3build"
+elif test "x$1" = x3; then
+ shift; label=l3
+ pkgs="l3experimental l3backend l3kernel"
elif test "x$1" = xhep; then
shift; label=hep
pkgs="hep-font hep-math-font hep-acronym hep-bibliography hep-float"
More information about the tex-live-commits
mailing list.