summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-12-23 03:04:00 +0000
committerNorbert Preining <norbert@preining.info>2024-12-23 03:04:00 +0000
commit35102b68291783e779cfef5f390ec522610e2786 (patch)
tree2fdb2c5fc96e75ba93f189fc420e29d7a992e423 /macros/latex
parente85f83d7d39665d2b21098bd5bd2f1be4caf4dd2 (diff)
CTAN sync 202412230303HEADmaster
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/acmart/ACM-Reference-Format.bst14
-rw-r--r--macros/latex/contrib/acmart/Makefile2
-rw-r--r--macros/latex/contrib/acmart/README6
-rw-r--r--macros/latex/contrib/acmart/acmart.dtx15
-rw-r--r--macros/latex/contrib/acmart/acmart.pdfbin973610 -> 944335 bytes
-rw-r--r--macros/latex/contrib/acmart/acmauthoryear.bbx8
-rw-r--r--macros/latex/contrib/acmart/acmguide.pdfbin440154 -> 440153 bytes
-rw-r--r--macros/latex/contrib/acmart/acmnumeric.bbx10
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmcp.pdfbin214842 -> 217914 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmengage.pdfbin399524 -> 399509 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmlarge.pdfbin646811 -> 646838 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdfbin668659 -> 668124 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdfbin1091663 -> 1091119 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdfbin658658 -> 658335 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-tagged.pdfbin491272 -> 491202 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall.pdfbin656117 -> 655794 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdfbin604307 -> 603198 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmtog.pdfbin603858 -> 602998 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-manuscript.pdfbin657528 -> 657098 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdfbin1083410 -> 1082894 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdfbin656619 -> 656143 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdfbin1094674 -> 1094187 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf.pdfbin1079612 -> 1079117 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigplan.pdfbin1055503 -> 1055213 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/samples.dtx2
-rw-r--r--macros/latex/contrib/easybook/README.md2
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx34
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin651915 -> 651938 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex4
-rw-r--r--macros/latex/contrib/fontscale/CHANGELOG.md7
-rw-r--r--macros/latex/contrib/fontscale/beery.cls2
-rw-r--r--macros/latex/contrib/fontscale/fontscale-table-classic.tex2
-rw-r--r--macros/latex/contrib/fontscale/fontscale-table-font-steps.tex2
-rw-r--r--macros/latex/contrib/fontscale/fontscale-table-musical.tex2
-rw-r--r--macros/latex/contrib/fontscale/fontscale.pdfbin109140 -> 109677 bytes
-rw-r--r--macros/latex/contrib/fontscale/fontscale.sty65
-rw-r--r--macros/latex/contrib/fontscale/fontscale.tex14
-rw-r--r--macros/latex/required/l3kernel/CHANGELOG.md25
-rw-r--r--macros/latex/required/l3kernel/README.md2
-rw-r--r--macros/latex/required/l3kernel/expl3.dtx4
-rw-r--r--macros/latex/required/l3kernel/expl3.pdfbin610284 -> 610530 bytes
-rw-r--r--macros/latex/required/l3kernel/interface3.pdfbin1789657 -> 1805466 bytes
-rw-r--r--macros/latex/required/l3kernel/interface3.tex2
-rw-r--r--macros/latex/required/l3kernel/l3basics.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3bitset.dtx19
-rw-r--r--macros/latex/required/l3kernel/l3bootstrap.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3box.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3cctab.dtx8
-rw-r--r--macros/latex/required/l3kernel/l3clist.dtx25
-rw-r--r--macros/latex/required/l3kernel/l3coffins.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3color.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3debug.dtx4
-rw-r--r--macros/latex/required/l3kernel/l3deprecation.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3doc.dtx15
-rw-r--r--macros/latex/required/l3kernel/l3doc.pdfbin565241 -> 565410 bytes
-rw-r--r--macros/latex/required/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3docstrip.pdfbin150985 -> 151176 bytes
-rw-r--r--macros/latex/required/l3kernel/l3expan.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3file.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3flag.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-assign.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-aux.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-basics.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-convert.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-expo.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-extended.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-functions.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-logic.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-parse.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-random.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-round.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-symbolic.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-traps.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-trig.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp-types.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fp.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3fparray.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3int.dtx74
-rw-r--r--macros/latex/required/l3kernel/l3intarray.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3kernel-functions.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3keys.dtx12
-rw-r--r--macros/latex/required/l3kernel/l3legacy.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3luatex.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3msg.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3names.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3news.pdfbin402138 -> 402138 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news01.pdfbin122959 -> 122959 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news02.pdfbin150919 -> 150919 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news03.pdfbin154683 -> 154683 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news04.pdfbin114754 -> 114754 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news05.pdfbin112524 -> 112524 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news06.pdfbin151591 -> 151591 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news07.pdfbin128344 -> 128344 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news08.pdfbin163484 -> 163484 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news09.pdfbin256104 -> 256104 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news10.pdfbin156257 -> 156257 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news11.pdfbin176068 -> 176068 bytes
-rw-r--r--macros/latex/required/l3kernel/l3news12.pdfbin210960 -> 210960 bytes
-rw-r--r--macros/latex/required/l3kernel/l3pdf.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3prefixes.csv2
-rw-r--r--macros/latex/required/l3kernel/l3prefixes.pdfbin83202 -> 83253 bytes
-rw-r--r--macros/latex/required/l3kernel/l3prg.dtx41
-rw-r--r--macros/latex/required/l3kernel/l3prop.dtx4
-rw-r--r--macros/latex/required/l3kernel/l3quark.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3regex.dtx34
-rw-r--r--macros/latex/required/l3kernel/l3seq.dtx167
-rw-r--r--macros/latex/required/l3kernel/l3skip.dtx6
-rw-r--r--macros/latex/required/l3kernel/l3sort.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3str-convert.dtx6
-rw-r--r--macros/latex/required/l3kernel/l3str.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3styleguide.pdfbin296259 -> 296514 bytes
-rw-r--r--macros/latex/required/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/required/l3kernel/l3syntax-changes.pdfbin231103 -> 231345 bytes
-rw-r--r--macros/latex/required/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/required/l3kernel/l3sys.dtx30
-rw-r--r--macros/latex/required/l3kernel/l3term-glossary.pdfbin241896 -> 242146 bytes
-rw-r--r--macros/latex/required/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/required/l3kernel/l3text-case.dtx10
-rw-r--r--macros/latex/required/l3kernel/l3text-map.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3text-purify.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3text.dtx10
-rw-r--r--macros/latex/required/l3kernel/l3tl-analysis.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3tl-build.dtx2
-rw-r--r--macros/latex/required/l3kernel/l3tl.dtx147
-rw-r--r--macros/latex/required/l3kernel/l3token.dtx24
-rw-r--r--macros/latex/required/l3kernel/l3unicode.dtx10
-rw-r--r--macros/latex/required/l3kernel/source3.pdfbin7612299 -> 7637916 bytes
-rw-r--r--macros/latex/required/l3kernel/source3.tex2
128 files changed, 715 insertions, 247 deletions
diff --git a/macros/latex/contrib/acmart/ACM-Reference-Format.bst b/macros/latex/contrib/acmart/ACM-Reference-Format.bst
index dca222184c..9c5498a082 100644
--- a/macros/latex/contrib/acmart/ACM-Reference-Format.bst
+++ b/macros/latex/contrib/acmart/ACM-Reference-Format.bst
@@ -630,11 +630,8 @@ FUNCTION { output.doi } % UTAH
doi empty.or.unknown
{ }
{
- %% Use \urldef here for the same reason it is used in output.url,
- %% see output.url for further discussion.
- "\urldef\tempurl%" writeln
- "\url{https://doi.org/" strip.doi * "}" * writeln
- "\showDOI{\tempurl}" writeln
+ "\href{https://doi.org/" strip.doi * "}{doi:\nolinkurl{" *
+ strip.doi * "}}" * writeln
}
if$
}
@@ -3015,16 +3012,16 @@ FUNCTION { begin.bib }
"%%% NOTE TO THE USER: you can override these defaults by providing" writeln
"%%% customized versions of any of these macros before the \bibliography" writeln
"%%% command. Each of them MUST provide its own final punctuation," writeln
- "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
+ "%%% except for \shownote{} and \showURL{}. The latter two" writeln
"%%% do not use final punctuation, in order to avoid confusing it with" writeln
"%%% the Web address." writeln
"%%%" writeln
"%%% To suppress output of a particular field, define its macro to expand" writeln
"%%% to an empty string, or better, \unskip, like this:" writeln
"%%%" writeln
- "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
+ "%%% \newcommand{\showURL}[1]{\unskip} % LaTeX syntax" writeln
"%%%" writeln
- "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
+ "%%% \def \showURL #1{\unskip} % plain TeX syntax" writeln
"%%%" writeln
"%%% ====================================================================" writeln
"" writeln
@@ -3046,7 +3043,6 @@ FUNCTION { begin.bib }
%% \newcommand{\showLCCN}[1]{LCCN #1.}
"\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
- "\ifx \showDOI \undefined \def \showDOI #1{#1}\fi" writeln
% ACM styles omit ISBNs, but they can be included by suitable definitions of
% \showISBNx and \showISBNxiii before the .bbl file is read
"\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
diff --git a/macros/latex/contrib/acmart/Makefile b/macros/latex/contrib/acmart/Makefile
index c81d355446..5d90dbdd57 100644
--- a/macros/latex/contrib/acmart/Makefile
+++ b/macros/latex/contrib/acmart/Makefile
@@ -144,7 +144,7 @@ docclean:
samples/$(PACKAGE)-tagged.cls \
samples/ACM-Reference-Format.bst \
samples/*.log samples/*.aux samples/*.out \
- samples/*.bbl samples/*.blg samples/*.cut \
+ samples/*.bbl samples/*.blg samples/*.cut *.toc \
samples/acm-jdslogo.png \
samples/*.run.xml samples/*.bcf $(SAMPLEBIBLATEXFILES)
diff --git a/macros/latex/contrib/acmart/README b/macros/latex/contrib/acmart/README
index 2518ab0f9a..ceaf5b9f7d 100644
--- a/macros/latex/contrib/acmart/README
+++ b/macros/latex/contrib/acmart/README
@@ -12,6 +12,12 @@ The production version is the one on CTAN and ACM sites.
Changes
+Version 2.11 Conference date is no longer printed in bibstrip.
+ ISBN now uses 4-digit year
+ DOI in bibliography is now output as doi:XX.XXXX/XXXXX.XXXX
+ Changed URL in Creative Commons licenses (deleted
+ trailing /legalcode)
+
Version 2.10. Bug fixes. Documentation update.
Version 2.09. Experimental tagging code is now in the main branch.
diff --git a/macros/latex/contrib/acmart/acmart.dtx b/macros/latex/contrib/acmart/acmart.dtx
index 842ba3fd3f..b5cda36236 100644
--- a/macros/latex/contrib/acmart/acmart.dtx
+++ b/macros/latex/contrib/acmart/acmart.dtx
@@ -2256,7 +2256,7 @@
%</gobble>
%<class&!tagged>\ProvidesClass{acmart}
%<tagged>\ProvidesClass{acmart-tagged}
-[2024/10/19 v2.10 Typesetting articles for the Association for Computing Machinery]
+[2024/12/07 v2.11 Typesetting articles for the Association for Computing Machinery]
% \end{macrocode}
%
% \changes{v1.00}{2016/04/14}{First released version}
@@ -5366,7 +5366,7 @@
% The book ISBN
% \begin{macrocode}
\def\acmISBN#1{\def\@acmISBN{#1}}
-\acmISBN{978-x-xxxx-xxxx-x/YY/MM}
+\acmISBN{978-x-xxxx-xxxx-x/YYYY/MM}
% \end{macrocode}
%
% \end{macro}
@@ -6036,6 +6036,7 @@
% non-acm or ACM engage publications}
% \changes{v2.09}{2024/08/25}{Deleted checking whether CC licenses are
% allowed}
+% \changes{v2.11}{2024/12/21}{Changed URL for CC licenses}
% The canned permission block.
% \begin{macrocode}
\def\@copyrightpermission{%
@@ -6167,8 +6168,8 @@
the appropriate attribution.
\or % CC
\IfEq{\ACM@cc@type}{zero}{%
- \def\ACM@CC@Url{https://creativecommons.org/publicdomain/zero/1.0/legalcode}}{%
- \edef\ACM@CC@Url{https://creativecommons.org/licenses/\ACM@cc@type/\ACM@cc@version/legalcode}}%
+ \def\ACM@CC@Url{https://creativecommons.org/publicdomain/zero/1.0}}{%
+ \edef\ACM@CC@Url{https://creativecommons.org/licenses/\ACM@cc@type/\ACM@cc@version}}%
\href{\ACM@CC@Url}{\includegraphics[height=5ex]{doclicense-CC-\ACM@cc@type-88x31}}\\
\href{\ACM@CC@Url}{%
This work is licensed under a Creative Commons
@@ -6358,7 +6359,9 @@
% publications}
% \changes{v2.00}{2023/10/24}{Deleted acmPrice}
% \changes{v2.00}{2023/11/05}{Added ``ACM'' for papers}
-% \changes{v2.03}{2024/12/04}{Special processing for conferences in TOG}
+% \changes{v2.03}{2023/12/04}{Special processing for conferences in
+% TOG}
+% \changes{v2.11}{2024/12/07}{Deleted conference date from bibstrip}
% The (in)famous \cs{maketitle}. Note that in |sigchi-a| mode, authors
% are \emph{not} in the title box.
%
@@ -6427,7 +6430,7 @@
\if@ACM@engage
{\itshape \@acmBooktitle, \@acmYear.}\par
\else
- {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
+ {\itshape \acmConference@shortname, \acmConference@venue}\par
\fi
\fi
\fi
diff --git a/macros/latex/contrib/acmart/acmart.pdf b/macros/latex/contrib/acmart/acmart.pdf
index 8fad04317a..a9b9425af1 100644
--- a/macros/latex/contrib/acmart/acmart.pdf
+++ b/macros/latex/contrib/acmart/acmart.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/acmauthoryear.bbx b/macros/latex/contrib/acmart/acmauthoryear.bbx
index de5e3c6c06..b3800b9683 100644
--- a/macros/latex/contrib/acmart/acmauthoryear.bbx
+++ b/macros/latex/contrib/acmart/acmauthoryear.bbx
@@ -898,3 +898,11 @@
license=false,
language=american
}
+
+% We use lowercase DOI
+
+\DeclareFieldFormat{doi}{%
+ doi\addcolon
+ \ifhyperref
+ {\href{https://doi.org/#1}{\nolinkurl{#1}}}
+ {\nolinkurl{#1}}}
diff --git a/macros/latex/contrib/acmart/acmguide.pdf b/macros/latex/contrib/acmart/acmguide.pdf
index 0547dea05d..e2f4d07816 100644
--- a/macros/latex/contrib/acmart/acmguide.pdf
+++ b/macros/latex/contrib/acmart/acmguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/acmnumeric.bbx b/macros/latex/contrib/acmart/acmnumeric.bbx
index c13e40137f..d83a5a10bc 100644
--- a/macros/latex/contrib/acmart/acmnumeric.bbx
+++ b/macros/latex/contrib/acmart/acmnumeric.bbx
@@ -882,4 +882,12 @@
vcs=true,
license=false,
language=american
- } \ No newline at end of file
+ }
+
+% We use lowercase DOI
+
+\DeclareFieldFormat{doi}{%
+ doi\addcolon
+ \ifhyperref
+ {\href{https://doi.org/#1}{\nolinkurl{#1}}}
+ {\nolinkurl{#1}}}
diff --git a/macros/latex/contrib/acmart/samples/sample-acmcp.pdf b/macros/latex/contrib/acmart/samples/sample-acmcp.pdf
index abe3641f7c..df09178b23 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmcp.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmcp.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
index 743cf52163..f1cfe0669b 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
index 5efdb94ea9..5d0512d6c6 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
index b5bb9c99fc..426b1fa017 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
index a4ea84762a..6ccf1723c2 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
index 54f291a9a8..10c4335179 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-tagged.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-tagged.pdf
index 8019ce4bee..948f3cd113 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-tagged.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-tagged.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
index 15ecfd3fab..9f952c7919 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf b/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf
index 2d7124b6e1..298fa63e05 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
index c883560427..203294e6ae 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
index ed04e4c1eb..37f110af37 100644
--- a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf
index 3bebdeadd4..adcbd6e036 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
index e812ffd86c..92379f363d 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
index 793196e0ee..9769dd3d5b 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
index 25f3d13f20..35ade96582 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
index f2adcfeaa1..8dcab36660 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/samples.dtx b/macros/latex/contrib/acmart/samples/samples.dtx
index b94128f870..d9353cad92 100644
--- a/macros/latex/contrib/acmart/samples/samples.dtx
+++ b/macros/latex/contrib/acmart/samples/samples.dtx
@@ -83,7 +83,7 @@
%%
%%\acmBooktitle{Woodstock '18: ACM Symposium on Neural Gaze Detection,
%% June 03--05, 2018, Woodstock, NY}
-\acmISBN{978-1-4503-XXXX-X/18/06}
+\acmISBN{978-1-4503-XXXX-X/2018/06}
%</proceedings>
%<*journal>
diff --git a/macros/latex/contrib/easybook/README.md b/macros/latex/contrib/easybook/README.md
index 032d3f4b01..dce421d3b4 100644
--- a/macros/latex/contrib/easybook/README.md
+++ b/macros/latex/contrib/easybook/README.md
@@ -1,5 +1,5 @@
# The `easybook` document class
-Easily typesetting Chinese theses or books (v2024hw)
+Easily typesetting Chinese theses or books (v2024hx)
## Abstract
`easybook` is a pure academic template created based on the `ctexbook` book document class. It also has the functions of `book` and `article` document class. Combined with the general framework design of the theses of many universities in China, providing multiple commands and interfaces allows users to easily customize the theses templates. Its basic macro package `easybase` can also be used with `ctex` and standard document classes.
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 47e65db022..2cd88bcc15 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -14,7 +14,7 @@
% This work has the LPPL maintenance status `maintained'.
%<class|package>\NeedsTeXFormat{LaTeX2e}[2021/11/15]
%<*class>
-\ProvidesExplClass{easybook}{2024/12/21}{2024hw}
+\ProvidesExplClass{easybook}{2024/12/22}{2024hx}
{Easily typesetting Chinese theses or books}
\bool_new:N \l__eb_compile_draft_bool
@@ -35,7 +35,7 @@
{ \tl_set:Nn \l__eb_font_value_tl {#1} },
font .value_required:n = true,
font .initial:n = auto,
- cjkfont .code:n = \eb_put_ctexbook:n { fontset = #1 },
+ cjkfont .code:n = \eb_put_ctexbook:n { fontset = {#1} },
mathfont .tl_set:N = \l__eb_mathfont_value_tl,
mathfont .initial:n = times,
configs .clist_gset:N = \g__eb_configs_file_clist,
@@ -308,7 +308,7 @@
%</class>
%<*package>
\RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2024/12/21}{2024hw}
+\ProvidesExplPackage{easybase}{2024/12/22}{2024hx}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -1512,8 +1512,8 @@
}
\tl_new:N \eb@bitoc@title
\bool_new:N \l__eb_toc_notitle_bool
-\newbool{bitoc}
-\cs_new:Npn \ebifbitoc { \ifbool{bitoc} }
+\newbool{@bitoc}
+\cs_new:Npn \ebifbitoc { \ifbool{@bitoc} }
\seq_new:N \l__eb_level_tmpa_seq
\tl_new:N \l__eb_level_tmpa_tl
\cs_generate_variant:Nn \regex_extract_all:nnN { no }
@@ -1586,9 +1586,9 @@
\str_if_eq:nnTF {#1} { mix }
{
\AddToHook{cmd/CTEX@addtocline/before}[bitoc]
- {\addtocontents{toc}{\boolfalse{bitoc}}}
+ {\addtocontents{toc}{\boolfalse{@bitoc}}}
\AddToHook{cmd/CTEX@addbitocline/before}[bitoc]
- {\addtocontents{toc}{\booltrue{bitoc}}}
+ {\addtocontents{toc}{\booltrue{@bitoc}}}
}
{
\IfHookEmptyTF{cmd/CTEX@addtocline/before}{}
@@ -1614,9 +1614,7 @@
\cs_new_protected:Npn \eb_toc_assign_title_judge:nn #1#2
{
\tl_set:Nn \eb@toc@title {#1}
- \tl_if_novalue:nTF {#2}
- { \tl_clear:N \eb@bitoc@title }
- { \tl_set:Nn \eb@bitoc@title {#2} }
+ \tl_if_novalue:nF {#2} { \tl_set:Nn \eb@bitoc@title {#2} }
}
\cs_new_protected:Npn \eb_toc_start_multi_column_ext:n #1
{
@@ -1649,12 +1647,16 @@
\clist_if_exist:cT { l__eb_toc_outer_kv_#1_clist }
{ \keys_set:nv { eb/tocouter } { l__eb_toc_outer_kv_#1_clist } }
}
+\cs_new_protected:Npn \eb_toc_kv_set:nn
+ {
+ \eb_toc_outer_kv_initial:n {#1}
+ \IfValueT{#2}{\keys_set:nn { eb/tocouter } {#2}}
+ }
\cs_new_protected:Npn \eb_toc_list_struct_parse:nnnnn #1#2#3#4#5
{
\group_begin:
\tl_set_eq:Nc \eb@toc@title { list#4name }
- \eb_toc_outer_kv_initial:n {#5}
- \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}}
+ \eb_toc_kv_set:nn {#5} {#3}
\eb_toc_title_level_cmd:n {#1}
\eb_toc_if_title_between_hook:nn {#1} {#4}
\eb_toc_start_multi_column_ext:n {#5}
@@ -1720,18 +1722,18 @@
{ \section* }
}
}
- \eb_toc_outer_kv_initial:n { toc }
- \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}}
\bool_if:NT \l__eb_toc_plan_cn_bool
{
+ \eb_toc_kv_set:nn { toc } {#3}
\IfBooleanF{#1}{\eb@toc@title@level{\eb@toc@title}{}}
\eb_toc_if_title_between_hook:nn {#1} { title }
- \eb_toc_start_multi_column_ext:n { toc }#4
+ \eb_toc_start_multi_column_ext:n { toc }
}
\bool_if:NT \l__eb_toc_plan_bi_bool
{
\tl_if_eq:NnF \g__eb_bilist_permute_value_tl { mix }
{
+ \eb_toc_kv_set:nn { tec } {#3}#4
\IfBooleanF{#1}{\eb@toc@title@level{\eb@bitoc@title}{}}
\eb_toc_if_title_between_hook:nn {#1} { bititle }
\eb_toc_start_multi_column_ext:n { tec }
@@ -3006,7 +3008,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/12/21}{2024hw}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/12/22}{2024hx}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index fd8cf9173e..686760c0a4 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index c38e7f441f..2ca7066d43 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -23,8 +23,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v2024hw,
- date = 2024/12/21,
+ version = v2024hx,
+ date = 2024/12/22,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
email = toquyi@163.com,
diff --git a/macros/latex/contrib/fontscale/CHANGELOG.md b/macros/latex/contrib/fontscale/CHANGELOG.md
index 5fbaa9e247..7ee3fe0362 100644
--- a/macros/latex/contrib/fontscale/CHANGELOG.md
+++ b/macros/latex/contrib/fontscale/CHANGELOG.md
@@ -7,6 +7,13 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v3.0.4] - 2024-12-22
+
+### Changed
+- `\PrintFontSizeParameters` and `\PrintAllFontSizeParamters` now print the
+ font step and font scale rounded to 5 decimal places. (`\CurrentFontStep` and
+ `\CurrentFontScale` are unchanged.)
+
## [v3.0.3] - 2024-12-09
### Changed
diff --git a/macros/latex/contrib/fontscale/beery.cls b/macros/latex/contrib/fontscale/beery.cls
index 51bad377c0..ba449ee039 100644
--- a/macros/latex/contrib/fontscale/beery.cls
+++ b/macros/latex/contrib/fontscale/beery.cls
@@ -4,7 +4,7 @@
\NeedsTeXFormat{LaTeX2e}[2023-11-01]
\ProvidesExplClass
{beery}
- {2024-12-09}
+ {2024-12-22}
{}
{}
diff --git a/macros/latex/contrib/fontscale/fontscale-table-classic.tex b/macros/latex/contrib/fontscale/fontscale-table-classic.tex
index 2d3d344926..37e31d0784 100644
--- a/macros/latex/contrib/fontscale/fontscale-table-classic.tex
+++ b/macros/latex/contrib/fontscale/fontscale-table-classic.tex
@@ -1,4 +1,4 @@
-\ProvidesFile{fontscale-table-classic.tex}[2024-12-09]
+\ProvidesFile{fontscale-table-classic.tex}[2024-12-22]
\begin{table}
\centering
diff --git a/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex b/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex
index 13797a3863..ecf029b48f 100644
--- a/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex
+++ b/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex
@@ -1,4 +1,4 @@
-\ProvidesFile{fontscale-table-font-steps.tex}[2024-12-09]
+\ProvidesFile{fontscale-table-font-steps.tex}[2024-12-22]
\begin{table}
\centering
diff --git a/macros/latex/contrib/fontscale/fontscale-table-musical.tex b/macros/latex/contrib/fontscale/fontscale-table-musical.tex
index 999212da86..a97a66e596 100644
--- a/macros/latex/contrib/fontscale/fontscale-table-musical.tex
+++ b/macros/latex/contrib/fontscale/fontscale-table-musical.tex
@@ -1,4 +1,4 @@
-\ProvidesFile{fontscale-table-musical.tex}[2024-12-09]
+\ProvidesFile{fontscale-table-musical.tex}[2024-12-22]
\begin{table}
\centering
diff --git a/macros/latex/contrib/fontscale/fontscale.pdf b/macros/latex/contrib/fontscale/fontscale.pdf
index 16e0650fc5..6274624043 100644
--- a/macros/latex/contrib/fontscale/fontscale.pdf
+++ b/macros/latex/contrib/fontscale/fontscale.pdf
Binary files differ
diff --git a/macros/latex/contrib/fontscale/fontscale.sty b/macros/latex/contrib/fontscale/fontscale.sty
index 12764b579f..fe18d8d96a 100644
--- a/macros/latex/contrib/fontscale/fontscale.sty
+++ b/macros/latex/contrib/fontscale/fontscale.sty
@@ -8,8 +8,8 @@
\NeedsTeXFormat{LaTeX2e}[2023-11-01]
\ProvidesExplPackage
{fontscale}
- {2024-12-09}
- {3.0.3}
+ {2024-12-22}
+ {3.0.4}
{A flexible interface for setting font sizes}
% l3kernel version 2023-10-10 added many 'e'-variants.
@@ -195,21 +195,16 @@
{ \f@size / \l__fontscale_normalsize_size_fp }
\str_if_eq:VnTF \l__fontscale_typographic_scale_str { musical }
{
- \dim_compare:nNnTF \l__fontscale_musical_base_dim =
- \l_fontscale_normalsize_size_dim
+ \fp_set:Nn \l_fontscale_step_fp
{
- \fp_set:Nn \l_fontscale_step_fp
- {
- \l__fontscale_musical_selectfont_fp
- * ln ( \l_fontscale_scale_fp )
- }
- }
- {
- \fp_set:Nn \l_fontscale_step_fp
- {
- \l__fontscale_musical_selectfont_fp
- * ln ( \f@size / \l__fontscale_musical_base_fp )
- }
+ \l__fontscale_musical_selectfont_fp
+ * ln
+ (
+ \dim_compare:nNnTF \l__fontscale_musical_base_dim =
+ \l_fontscale_normalsize_size_dim
+ { \l_fontscale_scale_fp }
+ { \f@size / \l__fontscale_musical_base_fp }
+ )
}
}
{ \fp_set_eq:NN \l_fontscale_step_fp \c_nan_fp }
@@ -266,7 +261,8 @@
\tl_set:NV \ProcessedArgument \l__fontscale_arg_process_skip
}
% Used to define \tiny to \Huge. Sets \@currsize only for compatibility. Need
-% \dim_use:N only for compatibility with the microtype package.
+% \dim_use:N only for compatibility with versions of the microtype package
+% older than v3.2 2024-12-12.
\cs_new_protected:Npn \__fontscale_name:NNN #1#2#3
{
\cs_set_eq:NN \@currsize #1
@@ -277,8 +273,7 @@
% unit of 'pt'.
% (2) Avoids the issue where \f@size is set to the new font size before the
% second argument is expanded.
-% (3) Issues a user-friendly error message if the font size is not a positive
-% length.
+% (3) Issues a user-friendly error message if the font size is not positive.
\cs_new_protected:Npn \__fontscale_set_font_size:nn #1#2
{
\use:e
@@ -385,6 +380,16 @@
\dim_new:N \l__fontscale_musical_base_dim
\int_new:N \l__fontscale_musical_notes_int
+\cs_new_protected:Npn \__fontscale_keys_code_musical_base:
+ {
+ \__fontscale_dim_set_from_user:Nn \l__fontscale_musical_base_dim
+ { \l_keys_value_tl }
+ }
+\cs_new_protected:Npn \__fontscale_keys_code_musical_notes:
+ {
+ \__fontscale_int_set_from_user:Nn \l__fontscale_musical_notes_int
+ { \l_keys_value_tl }
+ }
\cs_new_protected:Npn \__fontscale_keys_code_name:
{
\tl_if_in:NnTF \l_keys_value_tl { / }
@@ -428,15 +433,13 @@
}
\keys_define:nn { fontscale / musical }
{
- base .code:n =
- \__fontscale_dim_set_from_user:Nn \l__fontscale_musical_base_dim {#1}
+ base .code:n = \__fontscale_keys_code_musical_base:
, base .value_required:n = true
, ratio .fp_set:N = \l__fontscale_musical_ratio_fp
, ratio .value_required:n = true
- , notes .code:n =
- \__fontscale_int_set_from_user:Nn \l__fontscale_musical_notes_int {#1}
+ , notes .code:n = \__fontscale_keys_code_musical_notes:
, notes .value_required:n = true
}
\keys_define:nn { fontscale / normalsize }
@@ -581,7 +584,7 @@
% Pre-compiles the keys with their initial values and then sets the keys to
% their initial values. This is significantly faster than using .initial:n and
-% \keys_precompile:nnN. The value of \q_no_value is used to test if the
+% \keys_precompile:nnN. The special value of \q_no_value is used to test if the
% corresponding key has been set by the user.
\cs_new_protected:Npn \__fontscale_keys_set_initial:
{
@@ -1231,10 +1234,11 @@
{ \__fontscale_print_font_size_parameters: }
\cs_new_protected:Npn \__fontscale_print_font_size_parameters:
{
- step ~=~ \__fontscale_step: ,~
- scale ~=~ \__fontscale_scale: ,~
- size ~=~ \__fontscale_size: ,~
- baselineskip ~=~ \__fontscale_baselineskip:
+ step~ =~ \fp_if_nan:nF { \l_fontscale_step_fp }
+ { \fp_eval:n { round ( \l_fontscale_step_fp , 5 ) } } ,~
+ scale~ =~ \fp_eval:n { round ( \l_fontscale_scale_fp , 5 ) } ,~
+ size~ =~ \dim_use:N \l_fontscale_size_dim ,~
+ baselineskip~ =~ \skip_use:N \l_fontscale_baselineskip_skip
}
\NewDocumentCommand \PrintAllFontSizeParameters { }
@@ -1256,8 +1260,9 @@
{
\token_to_str:c {##1} \@ \c_colon_str \c_space_tl
step~ =~ \fp_use:c { c_fontscale_##1_step_fp } ,~
- scale~ =~ \str_if_eq:nnTF {##1} { normalsize }
- { 1 } { \fp_use:c { l_fontscale_##1_scale_fp } } ,~
+ scale~ =~ \str_if_eq:nnTF {##1} { normalsize } { 1 }
+ { \fp_eval:n { round ( \use:c { l_fontscale_##1_scale_fp } , 5 ) } }
+ ,~
size~ =~ \dim_use:c { l_fontscale_##1_size_dim } ,~
baselineskip~ =~ \skip_use:c { l_fontscale_##1_baselineskip_skip }
\str_if_eq:nnF {##1} { Huge } { \newline }
diff --git a/macros/latex/contrib/fontscale/fontscale.tex b/macros/latex/contrib/fontscale/fontscale.tex
index 0e806e564f..3d3500fec0 100644
--- a/macros/latex/contrib/fontscale/fontscale.tex
+++ b/macros/latex/contrib/fontscale/fontscale.tex
@@ -14,7 +14,7 @@ A flexible interface for setting font sizes
Oliver Beery
-Version 3.0.3\quad{}9 December 2024
+Version 3.0.4\quad{}22 December 2024
\section{Introduction}
@@ -204,7 +204,8 @@ Sets the font baselineskip set by \cs{SetFontStep}, \cs{SetFontScale}, and \cs{S
\subsection{Overwriting the previous keys}
\label{subsec:overwriting}
-This subsection documents keys for directly setting the font scales, font sizes, and font baselineskips of the font size commands from \cs{tiny} to \cs{Huge}.
+This subsection documents keys for directly setting the font sizes and font baselineskips of the font size commands from \cs{tiny} to \cs{Huge}.
+The font sizes can also be set by setting the font scale.
The user should take care to ensure that the lengths of the font sizes remain correctly ordered from \cs{tiny} to \cs{Huge}.
This is important for typographic and syntactic consistency.
@@ -366,7 +367,7 @@ Does nothing, except issue a warning, if used in math mode.
\subsection{Testing and debugging}
\label{subsec:debug}
-The commands documented here are intended primarily for testing and debugging.
+This subsection documents commands that are intended primarily for testing and debugging.
I have used them often when developing this package so I think users will find them helpful.
\begin{mydisplaycode}
@@ -374,14 +375,17 @@ I have used them often when developing this package so I think users will find t
\end{mydisplaycode}
Prints the current font size parameters\---the font step, font scale, font size, and font baselineskip.
-The current font step will be left blank if it is undefined (as explained for \cs{CurrentFontStep} in \S\ref{subsec:expandable}).
-\pagebreak%manual
+The printed font step and font scale are rounded to \num{5} decimal places.
+To print with more decimal places, use \cs{CurrentFontStep} and \cs{CurrentFontScale} (\S\ref{subsec:expandable}).
+The printed font step will be left blank if it is undefined (as explained for \cs{CurrentFontStep} in \S\ref{subsec:expandable}).
\begin{mydisplaycode}
\cs{PrintAllFontSizeParameters}
\end{mydisplaycode}
Prints the font step, font scale, font size, and font baselineskip of each font size command from \cs{tiny} to \cs{Huge}.
+The printed font scale is rounded to \num{5} decimal places.
+To print with more decimal places, use \cs{CurrentFontScale} (\S\ref{subsec:expandable}).
\begin{mydisplaycode}
\cs{PrintSampleText} \sarg{} \marg{text}
diff --git a/macros/latex/required/l3kernel/CHANGELOG.md b/macros/latex/required/l3kernel/CHANGELOG.md
index 80629d5ef5..7cfd571a6c 100644
--- a/macros/latex/required/l3kernel/CHANGELOG.md
+++ b/macros/latex/required/l3kernel/CHANGELOG.md
@@ -7,6 +7,28 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2024-12-09]
+
+### Added
+- `\bitset_use:N` and `\clist_use:N`: this clarifies that bitsets and clists
+ can be used with `V`-type expansion
+- `\sys_if_engine_opentype:(TF)`
+- Add equivalent interfaces for regex functions:
+ - `\int_(g)set_regex_count:Nnn`, `\int_(g)set_regex_count:NNn`
+ - `\seq_(g)set_regex_extract_once:Nnn`, `\seq_(g)set_regex_extract_once:NNn`
+ - `\seq_(g)set_regex_extract_all:Nnn`, `\seq_(g)set_regex_extract_all:NNn`
+ - `\seq_(g)set_regex_split:Nnn`, `\seq_(g)set_regex_split:NNn`
+ - `\tl_if_regex_match:nn(TF)`, `\tl_if_regex_match:nN(TF)`
+ - `\tl_regex_(g)replace_once:Nnn`, `\tl_regex_(g)replace_once:NNn`
+ - `\tl_regex_(g)replace_all:Nnn`, `\tl_regex_(g)replace_all:NNn`
+
+### Fixed
+- `\prop_item:Nn` result not returned in `\exp_not:n` for linked properties
+ (#1630)
+
+### Removed
+- `\c_catcode_active_tl`: was missing a `_`, always intended to be internal
+
## [2024-11-02]
### Added
@@ -1793,7 +1815,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2024-11-02...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2024-12-09...HEAD
+[2024-12-09]: https://github.com/latex3/latex3/compare/2024-11-02...2024-12-09
[2024-11-02]: https://github.com/latex3/latex3/compare/2024-10-09...2024-11-02
[2024-10-09]: https://github.com/latex3/latex3/compare/2024-09-10...2024-10-09
[2024-09-10]: https://github.com/latex3/latex3/compare/2024-08-30...2024-09-10
diff --git a/macros/latex/required/l3kernel/README.md b/macros/latex/required/l3kernel/README.md
index d048951c6d..4721d6ca8c 100644
--- a/macros/latex/required/l3kernel/README.md
+++ b/macros/latex/required/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2024-11-02
+Release 2024-12-09
Overview
--------
diff --git a/macros/latex/required/l3kernel/expl3.dtx b/macros/latex/required/l3kernel/expl3.dtx
index 2d0a15de88..4662bdbe0b 100644
--- a/macros/latex/required/l3kernel/expl3.dtx
+++ b/macros/latex/required/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2024-11-02}%
+\def\ExplFileDate{2024-12-09}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/expl3.pdf b/macros/latex/required/l3kernel/expl3.pdf
index 611d4ad06f..888e6d3af4 100644
--- a/macros/latex/required/l3kernel/expl3.pdf
+++ b/macros/latex/required/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/interface3.pdf b/macros/latex/required/l3kernel/interface3.pdf
index ca71fc3daf..241f71b581 100644
--- a/macros/latex/required/l3kernel/interface3.pdf
+++ b/macros/latex/required/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/interface3.tex b/macros/latex/required/l3kernel/interface3.tex
index 91576320b0..c5286fdb34 100644
--- a/macros/latex/required/l3kernel/interface3.tex
+++ b/macros/latex/required/l3kernel/interface3.tex
@@ -58,7 +58,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2024-11-02}
+\date{Released 2024-12-09}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/required/l3kernel/l3basics.dtx b/macros/latex/required/l3kernel/l3basics.dtx
index 934bffb39f..728ac55c46 100644
--- a/macros/latex/required/l3kernel/l3basics.dtx
+++ b/macros/latex/required/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3bitset.dtx b/macros/latex/required/l3kernel/l3bitset.dtx
index 79a5a21b4d..fa518d50d3 100644
--- a/macros/latex/required/l3kernel/l3bitset.dtx
+++ b/macros/latex/required/l3kernel/l3bitset.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -240,6 +240,16 @@
% implementation based on \cs{fp_eval:n} otherwise.
% \end{function}
%
+% \begin{function}[EXP, added = 2024-11-12]{\bitset_use:N, \bitset_use:c}
+% \begin{syntax}
+% \cs{bitset_use:N} \meta{bitset var}
+% \end{syntax}
+% This leaves the current value of the bitset expressed as
+% a binary (string) number in the input stream.
+% If no bit has been set yet, the output is zero. This is
+% functionally equivalent to \cs{bitset_to_bin:N}.
+% \end{function}
+%
% \begin{function}[added = 2023-11-15]
% {\bitset_show:N, \bitset_show:c}
% \begin{syntax}
@@ -524,6 +534,13 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\bitset_use:N, \bitset_use:c}
+% \begin{macrocode}
+\cs_new_eq:NN \bitset_use:N \tl_use:N
+\cs_generate_variant:Nn \bitset_use:N { c }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}
% {
% \bitset_item:Nn, \bitset_item:cn
diff --git a/macros/latex/required/l3kernel/l3bootstrap.dtx b/macros/latex/required/l3kernel/l3bootstrap.dtx
index 105304afe4..f7a7f3feab 100644
--- a/macros/latex/required/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/required/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3box.dtx b/macros/latex/required/l3kernel/l3box.dtx
index 6499104961..0170e91ff0 100644
--- a/macros/latex/required/l3kernel/l3box.dtx
+++ b/macros/latex/required/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3cctab.dtx b/macros/latex/required/l3kernel/l3cctab.dtx
index 53db15109b..112f79e9ac 100644
--- a/macros/latex/required/l3kernel/l3cctab.dtx
+++ b/macros/latex/required/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -866,8 +866,7 @@
\group_begin:
\int_set:Nn \tex_endlinechar:D { 32 }
\char_set_catcode_invalid:n { 0 }
- \bool_lazy_or:nnTF
- { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
+ \sys_if_engine_opentype:TF
{ \int_step_function:nN { 31 } \char_set_catcode_invalid:n }
{ \int_step_function:nN { 31 } \char_set_catcode_active:n }
\int_step_function:nnN { 33 } { 64 } \char_set_catcode_other:n
@@ -892,8 +891,7 @@
\char_set_catcode_group_end:n { 125 } % right brace
\char_set_catcode_space:n { 126 } % tilde
\char_set_catcode_invalid:n { 127 } % ^^?
- \bool_lazy_or:nnF
- { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
+ \sys_if_engine_opentype:F
{ \int_step_function:nnN { 128 } { 255 } \char_set_catcode_active:n }
\@@_gset:n { \c_code_cctab }
\group_end:
diff --git a/macros/latex/required/l3kernel/l3clist.dtx b/macros/latex/required/l3kernel/l3clist.dtx
index dc6caccf0d..0ab53da5fc 100644
--- a/macros/latex/required/l3kernel/l3clist.dtx
+++ b/macros/latex/required/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -619,6 +619,22 @@
% \end{texnote}
% \end{function}
%
+% \begin{function}[EXP, added = 2024-11-12]{\clist_use:N, \clist_use:c}
+% \begin{syntax}
+% \cs{clist_use:N} \meta{clist~var}
+% \end{syntax}
+% Places the contents of the \meta{clist~var} in the input stream,
+% with a comma between each item. The result is exaclty the stored
+% \meta{clist}, which will include braces around (for example)
+% entries with retained spaces at the ends.
+% \begin{texnote}
+% The result is returned as-is, in the same way as \cs{tl_use:N}
+% and \emph{without} protection from expansion,
+% cf.~\cs{clist_use:Nnnnn}, etc. It is equivalent to \texttt{V}-type
+% expansion of a \texttt{clist}.
+% \end{texnote}
+% \end{function}
+%
% \begin{function}[EXP, added = 2021-05-10]{\clist_use:nnnn, \clist_use:nn}
% \begin{syntax}
% \cs{clist_use:nnnn} \Arg{comma~list} \Arg{separator~between~two} \\
@@ -2008,6 +2024,13 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\clist_use:N, \clist_use:c}
+% \begin{macrocode}
+\cs_new_eq:NN \clist_use:N \tl_use:N
+\cs_generate_variant:Nn \clist_use:N { c }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}
% {
% \clist_use:nnnn, \clist_use:nn, \@@_use:Nw,
diff --git a/macros/latex/required/l3kernel/l3coffins.dtx b/macros/latex/required/l3kernel/l3coffins.dtx
index 7eda18d6e7..a50e5c48b4 100644
--- a/macros/latex/required/l3kernel/l3coffins.dtx
+++ b/macros/latex/required/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3color.dtx b/macros/latex/required/l3kernel/l3color.dtx
index 99c81e4980..f8d42a4091 100644
--- a/macros/latex/required/l3kernel/l3color.dtx
+++ b/macros/latex/required/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3debug.dtx b/macros/latex/required/l3kernel/l3debug.dtx
index c3554aab6d..b44f39329f 100644
--- a/macros/latex/required/l3kernel/l3debug.dtx
+++ b/macros/latex/required/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -69,7 +69,7 @@
%
% Standard file identification.
% \begin{macrocode}
-\ProvidesExplFile{l3debug.def}{2024-11-02}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2024-12-09}{}{L3 Debugging support}
% \end{macrocode}
%
% \begin{variable}{\s_@@_stop}
diff --git a/macros/latex/required/l3kernel/l3deprecation.dtx b/macros/latex/required/l3kernel/l3deprecation.dtx
index 87c7708eb8..330237292b 100644
--- a/macros/latex/required/l3kernel/l3deprecation.dtx
+++ b/macros/latex/required/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3doc.dtx b/macros/latex/required/l3kernel/l3doc.dtx
index 1f7a29efa5..5341bc93e5 100644
--- a/macros/latex/required/l3kernel/l3doc.dtx
+++ b/macros/latex/required/l3kernel/l3doc.dtx
@@ -71,7 +71,7 @@ and all files in that bundle must be distributed together.
% This isn't included in the typeset documentation because it's a bit
% ugly:
%<*class>
-\ProvidesExplClass{l3doc}{2024-11-02}{}
+\ProvidesExplClass{l3doc}{2024-12-09}{}
{L3 Experimental documentation class}
%</class>
% \fi
@@ -84,7 +84,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
% \maketitle
% \tableofcontents
%
@@ -1531,8 +1531,7 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\bool_if:NT \g_@@_lmodern_bool
{
- \bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }{ \sys_if_engine_xetex_p: }
+ \sys_if_engine_opentype:TF
{
\group_begin:
\ttfamily
@@ -3609,7 +3608,7 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\newenvironment{TemplateInterfaceDescription}[1]
{
- \subsection{The~object~type~`#1'}
+ \subsection{The~template~type~`#1'}
\begingroup
\@beginparpenalty\@M
\description
@@ -3628,7 +3627,7 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\newenvironment{TemplateDescription}[2]
{
- \subsection{The~template~`#2'~(object~type~#1)}
+ \subsection{The~template~`#2'~(template~type~#1)}
\subsubsection*{Attributes:}
\begingroup
\@beginparpenalty\@M
@@ -4717,7 +4716,7 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\tl_const:Nn \Team
{
- The~\LaTeX3~Project\thanks
+ The~\LaTeX~Project~team\thanks
{\url{https://www.latex-project.org/latex3/}}
}
% \end{macrocode}
@@ -4731,7 +4730,7 @@ and all files in that bundle must be distributed together.
}
\author
{
- The~\LaTeX3~Project\thanks{E-mail:~
+ The~\LaTeX~Project~team\thanks{E-mail:~
\href{mailto:latex-l@listserv.uni-heidelberg.de}
{latex-l@listserv.uni-heidelberg.de}}
}
diff --git a/macros/latex/required/l3kernel/l3doc.pdf b/macros/latex/required/l3kernel/l3doc.pdf
index de0bcf60e8..2e0ebf63db 100644
--- a/macros/latex/required/l3kernel/l3doc.pdf
+++ b/macros/latex/required/l3kernel/l3doc.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3docstrip.dtx b/macros/latex/required/l3kernel/l3docstrip.dtx
index fb69b714fb..3f3458e4a8 100644
--- a/macros/latex/required/l3kernel/l3docstrip.dtx
+++ b/macros/latex/required/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3docstrip.pdf b/macros/latex/required/l3kernel/l3docstrip.pdf
index 061cd6fc44..8039326289 100644
--- a/macros/latex/required/l3kernel/l3docstrip.pdf
+++ b/macros/latex/required/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3expan.dtx b/macros/latex/required/l3kernel/l3expan.dtx
index 3ca2c517b1..81ad6ef3b7 100644
--- a/macros/latex/required/l3kernel/l3expan.dtx
+++ b/macros/latex/required/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3file.dtx b/macros/latex/required/l3kernel/l3file.dtx
index ceadf34dc0..4cf93f65f5 100644
--- a/macros/latex/required/l3kernel/l3file.dtx
+++ b/macros/latex/required/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3flag.dtx b/macros/latex/required/l3kernel/l3flag.dtx
index 7741a9b0da..358c29b0b5 100644
--- a/macros/latex/required/l3kernel/l3flag.dtx
+++ b/macros/latex/required/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-assign.dtx b/macros/latex/required/l3kernel/l3fp-assign.dtx
index 4fcaf71864..6f74942930 100644
--- a/macros/latex/required/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/required/l3kernel/l3fp-assign.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/required/l3kernel/l3fp-aux.dtx b/macros/latex/required/l3kernel/l3fp-aux.dtx
index 807710de08..ee7f02d8ff 100644
--- a/macros/latex/required/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/required/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-basics.dtx b/macros/latex/required/l3kernel/l3fp-basics.dtx
index 11c244aa1f..cdb02dc1a5 100644
--- a/macros/latex/required/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/required/l3kernel/l3fp-basics.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-convert.dtx b/macros/latex/required/l3kernel/l3fp-convert.dtx
index 23f7a2213d..d810f49b70 100644
--- a/macros/latex/required/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/required/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-expo.dtx b/macros/latex/required/l3kernel/l3fp-expo.dtx
index d65a147e15..ec74bf42fe 100644
--- a/macros/latex/required/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/required/l3kernel/l3fp-expo.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-extended.dtx b/macros/latex/required/l3kernel/l3fp-extended.dtx
index cedbc91888..ef7c829873 100644
--- a/macros/latex/required/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/required/l3kernel/l3fp-extended.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-functions.dtx b/macros/latex/required/l3kernel/l3fp-functions.dtx
index 444e8189fa..e37c12fcd6 100644
--- a/macros/latex/required/l3kernel/l3fp-functions.dtx
+++ b/macros/latex/required/l3kernel/l3fp-functions.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-logic.dtx b/macros/latex/required/l3kernel/l3fp-logic.dtx
index baa08b4216..2862456150 100644
--- a/macros/latex/required/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/required/l3kernel/l3fp-logic.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-parse.dtx b/macros/latex/required/l3kernel/l3fp-parse.dtx
index d272cadf11..85832288cb 100644
--- a/macros/latex/required/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/required/l3kernel/l3fp-parse.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-random.dtx b/macros/latex/required/l3kernel/l3fp-random.dtx
index 91c3a20477..c23b49afba 100644
--- a/macros/latex/required/l3kernel/l3fp-random.dtx
+++ b/macros/latex/required/l3kernel/l3fp-random.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-round.dtx b/macros/latex/required/l3kernel/l3fp-round.dtx
index a4202b4fea..b2df6a5309 100644
--- a/macros/latex/required/l3kernel/l3fp-round.dtx
+++ b/macros/latex/required/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-symbolic.dtx b/macros/latex/required/l3kernel/l3fp-symbolic.dtx
index 0db79ef775..a5c03d61b4 100644
--- a/macros/latex/required/l3kernel/l3fp-symbolic.dtx
+++ b/macros/latex/required/l3kernel/l3fp-symbolic.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-traps.dtx b/macros/latex/required/l3kernel/l3fp-traps.dtx
index b300528ec5..84760238bf 100644
--- a/macros/latex/required/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/required/l3kernel/l3fp-traps.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/required/l3kernel/l3fp-trig.dtx b/macros/latex/required/l3kernel/l3fp-trig.dtx
index 46cad5c8f9..6a0af100a3 100644
--- a/macros/latex/required/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/required/l3kernel/l3fp-trig.dtx
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp-types.dtx b/macros/latex/required/l3kernel/l3fp-types.dtx
index 049a6eea82..e1456c153f 100644
--- a/macros/latex/required/l3kernel/l3fp-types.dtx
+++ b/macros/latex/required/l3kernel/l3fp-types.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fp.dtx b/macros/latex/required/l3kernel/l3fp.dtx
index 0cbfd20153..09e46944f3 100644
--- a/macros/latex/required/l3kernel/l3fp.dtx
+++ b/macros/latex/required/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3fparray.dtx b/macros/latex/required/l3kernel/l3fparray.dtx
index 52b91d1296..93ea3d75f8 100644
--- a/macros/latex/required/l3kernel/l3fparray.dtx
+++ b/macros/latex/required/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3int.dtx b/macros/latex/required/l3kernel/l3int.dtx
index 9782fe452c..9c6835bc76 100644
--- a/macros/latex/required/l3kernel/l3int.dtx
+++ b/macros/latex/required/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -297,7 +297,7 @@
% \begin{function}[updated = 2011-10-22]
% {
% \int_set:Nn, \int_set:cn, \int_set:NV, \int_set:cV,
-% \int_gset:Nn, \int_gset:cn, \int_gset:MV, \int_gset:cV
+% \int_gset:Nn, \int_gset:cn, \int_gset:NV, \int_gset:cV
% }
% \begin{syntax}
% \cs{int_set:Nn} \meta{integer} \Arg{int expr}
@@ -307,6 +307,37 @@
% \cs{int_eval:n}).
% \end{function}
%
+% \begin{function}[added = 2024-12-08]
+% {
+% \int_set_regex_count:Nnn, \int_set_regex_count:cnn,
+% \int_set_regex_count:NNn, \int_set_regex_count:cNn,
+% \int_gset_regex_count:Nnn, \int_gset_regex_count:cnn,
+% \int_gset_regex_count:NNn, \int_gset_regex_count:cNn,
+% }
+% \begin{syntax}
+% \cs{int_set_regex_count:Nnn} \meta{int var} \Arg{regex} \Arg{token list}
+% \cs{int_set_regex_count:NNn} \meta{int var} \meta{regex~var} \Arg{token list}
+% \end{syntax}
+% Sets \meta{int var} equal to the number of times
+% \meta{regular expression} appears in \meta{token list}.
+% The search starts by finding the left-most longest match,
+% respecting greedy and lazy (non-greedy) operators. Then the search
+% starts again from the character following the last character
+% of the previous match, until reaching the end of the token list.
+% Infinite loops are prevented in the case where the regular expression
+% can match an empty token list: then we count one match between each
+% pair of characters.
+% For instance,
+% \begin{verbatim}
+% \int_set_regex_count:Nnn \l_foo_int { (b+|c) } { abbababcbb }
+% \end{verbatim}
+% results in \cs[no-index]{l_foo_int} taking the value $5$.
+% Theses are alternative names for \cs{regex_count:nnN} and friends,
+% with arguments re-ordered for \meta{int~var} setting;
+% see \pkg{l3regex} chapter for more details of the \meta{regex}
+% format.
+% \end{function}
+%
% \begin{function}[updated = 2011-10-22]
% {\int_sub:Nn, \int_sub:cn, \int_gsub:Nn, \int_gsub:cn}
% \begin{syntax}
@@ -1495,6 +1526,45 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}
+% {
+% \int_set_regex_count:Nnn, \int_set_regex_count:cnn,
+% \int_gset_regex_count:Nnn, \int_gset_regex_count:cnn
+% }
+% \begin{macro}
+% {
+% \int_set_regex_count:NNn, \int_set_regex_count:cNn,
+% \int_gset_regex_count:NNn, \int_set_gregex_count:cNn
+% }
+% \begin{macrocode}
+\cs_new_protected:Npn \int_set_regex_count:Nnn #1#2#3
+ { \regex_count:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \int_set_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_gset_regex_count:Nnn #1#2#3
+ {
+ \group_begin:
+ \int_set_eq:NN \l_@@_internal_a_int #1
+ \regex_count:nnN {#2} {#3} \l_@@_internal_a_int
+ \int_gset_eq:NN #1 \l_@@_internal_a_int
+ \group_end:
+ }
+\cs_generate_variant:Nn \int_gset_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_set_regex_count:NNn #1#2#3
+ { \regex_count:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \int_set_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_gset_regex_count:NNn #1#2#3
+ {
+ \group_begin:
+ \int_set_eq:NN \l_@@_internal_a_int #1
+ \regex_count:NnN #2 {#3} \l_@@_internal_a_int
+ \int_gset_eq:NN #1 \l_@@_internal_a_int
+ \group_end:
+ }
+\cs_generate_variant:Nn \int_gset_regex_count:NNn { c }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \subsection{Using integers}
%
% \begin{macro}{\int_use:N, \int_use:c}
diff --git a/macros/latex/required/l3kernel/l3intarray.dtx b/macros/latex/required/l3kernel/l3intarray.dtx
index 9a9a5d64e8..0c7a5d3343 100644
--- a/macros/latex/required/l3kernel/l3intarray.dtx
+++ b/macros/latex/required/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3kernel-functions.dtx b/macros/latex/required/l3kernel/l3kernel-functions.dtx
index 2678f3f965..d176fd5cb4 100644
--- a/macros/latex/required/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/required/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3keys.dtx b/macros/latex/required/l3kernel/l3keys.dtx
index c9220d7279..5228a9c19e 100644
--- a/macros/latex/required/l3kernel/l3keys.dtx
+++ b/macros/latex/required/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -921,7 +921,7 @@
% The correct list is returned by nested calls.
% \end{function}
%
-% \section{Digesting keys}
+% \section{Precompiling keys}
%
% \begin{function}[added = 2022-03-09]{\keys_precompile:nnN}
% \begin{syntax}
@@ -931,6 +931,14 @@
% resulting code for those which set variables or functions into the
% \meta{tl~var}. Thus this function \enquote{precompiles} the keyval list into
% a set of results which can be applied rapidly.
+%
+% It is important to note that when precompiling keys, no expansion of variables
+% takes place. This means that any key setting which simply stores variable names,
+% rather than variable values, will not work correctly. Most notably, any
+% key setting which uses \cs{l_keys_key_str}, \cs{l_keys_path_str} or
+% \cs{l_keys_value_tl} will yield unpredictable outcomes. As such, keys
+% intended to be precompiled should fully expand any values at the point of
+% setting.
% \end{function}
%
% \section{Utility functions for keys}
diff --git a/macros/latex/required/l3kernel/l3legacy.dtx b/macros/latex/required/l3kernel/l3legacy.dtx
index b76516d1b0..d8c66993a1 100644
--- a/macros/latex/required/l3kernel/l3legacy.dtx
+++ b/macros/latex/required/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3luatex.dtx b/macros/latex/required/l3kernel/l3luatex.dtx
index d7a6058a15..e9cabf83ed 100644
--- a/macros/latex/required/l3kernel/l3luatex.dtx
+++ b/macros/latex/required/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3msg.dtx b/macros/latex/required/l3kernel/l3msg.dtx
index 68058724e8..14b90a24da 100644
--- a/macros/latex/required/l3kernel/l3msg.dtx
+++ b/macros/latex/required/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3names.dtx b/macros/latex/required/l3kernel/l3names.dtx
index 95aeafe4a6..1ace7919a7 100644
--- a/macros/latex/required/l3kernel/l3names.dtx
+++ b/macros/latex/required/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3news.pdf b/macros/latex/required/l3kernel/l3news.pdf
index 6082a4a8f0..2ed90b59e3 100644
--- a/macros/latex/required/l3kernel/l3news.pdf
+++ b/macros/latex/required/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news01.pdf b/macros/latex/required/l3kernel/l3news01.pdf
index ab42ee7d9e..51c7ab3882 100644
--- a/macros/latex/required/l3kernel/l3news01.pdf
+++ b/macros/latex/required/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news02.pdf b/macros/latex/required/l3kernel/l3news02.pdf
index 0dc154f266..662d3927d5 100644
--- a/macros/latex/required/l3kernel/l3news02.pdf
+++ b/macros/latex/required/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news03.pdf b/macros/latex/required/l3kernel/l3news03.pdf
index b65c38e4da..d8159114d1 100644
--- a/macros/latex/required/l3kernel/l3news03.pdf
+++ b/macros/latex/required/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news04.pdf b/macros/latex/required/l3kernel/l3news04.pdf
index 72b0bd7508..56df9fa8c9 100644
--- a/macros/latex/required/l3kernel/l3news04.pdf
+++ b/macros/latex/required/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news05.pdf b/macros/latex/required/l3kernel/l3news05.pdf
index 1ee5999389..781cbe546f 100644
--- a/macros/latex/required/l3kernel/l3news05.pdf
+++ b/macros/latex/required/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news06.pdf b/macros/latex/required/l3kernel/l3news06.pdf
index 796821593a..b79bd3b3cc 100644
--- a/macros/latex/required/l3kernel/l3news06.pdf
+++ b/macros/latex/required/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news07.pdf b/macros/latex/required/l3kernel/l3news07.pdf
index 545b732f7a..c2e10cd77a 100644
--- a/macros/latex/required/l3kernel/l3news07.pdf
+++ b/macros/latex/required/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news08.pdf b/macros/latex/required/l3kernel/l3news08.pdf
index 66d91ae341..2d1503dda9 100644
--- a/macros/latex/required/l3kernel/l3news08.pdf
+++ b/macros/latex/required/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news09.pdf b/macros/latex/required/l3kernel/l3news09.pdf
index 1e56ef2837..5da780b048 100644
--- a/macros/latex/required/l3kernel/l3news09.pdf
+++ b/macros/latex/required/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news10.pdf b/macros/latex/required/l3kernel/l3news10.pdf
index 1d50364e6e..b1fbb7286b 100644
--- a/macros/latex/required/l3kernel/l3news10.pdf
+++ b/macros/latex/required/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news11.pdf b/macros/latex/required/l3kernel/l3news11.pdf
index c5460e4ca7..ff66366fde 100644
--- a/macros/latex/required/l3kernel/l3news11.pdf
+++ b/macros/latex/required/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3news12.pdf b/macros/latex/required/l3kernel/l3news12.pdf
index 517857c7dd..f2c8092f9b 100644
--- a/macros/latex/required/l3kernel/l3news12.pdf
+++ b/macros/latex/required/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3pdf.dtx b/macros/latex/required/l3kernel/l3pdf.dtx
index 624fd08326..63517d8640 100644
--- a/macros/latex/required/l3kernel/l3pdf.dtx
+++ b/macros/latex/required/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3prefixes.csv b/macros/latex/required/l3kernel/l3prefixes.csv
index e9835fb3f0..4fad000211 100644
--- a/macros/latex/required/l3kernel/l3prefixes.csv
+++ b/macros/latex/required/l3kernel/l3prefixes.csv
@@ -75,6 +75,7 @@ emoji,emoji,Xiangdong Zeng,https://github.com/stone-zeng/latex-emoji,https://git
emojicite,emojicite,Leon Sixt,https://github.com/berleon/emojicite,https://github.com/berleon/emojicite.git,https://github.com/berleon/emojicite/issues/,2020-04-14,2020-04-20,
empty,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
enotez,enotez,Clemens Niederberger,https://github.com/cgnieder/enotez/,https://github.com/cgnieder/enotez.git,https://github.com/cgnieder/enotez/issues,2013-03-16,2020-04-14,
+enumext,enumext,Pablo González,https://github.com/pablgonz/enumext,git@github.com:pablgonz/enumext.git,https://github.com/pablgonz/enumext/issues,2024-11-18,2024-11-18,
etex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
etl,etl,Jonathan P. Spratte,https://github.com/Skillmon/ltx_etl,git@github.com:Skillmon/ltx_etl.git,https://github.com/Skillmon/ltx_etl/issues,2021-08-16,2021-08-16,
exp,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
@@ -231,6 +232,7 @@ rivbook,rivbook,Julien Rivaud,,,,2018-06-13,2018-06-14,
rivmath,rivmath,Julien Rivaud,,,,2018-06-13,2018-06-13,
rpgicons,rpgicons,Jasper Habicht,https://github.com/jasperhabicht/rpgicons,https://github.com/jasperhabicht/rpgicons/rpgicons.git,https://github.com/jasperhabicht/rpgicons/issues,2024-04-29,2024-04-29,
sanuml,sanitize-umlaut,Thomas F. Sturm,https://github.com/T-F-S/sanitize-umlaut,https://github.com/T-F-S/sanitize-umlaut.git,https://github.com/T-F-S/sanitize-umlaut/issues,2022-07-19,2022-07-19,
+scaletextbullet,scaletextbullet,Oliver Beery,https://github.com/beeryoliver/scaletextbullet,https://github.com/beeryoliver/scaletextbullet/scaletextbullet.git,https://github.com/beeryoliver/scaletextbullet/issues,2024-11-15,2024-11-15,
scan,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
schulma,schulmathematik,Keno Wehr,https://ctan.org/pkg/schulmathematik,,,2021-08-23,2021-08-23,
scontents,scontents,Pablo González,https://github.com/pablgonz/scontents,git@github.com:pablgonz/scontents.git,https://github.com/pablgonz/scontents/issues,2019-12-05,2019-12-05,
diff --git a/macros/latex/required/l3kernel/l3prefixes.pdf b/macros/latex/required/l3kernel/l3prefixes.pdf
index 3063489a71..c50af16ac6 100644
--- a/macros/latex/required/l3kernel/l3prefixes.pdf
+++ b/macros/latex/required/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3prg.dtx b/macros/latex/required/l3kernel/l3prg.dtx
index c4f2ab1fa0..2ab7c0a065 100644
--- a/macros/latex/required/l3kernel/l3prg.dtx
+++ b/macros/latex/required/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -79,41 +79,28 @@
% \begin{function}[updated = 2022-11-01]
% {
% \prg_new_conditional:Npnn, \prg_set_conditional:Npnn, \prg_gset_conditional:Npnn,
-% \prg_new_conditional:Nnn, \prg_set_conditional:Nnn, \prg_gset_conditional:Nnn
+% \prg_new_protected_conditional:Npnn, \prg_set_protected_conditional:Npnn, \prg_gset_protected_conditional:Npnn,
+% \prg_new_conditional:Nnn, \prg_set_conditional:Nnn, \prg_gset_conditional:Nnn,
+% \prg_new_protected_conditional:Nnn, \prg_set_protected_conditional:Nnn, \prg_gset_protected_conditional:Nnn
% }
% \begin{syntax}
% \cs{prg_new_conditional:Npnn} \cs[no-index]{\meta{name}:\meta{arg spec}} \meta{parameters} \Arg{conditions} \Arg{code} \\
% \cs{prg_new_conditional:Nnn} \cs[no-index]{\meta{name}:\meta{arg spec}} \Arg{conditions} \Arg{code}
% \end{syntax}
% These functions create a family of conditionals using the same
-% \Arg{code} to perform the test created. Those conditionals are
-% expandable if \meta{code} is. The \texttt{new} versions check
+% \meta{code} to perform the test created. Those non-protected
+% conditionals are expandable if \meta{code} is.
+% The \texttt{new} versions check
% for existing definitions and perform assignments globally
% (\emph{cf.}~\cs{cs_new:Npn}) whereas the \texttt{set} versions do no
% check and perform assignments locally (\emph{cf.}~\cs{cs_set:Npn}).
% The conditionals created are dependent on the comma-separated list
-% of \meta{conditions}, which should be one or more of \texttt{p},
-% \texttt{T}, \texttt{F} and \texttt{TF}.
-% \end{function}
-%
-% \begin{function}[updated = 2012-02-06]
-% {
-% \prg_new_protected_conditional:Npnn, \prg_set_protected_conditional:Npnn, \prg_gset_protected_conditional:Npnn,
-% \prg_new_protected_conditional:Nnn, \prg_set_protected_conditional:Nnn, \prg_gset_protected_conditional:Nnn
-% }
-% \begin{syntax}
-% \cs{prg_new_protected_conditional:Npnn} \cs[no-index]{\meta{name}:\meta{arg spec}} \meta{parameters} \Arg{conditions} \Arg{code} \\
-% \cs{prg_new_protected_conditional:Nnn} \cs[no-index]{\meta{name}:\meta{arg spec}} \Arg{conditions} \Arg{code}
-% \end{syntax}
-% These functions create a family of protected conditionals using the
-% same \Arg{code} to perform the test created. The \meta{code} does
-% not need to be expandable. The \texttt{new} version check for
-% existing definitions and perform assignments globally
-% (\emph{cf.}~\cs{cs_new:Npn}) whereas the \texttt{set} version do
-% not (\emph{cf.}~\cs{cs_set:Npn}). The conditionals created are
-% depended on the comma-separated list of \meta{conditions}, which
-% should be one or more of \texttt{T}, \texttt{F} and \texttt{TF} (not
-% \texttt{p}).
+% of \meta{conditions}, which should be one or more of
+% \texttt{T}, \texttt{F} and \texttt{TF}, and for non-protected conditionals
+% \texttt{p}.
+% For public conditionals, a full set of forms should be provided:
+% this contrasts with strictly internal conditionals, where only the
+% required subset need be defined.
% \end{function}
%
% The conditionals are defined by \cs{prg_new_conditional:Npnn} and
@@ -182,7 +169,7 @@
% \prg_gset_eq_conditional:NNn
% }
% \begin{syntax}
-% \cs{prg_new_eq_conditional:NNn} \cs[no-index]{\meta{name_1}:\meta{arg spec_1}} \cs[no-index]{\meta{name_2}:\meta{arg spec_2}} \Arg{conditions}
+% \cs{prg_new_eq_conditional:NNn} \cs[no-index]{\meta{name_1}:\meta{arg spec}} \cs[no-index]{\meta{name_2}:\meta{arg spec}} \Arg{conditions}
% \end{syntax}
% These functions copy a family of conditionals. The \texttt{new} version
% checks for existing definitions (\emph{cf.}~\cs{cs_new_eq:NN}) whereas
diff --git a/macros/latex/required/l3kernel/l3prop.dtx b/macros/latex/required/l3kernel/l3prop.dtx
index 47cd52320c..4f13ed32d4 100644
--- a/macros/latex/required/l3kernel/l3prop.dtx
+++ b/macros/latex/required/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -1724,7 +1724,7 @@
\exp_after:wN { \tl_to_str:n {#2} }
}
}
- { \exp_after:wN \@@_get_linked:w #1 {#2} \use:n { } { } }
+ { \exp_after:wN \@@_get_linked:w #1 {#2} \exp_not:n { } { } }
}
\cs_new:Npn \@@_item:nnn #1#2#3
{
diff --git a/macros/latex/required/l3kernel/l3quark.dtx b/macros/latex/required/l3kernel/l3quark.dtx
index 5c6b0ca2d4..4bc8b55ebb 100644
--- a/macros/latex/required/l3kernel/l3quark.dtx
+++ b/macros/latex/required/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3regex.dtx b/macros/latex/required/l3kernel/l3regex.dtx
index 1fa9f71f08..f334252751 100644
--- a/macros/latex/required/l3kernel/l3regex.dtx
+++ b/macros/latex/required/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -541,7 +541,7 @@
% \begin{syntax}
% \cs{regex_set:Nn} \meta{regex~var} \Arg{regex}
% \end{syntax}
-% Stores a compiled version of the \meta{regular expression} in the
+% Stores a compiled version of the \meta{regex} in the
% \meta{regex~var}. The assignment is local for \cs{regex_set:Nn} and
% global for \cs{regex_gset:Nn}. For instance, this function can be
% used as
@@ -557,7 +557,7 @@
% \end{syntax}
% Creates a new constant \meta{regex~var} or raises an error if the name
% is already taken. The value of the \meta{regex~var} is set
-% globally to the compiled version of the \meta{regular expression}.
+% globally to the compiled version of the \meta{regex}.
% \end{function}
%
% \begin{function}[added = 2021-04-26, updated = 2021-04-29]
@@ -595,7 +595,7 @@
% \begin{syntax}
% \cs{regex_match:nnTF} \Arg{regex} \Arg{token list} \Arg{true code} \Arg{false code}
% \end{syntax}
-% Tests whether the \meta{regular expression} matches any part
+% Tests whether the \meta{regex} matches any part
% of the \meta{token list}. For instance,
% \begin{verbatim}
% \regex_match:nnTF { b [cde]* } { abecdcx } { TRUE } { FALSE }
@@ -614,7 +614,7 @@
% \end{syntax}
% Sets \meta{int var} within the current \TeX{} group level
% equal to the number of times
-% \meta{regular expression} appears in \meta{token list}.
+% \meta{regex} appears in \meta{token list}.
% The search starts by finding the left-most longest match,
% respecting greedy and lazy (non-greedy) operators. Then the search
% starts again from the character following the last character
@@ -673,7 +673,7 @@
% \cs{regex_extract_once:nnN} \Arg{regex} \Arg{token list} \meta{seq~var}
% \cs{regex_extract_once:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code}
% \end{syntax}
-% Finds the first match of the \meta{regular expression} in the
+% Finds the first match of the \meta{regex} in the
% \meta{token list}. If it exists, the match is stored as the first
% item of the \meta{seq~var}, and further items are the contents of
% capturing groups, in the order of their opening parenthesis. The
@@ -707,7 +707,7 @@
% \cs{regex_extract_all:nnN} \Arg{regex} \Arg{token list} \meta{seq~var}
% \cs{regex_extract_all:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code}
% \end{syntax}
-% Finds all matches of the \meta{regular expression}
+% Finds all matches of the \meta{regex}
% in the \meta{token list}, and stores all the submatch information
% in a single sequence (concatenating the results of
% multiple \cs{regex_extract_once:nnN} calls).
@@ -731,15 +731,15 @@
% \regex_split:NnN, \regex_split:NVN,
% }
% \begin{syntax}
-% \cs{regex_split:nnN} \Arg{regular expression} \Arg{token list} \meta{seq~var}
-% \cs{regex_split:nnNTF} \Arg{regular expression} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code}
+% \cs{regex_split:nnN} \Arg{regex} \Arg{token list} \meta{seq~var}
+% \cs{regex_split:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code}
% \end{syntax}
% Splits the \meta{token list} into a sequence of parts, delimited by
-% matches of the \meta{regular expression}. If the \meta{regular expression}
+% matches of the \meta{regex}. If the \meta{regex}
% has capturing groups, then the token lists that they match are stored as
% items of the sequence as well. The assignment to \meta{seq~var} is local.
% If no match is found the resulting \meta{seq~var} has the
-% \meta{token list} as its sole item. If the \meta{regular expression}
+% \meta{token list} as its sole item. If the \meta{regex}
% matches the empty token list, then the \meta{token list} is split
% into single tokens.
% The testing versions insert the \meta{true code} into the input
@@ -763,10 +763,10 @@
% \regex_replace_once:NnN,\regex_replace_once:NVN
% }
% \begin{syntax}
-% \cs{regex_replace_once:nnN} \Arg{regular expression} \Arg{replacement} \meta{tl~var}
-% \cs{regex_replace_once:nnNTF} \Arg{regular expression} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code}
+% \cs{regex_replace_once:nnN} \Arg{regex} \Arg{replacement} \meta{tl~var}
+% \cs{regex_replace_once:nnNTF} \Arg{regex} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code}
% \end{syntax}
-% Searches for the \meta{regular expression} in the contents of the
+% Searches for the \meta{regex} in the contents of the
% \meta{tl~var} and replaces the first match with the
% \meta{replacement}. In the \meta{replacement},
% |\0| represents the full match, |\1| represent the contents of the
@@ -780,10 +780,10 @@
% \regex_replace_all:NnN,\regex_replace_all:NVN
% }
% \begin{syntax}
-% \cs{regex_replace_all:nnN} \Arg{regular expression} \Arg{replacement} \meta{tl~var}
-% \cs{regex_replace_all:nnNTF} \Arg{regular expression} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code}
+% \cs{regex_replace_all:nnN} \Arg{regex} \Arg{replacement} \meta{tl~var}
+% \cs{regex_replace_all:nnNTF} \Arg{regex} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code}
% \end{syntax}
-% Replaces all occurrences of the \meta{regular expression} in the
+% Replaces all occurrences of the \meta{regex} in the
% contents of the \meta{tl~var}
% by the \meta{replacement}, where |\0| represents
% the full match, |\1| represent the contents of the first capturing
diff --git a/macros/latex/required/l3kernel/l3seq.dtx b/macros/latex/required/l3kernel/l3seq.dtx
index 120081197b..d9aa396570 100644
--- a/macros/latex/required/l3kernel/l3seq.dtx
+++ b/macros/latex/required/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -189,6 +189,81 @@
% \end{texnote}
% \end{function}
%
+% \begin{function}[added = 2024-12-08]
+% {
+% \seq_set_regex_extract_once:Nnn, \seq_set_regex_extract_once:cnn,
+% \seq_set_regex_extract_once:NNn, \seq_set_regex_extract_once:cNn,
+% \seq_gset_regex_extract_once:Nnn, \seq_gset_regex_extract_once:cnn,
+% \seq_gset_regex_extract_once:NNn, \seq_gset_regex_extract_once:cNn,
+% }
+% \begin{syntax}
+% \cs{seq_set_regex_extract_once:Nnn} \meta{seq~var} \Arg{regex} \Arg{token list}
+% \cs{seq_set_regex_extract_once:NNn} \meta{seq~var} \meta{regex~var} \Arg{token list}
+% \end{syntax}
+% Finds the first match of the \meta{regex} in the
+% \meta{token list}. If it exists, the match is stored as the first
+% item of the \meta{seq~var}, and further items are the contents of
+% capturing groups, in the order of their opening parenthesis.
+% If there is no match, the \meta{seq~var} is cleared.
+% Theses are alternative names for \cs{regex_extract_once:nnN} and friends,
+% with arguments re-ordered for \meta{seq~var} setting;
+% see \pkg{l3regex} chapter for more details of the \meta{regex}
+% format.
+% \end{function}
+%
+% \begin{function}[added = 2024-12-08]
+% {
+% \seq_set_regex_extract_all:Nnn, \seq_set_regex_extract_all:cnn,
+% \seq_set_regex_extract_all:NNn, \seq_set_regex_extract_all:cNn,
+% \seq_gset_regex_extract_all:Nnn, \seq_gset_regex_extract_all:cnn,
+% \seq_gset_regex_extract_all:NNn, \seq_gset_regex_extract_all:cNn,
+% }
+% \begin{syntax}
+% \cs{seq_set_regex_extract_all:Nnn} \meta{seq~var} \Arg{regex} \Arg{token list}
+% \cs{seq_set_regex_extract_all:NNn} \meta{seq~var} \meta{regex~var} \Arg{token list}
+% \end{syntax}
+% Finds all matches of the \meta{regex} in the
+% \meta{token list}, and stores all the submatch information
+% in a single sequence (concatenating the results of
+% multiple \cs{seq_set_regex_extract_all:Nnn} calls).
+% If there is no match, the \meta{seq~var} is cleared.
+% Theses are alternative names for \cs{regex_extract_all:nnN} and friends,
+% with arguments re-ordered for \meta{seq~var} setting;
+% see \pkg{l3regex} chapter for more details of the \meta{regex}
+% format.
+% \end{function}
+%
+% \begin{function}[added = 2024-12-08]
+% {
+% \seq_set_regex_split:Nnn, \seq_set_regex_split:cnn,
+% \seq_set_regex_split:NNn, \seq_set_regex_split:cNn,
+% \seq_gset_regex_split:Nnn, \seq_gset_regex_split:cnn,
+% \seq_gset_regex_split:NNn, \seq_gset_regex_split:cNn,
+% }
+% \begin{syntax}
+% \cs{seq_set_regex_split:Nnn} \meta{seq~var} \Arg{regex} \Arg{token list}
+% \cs{seq_set_regex_split:NNn} \meta{seq~var} \meta{regex~var} \Arg{token list}
+% \end{syntax}
+% Splits the \meta{token list} into a sequence of parts, delimited by
+% matches of the \meta{regular expression}. If the \meta{regular expression}
+% has capturing groups, then the token lists that they match are stored as
+% items of the sequence as well.
+% If no match is found the resulting \meta{seq~var} has the
+% \meta{token list} as its sole item. If the \meta{regular expression}
+% matches the empty token list, then the \meta{token list} is split
+% into single tokens.
+% For example, after
+% \begin{verbatim}
+% \seq_set_regex_split:Nnn \l_path_seq { / } { the/path/for/this/file.tex }
+% \end{verbatim}
+% the sequence |\l_path_seq| contains the items |{the}|, |{path}|,
+% |{for}|, |{this}|, and |{file.tex}|.
+% Theses are alternative names for \cs{regex_split:nnN} and friends,
+% with arguments re-ordered for \meta{seq~var} setting;
+% see \pkg{l3regex} chapter for more details of the \meta{regex}
+% format.
+% \end{function}
+%
% \begin{function}
% {\seq_concat:NNN, \seq_concat:ccc, \seq_gconcat:NNN, \seq_gconcat:ccc}
% \begin{syntax}
@@ -1411,6 +1486,84 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}
+% {
+% \seq_set_regex_extract_once:Nnn, \seq_set_regex_extract_once:cnn,
+% \seq_gset_regex_extract_once:Nnn, \seq_gset_regex_extract_once:cnn
+% }
+% \begin{macro}
+% {
+% \seq_set_regex_extract_all:Nnn, \seq_set_regex_extract_all:cnn,
+% \seq_gset_regex_extract_all:Nnn, \seq_gset_regex_extract_all:cnn
+% }
+% \begin{macro}
+% {
+% \seq_set_regex_extract_once:NNn, \seq_set_regex_extract_once:cNn,
+% \seq_gset_regex_extract_once:NNn, \seq_gset_regex_extract_once:cNn
+% }
+% \begin{macro}
+% {
+% \seq_set_regex_extract_all:NNn, \seq_set_regex_extract_all:cNn,
+% \seq_gset_regex_extract_all:NNn, \seq_gset_regex_extract_all:cNn
+% }
+% \begin{macro}
+% {
+% \seq_set_regex_split:Nnn, \seq_set_regex_split:cnn,
+% \seq_gset_regex_split:Nnn, \seq_gset_regex_split:cnn
+% }
+% \begin{macro}
+% {
+% \seq_set_regex_split:NNn, \seq_set_regex_split:cNn,
+% \seq_gset_regex_split:NNn, \seq_gset_regex_split:cNn
+% }
+% \begin{macrocode}
+\cs_new_protected:Npn \seq_set_regex_extract_once:Nnn #1#2#3
+ { \regex_extract_once:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_once:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_once:NNn #1#2#3
+ { \regex_extract_once:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_once:NNn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_all:Nnn #1#2#3
+ { \regex_extract_all:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_all:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_all:NNn #1#2#3
+ { \regex_extract_all:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_all:NNn { c }
+\cs_new_protected:Npn \seq_set_regex_split:Nnn #1#2#3
+ { \regex_split:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_split:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_split:NNn #1#2#3
+ { \regex_split:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_split:NNn { c }
+\group_begin:
+ \cs_set_protected:Npn \@@_tmp:w #1#2#3
+ {
+ \cs_new_protected:cpe { seq_gset_regex_ #1 :N #2 n } ##1##2##3
+ {
+ \group_begin:
+ \seq_set_eq:NN \exp_not:N \l_@@_tmp_seq ##1
+ \exp_not:c { regex_ #1 :Nn #2 }
+ #3 {##2} {##3} \exp_not:N \l_@@_tmp_seq
+ \seq_gset_eq:NN ##1 \exp_not:N \l_@@_tmp_seq
+ \group_end:
+ }
+ \cs_generate_variant:cn { seq_gset_regex_ #1 :N #2 n } { c }
+ }
+ \@@_tmp:w { extract_once } n { }
+ \@@_tmp:w { extract_once } N \use:n
+ \@@_tmp:w { extract_all } n { }
+ \@@_tmp:w { extract_all } N \use:n
+ \@@_tmp:w { split } n { }
+ \@@_tmp:w { split } N \use:n
+\group_end:
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\seq_concat:NNN, \seq_concat:ccc}
% \UnitTested
% \begin{macro}{\seq_gconcat:NNN, \seq_gconcat:ccc}
@@ -1525,10 +1678,10 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{variable}{\l_@@_remove_seq}
+% \begin{variable}{\l_@@_tmp_seq}
% An internal sequence for the removal routines.
% \begin{macrocode}
-\seq_new:N \l_@@_remove_seq
+\seq_new:N \l_@@_tmp_seq
% \end{macrocode}
% \end{variable}
%
@@ -1545,13 +1698,13 @@
{ \@@_remove_duplicates:NN \seq_gset_eq:NN }
\cs_new_protected:Npn \@@_remove_duplicates:NN #1#2
{
- \seq_clear:N \l_@@_remove_seq
+ \seq_clear:N \l_@@_tmp_seq
\seq_map_inline:Nn #2
{
- \seq_if_in:NnF \l_@@_remove_seq {##1}
- { \seq_put_right:Nn \l_@@_remove_seq {##1} }
+ \seq_if_in:NnF \l_@@_tmp_seq {##1}
+ { \seq_put_right:Nn \l_@@_tmp_seq {##1} }
}
- #1 #2 \l_@@_remove_seq
+ #1 #2 \l_@@_tmp_seq
}
\cs_generate_variant:Nn \seq_remove_duplicates:N { c }
\cs_generate_variant:Nn \seq_gremove_duplicates:N { c }
diff --git a/macros/latex/required/l3kernel/l3skip.dtx b/macros/latex/required/l3kernel/l3skip.dtx
index 2e15eb2866..27fc10b4c1 100644
--- a/macros/latex/required/l3kernel/l3skip.dtx
+++ b/macros/latex/required/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -769,7 +769,7 @@
% \end{syntax}
% Sets \meta{skip} to the value of \meta{skip expr}, which
% must evaluate to a length with units and may include a rubber
-% component (for example |1 cm plus 0.5 cm|.
+% component (for example |1 cm plus 0.5 cm|).
% \end{function}
%
% \begin{function}
@@ -1000,7 +1000,7 @@
%
% \begin{function}[updated = 2011-10-22]
% {
-% \muskip_set:Nn, \muskip_set:cn, \muskip_set:Nn, \muskip_set:cn,
+% \muskip_set:Nn, \muskip_set:cn, \muskip_set:NV, \muskip_set:cV,
% \muskip_gset:Nn, \muskip_gset:cn, \muskip_gset:NV, \muskip_gset:cV
% }
% \begin{syntax}
diff --git a/macros/latex/required/l3kernel/l3sort.dtx b/macros/latex/required/l3kernel/l3sort.dtx
index c599739d56..7161e10525 100644
--- a/macros/latex/required/l3kernel/l3sort.dtx
+++ b/macros/latex/required/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3str-convert.dtx b/macros/latex/required/l3kernel/l3str-convert.dtx
index 1976b092b1..095ec90e18 100644
--- a/macros/latex/required/l3kernel/l3str-convert.dtx
+++ b/macros/latex/required/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -2624,9 +2624,7 @@
\exp_args:Ne \tl_to_str:n
{ \str_map_function:nN {#1} \@@_convert_pdfname:n }
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \@@_convert_pdfname:n #1
{
diff --git a/macros/latex/required/l3kernel/l3str.dtx b/macros/latex/required/l3kernel/l3str.dtx
index 94a74b17d1..39fb3f0677 100644
--- a/macros/latex/required/l3kernel/l3str.dtx
+++ b/macros/latex/required/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3styleguide.pdf b/macros/latex/required/l3kernel/l3styleguide.pdf
index 3bc937254f..42a51a2545 100644
--- a/macros/latex/required/l3kernel/l3styleguide.pdf
+++ b/macros/latex/required/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3styleguide.tex b/macros/latex/required/l3kernel/l3styleguide.tex
index 32395f1377..6395c2b433 100644
--- a/macros/latex/required/l3kernel/l3styleguide.tex
+++ b/macros/latex/required/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2024-11-02}
+\date{Released 2024-12-09}
\begin{document}
diff --git a/macros/latex/required/l3kernel/l3syntax-changes.pdf b/macros/latex/required/l3kernel/l3syntax-changes.pdf
index 5d7b4faff4..ff471740cd 100644
--- a/macros/latex/required/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/required/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3syntax-changes.tex b/macros/latex/required/l3kernel/l3syntax-changes.tex
index d86cba73d8..4ef884a5ba 100644
--- a/macros/latex/required/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/required/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2024-11-02}
+\date{Released 2024-12-09}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/required/l3kernel/l3sys.dtx b/macros/latex/required/l3kernel/l3sys.dtx
index 4a600987da..1188381940 100644
--- a/macros/latex/required/l3kernel/l3sys.dtx
+++ b/macros/latex/required/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -107,6 +107,26 @@
% |\sys_if_engine_ptex_p:| is true for \epTeX{} but false for \eupTeX{}.
% \end{function}
%
+% \begin{function}[added = 2024-11-05, pTF]{\sys_if_engine_opentype:}
+% \begin{syntax}
+% \cs{sys_if_engine_opentype_p:}
+% \cs{sys_if_engine_opentype:TF} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Conditional which allows functionality-specific code to be used.
+% The test is true for engines which can use OpenType fonts and
+% thus full Unicode typesetting. This tests for features not engine
+% name, but currently is equivalent to requiring either
+% \XeTeX{} or \LuaTeX{}.
+% \begin{texnote}
+% The underlying test here checks for \tn{Umathcode}, which
+% is used to implement OpenType math font typesetting. Any
+% engine which should give a \texttt{true} result here needs
+% to provide general Unicode support (accepting the full UTF-8
+% range for character codes), a mechanism to load system fonts
+% and a suitable interface for math mode typesetting.
+% \end{texnote}
+% \end{function}
+%
% \begin{variable}[added = 2015-09-19]{\c_sys_engine_str}
% The current engine given as a lower case string: one of
% |luatex|, |pdftex|, |ptex|, |uptex| or |xetex|.
@@ -514,6 +534,14 @@
% \end{variable}
% \end{macro}
%
+% \begin{function}[pTF]{\sys_if_engine_opentype:}
+% \begin{macrocode}
+\@@_const:nn
+ { sys_if_engine_opentype }
+ { \cs_if_exist_p:N \tex_Umathcode:D }
+% \end{macrocode}
+% \end{function}
+%
% \begin{variable}{\c_sys_engine_exec_str,\c_sys_engine_format_str}
% Take the functions defined above, and set up the engine and format
% names. \cs{c_sys_engine_exec_str} differs from \cs{c_sys_engine_str}
diff --git a/macros/latex/required/l3kernel/l3term-glossary.pdf b/macros/latex/required/l3kernel/l3term-glossary.pdf
index 921a8a0614..b1faa18338 100644
--- a/macros/latex/required/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/required/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/l3term-glossary.tex b/macros/latex/required/l3kernel/l3term-glossary.tex
index cb01e6f812..735af0146c 100644
--- a/macros/latex/required/l3kernel/l3term-glossary.tex
+++ b/macros/latex/required/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2024-11-02}
+\date{Released 2024-12-09}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/required/l3kernel/l3text-case.dtx b/macros/latex/required/l3kernel/l3text-case.dtx
index a9847bf900..47fc71efc5 100644
--- a/macros/latex/required/l3kernel/l3text-case.dtx
+++ b/macros/latex/required/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -801,9 +801,7 @@
% the standard catcode. If neither are true, we set as 13 on the grounds that
% this will be what is used anyway!
% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \@@_change_case_catcode:nn #1#2
{ \@@_char_catcode:N #1 }
@@ -2319,9 +2317,7 @@
% A few adjustments to case mapping for combining chars: these are not needed
% for the Unicode engines
% \begin{macrocode}
-\bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:F
{
\text_declare_uppercase_mapping:nn { "01F0 } { \v { J } }
}
diff --git a/macros/latex/required/l3kernel/l3text-map.dtx b/macros/latex/required/l3kernel/l3text-map.dtx
index 52e304ec15..3a24accbf9 100644
--- a/macros/latex/required/l3kernel/l3text-map.dtx
+++ b/macros/latex/required/l3kernel/l3text-map.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3text-purify.dtx b/macros/latex/required/l3kernel/l3text-purify.dtx
index 8163fead6a..ca70f75fab 100644
--- a/macros/latex/required/l3kernel/l3text-purify.dtx
+++ b/macros/latex/required/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3text.dtx b/macros/latex/required/l3kernel/l3text.dtx
index 559bc158ae..1513949280 100644
--- a/macros/latex/required/l3kernel/l3text.dtx
+++ b/macros/latex/required/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -654,9 +654,7 @@
% Grab a codepoint and apply some code to it: here |#1| should expect one
% following \emph{balanced text}.
% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \@@_codepoint_process:nN #1#2 { #1 {#2} }
}
@@ -710,9 +708,7 @@
% Allows comparison for all engines using a first \enquote{character} followed
% by a codepoint.
% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\prg_new_conditional:Npnn
\@@_codepoint_compare:nNn #1#2#3 { TF , p }
diff --git a/macros/latex/required/l3kernel/l3tl-analysis.dtx b/macros/latex/required/l3kernel/l3tl-analysis.dtx
index d3342eb876..900540e055 100644
--- a/macros/latex/required/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/required/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3tl-build.dtx b/macros/latex/required/l3kernel/l3tl-build.dtx
index e3c615f5b2..aa7c9486f1 100644
--- a/macros/latex/required/l3kernel/l3tl-build.dtx
+++ b/macros/latex/required/l3kernel/l3tl-build.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
diff --git a/macros/latex/required/l3kernel/l3tl.dtx b/macros/latex/required/l3kernel/l3tl.dtx
index 3d08f2354b..44dc9d8de2 100644
--- a/macros/latex/required/l3kernel/l3tl.dtx
+++ b/macros/latex/required/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -333,8 +333,8 @@
% Tests if the \meta{token list} and the special \cs{c_novalue_tl} marker
% contain the same list of tokens, both in respect of character codes and
% category codes. This means that
-% \cs{exp_args:No} \cs{tl_if_novalue:nTF} \{ \cs{c_novalue_tl} \} is
-% logically \texttt{true} but \cs{tl_if_novalue:nTF} \{ \cs{c_novalue_tl} \}
+% \cs{exp_args:No} \cs{tl_if_novalue:nTF} \texttt\{ \cs{c_novalue_tl} \texttt\} is
+% logically \texttt{true} but \cs{tl_if_novalue:nTF} \texttt\{ \cs{c_novalue_tl} \texttt\}
% is logically \texttt{false}.
% This function is intended to allow construction
% of flexible document interface structures in which missing optional
@@ -376,6 +376,28 @@
% Token groups (|{|\ldots|}|) are not single tokens.
% \end{function}
%
+% \begin{function}[TF, added = 2024-12-08]
+% {
+% \tl_if_regex_match:nn, \tl_if_regex_match:Vn,
+% \tl_if_regex_match:nN, \tl_if_regex_match:VN,
+% }
+% \begin{syntax}
+% \cs{tl_if_regex_match:nnTF} \Arg{token list} \Arg{regex} \Arg{true code} \Arg{false code}
+% \cs{tl_if_regex_match:nNTF} \Arg{token list} \meta{regex~var} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Tests whether the \meta{regular expression} matches any part
+% of the \meta{token list}. For instance,
+% \begin{verbatim}
+% \tl_if_regex_match:nnTF { abecdcx } { b [cde]* } { TRUE } { FALSE }
+% \tl_if_regex_match:nnTF { example } { [b-dq-w] } { TRUE } { FALSE }
+% \end{verbatim}
+% leaves \texttt{TRUE} then \texttt{FALSE} in the input stream.
+% Theses are alternative names for \cs{regex_match:nnTF} and friends,
+% with arguments re-ordered for \meta{token list} testing;
+% see \pkg{l3regex} chapter for more details of the \meta{regex}
+% format.
+% \end{function}
+%
% \subsection{Testing the first token}
%
% \begin{function}[updated = 2012-07-09, EXP, pTF]
@@ -1158,6 +1180,51 @@
% for an example).
% \end{function}
%
+% \begin{function}[added = 2024-12-08]
+% {
+% \tl_regex_replace_once:Nnn, \tl_regex_replace_once:cnn,
+% \tl_regex_replace_once:NNn, \tl_regex_replace_once:cNn,
+% \tl_regex_greplace_once:Nnn, \tl_regex_greplace_once:cnn,
+% \tl_regex_greplace_once:NNn, \tl_regex_greplace_once:cNn
+% }
+% \begin{syntax}
+% \cs{tl_regex_replace_once:Nnn} \meta{tl~var} \Arg{regex} \Arg{replacement}
+% \cs{tl_regex_replace_once:NNn} \meta{tl~var} \meta{regex~var} \Arg{replacement}
+% \end{syntax}
+% Searches for the \meta{regular expression} in the contents of the
+% \meta{tl~var} and replaces the first match with the
+% \meta{replacement}. In the \meta{replacement},
+% |\0| represents the full match, |\1| represent the contents of the
+% first capturing group, |\2| of the second, \emph{etc.}
+% Theses are alternative names for \cs{regex_replace_once:nnN} and friends,
+% with arguments re-ordered for \meta{tl~var} setting;
+% See \pkg{l3regex} chapter for more details of the \meta{regex}
+% format.
+% \end{function}
+%
+% \begin{function}[added = 2024-12-08]
+% {
+% \tl_regex_replace_all:Nnn, \tl_regex_replace_all:cnn,
+% \tl_regex_replace_all:NNn, \tl_regex_replace_all:cNn,
+% \tl_regex_greplace_all:Nnn, \tl_regex_greplace_all:cnn,
+% \tl_regex_greplace_all:NNn, \tl_regex_greplace_all:cNn
+% }
+% \begin{syntax}
+% \cs{tl_regex_replace_all:Nnn} \meta{tl~var} \Arg{regex} \Arg{replacement}
+% \cs{tl_regex_replace_all:NNn} \meta{tl~var} \meta{regex~var} \Arg{replacement}
+% \end{syntax}
+% Replaces all occurrences of the \meta{regular expression} in the
+% contents of the \meta{tl~var}
+% by the \meta{replacement}, where |\0| represents
+% the full match, |\1| represent the contents of the first capturing
+% group, |\2| of the second, \emph{etc.} Every match is treated
+% independently, and matches cannot overlap.
+% Theses are alternative names for \cs{regex_replace_all:nnN} and friends,
+% with arguments re-ordered for \meta{tl~var} setting;
+% see \pkg{l3regex} chapter for more details of the \meta{regex}
+% format.
+% \end{function}
+%
% \begin{function}[updated = 2011-08-11]
% {
% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Ne,
@@ -2249,6 +2316,57 @@
%
% \begin{macro}
% {
+% \tl_regex_replace_once:Nnn, \tl_regex_replace_once:cnn,
+% \tl_regex_replace_once:NNn, \tl_regex_replace_once:cNn,
+% \tl_regex_greplace_once:Nnn, \tl_regex_greplace_once:cnn,
+% \tl_regex_greplace_once:NNn, \tl_regex_greplace_once:cNn
+% }
+% \begin{macro}
+% {
+% \tl_regex_replace_all:Nnn, \tl_regex_replace_all:cnn,
+% \tl_regex_replace_all:NNn, \tl_regex_replace_all:cNn,
+% \tl_regex_greplace_all:Nnn, \tl_regex_greplace_all:cnn,
+% \tl_regex_greplace_all:NNn, \tl_regex_greplace_all:cNn
+% }
+% Wrappers.
+% \begin{macrocode}
+\cs_new_protected:Npn \tl_regex_replace_once:Nnn #1#2#3
+ { \regex_replace_once:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_once:Nnn { c }
+\cs_new_protected:Npn \tl_regex_replace_once:NNn #1#2#3
+ { \regex_replace_once:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_once:NNn { c }
+\cs_new_protected:Npn \tl_regex_replace_all:Nnn #1#2#3
+ { \regex_replace_all:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_all:Nnn { c }
+\cs_new_protected:Npn \tl_regex_replace_all:NNn #1#2#3
+ { \regex_replace_all:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_all:NNn { c }
+\group_begin:
+ \cs_set_protected:Npn \@@_tmp:w #1#2#3
+ {
+ \cs_new_protected:cpe { tl_regex_greplace_ #1 :N #2 n } ##1##2##3
+ {
+ \group_begin:
+ \tl_set_eq:NN \exp_not:N \l_@@_internal_a_tl ##1
+ \exp_not:c { regex_replace_ #1 :Nn #2 }
+ #3 {##2} {##3} \exp_not:N \l_@@_internal_a_tl
+ \tl_gset_eq:NN ##1 \exp_not:N \l_@@_internal_a_tl
+ \group_end:
+ }
+ \cs_generate_variant:cn { tl_regex_greplace_ #1 :N #2 n } { c }
+ }
+ \@@_tmp:w { once } n { }
+ \@@_tmp:w { once } N \use:n
+ \@@_tmp:w { all } n { }
+ \@@_tmp:w { all } N \use:n
+\group_end:
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}
+% {
% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Ne,
% \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:ce
% }
@@ -2611,6 +2729,29 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}
+% {
+% \tl_if_regex_match:nn, \tl_if_regex_match:Vn,
+% \tl_if_regex_match:nN, \tl_if_regex_match:VN,
+% }
+% \begin{macrocode}
+\prg_new_protected_conditional:Npnn \tl_if_regex_match:nn #1#2 { TF , T , F }
+ {
+ \regex_match:nnTF {#2} {#1}
+ \prg_return_true: \prg_return_false:
+ }
+\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nn
+ { V } { TF , T , F }
+\prg_new_protected_conditional:Npnn \tl_if_regex_match:nN #1#2 { TF , T , F }
+ {
+ \regex_match:nNTF {#2} #1
+ \prg_return_true: \prg_return_false:
+ }
+\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nN
+ { V } { TF , T , F }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Mapping over token lists}
%
% \begin{macro}
diff --git a/macros/latex/required/l3kernel/l3token.dtx b/macros/latex/required/l3kernel/l3token.dtx
index 8dc792cab5..2833a71ca1 100644
--- a/macros/latex/required/l3kernel/l3token.dtx
+++ b/macros/latex/required/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -151,7 +151,7 @@
% $0$ is not allowed.
% Active characters cannot be generated in older versions of \XeTeX{}.
% Another way to build token lists with unusual category codes is
-% \cs{regex_replace:nnN} |{.*}| \Arg{replacement} \meta{tl~var}.
+% \cs{regex_replace_all:nnN} |{.*}| \Arg{replacement} \meta{tl~var}.
% \begin{texnote}
% Exactly two expansions are needed to produce the character.
% \end{texnote}
@@ -443,12 +443,6 @@
% not be used other than for category code tests.
% \end{variable}
%
-% \begin{variable}{\c_catcode_active_tl}
-% A token list containing an active token. This is used internally
-% for test purposes and should not be used other than in
-% appropriately-constructed category code tests.
-% \end{variable}
-%
% \section{Converting tokens}
%
% \begin{function}[EXP]{\token_to_meaning:N, \token_to_meaning:c}
@@ -799,7 +793,7 @@
% stream while leaving it in place. This is handled using the
% \enquote{peek} functions. The generic \cs{peek_after:Nw} is provided
% along with a family of predefined tests for common cases. Peeking
-% ahead does \emph{not} skip spaces: rather, \cs{peek_remove_spaces:n}.
+% ahead does \emph{not} skip spaces: rather, \cs{peek_remove_spaces:n}
% should be used. In addition, using \cs{peek_analysis_map_inline:n},
% one can map through the following tokens in the input stream and
% repeatedly perform some tests.
@@ -1833,12 +1827,12 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{variable}{\c_catcode_active_tl}
+% \begin{variable}{\c_@@_active_tl}
% Not an implicit token!
% \begin{macrocode}
\group_begin:
\char_set_catcode_active:N \*
- \tl_const:Nn \c_catcode_active_tl { \exp_not:N * }
+ \tl_const:Nn \c_@@_active_tl { \exp_not:N * }
\group_end:
% \end{macrocode}
% \end{variable}
@@ -1975,13 +1969,13 @@
%
% \begin{macro}[pTF]{\token_if_active:N}
% Check if token is an active char token. We use the constant
-% \cs{c_catcode_active_tl} for this. A technical point is that
-% \cs{c_catcode_active_tl} is in fact a macro expanding to
+% \cs{c_@@_active_tl} for this. A technical point is that
+% \cs{c_@@_active_tl} is in fact a macro expanding to
% |\exp_not:N *|, where |*| is active.
% \begin{macrocode}
\prg_new_conditional:Npnn \token_if_active:N #1 { p , T , F , TF }
{
- \if_catcode:w \exp_not:N #1 \c_catcode_active_tl
+ \if_catcode:w \exp_not:N #1 \c_@@_active_tl
\prg_return_true: \else: \prg_return_false: \fi:
}
% \end{macrocode}
@@ -2833,7 +2827,7 @@ end
% \peek_meaning_remove:N,
% }
% The public functions themselves cannot be defined using
-% \cs{prg_new_conditional:Npnn}. Instead, the |TF|, |T|, |F| variants
+% \cs{prg_new_protected_conditional:Npnn}. Instead, the |TF|, |T|, |F| variants
% are defined in terms of corresponding variants of
% \cs{@@_token_generic:NNTF} or \cs{@@_token_remove_generic:NNTF},
% with first argument one of \cs{@@_execute_branches_catcode:},
diff --git a/macros/latex/required/l3kernel/l3unicode.dtx b/macros/latex/required/l3kernel/l3unicode.dtx
index 5708992806..b0c96acd98 100644
--- a/macros/latex/required/l3kernel/l3unicode.dtx
+++ b/macros/latex/required/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2024-11-02}
+% \date{Released 2024-12-09}
%
% \maketitle
%
@@ -162,9 +162,7 @@
% can generate character tokens for document use: those are defined below,
% in the data recovery setup.
% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \codepoint_str_generate:n #1
{
@@ -390,9 +388,7 @@
{ \exp_args:Ne \@@_to_nfd:n { \int_eval:n {#1} } }
\cs_new:Npn \@@_to_nfd:n #1
{ \@@_to_nfd:nn {#1} { \char_value_catcode:n {#1} } }
-\bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:F
{
\cs_gset:Npn \@@_to_nfd:n #1
{
diff --git a/macros/latex/required/l3kernel/source3.pdf b/macros/latex/required/l3kernel/source3.pdf
index 463d639fb0..20488fc15d 100644
--- a/macros/latex/required/l3kernel/source3.pdf
+++ b/macros/latex/required/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/required/l3kernel/source3.tex b/macros/latex/required/l3kernel/source3.tex
index 08d3319b5e..ef6244f6cc 100644
--- a/macros/latex/required/l3kernel/source3.tex
+++ b/macros/latex/required/l3kernel/source3.tex
@@ -57,7 +57,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2024-11-02}
+\date{Released 2024-12-09}
\pagenumbering{roman}
\maketitle