summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md18
-rw-r--r--macros/latex/contrib/l3kernel/README.md9
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx36
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin622937 -> 621778 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1722473 -> 1721348 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx14
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3color.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.pdfbin558322 -> 558186 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin152121 -> 151983 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx23
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx9
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin395887 -> 395889 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin122712 -> 122711 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin150674 -> 150675 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin148700 -> 148704 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin114586 -> 114591 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin112483 -> 112487 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin151568 -> 151569 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin128313 -> 128317 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin163457 -> 163456 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin250136 -> 250127 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin150283 -> 150282 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin170073 -> 170069 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin204998 -> 204992 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3pdf.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin81695 -> 81695 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin296641 -> 296500 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin243276 -> 243147 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin218435 -> 218307 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx9
-rw-r--r--macros/latex/contrib/l3kernel/l3text-map.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx105
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin7358891 -> 7363399 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/source3body.tex7
-rw-r--r--macros/latex/contrib/naive-ebnf/naive-ebnf.dtx49
-rw-r--r--macros/latex/contrib/naive-ebnf/naive-ebnf.pdfbin591999 -> 631010 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-code.dtx87
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-code.pdfbin911018 -> 912191 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.pdfbin581333 -> 581086 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.tex77
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.pdfbin596415 -> 596800 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.tex75
95 files changed, 379 insertions, 253 deletions
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 1be2493081..68e4090e09 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,20 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-06-30]
+
+### Added
+- `\codepoint_to_category:n`
+
+### Changed
+- Drop notes about slow `\expanded` emulation. `\expanded` is required since
+ release 2023-05-15
+- Sync engine/primitive requirements in `expl3.dtx` with code and README
+
+### Fixed
+- Case changing of Greek characters with complex NFD representation (issue \#1236)
+- Error recovery when wrongly applying abs to a tuple (issue \#1238)
+
## [2023-06-16]
### Changed
@@ -18,7 +32,6 @@ this project uses date-based 'snapshot' version identifiers.
- Expand (partial) paths in `\l_file_search_path_seq` and `\input@path`
(see latex3/latex2e\#1086)
-
## [2023-06-05]
### Added
@@ -1463,7 +1476,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-06-16...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-06-30...HEAD
+[2023-06-30]: https://github.com/latex3/latex3/compare/2023-06-16...2023-06-30
[2023-06-16]: https://github.com/latex3/latex3/compare/2023-06-05...2023-06-16
[2023-06-05]: https://github.com/latex3/latex3/compare/2023-05-22...2023-06-05
[2023-05-22]: https://github.com/latex3/latex3/compare/2023-05-15...2023-05-22
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 28b328f366..9ac444ab9a 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2023-06-16
+Release 2023-06-30
Overview
--------
@@ -59,12 +59,11 @@ XeTeX from the 2019 TeX Live release, and has always been available in LuaTeX
(some by Lua emulation). The Japanese pTeX and upTeX gained all of the above
(except `\ifincsname`) for TeX Live 2019 `\ifincsname` for TeX Live 2020.
-At present, the `\expanded` primitive is emulated if unavailable. This code is
-slow and imposes some coding restrictions. As such, it will be *removed* for TeX
-Live 2022.
+Starting from release 2023-05-15, the `\expanded` primitive is *required*.
+Its slow emulation has been removed.
In addition to the above, engines which are fully Unicode-compatible
-must provde the functionality of the following primitives, documented in the
+must provide the functionality of the following primitives, documented in the
LuaTeX manual
- `\Uchar`
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index d95bda9fa9..31a8946103 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-06-16}%
+\def\ExplFileDate{2023-06-30}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
@@ -658,10 +658,9 @@
% text of an~\tn{edef}, and the expansion is passed to the function as
% a braced token list. Expansion takes place until only unexpandable
% tokens are left. |x|-type arguments cannot be nested.
-% \item[e] Fully-expanded token or braced token list which does
-% not require doubled |#| tokens. This expansions is very similar
-% to |x|-type but may be nested and does not require that |#|
-% tokens are doubled.
+% \item[e] Fully-expanded token or braced token list.\\
+% This expansion is very similar to |x|-type but may be nested and does
+% not require that |#| tokens are doubled. It uses \tn{expanded} primitive.
% \item[f] Expanding the first token recursively in a braced token
% list.\\ Almost the same as the |x| type except here the token list
% is expanded fully until the first unexpandable token is found and
@@ -965,27 +964,16 @@
% \section{Engine/primitive requirements}
%
% To use \pkg{expl3} and the higher level packages provided by the
-% team, the minimal set of primitive requirements is currently
-% \begin{itemize}
-% \item All of those from \TeX90.
-% \item All of those from \eTeX{} \emph{excluding} |\TeXXeTstate|,
-% |\beginL|, |\beginR|, |\endL| and |\endR| (\emph{i.e.}~excluding
-% \TeX{}-\kern0pt-\reflectbox{\TeX{}}).
-% \item Functionality equivalent to the \pdfTeX{} primitive
-% |\pdfstrcmp|.
-% \end{itemize}
-% Any engine which defines |\pdfoutput| (\emph{i.e.}~allows direct production
-% of a PDF file without a DVI intermediate) must also provide |\pdfcolorstack|,
-% |\pdfliteral|, |\pdfmatrix|, |\pdfrestore| and |\pdfsave| or equivalent
-% functionality. Fully Unicode engines must provide a method for producing
-% character tokens in an expandable manner.
+% team, the minimal set of primitive requirements is currently described
+% in \href{README.md}{README.md}.
%
% Practically, these requirements are met by the engines
% \begin{itemize}
-% \item \pdfTeX{} v1.40 or later.
-% \item \XeTeX{} v0.99992 or later.
-% \item \LuaTeX{} v0.95 or later.
-% \item e-(u)\pTeX{} mid-2012 or later.
+% \item \pdfTeX{} v1.40.20 or later.
+% \item \XeTeX{} v0.999991 or later.
+% \item \LuaTeX{} v1.10 or later.
+% \item e-(u)\pTeX{} v3.8.2 or later.
+% \item Prote (2021) or later.
% \end{itemize}
%
% Additional modules beyond the core of \pkg{expl3} may require additional
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index cdb6b5dd99..67c571e2b8 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index 4071671ac9..a0daf6f920 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex
index b64664d912..786c5d7879 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -62,7 +62,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-06-16}
+\date{Released 2023-06-30}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index 309f26d599..e87c039363 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
@@ -1025,14 +1025,12 @@
% \begin{syntax}
% \cs{use:e} \Arg{expandable tokens}
% \end{syntax}
-% Fully expands the \meta{token list} in an \texttt{x}-type manner,
-% \emph{but} the function remains fully expandable, and parameter
-% character (usually~|#|) need not be doubled.
+% Fully expands the \meta{token list} in an \texttt{e}-type manner,
+% in which parameter character (usually~|#|) need not be doubled, \emph{and}
+% the function remains fully expandable.
% \begin{texnote}
-% \cs{use:e} is a wrapper around the primitive \tn{expanded}
-% where it is available:
-% it requires two expansions to complete its action.
-% When \tn{expanded} is not available this function is very slow.
+% \cs{use:e} is a wrapper around the primitive \tn{expanded}.
+% It requires two expansions to complete its action.
% \end{texnote}
% \end{function}
%
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index e1b8e779ee..c82fccb0a9 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
@@ -211,7 +211,7 @@
\def\LongText%
{%
The L3 programming layer requires the e-TeX primitives and the
- \LineBreak 'pdfTeX extensions' as described in the README file.
+ \LineBreak 'pdfTeX utilities' as described in the README file.
\LineBreak
These are available in the engines\LineBreak
- pdfTeX v1.40.20\LineBreak
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index 966e1b29e3..c236ea8282 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 272f93e92c..000779e5a1 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index da533ae309..dba24d5c7b 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 42825a59f5..d69256ef41 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 737538a75e..8f1856198c 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index ec2010b132..0d4f1c6baa 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index ca462b79d8..31e7bf22ac 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index 7fb8e5c631..66785fe4ae 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index 938715c87a..6a38db6634 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -85,7 +85,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
% \maketitle
% \tableofcontents
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf
index 75c197361d..eabd9d67fe 100644
--- a/macros/latex/contrib/l3kernel/l3doc.pdf
+++ b/macros/latex/contrib/l3kernel/l3doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index f2a689c3d9..527c9dcab7 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index e50d3bcbec..3e8f53870b 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index 76bb8b0605..6629ac4c99 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
@@ -222,12 +222,8 @@
%
% The |e| type expands all tokens fully, starting from the first. More
% precisely the expansion is identical to that of \TeX{}'s \tn{message}
-% (in particular |#| needs not be doubled). It was added in May 2018.
-% In recent enough engines (starting around 2019) it relies on the
-% primitive \tn{expanded} hence is fast. In older engines it is very
-% much slower. As a result it should only be used in performance
-% critical code if typical users will have a recent installation of the
-% \TeX{} ecosystem.
+% (in particular |#| needs not be doubled). It relies on the
+% primitive \tn{expanded} hence is fast.
%
% The |x| type expands all tokens fully, starting from the first. In
% contrast to |e|, all macro parameter characters |#| must be doubled,
@@ -306,11 +302,7 @@
% \item
% In contrast, |e|~expansion (full expansion, almost like~|x| except
% for the treatment of~|#|) does not prevent variants from being
-% expandable (if the base function is). The drawback is that
-% |e|~expansion is very much slower in old engines (before 2019).
-% Consider using |f|~expansion if that type of expansion is
-% sufficient to perform the required expansion, or |x|~expansion if
-% the variant will not itself need to be expandable.
+% expandable (if the base function is).
% \item
% Finally |f|~expansion only expands the front of the token list,
% stopping at the first non-expandable token. This may fail to
@@ -404,13 +396,6 @@
% \emph{after} reinsertion of the \meta{function}.
% Thus the \meta{function} may take more
% than one argument: all others are left unchanged.
-% \begin{texnote}
-% This relies on the \tn{expanded} primitive when available (in
-% \LuaTeX{} and starting around 2019 in other engines). Otherwise
-% it uses some fall-back code that is very much slower. As a result
-% it should only be used in performance-critical code if typical
-% users have a recent installation of the \TeX{} ecosystem.
-% \end{texnote}
% \end{function}
%
% \begin{function}[EXP]{\exp_args:Nf}
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 0fce245dda..03487c7103 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 02543c36e5..43c6d4156e 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index abcfead994..1ad1248cf2 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index 99aa9279ba..5c6e063078 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index dc6a92e10c..3b370f678e 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
@@ -2108,15 +2108,16 @@
% map over all items in the tuple an auxiliary that dispatches to the
% type-appropriate sign-flipping function.
% \begin{macrocode}
-\cs_new:Npn \@@_tuple_set_sign_o:w #1
+\cs_new:Npn \@@_tuple_set_sign_o:w #1#2 @
{
\if_meaning:w 2 #1
\exp_after:wN \@@_tuple_set_sign_aux_o:Nnw
\fi:
\@@_invalid_operation_o:nw { abs }
+ #2
}
-\cs_new:Npn \@@_tuple_set_sign_aux_o:Nnw #1#2#3 @
- { \@@_tuple_map_o:nw \@@_tuple_set_sign_aux_o:w #3 }
+\cs_new:Npn \@@_tuple_set_sign_aux_o:Nnw #1#2
+ { \@@_tuple_map_o:nw \@@_tuple_set_sign_aux_o:w }
\cs_new:Npn \@@_tuple_set_sign_aux_o:w #1#2 ;
{
\@@_change_func_type:NNN #1 \@@_set_sign_o:w
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 4cf841cf23..9168af101d 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index df680daaff..0882cba89a 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 39f16674c9..5cfa2b73a0 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index 09d901bd19..4a549bdba9 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index afaa7a6218..0306a25add 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index e8a5274cfb..348b582dab 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index 65f7d3e99a..4e72114d26 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index 8273fa4ef4..97243134c0 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index 6bfab36b21..b1638acc75 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index 9a2069c11d..0e587e842c 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index bba4b879be..fc94eca3af 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index 9be9793d93..e6d430c192 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index bfe8307d04..111e889fc9 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index 765ed7fd95..a1121dd0ce 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index 086ee85b9c..e89ebb176d 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index 62e88766bb..6838bf11c6 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index 19e2adde95..afc0605a61 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index 311f82e58e..0898334f51 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index 31e4154a38..2235524d7b 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index 8524332494..d17bc2dd22 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index a6a5db123e..534d533da0 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index 697d13b8fa..e39c1962b2 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index cb6dd5cde7..20bad7ae57 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index 63dac876c0..ae829790f9 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index d000bb7371..baf24d5bc6 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index cab18a2c4c..906fbf5601 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index 39467cdce5..828a005655 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index be0e010f72..3757fb902d 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index 3072a506c0..936939db81 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index 38375df896..9eaf2116a2 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index 04070b2e15..aaff774ace 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index ac8097cb3a..cdf7bce3fa 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx
index 9f21d2a410..a8f7ed8a01 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index 7aed561100..3dd67ab49b 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index d82d8a4eed..1c96879388 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 96c629fcbf..10167f4baf 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index a0a27fa857..f8d94d4c0f 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index c364268012..6d9cc425c0 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index 718d14fd5e..4789fff3ce 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 875acbcc27..1d92789b5b 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index 774bdb0ab4..d23f9e366c 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index 43116a29e4..f82cd50ac9 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index 9883963846..c05afad054 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index a0751c9b36..b9c752b392 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex
index d1a85b937e..2f26c99c9d 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-06-16}
+\date{Released 2023-06-30}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index f0dbdcdba5..7c02d2fb8b 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
index 8c8d338096..66d24d8910 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-06-16}
+\date{Released 2023-06-30}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index b27cc1d823..4d7bad1082 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index d740b82b46..900d65805e 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex
index aa996351fe..6eaf8bda57 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-06-16}
+\date{Released 2023-06-30}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index f761831a6b..8b55915aec 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
@@ -1285,7 +1285,7 @@
% We choose to retain stress diacritics, but we also need to recombine
% them for pdf\TeX{}. That is handled here.
% \begin{macrocode}
-\cs_new:Npn \_@@_change_case_upper_el_stress:nn #1#2
+\cs_new:Npn \@@_change_case_upper_el_stress:nn #1#2
{
\exp_args:Ne \@@_change_case_generate:n
{
@@ -1717,8 +1717,9 @@
{#1} {#2} {#3} {#4} {#5}
}
{
- \@@_change_case_breathing_aux:nnnnn
- {#1} {#2} {#3} {#4} {#6}
+ \@@_codepoint_process:nN
+ { \@@_change_case_breathing:nnnnnw {#1} {#2} {#3} {#4} }
+ #6 \q_mark
}
}
\cs_new:Npn \@@_change_case_breathing_aux:nnnnn #1#2#3#4#5
diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx
index 787c3f9dfc..a2d6d48c10 100644
--- a/macros/latex/contrib/l3kernel/l3text-map.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-map.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index e2bac1b756..a8b84eb10c 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index 47341eeea4..eb97fca1fd 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 116be7de53..9c80c0fb9a 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index 58d4276197..af9ed91866 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index bedbb2e2a5..8af32dff06 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index b44b307bbf..e4dba1753f 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
%
% \maketitle
%
@@ -106,6 +106,22 @@
% category code $10$.
% \end{function}
%
+% \begin{function}[added = 2023-06-19, EXP]{\codepoint_to_category:n}
+% \begin{syntax}
+% \cs{codepoint_to_category:n} \Arg{codepoint}
+% \end{syntax}
+% Expands to the Unicode general category identifier of the \meta{codepoint}.
+% The general category identifier is a string made up of two letter
+% characters, the first uppercase and the second lowercase. The uppercase
+% letters divide codepoints into broader groups, which are then refined
+% by the lowercase letter. For example, codepoints representing letters
+% all have identifiers starting \texttt{L}, for example \texttt{Lu}
+% (uppercase letter), \texttt{Lt} (titlecase letter), \emph{etc.}
+% Full details are available in the documentation provided by the Unicode
+% Consortium: see
+% \url{https://www.unicode.org/reports/tr44/#General_Category_Values}
+% \end{function}
+%
% \begin{function}[added = 2022-10-09, EXP]{\codepoint_to_nfd:n}
% \begin{syntax}
% \cs{codepoint_to_nfd:n} \Arg{codepoint}
@@ -347,6 +363,21 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}[EXP]{\codepoint_to_category:n}
+% Get the value and convert back to the string.
+% \begin{macrocode}
+\cs_new:Npn \codepoint_to_category:n #1
+ {
+ \cs:w
+ c_@@_category_
+ \tex_romannumeral:D
+ \__kernel_codepoint_data:nn { category } {#1}
+ _str
+ \cs_end:
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[EXP]{\codepoint_to_nfd:n, \@@_to_nfd:n}
% \begin{macro}[EXP]{\@@_to_nfd:nn}
% \begin{macro}[EXP]{\@@_to_nfd:nnn}
@@ -461,7 +492,7 @@
% \begin{macrocode}
\group_begin:
\clist_map_inline:nn
- { uppercase , lowercase }
+ { category , uppercase , lowercase }
{
\cs_set_nopar:cpn { l_@@_ #1 _block_clist } { }
\cs_set_nopar:cpn { l_@@_ #1 _block_tl } { 1 }
@@ -477,6 +508,29 @@
\cs_set_nopar:Npn \l_@@_next_codepoint_fint_tl { 0 }
\cs_set_nopar:Npn \l_@@_matched_block_tl { 0 }
% \end{macrocode}
+% For Unicode general category, there needs to be numerical representation of
+% each possible value. As we need to go from string to number here, but the
+% other way elsewhere, we set up fast mappings both ways, but one set local
+% and the other as constants.
+% \begin{macrocode}
+ \cs_set_protected:Npn \@@_data_auxi:w #1#2
+ {
+ \quark_if_recursion_tail_stop:n {#2}
+ \cs_set_nopar:cpn { l_@@_category_ #2 _tl } {#1}
+ \str_const:cn { c_@@_category_ \tex_romannumeral:D #1 _str } {#2}
+ \exp_args:Ne \@@_data_auxi:w { \int_eval:n { #1 + 1 } }
+ }
+ \@@_data_auxi:w { 1 }
+ { Lu } { Ll } { Lt } { Lm } { Lo }
+ { Mn } { Me } { Mc }
+ { Nd } { Nl } { No }
+ { Zs } { Zl } { Zp }
+ { Cc } { Cf } { Co } { Cs } { Cn }
+ { Pd } { Ps } { Pe } { Pc } { Po } { Pi } { Pf }
+ { Sm } { Sc } { Sk } { So }
+ \q_recursion_tail
+ \q_recursion_stop
+% \end{macrocode}
% Parse the main Unicode data file and pull out the NFD and case changing
% data. The NFD data is stored on using the hash table approach and can yield
% a predictable number of codepoints: one or two. We also need the case data,
@@ -491,7 +545,7 @@
\tl_if_head_eq_charcode:nNF {#6} < % >
{ \@@_data_auxii:w #1 ; #6 ~ \q_stop }
}
- \@@_data_auxiii:w #1 ; #2 ;
+ \@@_data_auxiii:w #1 ; #2 ; #3 ;
}
\cs_set_protected:Npn \@@_data_auxii:w #1 ; #2 ~ #3 \q_stop
{
@@ -503,22 +557,27 @@
}
}
% \end{macrocode}
+% The category data needs to be converted from a string to the numerical
+% equivalent: a simple operation.
% The case data is going to be stored as an offset from the parent character,
% rather than an absolute value. We therefore deal with that plus the situation
-% where a codepoint has no mapping data in oen shot.
+% where a codepoint has no mapping data in one shot.
% \begin{macrocode}
\cs_set_protected:Npn \@@_data_auxiii:w
- #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ~ \q_stop
+ #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ; #9 ~ \q_stop
{
\use:e
{
\@@_data_auxiv:w
#1 ; #2 ;
- \@@_data_offset:nn {#1} {#6} ;
+ \@@_data_category:n {#3} ;
\@@_data_offset:nn {#1} {#7} ;
- #8;
+ \@@_data_offset:nn {#1} {#8} ;
+ #9;
}
}
+ \cs_set:Npn \@@_data_category:n #1
+ { \use:c { l_@@_category_ #1 _tl } }
\cs_set:Npn \@@_data_offset:nn #1#2
{
\tl_if_blank:nTF {#2}
@@ -536,20 +595,21 @@
% case exceptions are all stored as codepoints, with a fixed number of
% balanced text as we know that there are never more than three.
% \begin{macrocode}
- \cs_set_protected:Npn \@@_data_auxiv:w #1 ; #2 ; #3 ; #4 ; #5 ;
+ \cs_set_protected:Npn \@@_data_auxiv:w #1 ; #2 ; #3 ; #4 ; #5 ; #6 ;
{
\int_compare:nNnT {"#1} > \l_@@_next_codepoint_fint_tl
{
- \@@_data_auxvi:nnnw {#1} {#3} {#4}
+ \@@_data_auxv:nnnnw {#1} {#3} {#4} {#5}
#2 Last> \q_stop
}
- \@@_add:nn { uppercase } {#3}
- \@@_add:nn { lowercase } {#4}
- \int_compare:nNnF {#3} = { \@@_data_offset:nn {#1} {#5} }
+ \@@_add:nn { category } {#3}
+ \@@_add:nn { uppercase } {#4}
+ \@@_add:nn { lowercase } {#5}
+ \int_compare:nNnF {#4} = { \@@_data_offset:nn {#1} {#6} }
{
\tl_const:cx
{ c_@@_titlecase_ \codepoint_str_generate:n {"#1} _tl }
- { {"#5} { } { } }
+ { {"#6} { } { } }
}
\tl_set:Nx \l_@@_next_codepoint_fint_tl
{ \int_eval:n { "#1 + 1 } }
@@ -563,17 +623,22 @@
}
% \end{macrocode}
% Distinguish between a range and a gap, and pass on the appropriate value(s).
+% The general category for unassigned characters is \texttt{Cn}, so we
+% find the correct value once and then use that.
% \begin{macrocode}
- \cs_set_protected:Npn \@@_data_auxvi:nnnw #1#2#3#4 Last> #5 \q_stop
+ \cs_set_protected:Npx \@@_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop
{
- \tl_if_blank:nTF {#5}
+ \exp_not:N \tl_if_blank:nTF {#6}
{
- \@@_range:nnn {#1} { uppercase } { 0 }
- \@@_range:nnn {#1} { lowercase } { 0 }
+ \exp_not:N \@@_range:nnn {#1} { category }
+ { \exp_not:V \l_@@_category_Cn_tl }
+ \exp_not:N \@@_range:nnn {#1} { uppercase } { 0 }
+ \exp_not:N \@@_range:nnn {#1} { lowercase } { 0 }
}
{
- \@@_range:nnn {#1} { uppercase } {#2}
- \@@_range:nnn {#1} { lowercase } {#3}
+ \exp_not:N \@@_range:nnn {#1} { category } {#2}
+ \exp_not:N \@@_range:nnn {#1} { uppercase } {#3}
+ \exp_not:N \@@_range:nnn {#1} { lowercase } {#4}
}
}
% \end{macrocode}
@@ -672,7 +737,7 @@
% \begin{macrocode}
\cs_set_protected:Npn \@@_finalise_blocks:
{
- \clist_map_inline:nn { uppercase , lowercase }
+ \clist_map_inline:nn { category , uppercase , lowercase }
{
\@@_range:nnn { 110000 } {##1} { 0 }
\@@_finalise_blocks:n {##1}
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index e16a458212..041c358d4f 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex
index 1d7c4a5418..4cf2cca1c2 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-06-16}
+\date{Released 2023-06-30}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/source3body.tex b/macros/latex/contrib/l3kernel/source3body.tex
index a56e37e828..cddbdac6e2 100644
--- a/macros/latex/contrib/l3kernel/source3body.tex
+++ b/macros/latex/contrib/l3kernel/source3body.tex
@@ -228,11 +228,10 @@ following argument specifiers:
this type of expansion. Functions which feature an \texttt{x}-type
argument are \emph{not} expandable.
\item[\texttt{e}] The \texttt{e} specifier is in many respects
- identical to \texttt{x}, but with a very different implementation.
+ identical to \texttt{x}, but uses \tn{expanded} primitive.
+ Parameter character (usually~|#|) in the argument need not be doubled.
Functions which feature an \texttt{e}-type argument may be
- expandable. The drawback is that \texttt{e} is extremely slow
- (often more than $200$ times slower) in older engines, more
- precisely in non-\LuaTeX{} engines older than 2019.
+ expandable.
\item[\texttt{f}] The \texttt{f} specifier stands for \emph{full
expansion}, and in contrast to \texttt{x} stops at the first
non-expandable token (reading the argument from left to right) without
diff --git a/macros/latex/contrib/naive-ebnf/naive-ebnf.dtx b/macros/latex/contrib/naive-ebnf/naive-ebnf.dtx
index 8f7768f156..d3105b2b87 100644
--- a/macros/latex/contrib/naive-ebnf/naive-ebnf.dtx
+++ b/macros/latex/contrib/naive-ebnf/naive-ebnf.dtx
@@ -50,7 +50,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{naive-ebnf}
%<*package>
-[2023-05-27 0.0.6 EBNF in Plain Text]
+[2023-06-30 0.0.7 EBNF in Plain Text]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -133,7 +133,7 @@
% \begin{ebnf}[1.5in]
% <VeryLongVariable> := <X> | <Y> \\
% <X> := "X" 'EOL' \\
-% <Y> := "Y"
+% <Y> := "Y" \\
% \end{ebnf}
% \end{document}
% \end{docshot}
@@ -171,6 +171,21 @@
% \end{document}
% \end{docshot}
+% Special symbols are interpreted correctly, if they stay inside quotes:
+% \docshotOptions{}
+% \begin{docshot}
+% \documentclass{minimal}
+% \usepackage[T1]{fontenc}
+% \usepackage{naive-ebnf}
+% \begin{document}\noindent
+% \begin{ebnf}[1.5in]
+% <X> := 'EOL' "'" "|" \\
+% <Y> := ">" "<" "]" "[" \\
+% <Z> := "\LaTeX" "\textdollar" \\
+% \end{ebnf}
+% \end{document}
+% \end{docshot}
+
% \section{Package Options}
% It's possible to configure the behavior of the package with the help of a few package options:
@@ -215,7 +230,6 @@
bw/.store in=\ebnf@bw,
trail/.store in=\ebnf@trail,
trail/.default=naive-ebnf.tmp.tex,
- trail
}
\ProcessPgfPackageOptions{/ebnf}
% \end{macrocode}
@@ -257,10 +271,10 @@
% Then, we a command to render a single non-terminal:
% \begin{macrocode}
\makeatletter
-\newcommand\nonterminal[1]{%
+\newcommand\nonterminal[1]{{%
\ebnf@color{gray}{\relax\ifmmode\langle\else\(\langle\)\fi}%
\relax\ifmmode\textsf{#1}\else{\sffamily#1}\fi%
- \ebnf@color{gray}{\relax\ifmmode\rangle\else\(\rangle\)\fi}}
+ \ebnf@color{gray}{\relax\ifmmode\rangle\else\(\rangle\)\fi}}}
\makeatother
% \end{macrocode}
% \end{macro}
@@ -270,7 +284,7 @@
% Then, we a command to render a single non-terminal:
% \begin{macrocode}
\makeatletter
-\newcommand\sterminal[1]{\relax\ifmmode\else\ttfamily\fi#1}%
+\newcommand\sterminal[1]{{\relax\ifmmode\else\ttfamily\fi#1}}%
\makeatother
% \end{macrocode}
% \end{macro}
@@ -286,18 +300,18 @@
{\ebnf@color{gray}{(}#1\ebnf@color{gray}{)}}
\ExplSyntaxOn
\newcommand\ebnf@terminal[1]{
- \tl_set:Nn \l_ebnf_tl { }
- \tl_set_rescan:Nno \l_ebnf_tl { } { #1 }
+ \tl_set:Nn \l_ebnf_tl {}
+ \tl_set_rescan:Nnn \l_ebnf_tl {} { #1 }
\terminal{\l_ebnf_tl}
}
\newcommand\ebnf@sterminal[1]{
- \tl_set:Nn \l_ebnf_tl { }
- \tl_set_rescan:Nno \l_ebnf_tl { } { #1 }
+ \tl_set:Nn \l_ebnf_tl {}
+ \tl_set_rescan:Nnn \l_ebnf_tl {} { #1 }
\sterminal{\l_ebnf_tl}
}
\newcommand\ebnf@nonterminal[1]{
- \tl_set:Nn \l_ebnf_tl { }
- \tl_set_rescan:Nno \l_ebnf_tl { } { #1 }
+ \tl_set:Nn \l_ebnf_tl {}
+ \tl_set_rescan:Nnn \l_ebnf_tl {} { #1 }
\nonterminal{\l_ebnf_tl}
}
\ExplSyntaxOff
@@ -318,11 +332,16 @@
\NewDocumentEnvironment{ebnf}{O{4em}+b}
{\tl_set:Nn\l__ebnf_tmp_tl{#2}}
{%
- \regex_replace_all:nnN { \{(.+?)\} }%
+ \regex_replace_all:nnN { ([^\ ])< } {\1\\textless{}} \l__ebnf_tmp_tl%
+ \regex_replace_all:nnN { >([^\ ]) } {\\textgreater{}\1} \l__ebnf_tmp_tl%
+ \regex_replace_all:nnN { ([^\ ])'([^\ ]) } {\1\\textquotesingle{}\2} \l__ebnf_tmp_tl%
+ \regex_replace_all:nnN { ([^\ ])\|([^\ ]) } {\1\\textbar{}\2} \l__ebnf_tmp_tl%
+ %
+ \regex_replace_all:nnN { \{\ (.+?)\ \} }%
{\c{ebnf@repetition}{\1}} \l__ebnf_tmp_tl%
- \regex_replace_all:nnN { \((.+?)\) }%
+ \regex_replace_all:nnN { \(\ (.+?)\ \) }%
{\c{ebnf@grouping}{\1}} \l__ebnf_tmp_tl%
- \regex_replace_all:nnN { \[(.+?)\] }%
+ \regex_replace_all:nnN { \[\ (.+?)\ \] }%
{\c{ebnf@optional}{\1}} \l__ebnf_tmp_tl%
\regex_replace_all:nnN { (<[^>]+?>\ :=) }%
{\c{makebox}[#1][r]{\1}} \l__ebnf_tmp_tl%
diff --git a/macros/latex/contrib/naive-ebnf/naive-ebnf.pdf b/macros/latex/contrib/naive-ebnf/naive-ebnf.pdf
index 96b2f8a7d3..d15fe959a6 100644
--- a/macros/latex/contrib/naive-ebnf/naive-ebnf.pdf
+++ b/macros/latex/contrib/naive-ebnf/naive-ebnf.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-code.dtx b/macros/latex/contrib/nicematrix/nicematrix-code.dtx
index 07b6fe8513..86e54a5643 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-code.dtx
+++ b/macros/latex/contrib/nicematrix/nicematrix-code.dtx
@@ -17,8 +17,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{6.20}
-\def\myfiledate{2023/06/04}
+\def\myfileversion{6.20a}
+\def\myfiledate{2023/06/30}
%
%
%<*batchfile>
@@ -801,11 +801,11 @@ version 2005/12/01 or later.
% \bigskip
% The following token list will contain the type of horizontal alignment of the
% current cell as provided by the corresponding column. The possible values are
-% |r|, |l|, |c|. For example, a column |p[l]{3cm}| will provide the value |l|
-% for all the cells of the column.
+% |r|, |l|, |c| and |j|. For example, a column |p[l]{3cm}| will provide the
+% value |l| for all the cells of the column.
% \begin{macrocode}
\str_new:N \l_@@_hpos_cell_str
-\str_set:Nn \l_@@_hpos_cell_str { c }
+\str_set:Nn \l_@@_hpos_cell_str { c }
% \end{macrocode}
%
% \bigskip
@@ -1779,7 +1779,8 @@ version 2005/12/01 or later.
% sequence of successive commands |\tabularnote| and we have to format the
% labels of these tabular notes (in the array). We compose those labels in a box
% |\l_tmpa_box| because we will do a special construction in order to have this
-% box in an overlapping position if we are at the end of a cell.
+% box in an overlapping position if we are at the end of a cell when
+% |\l_@@_hpos_cell_str| is equal to |c| or |r|.
% \begin{macrocode}
\hbox_set:Nn \l_tmpa_box
{
@@ -1802,14 +1803,20 @@ version 2005/12/01 or later.
\int_compare:nNnT \l_tmpa_int = \c@tabularnote
{ \int_gincr:N \c@tabularnote }
\seq_clear:N \l_@@_notes_labels_seq
- \hbox_overlap_right:n { \box_use:N \l_tmpa_box }
+ \bool_lazy_or:nnTF
+ { \str_if_eq_p:Vn \l_@@_hpos_cell_str { c } }
+ { \str_if_eq_p:Vn \l_@@_hpos_cell_str { r } }
+ {
+ \hbox_overlap_right:n { \box_use:N \l_tmpa_box }
% \end{macrocode}
% If the command |\tabularnote| is used exactly at the end of the cell, the
% |\unskip| (inserted by \pkg{array}?) will delete the skip we insert now
% and the label of the footnote will be composed in an overlapping position (by
% design).
% \begin{macrocode}
- \skip_horizontal:n { \box_wd:N \l_tmpa_box }
+ \skip_horizontal:n { \box_wd:N \l_tmpa_box }
+ }
+ { \box_use:N \l_tmpa_box }
}
}
% \end{macrocode}
@@ -2430,7 +2437,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\legacy_if:nF { measuring@ }
{
- \str_set:Nn \l_tmpa_str { #1 }
+ \str_set:Nx \l_tmpa_str { #1 }
\seq_if_in:NVTF \g_@@_names_seq \l_tmpa_str
{ \@@_error:nn { Duplicate~name } { #1 } }
{ \seq_gput_left:NV \g_@@_names_seq \l_tmpa_str }
@@ -3501,16 +3508,15 @@ version 2005/12/01 or later.
% If there is one or several commands |\tabularnote| in the caption specified
% by the key |caption| and if that caption has to be composed above the tabular,
% we have now that information because it has been written in the |aux| file at
-% a previous run. We use that information to start couting the tabular notes in
-% the main array at the right value (that remember that the caption will be
+% a previous run. We use that information to start counting the tabular notes in
+% the main array at the right value (we remember that the caption will be
% composed \emph{after} the array!).
% \begin{macrocode}
\tl_if_exist:NT \l_@@_note_in_caption_tl
{
\tl_if_empty:NF \l_@@_note_in_caption_tl
{
- \int_gset_eq:NN \g_@@_notes_caption_int
- { \l_@@_note_in_caption_tl }
+ \int_gset_eq:NN \g_@@_notes_caption_int \l_@@_note_in_caption_tl
\int_gset:Nn \c@tabularnote { \l_@@_note_in_caption_tl }
}
}
@@ -4810,7 +4816,7 @@ version 2005/12/01 or later.
{
position = \int_eval:n { \c@jCol + 1 } ,
multiplicity = \int_use:N \l_tmpa_int ,
- total-width = \dim_use:N \l_tmpa_dim % added 2022-08-06
+ total-width = \dim_use:N \l_tmpa_dim
}
% \end{macrocode}
% We don't have provided value for |start| nor for |end|, which means that the
@@ -4961,7 +4967,7 @@ version 2005/12/01 or later.
% will provide the horizontal alignment of the column to which belongs the cell.
% \begin{macrocode}
\str_if_eq:VnTF \l_@@_hpos_col_str j
- { \str_set:Nn \exp_not:N \l_@@_hpos_cell_str { c } }
+ { \str_set:Nn \exp_not:N \l_@@_hpos_cell_str { } }
{
\str_set:Nn \exp_not:N \l_@@_hpos_cell_str
{ \str_lowercase:V \l_@@_hpos_col_str }
@@ -6088,6 +6094,21 @@ version 2005/12/01 or later.
{ \caption }
{ \caption [ \l_@@_short_caption_tl ] }
{ \l_@@_caption_tl }
+% \end{macrocode}
+% In some circonstancies (in particular when the package \pkg{caption} is
+% loaded), the caption is composed several times. That's why, when the same
+% tabular note is encountered (in the caption!), we consider that you are in the
+% second compilation and you can give to |\g_@@_notes_caption_int| its final
+% value, which is the number of tabular notes in the caption. But sometimes, the
+% caption is composed only once. In that case, we fix the value of
+% |\g_@@_caption_finished_bool| now.
+% \begin{macrocode}
+ \bool_if:NF \g_@@_caption_finished_bool % added 2023/06/30
+ {
+ \bool_gset_true:N \g_@@_caption_finished_bool
+ \int_gset_eq:NN \g_@@_notes_caption_int \c@tabularnote
+ \int_gzero:N \c@tabularnote
+ }
\tl_if_empty:NF \l_@@_label_tl { \label { \l_@@_label_tl } }
\group_end:
}
@@ -6857,7 +6878,7 @@ version 2005/12/01 or later.
>
{
% \end{macrocode}
-% At the beginning of the cell, we link |\CodeAfter| to a command which do
+% At the beginning of the cell, we link |\CodeAfter| to a command which
% begins with |\\| (whereas the standard version of |\CodeAfter| begins does
% not).
% \begin{macrocode}
@@ -6956,7 +6977,7 @@ version 2005/12/01 or later.
{
\NewDocumentEnvironment { #1 NiceArray } { }
{
- \bool_gset_false:N \g_@@_NiceArray_bool
+ \bool_gset_false:N \g_@@_NiceArray_bool
\str_if_empty:NT \g_@@_name_env_str
{ \str_gset:Nn \g_@@_name_env_str { #1 NiceArray } }
\@@_test_if_math_mode:
@@ -8308,14 +8329,17 @@ version 2005/12/01 or later.
% We may think that the final user won't use a ``last column'' which contains
% only a command |\Vdots|. However, if the |\Vdots| is in fact used to draw, not
% a dotted line, but an arrow (to indicate the number of rows of the matrix), it
-% may be really encountered.
+% may be really encountered. That's why we do an adjustemnt for that case.
% \begin{macrocode}
\int_compare:nNnT \l_@@_last_col_int > { -2 }
{
\int_compare:nNnT \l_@@_initial_j_int = \g_@@_col_total_int
{
- \dim_set_eq:NN \l_tmpa_dim \l_@@_right_margin_dim
- \dim_add:Nn \l_tmpa_dim \l_@@_extra_right_margin_dim
+ \dim_set:Nn \l_tmpa_dim
+ {
+ \l_@@_right_margin_dim + \l_@@_extra_right_margin_dim
+ + 2 mm
+ }
\dim_add:Nn \l_@@_x_initial_dim \l_tmpa_dim
\dim_add:Nn \l_@@_x_final_dim \l_tmpa_dim
}
@@ -8607,9 +8631,9 @@ version 2005/12/01 or later.
}
\draw
[
- #1 ,
shorten~> = \l_@@_xdots_shorten_end_dim ,
shorten~< = \l_@@_xdots_shorten_start_dim ,
+ #1
]
( \l_@@_x_initial_dim , \l_@@_y_initial_dim )
% \end{macrocode}
@@ -9136,6 +9160,7 @@ version 2005/12/01 or later.
\tl_set_rescan:Nno \l_@@_argspec_tl { } \l_@@_argspec_tl
\exp_args:NNV \NewDocumentCommand \@@_Vdotsfor: \l_@@_argspec_tl
{
+ \bool_gset_true:N \g_@@_empty_cell_bool % added
\tl_gput_right:Nx \g_@@_HVdotsfor_lines_tl
{
\@@_Vdotsfor:nnnn
@@ -13287,8 +13312,8 @@ version 2005/12/01 or later.
%
%
%
-% We will extract the potential keys |columns-type|, |l|, |c|, |r| and pass
-% the other keys to the environment |{NiceArrayWithDelims}|.
+% We will extract some keys and pass the other keys to the environment
+% |{NiceArrayWithDelims}|.
% \begin{macrocode}
\keys_define:nn { NiceMatrix / Auto }
{
@@ -13321,6 +13346,11 @@ version 2005/12/01 or later.
% \begin{macrocode}
\group_begin:
\bool_set_true:N \l_@@_Matrix_bool
+ \str_if_eq:nnT { #1 } { . }
+ {
+ \str_if_eq:nnT { #2 } { . }
+ { \bool_set_false:N \l_@@_Matrix_bool }
+ }
\keys_set_known:nnN { NiceMatrix / Auto } { #6 } \l_tmpa_tl
% \end{macrocode}
% We nullify the command |\@@_transform_preamble:| because we will provide a
@@ -13363,13 +13393,14 @@ version 2005/12/01 or later.
\group_end:
}
% \end{macrocode}
+%
%
% \begin{macrocode}
\cs_set_protected:Npn \@@_define_com:nnn #1 #2 #3
{
\cs_set_protected:cpn { #1 AutoNiceMatrix }
{
- \bool_gset_false:N \g_@@_NiceArray_bool
+ \bool_gset_false:N \g_@@_NiceArray_bool
\str_gset:Nx \g_@@_name_env_str { #1 AutoNiceMatrix }
\AutoNiceMatrixWithDelims { #2 } { #3 }
}
@@ -13388,9 +13419,10 @@ version 2005/12/01 or later.
% We define also a command |\AutoNiceMatrix| similar to the environment |{NiceMatrix}|.
% \begin{macrocode}
\NewDocumentCommand \AutoNiceMatrix { O { } m O { } m ! O { } }
- {
+ {
\group_begin:
- \bool_gset_true:N \g_@@_NiceArray_bool
+ \bool_gset_true:N \g_@@_NiceArray_bool
+ % \bool_set_true:N \l_@@_Matrix_bool
\AutoNiceMatrixWithDelims . . { #2 } { #4 } [ #1 , #3 , #5 ]
\group_end:
}
@@ -16061,7 +16093,8 @@ version 2005/12/01 or later.
if~you~use~'columns-width=auto'.~If~you~don't~want~to~see~this~
message~again,~use~the~key~'allow-duplicate-names'~in~
'\token_to_str:N \NiceMatrixOptions'.\\
- \c_@@_available_keys_str
+ \bool_if:NF \c_@@_messages_for_Overleaf_bool
+ { For~a~list~of~the~names~already~used,~type~H~<return>. }
}
{
The~names~already~defined~in~this~document~are:~
diff --git a/macros/latex/contrib/nicematrix/nicematrix-code.pdf b/macros/latex/contrib/nicematrix/nicematrix-code.pdf
index 384552b056..1e27e66ce0 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-code.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
index 7a0776a2bb..de3bb30332 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex
index 688e3b032b..6fd43c26a6 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex
@@ -3231,6 +3231,7 @@ $\begin{bNiceMatrix}
\colorbox{yellow!50}{\textbf{Nouveau 6.20}}\enskip
Avec la clé |xdots/horizontal-labels|, les labels restent horizontaux.\par\nobreak
+\smallskip
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
$\begin{bNiceMatrix}[xdots/horizontal-labels]
1 & \hspace*{1cm} & 0 \\[8mm]
@@ -4135,7 +4136,9 @@ les notes de pied de page).
\item Si une commande |\tabularnote{...}| se trouve exactement à la fin d'une case
(sans aucun espace après), l'appel de note est composé en débordement vers la
droite (cela peut permettre de mieux conserver l'alignement des contenus d'une
-colonne).
+colonne). Depuis la version 6.20a, ce comportement n'a lieu que le mode
+l'alignement de la cellule est |c| ou |r| (alignement horizontal centré ou en
+butée à droite).
\item Si la clé |notes/para| est utilisée, les notes sont composées à la fin du
tableau en un seul paragraphe.
@@ -4159,8 +4162,8 @@ l'environnement |{TabularNote}| à la fin de l'environnement |{NiceTabular}|
argument, une seule note est insérée en fin de tableau (mais tous les labels
sont marqués). Il est possible de désactiver cette fonctionnalité avec la clé
|notes/detect-duplicates|.\footnote{Pour des raisons techniques, il n'est pas
- autorisé de mettre des |\tabularnote| avec exactement le même argument dans la
- légende.}
+ autorisé de mettre plusieurs |\tabularnote| avec exactement le même argument
+ dans la légende.}
\item Il est possible de référencer une note de tableau (avec la commande
|\label| placée après le |\tabularnote|).
@@ -4930,15 +4933,16 @@ environnements (pour LaTeX, il s'agit d'une commande — complètement développ
\smallskip
\index{name!clé pour un environnement}
-Il est néanmoins recommandé de passer plutôt par la clé |name|. Celle-ci permet
-de donner un nom à l'environnement. Une fois l'environnement nommé, les nœuds
-sont accessibles à travers les noms «\textsl{nom}-$i$-$j$» où \textsl{nom} est
-le nom donné au tableau et $i$ et $j$ les numéros de rangée et de colonne de la
-case considérée. On peut les utiliser avec \textsc{pgf} mais l'utilisateur final
-préférera sans doute utiliser TikZ (qui est une sur-couche de \textsc{pgf}). Il
-faut néanmoins se souvenir que \pkg{nicematrix} ne charge pas TikZ par défaut.
-Dans les exemples qui suivent, on suppose que TikZ a été chargé par
-l'utilisateur.
+Il est néanmoins recommandé de passer plutôt par la clé |name|\footnote{Depuis
+ la version 6.20a, la valeur passée à cette clé est \emph{développée}, au sens
+ de TeX.}. Celle-ci permet de donner un nom à l'environnement. Une fois
+l'environnement nommé, les nœuds sont accessibles à travers les noms
+«\textsl{nom}-$i$-$j$» où \textsl{nom} est le nom donné au tableau et $i$ et $j$
+les numéros de rangée et de colonne de la case considérée. On peut les utiliser
+avec \textsc{pgf} mais l'utilisateur final préférera sans doute utiliser TikZ
+(qui est une sur-couche de \textsc{pgf}). Il faut néanmoins se souvenir que
+\pkg{nicematrix} ne charge pas TikZ par défaut. Dans les exemples qui suivent,
+on suppose que TikZ a été chargé par l'utilisateur.
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=11cm]
@@ -6240,32 +6244,35 @@ On peut même tracer des lignes continues.\footnote{Dans ce document, la
sur la forme des pointes de flèches.}
\begin{Verbatim}
-\NiceMatrixOptions
- {nullify-dots,code-for-first-col = \color{blue},code-for-first-row=\color{blue}}
-$\begin{pNiceMatrix}[first-row,first-col,xdots/horizontal-labels]
- & & \Ldots[line-style={solid,<->},shorten=0pt]^{n \text{ colonnes}} \\
- & 1 & 1 & 1 & \Ldots & 1 \\
- & 1 & 1 & 1 & & 1 \\
-\Vdots[line-style={solid,<->}]_{n \text{ rangées}}
- & 1 & 1 & 1 & & 1 \\
- & 1 & 1 & 1 & & 1 \\
- & 1 & 1 & 1 & \Ldots & 1
-\end{pNiceMatrix}$
+\tikzset{H/.style = {solid,<->,shorten > = -1mm, shorten < = -1mm}}
+\tikzset{V/.style = {solid,<->}}
+\NiceMatrixOptions{xdots/horizontal-labels}
+$\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
+\Hdotsfor[line-style=H]{3}^{3} & \Hdotsfor[line-style=H]{2}^{2} \\
+2 & 1 & 1 & 1 & 1 & \hspace*{4mm}\Vdotsfor[line-style=V]{3}^{3}\\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \Vdotsfor[line-style=V]{2}^{2}\\
+1 & 1 & 1 & 1 & 1 \\
+\end{pNiceArray}$
\end{Verbatim}
-\begin{scope}
-\NiceMatrixOptions
- {nullify-dots,code-for-first-col = \color{blue},code-for-first-row=\color{blue}}
-\[\begin{pNiceMatrix}[first-row,first-col,xdots/horizontal-labels]
- & & \Ldots[line-style={solid,<->},shorten=0pt]^{n \text{ colonnes}} \\
- & 1 & 1 & 1 & \Ldots & 1 \\
- & 1 & 1 & 1 & & 1 \\
-\Vdots[line-style={solid,<->}]_{n \text{ rangées}} & 1 & 1 & 1 & & 1 \\
- & 1 & 1 & 1 & & 1 \\
- & 1 & 1 & 1 & \Ldots & 1
-\end{pNiceMatrix}\]
-\end{scope}
+\begin{center}
+\tikzset{H/.style = {solid,<->,shorten > = -1mm, shorten < = -1mm}}
+\tikzset{V/.style = {solid,<->}}
+\NiceMatrixOptions{xdots/horizontal-labels}
+$\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
+\Hdotsfor[line-style=H]{3}^{3} & \Hdotsfor[line-style=H]{2}^{2} \\
+2 & 1 & 1 & 1 & 1 & \hspace*{4mm}\Vdotsfor[line-style=V]{3}^{3}\\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \Vdotsfor[line-style=V]{2}^{2}\\
+1 & 1 & 1 & 1 & 1 \\
+\end{pNiceArray}$
+\end{center}
\subsection{Lignes en tiretés}
diff --git a/macros/latex/contrib/nicematrix/nicematrix.pdf b/macros/latex/contrib/nicematrix/nicematrix.pdf
index e754fc3aec..ec37719356 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix.tex b/macros/latex/contrib/nicematrix/nicematrix.tex
index dc565d2160..9987ba819b 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix.tex
@@ -3153,7 +3153,7 @@ $\begin{bNiceMatrix}
\bigskip
\colorbox{yellow!50}{\textbf{New 6.20}}\enskip
-With the key |xdots/horizontal-labels|, the labels stay horizontal\par\nobreak
+With the key |xdots/horizontal-labels|, the labels stay horizontal.\par\nobreak
%
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
@@ -4039,7 +4039,9 @@ together, separated by commas (this is similar to the option |multiple| of
\item If a command |\tabularnote{...}| is exactly at the end of a cell (with
no space at all after), the label of the note is composed in an overlapping
position (towards the right). This structure may provide a better alignment of
-the cells of a given column.
+the cells of a given column. However, since the version 6.20a, that behaviour is
+in force only when the horizontal alignment mode of the corresponding column is
+|c| or |r|.
\item If the key |notes/para| is used, the notes are composed at the end of
the array in a single paragraph (as with the key |para| of \pkg{threeparttable}).
@@ -4835,11 +4837,12 @@ counter).
\smallskip
\index{name!key for an environment}
-However, it's advisable to use instead the key |name|. This key gives a name
-to the current environment. When the environment has a name, the nodes are
-accessible with the name ``\textsl{name}-$i$-$j$'' where \textsl{name} is the
-name given to the array and $i$ and $j$ the numbers of row and column. It's
-possible to use these nodes with \textsc{pgf} but the final user will
+However, it's advisable to use instead the key |name|\footnote{Since the version
+ 6.20a, the value of that key is \emph{expanded} (in the TeX sens).}. This key
+gives a name to the current environment. When the environment has a name, the
+nodes are accessible with the name ``\textsl{name}-$i$-$j$'' where \textsl{name}
+is the name given to the array and $i$ and $j$ the numbers of row and column.
+It's possible to use these nodes with \textsc{pgf} but the final user will
probably prefer to use Tikz (which is a convenient layer upon \textsc{pgf}).
However, one should remind that \pkg{nicematrix} doesn't load Tikz by default.
In the following examples, we assume that Tikz has been loaded.
@@ -6147,31 +6150,36 @@ In fact, it's even possible to draw solid lines with the commands |\Cdots|,
has been loaded, which impacts the shape of the arrow tips.}
\begin{Verbatim}
-\NiceMatrixOptions
- {nullify-dots,code-for-first-col = \color{blue},code-for-first-row=\color{blue}}
-$\begin{pNiceMatrix}[first-row,first-col,xdots/horizontal-labels]
- & & \Ldots[line-style={solid,<->},shorten=0pt]^{n \text{ columns}} \\
- & 1 & 1 & 1 & \Ldots & 1 \\
- & 1 & 1 & 1 & & 1 \\
-\Vdots[line-style={solid,<->}]_{n \text{ rows}} & 1 & 1 & 1 & & 1 \\
- & 1 & 1 & 1 & & 1 \\
- & 1 & 1 & 1 & \Ldots & 1
-\end{pNiceMatrix}$
+\tikzset{H/.style = {solid,<->,shorten > = -1mm, shorten < = -1mm}}
+\tikzset{V/.style = {solid,<->}}
+\NiceMatrixOptions{xdots/horizontal-labels}
+$\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
+\Hdotsfor[line-style=H]{3}^{3} & \Hdotsfor[line-style=H]{2}^{2} \\
+2 & 1 & 1 & 1 & 1 & \hspace*{4mm}\Vdotsfor[line-style=V]{3}^{3}\\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \Vdotsfor[line-style=V]{2}^{2}\\
+1 & 1 & 1 & 1 & 1 \\
+\end{pNiceArray}$
\end{Verbatim}
-\begin{scope}
-\NiceMatrixOptions
- {nullify-dots,code-for-first-col = \color{blue},code-for-first-row=\color{blue}}
-\[\begin{pNiceMatrix}[first-row,first-col,xdots/horizontal-labels]
- & & \Ldots[line-style={solid,<->},shorten=0pt]^{n \text{ columns}} \\
- & 1 & 1 & 1 & \Ldots & 1 \\
- & 1 & 1 & 1 & & 1 \\
-\Vdots[line-style={solid,<->}]_{n \text{ rows}} & 1 & 1 & 1 & & 1 \\
- & 1 & 1 & 1 & & 1 \\
- & 1 & 1 & 1 & \Ldots & 1
-\end{pNiceMatrix}\]
-\end{scope}
+\begin{center}
+\tikzset{H/.style = {solid,<->,shorten > = -1mm, shorten < = -1mm}}
+\tikzset{V/.style = {solid,<->}}
+\NiceMatrixOptions{xdots/horizontal-labels}
+$\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
+\Hdotsfor[line-style=H]{3}^{3} & \Hdotsfor[line-style=H]{2}^{2} \\
+2 & 1 & 1 & 1 & 1 & \hspace*{4mm}\Vdotsfor[line-style=V]{3}^{3}\\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \Vdotsfor[line-style=V]{2}^{2}\\
+1 & 1 & 1 & 1 & 1 \\
+\end{pNiceArray}$
+\end{center}
+
\subsection{Dashed rules}
\label{dashed}
@@ -6877,6 +6885,15 @@ The successive versions of the file |nicematrix.sty| provided by TeXLive are ava
\nolinkurl{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}
}
+\subsection*{Changes between version 6.20 and 6.20a}
+
+The value of the key |name| of an environment of \pkg{nicematrix} is expanded
+(in the TeX sens).
+
+The labels of the tabular notes (created by the command |\tabularnote|) are now
+composed in an overlapping position \emph{only} when the horizontal alignment
+mode of the column is |c| or |r|.
+
\subsection*{Changes between version 6.19 and 6.20}
New key |xdots/horizontal-labels|.