summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-03-31 03:01:28 +0000
committerNorbert Preining <norbert@preining.info>2023-03-31 03:01:28 +0000
commitff15e9aea45682289b6f31fa687c1b51f543d09e (patch)
tree6d69087aaae1e3fbd3ac00a7922eb41b940c1fa6 /macros/latex/contrib
parent0a426619b66178dd2257f1ece60ff80f86f40e88 (diff)
CTAN sync 202303310301
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/l3backend/CHANGELOG.md11
-rw-r--r--macros/latex/contrib/l3backend/README.md2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-basics.dtx16
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-code.pdfbin933659 -> 933580 bytes
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx164
-rw-r--r--macros/latex/contrib/l3backend/l3backend-draw.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-graphics.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-header.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-opacity.dtx67
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend.ins28
-rw-r--r--macros/latex/contrib/l3experimental/CHANGELOG.md9
-rw-r--r--macros/latex/contrib/l3experimental/README.md2
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.pdfbin308483 -> 308403 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3bitset.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3bitset.pdfbin404305 -> 404278 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-boxes.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-code.pdfbin679193 -> 679499 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-layers.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-paths.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-points.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-scopes.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-softpath.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-state.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-transforms.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.pdfbin517619 -> 517668 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.pdfbin408825 -> 408782 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.pdfbin382072 -> 382031 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.pdfbin313535 -> 313467 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.pdfbin367940 -> 367903 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.pdfbin347982 -> 347924 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.pdfbin394409 -> 394348 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.pdfbin299636 -> 299507 bytes
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md18
-rw-r--r--macros/latex/contrib/l3kernel/README.md2
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin622500 -> 622894 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1740152 -> 1741657 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx5
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3color.dtx65
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.pdfbin557491 -> 557821 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin151517 -> 151614 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx3
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin395876 -> 395876 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin122710 -> 122710 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin150674 -> 150674 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin148706 -> 148706 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin114586 -> 114586 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin112485 -> 112485 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin151569 -> 151569 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin128316 -> 128316 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin163456 -> 163456 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin250136 -> 250136 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin150283 -> 150283 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin170076 -> 170076 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin204992 -> 204992 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3pdf.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin81640 -> 81640 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin295977 -> 296152 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin242645 -> 242796 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin215187 -> 215323 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx123
-rw-r--r--macros/latex/contrib/l3kernel/l3text-map.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin7327606 -> 7339540 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
-rw-r--r--macros/latex/contrib/physics2/doc/phy2docdef.tex2
-rw-r--r--macros/latex/contrib/physics2/doc/physics2-legacy.pdfbin97692 -> 82826 bytes
-rw-r--r--macros/latex/contrib/physics2/doc/physics2-legacy.tex31
-rw-r--r--macros/latex/contrib/physics2/doc/physics2.pdfbin87049 -> 87997 bytes
-rw-r--r--macros/latex/contrib/physics2/doc/physics2.tex28
-rw-r--r--macros/latex/contrib/physics2/tex/phy-ab.braket.sty12
-rw-r--r--macros/latex/contrib/physics2/tex/phy-ab.legacy.sty20
-rw-r--r--macros/latex/contrib/physics2/tex/phy-ab.sty32
-rw-r--r--macros/latex/contrib/physics2/tex/phy-braket.sty22
-rw-r--r--macros/latex/contrib/physics2/tex/phy-common.sty7
-rw-r--r--macros/latex/contrib/uvaletter/README.md2
-rw-r--r--macros/latex/contrib/uvaletter/demo/uvaletter-demo.pdfbin134477 -> 37118 bytes
-rw-r--r--macros/latex/contrib/uvaletter/demo/uvaletter-demo.tex5
-rw-r--r--macros/latex/contrib/uvaletter/uvaletter.sty15
143 files changed, 599 insertions, 304 deletions
diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md
index 9a588abdaa..82228400e2 100644
--- a/macros/latex/contrib/l3backend/CHANGELOG.md
+++ b/macros/latex/contrib/l3backend/CHANGELOG.md
@@ -6,6 +6,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-03-30]
+
+### Changed
+- Integrate l3color and l3opacity with luaotfload to ensure that
+ opacity specifications don't conflict.
+
## [2023-01-16]
### Changed
@@ -14,7 +20,7 @@ this project uses date-based 'snapshot' version identifiers.
## [2022-10-26]
### Changed
-- Avoid setting media box is `\mag` is non-standard
+- Avoid setting media box if `\mag` is non-standard
## [2022-09-28]
@@ -282,7 +288,8 @@ this project uses date-based 'snapshot' version identifiers.
- Include `l3backend` in file names
- Moved backend code to internal for each 'parent' module
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-01-16...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-03-30...HEAD
+[2023-03-30]: https://github.com/latex3/latex3/compare/2023-01-16...2023-03-30
[2023-01-16]: https://github.com/latex3/latex3/compare/2022-10-26...2023-01-16
[2022-10-26]: https://github.com/latex3/latex3/compare/2022-09-28...2022-10-26
[2022-09-28]: https://github.com/latex3/latex3/compare/2022-08-30...2022-09-28
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index dba3d7b409..02fab16f9f 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2023-01-16
+Release 2023-03-30
This package forms parts of `expl3`, and contains the code used to interface
with backends (drivers) across the `expl3` codebase. The functions here are
diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/contrib/l3backend/l3backend-basics.dtx
index 918ddaa06d..1f821aff25 100644
--- a/macros/latex/contrib/l3backend/l3backend-basics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-16}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -53,7 +53,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3backend-basics} Implementation}
+% \section{\pkg{l3backend-basics} implementation}
%
% \begin{macrocode}
%<*package>
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2023-01-16}{}
+ {l3backend-dvipdfmx.def}{2023-03-30}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2023-01-16}{}
+ {l3backend-dvips.def}{2023-03-30}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2023-01-16}{}
+ {l3backend-dvisvgm.def}{2023-03-30}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2023-01-16}{}
+ {l3backend-luatex.def}{2023-03-30}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2023-01-16}{}
+ {l3backend-pdftex.def}{2023-03-30}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2023-01-16}{}
+ {l3backend-xetex.def}{2023-03-30}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index f7e1c7d37a..ae7e2281fc 100644
--- a/macros/latex/contrib/l3backend/l3backend-box.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-16}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -53,7 +53,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3backend-box} Implementation}
+% \section{\pkg{l3backend-box} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf
index 8a33bad815..1ce7f2d3a8 100644
--- a/macros/latex/contrib/l3backend/l3backend-code.pdf
+++ b/macros/latex/contrib/l3backend/l3backend-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/contrib/l3backend/l3backend-color.dtx
index 1aff7262eb..786282333e 100644
--- a/macros/latex/contrib/l3backend/l3backend-color.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-16}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -53,7 +53,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3backend-color} Implementation}
+% \section{\pkg{l3backend-color} implementation}
%
% \begin{macrocode}
%<*package>
@@ -68,85 +68,6 @@
% \texttt{dvipdfmx}/\XeTeX{} is PDF-based means it (largely) sticks closer to
% direct PDF output.
%
-% \subsection{Collecting information from \LaTeXe{}}
-%
-% \subsubsection{\texttt{dvips}-style}
-%
-% \begin{macrocode}
-%<*dvisvgm|dvipdfmx|dvips|xetex>
-% \end{macrocode}
-%
-% \begin{macro}{\@@_backend_pickup:N}
-% \begin{macro}{\@@_backend_pickup:w}
-% Allow for \LaTeXe{} color. Here, the possible input values are limited:
-% \texttt{dvips}-style colors can be taken as-is. The \texttt{x}-type expansion
-% is there to cover the case where \pkg{xcolor} is in use.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_pickup:N #1
- {
- \exp_args:NV \tl_if_head_is_space:nTF \current@color
- {
- \tl_set:Nn #1 { { gray } { 0 } }
- \msg_warning:nnx { color } { unhandled }
- { \current@color }
- }
- {
- \exp_last_unbraced:Nx \@@_backend_pickup:w
- { \current@color } \s_@@_stop #1
- }
- }
-\cs_new_protected:Npn \@@_backend_pickup:w #1 ~ #2 \s_@@_stop #3
- { \tl_set:Nn #3 { {#1} {#2} } }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-%</dvisvgm|dvipdfmx|dvips|xetex>
-% \end{macrocode}
-%
-% \subsubsection{\LuaTeX{} and \pdfTeX{}}
-%
-% \begin{macrocode}
-%<*luatex|pdftex>
-% \end{macrocode}
-%
-% \begin{macro}{\@@_backend_pickup:N}
-% \begin{macro}{\@@_backend_pickup:w}
-% Same ideas, but with a different backend-dependent format.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_pickup:N #1
- {
- \exp_last_unbraced:Nx \@@_backend_pickup:w
- { \current@color } ~ 0 ~ 0 ~ 0 \s_@@_stop #1
- }
-\cs_new_protected:Npn \@@_backend_pickup:w
- #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s_@@_stop #7
- {
- \str_if_eq:nnTF {#2} { g }
- { \tl_set:Nn #7 { { gray } {#1} } }
- {
- \str_if_eq:nnTF {#4} { rg }
- { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } }
- {
- \str_if_eq:nnTF {#5} { k }
- { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } }
- {
- \tl_set:Nn #1 { { gray } { 0 } }
- \msg_warning:nnx { color } { unhandled }
- { \current@color }
- }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-%</luatex|pdftex>
-% \end{macrocode}
-%
% \subsection{The color stack}
%
% For PDF-based engines, we have a color stack available inside the specials.
@@ -289,6 +210,8 @@
% \begin{macrocode}
\tl_new:N \l_@@_backend_fill_tl
\tl_new:N \l_@@_backend_stroke_tl
+\tl_set:Nn \l_@@_backend_fill_tl { 0 ~ g }
+\tl_set:Nn \l_@@_backend_stroke_tl { 0 ~ G }
% \end{macrocode}
% \end{variable}
%
@@ -1341,6 +1264,85 @@
%</package>
% \end{macrocode}
%
+% \subsection{Font handling integration}
+%
+% In \LuaTeX{} these colors should also be usable to color fonts, so
+% \texttt{luaotfload} color handling is extended to include these.
+%
+% \begin{macrocode}
+%<*lua>
+% \end{macrocode}
+%
+% \begin{macrocode}
+local l = lpeg
+local spaces = l.P' '^0
+local digit16 = l.R('09', 'af', 'AF')
+
+local octet = digit16 * digit16 / function(s)
+ return string.format('%.3g ', tonumber(s, 16) / 255)
+end
+
+if luaotfload and luaotfload.set_transparent_colorstack then
+ local htmlcolor = l.Cs(octet * octet * octet * -1 * l.Cc'rg')
+ local color_export = {
+ token.create'tex_endlocalcontrol:D',
+ token.create'tex_hpack:D',
+ token.new(0, 1),
+ token.create'color_export:nnN',
+ token.new(0, 1),
+ '',
+ token.new(0, 2),
+ token.new(0, 1),
+ 'backend',
+ token.new(0, 2),
+ token.create'l_tmpa_tl',
+ token.create'exp_after:wN',
+ token.create'__color_select:nn',
+ token.create'l_tmpa_tl',
+ token.new(0, 2),
+ }
+ local group_end = token.create'group_end:'
+ local value = (1 - l.P'}')^0
+ luatexbase.add_to_callback('luaotfload.parse_color', function (value)
+% Also allow HTML colors to preserve compatibility
+ local html = htmlcolor:match(value)
+ if html then return html end
+
+ tex.runtoks(function()
+ token.get_next()
+ color_export[6] = value
+ tex.sprint(-2, color_export)
+ end)
+ local list = token.scan_list()
+ if not list.head or list.head.next
+ or list.head.subtype ~= node.subtype'pdf_colorstack' then
+ error'Unexpected backend behavior'
+ end
+ local cmd = list.head.data
+ node.free(list)
+ return cmd
+ end, 'l3color')
+end
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</lua>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*luatex>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*package>
+\lua_load_module:n {l3backend-luatex}
+%</package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</luatex>
+% \end{macrocode}
+%
% \end{implementation}
%
% \PrintIndex
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index d9f4f53cff..6577bc3008 100644
--- a/macros/latex/contrib/l3backend/l3backend-draw.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-16}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -53,7 +53,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3backend-draw} Implementation}
+% \section{\pkg{l3backend-draw} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index a347bddccf..b042bd04e5 100644
--- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-16}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -53,7 +53,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3backend-graphics} Implementation}
+% \section{\pkg{l3backend-graphics} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx
index 69062bf241..595e6a2924 100644
--- a/macros/latex/contrib/l3backend/l3backend-header.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-header.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-16}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -53,7 +53,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3backend-header} Implementation}
+% \section{\pkg{l3backend-header} implementation}
%
% \begin{macrocode}
%<*dvips&header>
diff --git a/macros/latex/contrib/l3backend/l3backend-opacity.dtx b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
index 465e51804a..3f3dd1c84a 100644
--- a/macros/latex/contrib/l3backend/l3backend-opacity.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-16}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -53,7 +53,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3backend-opacity} Implementation}
+% \section{\pkg{l3backend-opacity} implementation}
%
% \begin{macrocode}
%<*package>
@@ -287,6 +287,69 @@
%</package>
% \end{macrocode}
%
+% \subsection{Font handling integration}
+%
+% In \LuaTeX{} we want to use these functions also for transparent fonts
+% to avoid interference between both uses of transparency.
+%
+% \begin{macrocode}
+%<*lua>
+% \end{macrocode}
+%
+% First we need to check if pdfmanagement is active from Lua.
+% \begin{macrocode}
+local pdfmanagement_active do
+ local pdfmanagement_if_active_p = token.create'pdfmanagement_if_active_p:'
+ local cmd = pdfmanagement_if_active_p.cmdname
+ if cmd == 'undefined_cs' then
+ pdfmanagement_active = false
+ else
+ token.put_next(pdfmanagement_if_active_p)
+ pdfmanagement_active = token.scan_int() ~= 0
+ end
+end
+
+if pdfmanagement_active and luaotfload and luaotfload.set_transparent_colorstack then
+ luaotfload.set_transparent_colorstack(token.create'c__opacity_backend_stack_int'.index)
+
+ local transparent_register = {
+ token.create'pdfmanagement_add:nnn',
+ token.new(0, 1),
+ 'Page/Resources/ExtGState',
+ token.new(0, 2),
+ token.new(0, 1),
+ '',
+ token.new(0, 2),
+ token.new(0, 1),
+ '<</ca ',
+ '',
+ '/CA ',
+ '',
+ '>>',
+ token.new(0, 2),
+ }
+ luatexbase.add_to_callback('luaotfload.parse_transparent', function(value)
+ value = (octet * -1):match(value)
+ if not value then
+ tex.error'Invalid transparency value'
+ return
+ end
+ value = value:sub(1, -2)
+ local result = 'opacity' .. value
+ tex.runtoks(function()
+ transparent_register[6], transparent_register[10], transparent_register[12] = result, value, value
+ tex.sprint(-2, transparent_register)
+ end)
+ return '/' .. result .. ' gs'
+ end, 'l3opacity')
+end
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</lua>
+% \end{macrocode}
+%
+%
% \end{implementation}
%
% \PrintIndex
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index 321a4baa0e..bb80237d4d 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-16}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -53,7 +53,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3backend-pdf} Implementation}
+% \section{\pkg{l3backend-pdf} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3backend/l3backend.ins b/macros/latex/contrib/l3backend/l3backend.ins
index cfa8ece984..5b8945f012 100644
--- a/macros/latex/contrib/l3backend/l3backend.ins
+++ b/macros/latex/contrib/l3backend/l3backend.ins
@@ -137,4 +137,32 @@ and all files in that bundle must be distributed together.
}
}
+% Lua code
+
+\def\MetaPrefix{--}
+\preamble
+
+Copyright (C) 2023 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:
+
+ https://www.latex-project.org/lppl.txt
+
+This file is part of the "l3backend bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+\endpreamble
+\nopostamble
+\generate
+ {
+ \file{l3backend-luatex.lua}
+ {
+ \from{l3backend-color.dtx} {lua}
+ \from{l3backend-opacity.dtx} {lua}
+ }
+ }
+
\endbatchfile
diff --git a/macros/latex/contrib/l3experimental/CHANGELOG.md b/macros/latex/contrib/l3experimental/CHANGELOG.md
index d147f91b32..a3be92ce0f 100644
--- a/macros/latex/contrib/l3experimental/CHANGELOG.md
+++ b/macros/latex/contrib/l3experimental/CHANGELOG.md
@@ -7,6 +7,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-03-30]
+
+### Fixed
+- 'Fallback' value used for benchmarking single op
+ (see \#1182)
+
## [2023-01-24]
### Changed
@@ -256,7 +262,8 @@ this project uses date-based 'snapshot' version identifiers.
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-01-24...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-03-30...HEAD
+[2023-03-30]: https://github.com/latex3/latex3/compare/2023-01-24...2023-03-30
[2023-01-24]: https://github.com/latex3/latex3/compare/2022-04-20...2023-01-24
[2022-04-20]: https://github.com/latex3/latex3/compare/2022-04-10...2022-04-20
[2022-04-10]: https://github.com/latex3/latex3/compare/2022-02-05...2022-04-10
diff --git a/macros/latex/contrib/l3experimental/README.md b/macros/latex/contrib/l3experimental/README.md
index 8b6fe49c3b..9415c76d92 100644
--- a/macros/latex/contrib/l3experimental/README.md
+++ b/macros/latex/contrib/l3experimental/README.md
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2023-01-24
+Release 2023-03-30
Overview
--------
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.dtx b/macros/latex/contrib/l3experimental/l3benchmark.dtx
index e3d41c8084..e8290bc435 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.dtx
+++ b/macros/latex/contrib/l3experimental/l3benchmark.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -122,7 +122,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2023-01-24}{}
+\ProvidesExplPackage{l3benchmark}{2023-03-30}{}
{L3 Experimental benchmarking}
% \end{macrocode}
%
@@ -408,7 +408,7 @@
\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-16) }
+ \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 } }
}
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.pdf b/macros/latex/contrib/l3experimental/l3benchmark.pdf
index 6d1815f3b0..7abb2355b2 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.pdf
+++ b/macros/latex/contrib/l3experimental/l3benchmark.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3bitset.dtx b/macros/latex/contrib/l3experimental/l3bitset.dtx
index e4a40a7d7f..f3b7c26e1c 100644
--- a/macros/latex/contrib/l3experimental/l3bitset.dtx
+++ b/macros/latex/contrib/l3experimental/l3bitset.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
% \begin{documentation}
@@ -264,7 +264,7 @@
%<@@=bitset>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesExplPackage{l3bitset}{2023-01-24}{}
+\ProvidesExplPackage{l3bitset}{2023-03-30}{}
{L3 Experimental bitset support}
% \end{macrocode}
% A bitset is a string variable.
diff --git a/macros/latex/contrib/l3experimental/l3bitset.pdf b/macros/latex/contrib/l3experimental/l3bitset.pdf
index 13daed2625..b151ffb155 100644
--- a/macros/latex/contrib/l3experimental/l3bitset.pdf
+++ b/macros/latex/contrib/l3experimental/l3bitset.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
index 504d92ce26..c03fa2770a 100644
--- a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-code.pdf b/macros/latex/contrib/l3experimental/l3draw-code.pdf
index 0b8e93868c..3614cec3be 100644
--- a/macros/latex/contrib/l3experimental/l3draw-code.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-layers.dtx b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
index aa930cfcc7..36f3433092 100644
--- a/macros/latex/contrib/l3experimental/l3draw-layers.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-paths.dtx b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
index 7201051b82..70b7608f2b 100644
--- a/macros/latex/contrib/l3experimental/l3draw-paths.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-points.dtx b/macros/latex/contrib/l3experimental/l3draw-points.dtx
index 01b82b4a8e..6467e01202 100644
--- a/macros/latex/contrib/l3experimental/l3draw-points.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-points.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
index 4663049adf..9727e9ce6e 100644
--- a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
index 971a4236af..234c4930ef 100644
--- a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-state.dtx b/macros/latex/contrib/l3experimental/l3draw-state.dtx
index defbbf9a92..86275a5226 100644
--- a/macros/latex/contrib/l3experimental/l3draw-state.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-state.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
index 23febfae6c..e7d370a245 100644
--- a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.dtx b/macros/latex/contrib/l3experimental/l3draw.dtx
index 6affc2f427..c3d10d3b3e 100644
--- a/macros/latex/contrib/l3experimental/l3draw.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw.dtx
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -1173,7 +1173,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2023-01-24}{}
+\ProvidesExplPackage{l3draw}{2023-03-30}{}
{L3 Experimental core drawing support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.pdf b/macros/latex/contrib/l3experimental/l3draw.pdf
index e2eb79087d..30899fd0ca 100644
--- a/macros/latex/contrib/l3experimental/l3draw.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3galley.dtx b/macros/latex/contrib/l3experimental/l3galley.dtx
index 1770aa7fad..405b248b64 100644
--- a/macros/latex/contrib/l3experimental/l3galley.dtx
+++ b/macros/latex/contrib/l3experimental/l3galley.dtx
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -615,7 +615,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3galley} Implementation}
+% \section{\pkg{l3galley} implementation}
%
% At the implementation level, there are a number of challenges which
% have to be overcome in order to make the galley easy to use at the
@@ -686,7 +686,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2023-01-24}{}
+\ProvidesExplPackage{l3galley}{2023-03-30}{}
{L3 Experimental galley code}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3galley.pdf b/macros/latex/contrib/l3experimental/l3galley.pdf
index 4319a2d561..09c4291374 100644
--- a/macros/latex/contrib/l3experimental/l3galley.pdf
+++ b/macros/latex/contrib/l3experimental/l3galley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3graphics.dtx b/macros/latex/contrib/l3experimental/l3graphics.dtx
index ed7f01717d..942b15fd7d 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.dtx
+++ b/macros/latex/contrib/l3experimental/l3graphics.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -185,7 +185,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2023-01-24}{}
+\ProvidesExplPackage{l3graphics}{2023-03-30}{}
{L3 Experimental graphics inclusion support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3graphics.pdf b/macros/latex/contrib/l3experimental/l3graphics.pdf
index e763b0ec8f..731fbae62e 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.pdf
+++ b/macros/latex/contrib/l3experimental/l3graphics.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3opacity.dtx b/macros/latex/contrib/l3experimental/l3opacity.dtx
index eceff60d45..4d2de0fc69 100644
--- a/macros/latex/contrib/l3experimental/l3opacity.dtx
+++ b/macros/latex/contrib/l3experimental/l3opacity.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -85,7 +85,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3opacity} Implementation}
+% \section{\pkg{l3opacity} implementation}
%
% \begin{macrocode}
%<*package>
@@ -96,7 +96,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3opacity}{2023-01-24}{}
+\ProvidesExplPackage{l3opacity}{2023-03-30}{}
{L3 Experimental opacity support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3opacity.pdf b/macros/latex/contrib/l3experimental/l3opacity.pdf
index 4329f8c4d9..1ed2e3f71e 100644
--- a/macros/latex/contrib/l3experimental/l3opacity.pdf
+++ b/macros/latex/contrib/l3experimental/l3opacity.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3str-format.dtx b/macros/latex/contrib/l3experimental/l3str-format.dtx
index 5ab0724373..05f466dbd4 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.dtx
+++ b/macros/latex/contrib/l3experimental/l3str-format.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -166,7 +166,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2023-01-24}{}
+\ProvidesExplPackage{l3str-format}{2023-03-30}{}
{L3 Experimental string formatting}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3str-format.pdf b/macros/latex/contrib/l3experimental/l3str-format.pdf
index fed8cd5755..f44719f92a 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.pdf
+++ b/macros/latex/contrib/l3experimental/l3str-format.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.dtx b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
index 0f0852a95c..f830455bf6 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.dtx
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -151,7 +151,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2023-01-24}{}
+\ProvidesExplPackage{l3sys-shell}{2023-03-30}{}
{L3 Experimental system shell functions}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.pdf b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
index 8d591b15e9..2c80015c8f 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.pdf
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xcoffins.dtx b/macros/latex/contrib/l3experimental/xcoffins.dtx
index 8794786d59..7b41377cc2 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.dtx
+++ b/macros/latex/contrib/l3experimental/xcoffins.dtx
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -672,7 +672,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2023-01-24}{}
+\ProvidesExplPackage{xcoffins}{2023-03-30}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/xcoffins.pdf b/macros/latex/contrib/l3experimental/xcoffins.pdf
index a2af833a39..09c8d7a162 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.pdf
+++ b/macros/latex/contrib/l3experimental/xcoffins.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xgalley.dtx b/macros/latex/contrib/l3experimental/xgalley.dtx
index 4510cba15b..b450528125 100644
--- a/macros/latex/contrib/l3experimental/xgalley.dtx
+++ b/macros/latex/contrib/l3experimental/xgalley.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-01-24}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -715,7 +715,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{xgalley} Implementation}
+% \section{\pkg{xgalley} implementation}
%
% This module provided a template-level interface for the \LaTeX3 galley. As
% such, the code here is intended for design-level changes which apply to
@@ -731,7 +731,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2023-01-24}{}
+\ProvidesExplPackage{xgalley}{2023-03-30}{}
{L3 Experimental galley}
\RequirePackage{xtemplate,l3galley}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/xgalley.pdf b/macros/latex/contrib/l3experimental/xgalley.pdf
index f2cb9014a6..af229347da 100644
--- a/macros/latex/contrib/l3experimental/xgalley.pdf
+++ b/macros/latex/contrib/l3experimental/xgalley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 492a1ea3a5..7cbc8d71c0 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,21 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-03-30]
+
+
+### Added
+- `\tex_endlocalcontrol:D` as expl3 name for the LuaTeX primitive
+
+### Changed
+- Allow non-integer values in color expressions
+- Restrict color expressions values to the range [0, 100]
+- Leave Greek spacing diacritics unchanged in uppercasing
+
+### Fixed
+- Fix minor version in `\c_sys_engine_version_str` for pdfTeX and LuaTeX
+ (issue [\#1186](https://github.com/latex3/latex3/issues/1186))
+
## [2023-02-22]
### Changed
@@ -1304,7 +1319,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-02-22...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-03-30...HEAD
+[2023-03-30]: https://github.com/latex3/latex3/compare/2023-02-22...2023-03-30
[2023-02-22]: https://github.com/latex3/latex3/compare/2023-02-07...2023-02-22
[2023-02-07]: https://github.com/latex3/latex3/compare/2023-02-02...2023-02-07
[2023-02-02]: https://github.com/latex3/latex3/compare/2023-02-01...2023-02-02
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 3cd8f9c155..0df952a621 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2023-02-22
+Release 2023-03-30
Overview
--------
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index 269b471a76..263dff0730 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-02-22}%
+\def\ExplFileDate{2023-03-30}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index 56e6b0f952..067a893604 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index 4d6d16de01..102275e76a 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex
index 70fc48ed44..6824f38aef 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -62,7 +62,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-02-22}
+\date{Released 2023-03-30}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index 6188e7b7cc..37af99717e 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -1267,6 +1267,9 @@
% latter function does not turn the control sequence in question into
% "\scan_stop:"! This can be useful when dealing with control
% sequences which cannot be entered as a single token.
+% \begin{texnote}
+% These are \TeX{}'s \tn{ifdefined} and \tn{ifcsname}, respectively.
+% \end{texnote}
% \end{function}
%
% \begin{function}[EXP]
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 2760747db3..73064e4ce4 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index 2ab05edbc6..26fb88edd9 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 7b4ce3695c..3b804316c2 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -1319,7 +1319,9 @@
{
{ pdftex }
{
- \fp_eval:n { round(\int_use:N \tex_pdftexversion:D / 100 , 2) }
+ \int_div_truncate:nn { \tex_pdftexversion:D } { 100 }
+ .
+ \int_mod:nn { \tex_pdftexversion:D } { 100 }
.
\tex_pdftexrevision:D
}
@@ -1338,7 +1340,9 @@
}
{ luatex }
{
- \fp_eval:n { round(\int_use:N \tex_luatexversion:D / 100, 2) }
+ \int_div_truncate:nn { \tex_luatexversion:D } { 100 }
+ .
+ \int_mod:nn { \tex_luatexversion:D } { 100 }
.
\tex_luatexrevision:D
}
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index a03c9ffced..8233acdc79 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 4c9dc79db2..c8a9d89bcb 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 2166c0bfde..4a496da85f 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index 218f560acb..017cad63c5 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -155,13 +155,13 @@
% In addition to allowing specification of color by model and values,
% \pkg{l3color} also supports color expressions. These are created
% by combining one or more color names, with the amount of each specified
-% as a percentage. The latter is given between |!| symbols in the expression.
-% Thus for example
+% as a value in the range $0$--$100$. The value should be given between
+% |!| symbols in the expression. Thus for example
% \begin{verbatim}
% red!50!green
% \end{verbatim}
-% is a mixture of $50\,\%$ red and $50\,\%$ green. A trailing percentage is
-% interpreted as implicitly followed by |white|, and so
+% is a mixture of $50\,\%$ red and $50\,\%$ green. A trailing value is
+% interpreted as implicitly followed by |!white|, and so
% \begin{verbatim}
% red!25
% \end{verbatim}
@@ -643,6 +643,14 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\l_@@_ignore_error_bool}
+% Used to avoid issuing multiple errors if there is a change-of-model with
+% input container an error.
+% \begin{macrocode}
+\bool_new:N \l_@@_ignore_error_bool
+% \end{macrocode}
+% \end{variable}
+%
% \subsection{Utility functions}
%
% \begin{macro}[pTF, EXP]{\color_if_exist:n}
@@ -825,6 +833,7 @@
% \begin{macro}{\@@_parse:Nw}
% \begin{macro}{\@@_parse_loop_init:Nnn}
% \begin{macro}{\@@_parse_loop:w}
+% \begin{macro}{\@@_parse_loop_check:nn}
% \begin{macro}{\@@_parse_loop:nn}
% \begin{macro}{\@@_parse_gray:n, \@@_parse_std:n}
% \begin{macro}{\@@_parse_break:w}
@@ -936,17 +945,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_parse_loop:w #1 ! #2 ! #3 ! #4 ! #5 \s_@@_stop
{
- \bool_lazy_or:nnF
- { \tl_if_blank_p:n {#1} }
- { \int_compare_p:nNn {#1} = { 100 } }
+ \tl_if_blank:nF {#1}
{
- \int_compare:nNnTF {#1} = { 0 }
- {
- \tl_if_blank:nTF {#2}
- { \@@_extract:nNN { white } }
- { \@@_extract:nNN {#2} }
- \l_@@_model_tl \l_@@_value_tl
- }
+ \bool_lazy_and:nnTF
+ { \fp_compare_p:nNn {#1} > { 0 } }
+ { \fp_compare_p:nNn {#1} < { 100 } }
{
\use:x
{
@@ -954,12 +957,35 @@
{ \tl_if_blank:nTF {#2} { white } {#2} }
}
}
+ { \@@_parse_loop_check:nn {#1} {#2} }
}
\tl_if_blank:nF {#3}
{ \@@_parse_loop:w #3 ! #4 ! #5 \s_@@_stop }
\@@_parse_end:
}
% \end{macrocode}
+% As these are unusual cases, we accept slower performance here for clearer
+% code: check for the error conditions, handle the boundary cases after
+% that.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_parse_loop_check:nn #1#2
+ {
+ \bool_if:NF \l_@@_ignore_error_bool
+ {
+ \bool_lazy_or:nnT
+ { \fp_compare_p:nNn {#1} < { 0 } }
+ { \fp_compare_p:nNn {#1} > { 100 } }
+ { \msg_error:nnnnn { color } { out-of-range } {#1} { 0 } { 100 } }
+ }
+ \fp_compare:nNnF {#1} > \c_zero_fp
+ {
+ \tl_if_blank:nTF {#2}
+ { \@@_extract:nNN { white } }
+ { \@@_extract:nNN {#2} }
+ \l_@@_model_tl \l_@@_value_tl
+ }
+ }
+% \end{macrocode}
% The \enquote{payload} of calculation in the loop first. If the model for
% the upcoming color is different from that of the existing (partial) color,
% convert the model. For |gray| the two are flipped round so that the outcome
@@ -1065,6 +1091,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}[EXP]
% {
@@ -1779,6 +1806,7 @@
\prop_if_in:cnF { l_@@_named_ #1 _prop } {##1}
{
\group_begin:
+ \bool_set_true:N \l_@@_ignore_error_bool
\tl_set:cn { l_@@_named_ #3 _tl } {##1}
\@@_parse:nN {#2} \l_@@_internal_tl
\exp_args:NNNV \group_end:
@@ -3116,6 +3144,13 @@
LaTeX~was~asked~to~define~a~new~color~model~called~'#1',~but~
this~color~model~already~exists.
}
+\msg_new:nnnn { color } { out-of-range }
+ { Input~value~#1~out~of~range~[#2,~#3]. }
+ {
+ LaTeX~was~expecting~a~value~in~the~range~[#2,~#3]~as~part~of~a~color,~
+ but~you~gave~#1.~LaTeX~will~assume~you~meant~the~limit~of~the~range~
+ and~continue.
+ }
\msg_new:nnnn { color } { separation-alternative-model }
{ Separation~color~space~'#1'~require~an~alternative~model. }
{
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index fbba62fa36..854f4f5b61 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index e002e78421..1e8af30022 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index 9143ccc7df..f4f19d5aaa 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -85,7 +85,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
% \maketitle
% \tableofcontents
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf
index a9e6f09376..fb8f1d82b3 100644
--- a/macros/latex/contrib/l3kernel/l3doc.pdf
+++ b/macros/latex/contrib/l3kernel/l3doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index ec8530dd71..750356ac9f 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index b68f9145a7..b16829443d 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index d89d8192ff..d8a6c8cc99 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 411ac9f3d7..dfc1c6338d 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 5f1ba43313..e30f49f7f2 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index c1836f77ca..3efd565575 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index a10f589f67..0391f3e34f 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index a9798f492e..9af50e5850 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 31a53d3b86..d7a1936e77 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index da1d0e77b3..1ea73e116e 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 0ab976ed16..5384037de1 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index 5f513092be..2956f840a5 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index 1d5eac4aa4..ef58cd8600 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 9be2dae96f..a8929a1fae 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index 0e6342be59..e721fc76c5 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index 999cd850a2..c09a940b1b 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index 48a2f06385..07f5211c98 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index e721465593..7cf429eaf8 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -681,6 +681,8 @@
% can be accessed as \texttt{deg}.
% \end{variable}
%
+% \section{Scratch variables}
+%
% \begin{variable}[module = fp]{\l_tmpa_fp, \l_tmpb_fp}
% Scratch floating points for local assignment. These are never used by
% the kernel code, and so are safe for use with any \LaTeX3-defined
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index 9a6d43d7ef..121be8ee5b 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index 0d35d20c1d..b90f881036 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index 1f3a7ecac7..8dc10287a8 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index 884b51bd90..ddf3ed637e 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index 80fb0e087d..4650975217 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index f98c7e3e01..dfb25ad07b 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index 7820193676..e25d630c23 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index c2fea024e3..e2c93d9504 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index 109a2aebe4..edf14241cd 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -832,6 +832,7 @@
\@@_primitive:NN \dvivariable \tex_dvivariable:D
\@@_primitive:NN \eTeXglueshrinkorder \tex_eTeXglueshrinkorder:D
\@@_primitive:NN \eTeXgluestretchorder \tex_eTeXgluestretchorder:D
+ \@@_primitive:NN \endlocalcontrol \tex_endlocalcontrol:D
\@@_primitive:NN \etoksapp \tex_etoksapp:D
\@@_primitive:NN \etokspre \tex_etokspre:D
\@@_primitive:NN \exceptionpenalty \tex_exceptionpenalty:D
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index 31924b129f..dcf940275b 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index d51ff57a3a..d9bb9779a1 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index 398e509d94..f8a160c4c0 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index 0e9547634b..f33e9649cd 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index a79913bc01..93700a72d3 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index 327963f635..b922a0083f 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index 1c95a06b05..adfe4c942b 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index 8920dbeb7d..4c668945bb 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index 17b29f7368..b536ddde2b 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index b65b916525..02d2819fd5 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index 1cd0211dbe..0a1f80cd25 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index fcf4d6f416..de7dfb6e2c 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index 92dcad751f..60fb03748a 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx
index 21a114b272..eacb62eb6f 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index 0b11501b37..7d03b58f92 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index 76bda184a8..86e1e0e339 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 5e9779b3d6..dc611ae192 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index fa9bc7f606..2f52ef9d1e 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index 8c0006ec8e..09d078cd54 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index 88a69a9ea5..47e48b2e1e 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 7c9b2177db..36e70ce35a 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index f833f789da..e92a11b528 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index b09bc5f3c0..09539a13de 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index 60a5d4763b..c9229b83b5 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index 41b8870510..885afe83a1 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex
index 0ab54f7810..248f40b448 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-02-22}
+\date{Released 2023-03-30}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index 4b418f6330..9c8164ddb4 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
index f6ac35361a..383af6cc44 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-02-22}
+\date{Released 2023-03-30}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 3c7415c50d..23115dde50 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index c19451ed83..a9bd06e070 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex
index cf0e3743e2..ffa4204e75 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-02-22}
+\date{Released 2023-03-30}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index e8e07d236c..b93243040d 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
@@ -885,6 +885,8 @@
% \begin{macro}[EXP,pTF]{\@@_change_case_if_greek:n}
% \begin{macro}[EXP]{\@@_change_case_if_greek:n}
% \begin{macro}[EXP,pTF]{\@@_change_case_if_greek:n}
+% \begin{macro}[EXP,pTF]{\@@_change_case_if_greek_spacing_diacritic:n}
+% \begin{macro}[EXP]{\@@_change_case_if_greek_spacing_diacritic:n}
% \begin{macro}[EXP,pTF]{\@@_change_case_if_greek_accent:n}
% \begin{macro}[EXP]{\@@_change_case_if_greek_accent:n}
% \begin{macro}[EXP,pTF]{\@@_change_case_if_greek_diacritic:n}
@@ -903,18 +905,31 @@
% although necessarily the implementation is somewhat different. The
% \emph{ypogegrammeni} is filtered out here as it is not actually in the
% Greek range, so gets lost if we leave until later. The one Greek codepoint
-% we skip is the numeral sign: it's got an awkward NFD for \pdfTeX{} so is
-% best left unchanged.
+% we skip is the numeral sign and question mark: the first has an awkward NFD
+% for \pdfTeX{} so is best left unchanged, and the latter has issues concerning
+% how \texttt{LGR} outputs the input and output (differently!).
% \begin{macrocode}
\cs_new:Npn \@@_change_case_upper_el:nnnn #1#2#3#4
{
\bool_lazy_and:nnTF
{ \@@_change_case_if_greek_p:n {#4} }
- { ! \@@_codepoint_compare_p:nNn {#4} = { "0374 } }
{
- \exp_args:Ne \@@_change_case_upper_el:nnn
+ ! \bool_lazy_or_p:nn
+ { \@@_codepoint_compare_p:nNn {#4} = { "0374 } }
+ { \@@_codepoint_compare_p:nNn {#4} = { "037E } }
+ }
+ {
+ \@@_change_case_if_greek_spacing_diacritic:nTF {#4}
+ {
+ \@@_change_case_store:n {#4}
+ \@@_change_case_loop:nnw
+ }
{
- \codepoint_to_nfd:n { \@@_codepoint_from_chars:Nw #4 }
+ \exp_args:Ne \@@_change_case_upper_el:nnn
+ {
+ \codepoint_to_nfd:n
+ { \@@_codepoint_from_chars:Nw #4 }
+ }
}
{#2} {#3}
}
@@ -1247,6 +1262,84 @@
\fi:
\fi:
}
+\prg_new_conditional:Npnn \@@_change_case_if_greek_spacing_diacritic:n
+ #1 { TF }
+ {
+ \exp_args:Nf \@@_change_case_if_greek_spacing_diacritic:n
+ { \int_eval:n { \@@_codepoint_from_chars:Nw #1 } }
+ }
+\cs_new:Npn \@@_change_case_if_greek_spacing_diacritic:n #1
+ {
+ \if_int_compare:w #1 < "1FBD \exp_stop_f:
+ \if_int_compare:w #1 = "037A \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ \else:
+ \if_int_compare:w #1 = "1FBD \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FBF \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FC0 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FC1 \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FCD \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FCE \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FCF \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FDD \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FDE \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FDF \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FED \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FEE \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FEF \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FFD \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \if_int_compare:w #1 = "1FFE \exp_stop_f:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ }
\prg_new_conditional:Npnn \@@_change_case_if_greek_diacritic:n
#1 { TF , p }
{
@@ -1267,11 +1360,7 @@
\if_int_compare:w #1 = "0314 \exp_stop_f:
\prg_return_true:
\else:
- \if_int_compare:w #1 = "0343 \exp_stop_f:
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
+ \prg_return_false:
\fi:
\fi:
\fi:
@@ -1351,6 +1440,8 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
% \begin{macro}[EXP]
% {\@@_change_case_boundary_upper_el:Nnnw, \@@_change_case_boundary_upper_el-x-iota:Nnnw}
% \begin{macro}[EXP]{\@@_change_case_boundary_upper_el:nnN}
@@ -1383,9 +1474,13 @@
}
\cs_new:Npn \@@_change_case_boundary_upper_el:nnn #1#2#3
{
- \bool_lazy_or:nnTF
- { \@@_codepoint_compare_p:nNn {#3} = { "03AE } }
- { \@@_codepoint_compare_p:nNn {#3} = { "1F22 } }
+ \bool_lazy_any:nTF
+ {
+ { \@@_codepoint_compare_p:nNn {#3} = { "0389 } }
+ { \@@_codepoint_compare_p:nNn {#3} = { "03AE } }
+ { \@@_codepoint_compare_p:nNn {#3} = { "1F22 } }
+ { \@@_codepoint_compare_p:nNn {#3} = { "1F2A } }
+ }
{ \@@_change_case_boundary_upper_el:nnnw {#1} {#2} {#3} }
{ \@@_change_case_loop:nnw {#1} {#2} #3 }
}
diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx
index 00ac1655c3..8d35064933 100644
--- a/macros/latex/contrib/l3kernel/l3text-map.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-map.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index 3fcc7dccf1..247dd7a0c3 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index 8440ecbdbc..eb5d2bede7 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index dc6ae26d45..8a281accd7 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index b6a7ddfb37..70f545d0cf 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index 24d565f100..ad94a32847 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index efe38cd6e7..664a788f4f 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-22}
+% \date{Released 2023-03-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index c987faf29e..0caa972f9f 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex
index be4df48233..ba0668514c 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-02-22}
+\date{Released 2023-03-30}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/physics2/doc/phy2docdef.tex b/macros/latex/contrib/physics2/doc/phy2docdef.tex
index d5d0699a76..f6d5c5da9f 100644
--- a/macros/latex/contrib/physics2/doc/phy2docdef.tex
+++ b/macros/latex/contrib/physics2/doc/phy2docdef.tex
@@ -64,7 +64,7 @@
\newenvironment{example}
{\stepcounter{example}\example@start}{\example@end}
\author{Zhang Tingxuan}
-\date{2023/02/07\quad Version 0.1.1\thanks{%
+\date{2023/03/30\quad Version 0.2.0\thanks{%
\url{https://www.github.com/AlphaZTX/physics2}}}
\makeatother
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/physics2/doc/physics2-legacy.pdf b/macros/latex/contrib/physics2/doc/physics2-legacy.pdf
index 796463ab07..682d20a08b 100644
--- a/macros/latex/contrib/physics2/doc/physics2-legacy.pdf
+++ b/macros/latex/contrib/physics2/doc/physics2-legacy.pdf
Binary files differ
diff --git a/macros/latex/contrib/physics2/doc/physics2-legacy.tex b/macros/latex/contrib/physics2/doc/physics2-legacy.tex
index fea5894ad0..d1b64a4374 100644
--- a/macros/latex/contrib/physics2/doc/physics2-legacy.tex
+++ b/macros/latex/contrib/physics2/doc/physics2-legacy.tex
@@ -8,10 +8,10 @@
\documentclass[11pt,letterpaper]{article}
\usepackage{amsmath}
\usepackage{unicode-math}
-\setmainfont{Latin Modern Roman}
-\setsansfont{Latin Modern Sans}
-\setmonofont{Latin Modern Mono}
-\setmathfont{Latin Modern Math}
+\setmainfont{Libertinus Serif}
+\setsansfont{Libertinus Sans}
+\setmonofont{Noto Sans Mono}[Scale=MatchLowercase]
+\setmathfont{Libertinus Math}
\usepackage{physics2}
\usephysicsmodule{ab}
\usephysicsmodule{ab.legacy,nabla.legacy}
@@ -177,11 +177,11 @@ the \modu{ab} module of \pkg{physics2}, these commands have changed to
\[ \aab{\0} \quad \vab{\0}
\quad \Vab{\0} \]
\end{example}
-Also, after \texttt{\textbackslash}$X$\texttt{ab} can be a ``biggg'' command
-or a star. For example,
+\texttt{\textbackslash$X$ab} can take an optional star and an optional \oarg{biggg}
+argument. For example,
\begin{example}
\def\0{\frac12}
-\[ \pab\Big{\0} \quad \bab*{\0} \]
+\[ \pab[Big]{\0} \quad \bab*{\0} \]
\end{example}
\pkg{physics} also provides the following commands:
@@ -197,18 +197,19 @@ the first four commands can be used through the \modu{ab.legacy} module of
For example,
\begin{example}
\def\0{\frac12}
-\[ \abs{\0} \quad \abs\Big{\0}
+\[ \abs{\0} \quad \abs[big]{\0}
\quad \abs*{\0} \]
\end{example}
Users of the legacy \pkg{physics} package should notice that the syntax of
-\cs{eval} has been changed to \cs{eval}\oarg{left delimiter}\marg{subformula}.
-The \modu{ab.legacy} module abandoned the \verb"\eval(foo|"-like syntax. The
-\meta{left delimiter} argument is optional. For example,
+\cs{eval} has been changed. The \modu{ab.legacy} module abandoned the
+\verb"\eval(foo|"-like syntax. The new \cs{eval}'s syntax is just like other
+commands in this module. There are also two variants of \cs{eval} --- \cs{peval}
+and \cs{beval}. For example,
\begin{example}
-\def\0{\frac12x}
-\[ \eval{\0}_a^b \quad
- \eval[(]{\0}_a^b \quad
- \eval[[]\big{\0}_a^b \]
+\def\0{1+\frac12x}
+\[ \eval{\0}_a^b \quad
+ \peval*{\0}_a^b \quad
+ \beval[big]{\0}_a^b \]
\end{example}
The \cs{comm}, \cs{acomm} and \cs{pb} (Poisson bracket) are not supported.
But you can write like \verb|\ab[foo,baz]| or \verb|\bab{foo,baz}| instead.
diff --git a/macros/latex/contrib/physics2/doc/physics2.pdf b/macros/latex/contrib/physics2/doc/physics2.pdf
index a5721ef991..47645e84d8 100644
--- a/macros/latex/contrib/physics2/doc/physics2.pdf
+++ b/macros/latex/contrib/physics2/doc/physics2.pdf
Binary files differ
diff --git a/macros/latex/contrib/physics2/doc/physics2.tex b/macros/latex/contrib/physics2/doc/physics2.tex
index 043e262853..f567d5219c 100644
--- a/macros/latex/contrib/physics2/doc/physics2.tex
+++ b/macros/latex/contrib/physics2/doc/physics2.tex
@@ -172,11 +172,12 @@ with paired delimiters. For example,
\[ \pab{\0} \bab{\0} \Bab{\0} \]
\[ \aab{\0} \vab{\0} \Vab{\0} \]
\end{example}
-After \texttt{\textbackslash}$X$\texttt{ab} can be a ``biggg'' command or a
-star. For example,
+These \texttt{\textbackslash$X$ab} commands can take an optional star and
+an optional \oarg{biggg} argument. Star stands for using the default sizes.
+For example,
\begin{example}
-\def\0{\frac12}
-\[ \pab\Big{\0} \quad \bab*{\0} \]
+\def\0{n+\frac12}
+\[ \pab[Big]{\0} \quad \bab*{\0} \]
\end{example}
\paragraph{The options of \modu{ab} module}
@@ -471,21 +472,22 @@ legacy \pkg{physics} package. It's not suggest to use them in a new document.
\subsection{The \modu{ab.legacy} module}
This module provides the following commands:
\begin{Verbatim}[fontsize=\small]
-\abs \norm \eval \order
+\abs \norm \eval (\peval \beval) \order
\end{Verbatim}
-They can take a normal argument. Between these commands and their argument
-can be a ``biggg'' command or a star. For example,
+They shares the same syntax as \meta{cmd}\opt{*}\oarg{biggg}\marg{subformula}.
+Star and \meta{biggg} are optional. Star stands for ``use the default size''.
+For example,
\begin{example}
-\def\0{\frac12}
+\def\0{1+\frac12}
\[ \abs{\0} \quad
- \norm\Big{\0} \quad
+ \norm[Big]{\0} \quad
\order*{\0} \]
\end{example}
\begin{example}
-\def\0{\frac12x}
-\[ \eval{\0}_a^b \quad
- \eval[(]{\0}_a^b \quad
- \eval[[]\big{\0}_a^b \]
+\def\0{1+\frac12x}
+\[ \eval{\0}_a^b \quad
+ \peval*{\0}_a^b \quad
+ \beval[big]{\0}_a^b \]
\end{example}
You can set the ``order'' symbol in this module through
the \opt{order} option like this:
diff --git a/macros/latex/contrib/physics2/tex/phy-ab.braket.sty b/macros/latex/contrib/physics2/tex/phy-ab.braket.sty
index a65ce94bc5..818d8a75e8 100644
--- a/macros/latex/contrib/physics2/tex/phy-ab.braket.sty
+++ b/macros/latex/contrib/physics2/tex/phy-ab.braket.sty
@@ -39,11 +39,11 @@
% \braket<foo|bar>
\begingroup
\catcode`\|=\active
-\gdef\phy@@mb@bk#1#2{\begingroup%
+\gdef\phy@@mb@bk#1#2{\begingroup
\mathcode`\|="8000\def|{\egroup#1\vert\bgroup}%
\def\<{\mathrel{<}}\def\>{\mathrel{>}}%
\mathopen#1\langle\bgroup#2\egroup\mathclose#1\rangle\endgroup}
-\gdef\phy@@ab@bk#1{\begingroup%
+\gdef\phy@@ab@bk#1{\begingroup
\mathcode`\|="8000\def|{\egroup\phy@abb@bkv\bgroup}%
\def\<{\mathrel{<}}\def\>{\mathrel{>}}%
\phy@abopen\langle\bgroup#1\egroup\phy@abclose\rangle\endgroup}
@@ -58,18 +58,18 @@
\begingroup
\catcode`\<=\active
\catcode`\>=\active
-\gdef\phy@@mb@kb#1#2{\begingroup%
+\gdef\phy@@mb@kb#1#2{\begingroup
\mathcode`\<="8000 \mathcode`\>="8000%
\def<{#1\langle}\def>{#1\rangle}%
\def\<{\phy@abb@l}\def\>{\phy@abb@r}%
\mathopen#1\vert#2\mathclose#1\vert\endgroup}
\endgroup
-\gdef\phy@@ab@kb#1>#2<#3\phy@@end{\begingroup%
+\gdef\phy@@ab@kb#1>#2<#3\phy@@end{\begingroup
\def\<{\phy@abb@l}\def\>{\phy@abb@r}%
\phy@abopen\vert\mathopen{\phy@mathvphantom{#3}}#1\phy@abclose\rangle#2%
- \phy@abopen\langle#3\mathclose{\phy@mathvphantom{#1}}\phy@abclose\vert%
+ \phy@abopen\langle#3\mathclose{\phy@mathvphantom{#1}}\phy@abclose\vert
\endgroup}
-\AtBeginDocument{\ifcsname symbf\endcsname%
+\AtBeginDocument{\ifcsname symbf\endcsname
\def\phy@abb@l{\Umathchar 3 \symoperators "003C }%
\def\phy@abb@r{\Umathchar 3 \symoperators "003E }%
\fi}
diff --git a/macros/latex/contrib/physics2/tex/phy-ab.legacy.sty b/macros/latex/contrib/physics2/tex/phy-ab.legacy.sty
index d21e52f5d1..bbfa1f2b4a 100644
--- a/macros/latex/contrib/physics2/tex/phy-ab.legacy.sty
+++ b/macros/latex/contrib/physics2/tex/phy-ab.legacy.sty
@@ -17,7 +17,7 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-ab.legacy.sty}
- [2023/01/25 `ab.legacy' module of `physics2.sty']
+ [2023/03/29 `ab.legacy' module of `physics2.sty']
\phy@requiremodule{ab}
% The `tight' bool option, true or false.
\phy@define@key{ab.legacy}{order}[\mathcal{O}]{\def\phy@ab@ordersym{#1}}
@@ -25,9 +25,19 @@
\phy@setkeys{ab.legacy}{order}
\phy@processkeyopt{ab.legacy}
% The braced operators.
-\DeclareRobustCommand\abs{\phy@d@ly\vert\vert}
-\DeclareRobustCommand\norm{\phy@d@ly\Vert\Vert}
-\DeclareRobustCommand\order{\phy@ab@ordersym\phy@d@ly()}
-\DeclareRobustCommand\eval[1][.]{\phy@d@ly#1|}
+\phy@d@l@geny\abs\vert\vert
+\phy@d@l@geny\norm\Vert\Vert
+\DeclareDocumentCommand\order{som}{%
+ \phy@ab@ordersym
+ \IfBooleanTF{#1}%
+ {(#3)}%
+ {\IfValueTF{#2}%
+ {\csname#2l\endcsname(#3\csname#2r\endcsname)}%
+ {\phy@abopen(#3\phy@abclose)}%
+ }%
+}
+\phy@d@l@geny\eval.\vert
+\phy@d@l@geny\peval(\vert
+\phy@d@l@geny\beval[\vert
\endinput
%% End of file `phy-ab.legacy.sty'.
diff --git a/macros/latex/contrib/physics2/tex/phy-ab.sty b/macros/latex/contrib/physics2/tex/phy-ab.sty
index 089d01b53c..4436a65214 100644
--- a/macros/latex/contrib/physics2/tex/phy-ab.sty
+++ b/macros/latex/contrib/physics2/tex/phy-ab.sty
@@ -57,7 +57,7 @@
\phy@AB@gen{mb}\vert{mr\vert\vert}{\mathopen#1\vert#2\mathclose#1\vert}
\phy@AB@gen{mb}\Vert{mr\Vert\Vert}{\mathopen#1\Vert#2\mathclose#1\Vert}
\phy@AB@gen{mb}\langle{mr\langle\rangle}{\mathopen#1\langle#2\mathclose#1\rangle}
-% \phy@del, the automatic
+% \phy@del, the automatic braces. #1: opensymbol; #2: close symbol; #3
\def\phy@del#1#2#3{\phy@abopen#1#3\phy@abclose#2}
\expandafter\def\csname phy@del\string*\endcsname#1#2#3{\mathopen#1#3\mathclose#2}
\expandafter\def\csname phy@del\string\big\endcsname#1#2#3{\bigl#1#3\bigr#2}
@@ -66,8 +66,6 @@
\expandafter\def\csname phy@del\string\Bigg\endcsname#1#2#3{\Biggl#1#3\Biggr#2}
\expandafter\def\csname phy@del\string\biggg\endcsname#1#2#3{\bigggl#1#3\bigggr#2}
\expandafter\def\csname phy@del\string\Biggg\endcsname#1#2#3{\Bigggl#1#3\Bigggr#2}
-% \phy@AB@gb(a|b|..): gobble (a|b|..) arguments in the middle.
-\def\phy@AB@gbc#1#2#3#4#5{#1{#5}}
% \phy@d@lx (phy_del_x): the internal defination of \ab.
% #1: `mb', according to \phy@AB@gen; #2: `ab'; #3: star or big or left delimiter.
\def\phy@d@lx#1#2#3{%
@@ -88,18 +86,24 @@
% Generate the `mb' and `ab' arguments.
\phy@d@l@genxm{mb}
\phy@d@l@genxa{ab}
-% \phy@d@ly (phy_del_y): the internal defination of \(p|b|..)ab.
-\def\phy@d@ly#1#2#3{\ifcsname phy@del\string#3\endcsname
- \phy@AB@gbc{\csname phy@del\string#3\endcsname#1#2}%
- \else{\phy@del#1#2{#3}}\fi}
% \ab(<subformula>), after \ab can be a star or \biggg.
\DeclareRobustCommand\ab{\phy@d@lx{mb}{ab}}
-% \(p|b|..)ab{<subformula>}, after \(p|..)ab can be a star or \biggg.
-\DeclareRobustCommand\pab{\phy@d@ly()}
-\DeclareRobustCommand\bab{\phy@d@ly[]}
-\DeclareRobustCommand\Bab{\phy@d@ly\lbrace\rbrace}
-\DeclareRobustCommand\vab{\phy@d@ly\vert\vert}
-\DeclareRobustCommand\aab{\phy@d@ly\langle\rangle}
-\DeclareRobustCommand\Vab{\phy@d@ly\Vert\Vert}
+% \phy@d@l@geny: define commands like \pab. #1: cs; #2: open symbol; #3: close symbol.
+\def\phy@d@l@geny#1#2#3{%
+ \DeclareDocumentCommand#1{som}{% ##1: star; ##2: bigg (csname); ##3: subformula.
+ \IfBooleanTF{##1}%
+ {#2##3#3}%
+ {\IfValueTF{##2}%
+ {\csname##2l\endcsname#2##3\csname##2r\endcsname#3}%
+ {\phy@abopen#2##3\phy@abclose#3}%
+ }%
+ }%
+}
+\phy@d@l@geny\pab()
+\phy@d@l@geny\bab[]
+\phy@d@l@geny\Bab\lbrace\rbrace
+\phy@d@l@geny\vab\vert\vert
+\phy@d@l@geny\aab\langle\rangle
+\phy@d@l@geny\Vab\Vert\Vert
\endinput
%% End of file `phy-ab.sty'.
diff --git a/macros/latex/contrib/physics2/tex/phy-braket.sty b/macros/latex/contrib/physics2/tex/phy-braket.sty
index a6e88c13cc..bd3a9f3249 100644
--- a/macros/latex/contrib/physics2/tex/phy-braket.sty
+++ b/macros/latex/contrib/physics2/tex/phy-braket.sty
@@ -17,7 +17,7 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-braket.sty}
- [2023/01/25 `braket' module of `physics2.sty']
+ [2023/03/29 `braket' module of `physics2.sty']
% Here we need to get the definition of \phy@abopen and \phy@abclose.
\phy@requiremodule{ab}
\ifdefined\phy@abb@bkv
@@ -74,23 +74,23 @@
\csname\@phy@bk@m\endcsname\vert{#2}%
\csname\@phy@bk@m\endcsname\vert{#3}%
\csname\@phy@bk@r\endcsname\rangle}
-% Parse the optional argument of \braket.
-\def\@phy@bk@do@pt#1,{\ifx#1\relax\@empty\else%
+% Parse the optional argument of \braket. This will add 3 entries to hash table.
+\def\@phy@bk@do@pt#1,{\ifx#1\relax\@empty\else
\edef\reserved@a{\zap@space#1 \@empty}%
- \ifx\reserved@a\@empty\else%
- \ifcsname phy@del\expandafter\string\csname\reserved@a\endcsname\endcsname%
+ \ifx\reserved@a\@empty\else
+ \ifcsname phy@del\expandafter\string\csname\reserved@a\endcsname\endcsname
\xdef\@phy@bk@l{\reserved@a l}%
\xdef\@phy@bk@m{\reserved@a}% but not m (m stands for \mathrel)
\xdef\@phy@bk@r{\reserved@a r}%
- \else%
+ \else
\ifnum\reserved@a>3%
\PackageError{physics2}{\string\braket\space can only take 3
mandatory arguments at most}{Check if you had written a number
more than 3 in the [optional] argument.}%
- \fi%
+ \fi
\xdef\@phy@bk@argnum{\romannumeral\reserved@a}%
- \fi%
- \fi%
+ \fi
+ \fi
\expandafter\@phy@bk@do@pt\fi}
\def\phy@bk@doopt#1{\@phy@bk@do@pt#1,\relax,}
% \ketbra
@@ -100,9 +100,9 @@
{\IfValueTF{#2}%
{\csname#2l\endcsname\vert#3\csname#2r\endcsname\rangle#4%
\csname#2l\endcsname\langle#5\csname#2r\endcsname\vert}%
- {\begingroup%
+ {\begingroup
\phy@abopen\vert\mathopen{\phy@mathvphantom{#5}}#3\phy@abclose\rangle#4%
- \phy@abopen\langle#5\mathclose{\phy@mathvphantom{#3}}\phy@abclose\vert%
+ \phy@abopen\langle#5\mathclose{\phy@mathvphantom{#3}}\phy@abclose\vert
\endgroup}%
}%
}
diff --git a/macros/latex/contrib/physics2/tex/phy-common.sty b/macros/latex/contrib/physics2/tex/phy-common.sty
index f20d258365..e587c02bec 100644
--- a/macros/latex/contrib/physics2/tex/phy-common.sty
+++ b/macros/latex/contrib/physics2/tex/phy-common.sty
@@ -17,9 +17,10 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-common.sty}
- [2023/01/25 `common' module of `physics2.sty']
-% Check if `unicode-math' loaded and (re)define the vert symbols.
-% The `\relax'es here are for \ifx to compare.
+ [2023/03/29 `common' module of `physics2.sty']
+% Check if unicode-math loaded and (re)define the vert symbols.
+% The \relax's here are for \ifx to compare.
+% unicode-math sets these symbols in \fam1, \symoperators is set 1 in 2e kernel.
\AtBeginDocument{\ifcsname symrm\endcsname
\protected\def\|{\Udelimiter 0 \symoperators "2016 }%
\protected\def\vert{\Udelimiter 0 \symoperators "007C\relax}%
diff --git a/macros/latex/contrib/uvaletter/README.md b/macros/latex/contrib/uvaletter/README.md
index eb1edbfc0a..0e200331ad 100644
--- a/macros/latex/contrib/uvaletter/README.md
+++ b/macros/latex/contrib/uvaletter/README.md
@@ -1,5 +1,5 @@
<!--
-uvaletter v1.1.0
+uvaletter v1.1.1
author: Michele Piazzai
contact: michele.piazzai@uc3m.es
license: MIT
diff --git a/macros/latex/contrib/uvaletter/demo/uvaletter-demo.pdf b/macros/latex/contrib/uvaletter/demo/uvaletter-demo.pdf
index 4d66682285..33b7af561b 100644
--- a/macros/latex/contrib/uvaletter/demo/uvaletter-demo.pdf
+++ b/macros/latex/contrib/uvaletter/demo/uvaletter-demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/uvaletter/demo/uvaletter-demo.tex b/macros/latex/contrib/uvaletter/demo/uvaletter-demo.tex
index 72276484f1..eca0162025 100644
--- a/macros/latex/contrib/uvaletter/demo/uvaletter-demo.tex
+++ b/macros/latex/contrib/uvaletter/demo/uvaletter-demo.tex
@@ -1,3 +1,8 @@
+% uvaletter v1.1.1
+% Author: Michele Piazzai
+% Contact: michele.piazzai@uc3m.es
+% License: MIT
+
\documentclass[11pt]{letter}
\usepackage[pageno]{uvaletter}
diff --git a/macros/latex/contrib/uvaletter/uvaletter.sty b/macros/latex/contrib/uvaletter/uvaletter.sty
index c1148eeab7..b2f864592d 100644
--- a/macros/latex/contrib/uvaletter/uvaletter.sty
+++ b/macros/latex/contrib/uvaletter/uvaletter.sty
@@ -1,15 +1,22 @@
-% uvaletter v1.1.0
+% uvaletter v1.1.1
% Author: Michele Piazzai
% Contact: michele.piazzai@uc3m.es
% License: MIT
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{uvaletter}[2023/03/02 UvA Letter]
+\ProvidesPackage{uvaletter}[2023/03/30 UvA Letter]
\RequirePackage[T1]{fontenc}
\RequirePackage[utf8]{inputenc}
\RequirePackage[a4paper,margin=3.05cm]{geometry}
-\RequirePackage{times,microtype,fancyhdr,setspace,graphicx,ifthen,soul,lastpage}
+\RequirePackage{times}
+\RequirePackage{microtype}
+\RequirePackage{fancyhdr}
+\RequirePackage{setspace}
+\RequirePackage{graphicx}
+\RequirePackage{ifthen}
+\RequirePackage{soul}
+\RequirePackage{lastpage}
\pagestyle{fancy}
\fancyhf{}
@@ -106,3 +113,5 @@
\newcommand\@subject{}
\newcommand\enclosed[1]{\renewcommand\@enclosed{#1}}
\newcommand\@enclosed{}
+
+\endinput