diff options
Diffstat (limited to 'macros/latex')
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 Binary files differindex cdb6b5dd99..67c571e2b8 100644 --- a/macros/latex/contrib/l3kernel/expl3.pdf +++ b/macros/latex/contrib/l3kernel/expl3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf Binary files differindex 4071671ac9..a0daf6f920 100644 --- a/macros/latex/contrib/l3kernel/interface3.pdf +++ b/macros/latex/contrib/l3kernel/interface3.pdf 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 Binary files differindex 75c197361d..eabd9d67fe 100644 --- a/macros/latex/contrib/l3kernel/l3doc.pdf +++ b/macros/latex/contrib/l3kernel/l3doc.pdf 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 Binary files differindex e50d3bcbec..3e8f53870b 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.pdf +++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf 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 Binary files differindex 8524332494..d17bc2dd22 100644 --- a/macros/latex/contrib/l3kernel/l3news.pdf +++ b/macros/latex/contrib/l3kernel/l3news.pdf diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf Binary files differindex a6a5db123e..534d533da0 100644 --- a/macros/latex/contrib/l3kernel/l3news01.pdf +++ b/macros/latex/contrib/l3kernel/l3news01.pdf diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf Binary files differindex 697d13b8fa..e39c1962b2 100644 --- a/macros/latex/contrib/l3kernel/l3news02.pdf +++ b/macros/latex/contrib/l3kernel/l3news02.pdf diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf Binary files differindex cb6dd5cde7..20bad7ae57 100644 --- a/macros/latex/contrib/l3kernel/l3news03.pdf +++ b/macros/latex/contrib/l3kernel/l3news03.pdf diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf Binary files differindex 63dac876c0..ae829790f9 100644 --- a/macros/latex/contrib/l3kernel/l3news04.pdf +++ b/macros/latex/contrib/l3kernel/l3news04.pdf diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf Binary files differindex d000bb7371..baf24d5bc6 100644 --- a/macros/latex/contrib/l3kernel/l3news05.pdf +++ b/macros/latex/contrib/l3kernel/l3news05.pdf diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf Binary files differindex cab18a2c4c..906fbf5601 100644 --- a/macros/latex/contrib/l3kernel/l3news06.pdf +++ b/macros/latex/contrib/l3kernel/l3news06.pdf diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf Binary files differindex 39467cdce5..828a005655 100644 --- a/macros/latex/contrib/l3kernel/l3news07.pdf +++ b/macros/latex/contrib/l3kernel/l3news07.pdf diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf Binary files differindex be0e010f72..3757fb902d 100644 --- a/macros/latex/contrib/l3kernel/l3news08.pdf +++ b/macros/latex/contrib/l3kernel/l3news08.pdf diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf Binary files differindex 3072a506c0..936939db81 100644 --- a/macros/latex/contrib/l3kernel/l3news09.pdf +++ b/macros/latex/contrib/l3kernel/l3news09.pdf diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf Binary files differindex 38375df896..9eaf2116a2 100644 --- a/macros/latex/contrib/l3kernel/l3news10.pdf +++ b/macros/latex/contrib/l3kernel/l3news10.pdf diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf Binary files differindex 04070b2e15..aaff774ace 100644 --- a/macros/latex/contrib/l3kernel/l3news11.pdf +++ b/macros/latex/contrib/l3kernel/l3news11.pdf diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf Binary files differindex ac8097cb3a..cdf7bce3fa 100644 --- a/macros/latex/contrib/l3kernel/l3news12.pdf +++ b/macros/latex/contrib/l3kernel/l3news12.pdf 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 Binary files differindex 7aed561100..3dd67ab49b 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.pdf +++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf 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 Binary files differindex a0751c9b36..b9c752b392 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.pdf +++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf 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 Binary files differindex f0dbdcdba5..7c02d2fb8b 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf +++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf 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 Binary files differindex d740b82b46..900d65805e 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf +++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf 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 Binary files differindex e16a458212..041c358d4f 100644 --- a/macros/latex/contrib/l3kernel/source3.pdf +++ b/macros/latex/contrib/l3kernel/source3.pdf 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 Binary files differindex 96b2f8a7d3..d15fe959a6 100644 --- a/macros/latex/contrib/naive-ebnf/naive-ebnf.pdf +++ b/macros/latex/contrib/naive-ebnf/naive-ebnf.pdf 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 Binary files differindex 384552b056..1e27e66ce0 100644 --- a/macros/latex/contrib/nicematrix/nicematrix-code.pdf +++ b/macros/latex/contrib/nicematrix/nicematrix-code.pdf diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf Binary files differindex 7a0776a2bb..de3bb30332 100644 --- a/macros/latex/contrib/nicematrix/nicematrix-french.pdf +++ b/macros/latex/contrib/nicematrix/nicematrix-french.pdf 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 Binary files differindex e754fc3aec..ec37719356 100644 --- a/macros/latex/contrib/nicematrix/nicematrix.pdf +++ b/macros/latex/contrib/nicematrix/nicematrix.pdf 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|. |