diff options
Diffstat (limited to 'macros/latex-dev/required')
229 files changed, 2594 insertions, 909 deletions
diff --git a/macros/latex-dev/required/amsmath/README.md b/macros/latex-dev/required/amsmath/README.md index e8cefa4d07..acf256c850 100644 --- a/macros/latex-dev/required/amsmath/README.md +++ b/macros/latex-dev/required/amsmath/README.md @@ -1,7 +1,7 @@ The amsmath bundle for LaTeX ============================ -Release 2024-06-01 pre-release 2 +Release 2024-11-01 pre-release 0 Overview -------- diff --git a/macros/latex-dev/required/amsmath/ams-external.txt b/macros/latex-dev/required/amsmath/ams-external.txt index fa2dbea556..69f5689c15 100644 --- a/macros/latex-dev/required/amsmath/ams-external.txt +++ b/macros/latex-dev/required/amsmath/ams-external.txt @@ -60,7 +60,6 @@ \Rightarrow \Tilde \Umathaccent -\Umathcar \Umathchar \Umathcharnumdef \Umathcode diff --git a/macros/latex-dev/required/amsmath/amsbsy.pdf b/macros/latex-dev/required/amsmath/amsbsy.pdf Binary files differindex 7ba7e970ee..98414b672d 100644 --- a/macros/latex-dev/required/amsmath/amsbsy.pdf +++ b/macros/latex-dev/required/amsmath/amsbsy.pdf diff --git a/macros/latex-dev/required/amsmath/amscd.pdf b/macros/latex-dev/required/amsmath/amscd.pdf Binary files differindex 9e7064f446..9f6494bb8e 100644 --- a/macros/latex-dev/required/amsmath/amscd.pdf +++ b/macros/latex-dev/required/amsmath/amscd.pdf diff --git a/macros/latex-dev/required/amsmath/amsgen.pdf b/macros/latex-dev/required/amsmath/amsgen.pdf Binary files differindex 145aa1486a..d67090a444 100644 --- a/macros/latex-dev/required/amsmath/amsgen.pdf +++ b/macros/latex-dev/required/amsmath/amsgen.pdf diff --git a/macros/latex-dev/required/amsmath/amsldoc.pdf b/macros/latex-dev/required/amsmath/amsldoc.pdf Binary files differindex ec0449e096..e615a52dc4 100644 --- a/macros/latex-dev/required/amsmath/amsldoc.pdf +++ b/macros/latex-dev/required/amsmath/amsldoc.pdf diff --git a/macros/latex-dev/required/amsmath/amsmath-2018-12-01.sty b/macros/latex-dev/required/amsmath/amsmath-2018-12-01.sty index ab45172a32..ca5ac506fb 100644 --- a/macros/latex-dev/required/amsmath/amsmath-2018-12-01.sty +++ b/macros/latex-dev/required/amsmath/amsmath-2018-12-01.sty @@ -1,4 +1,8 @@ %% +%% This is an old release of `amsmath.sty' used during rollback operations. +%% Do not use this file directly. +%% ============================== +%% %% This is file `amsmath.sty', %% generated with the docstrip utility. %% @@ -517,7 +521,7 @@ Foreign command \@backslashchar#1;\MessageBreak \else % \not \mathxxx \@xp\Umathch@\meaning@"0"\Umathch@ \ifgtest@ % if \Umathchar - \else % else not \Umathcar + \else % else not \Umathchar \@xp\macro@\meaning@@\macro@ \ifgtest@ % if macro test \@xp\not@\meaning@\not@ diff --git a/macros/latex-dev/required/amsmath/amsmath.dtx b/macros/latex-dev/required/amsmath/amsmath.dtx index d0ed131811..ec44957a89 100644 --- a/macros/latex-dev/required/amsmath/amsmath.dtx +++ b/macros/latex-dev/required/amsmath/amsmath.dtx @@ -76,17 +76,16 @@ Bug reports can be opened (category \texttt{#1}) at\\% [1994/12/01]% LaTeX date must be December 1994 or later % \end{macrocode} % -% Providing a rollback to earlier version(s) +% Providing a rollback to earlier version(s). Anything prior to +% 2018 we attempt to fulfill by using the version from 2018. % \begin{macrocode} -\providecommand\DeclareRelease[3]{} -\providecommand\DeclareCurrentRelease[2]{} -% +\DeclareRelease{}{1994-06-01}{amsmath-2018-12-01.sty} \DeclareRelease{}{2018-12-01}{amsmath-2018-12-01.sty} \DeclareCurrentRelease{}{2019-04-01} % \end{macrocode} % % \begin{macrocode} -\ProvidesPackage{amsmath}[2024/03/13 v2.17p AMS math features] +\ProvidesPackage{amsmath}[2024/05/23 v2.17q AMS math features] % \end{macrocode} % % \section{Catcode defenses} @@ -1162,7 +1161,7 @@ Foreign command \@backslashchar#1;\MessageBreak % \begin{macrocode} \@xp\Umathch@\meaning@"0"\Umathch@ \ifgtest@ % if \Umathchar - \else % else not \Umathcar + \else % else not \Umathchar % \end{macrocode} % \begin{macrocode} \@xp\macro@\meaning@@\macro@ diff --git a/macros/latex-dev/required/amsmath/amsmath.pdf b/macros/latex-dev/required/amsmath/amsmath.pdf Binary files differindex fde4b6a38f..2ae7c81905 100644 --- a/macros/latex-dev/required/amsmath/amsmath.pdf +++ b/macros/latex-dev/required/amsmath/amsmath.pdf diff --git a/macros/latex-dev/required/amsmath/amsopn.pdf b/macros/latex-dev/required/amsmath/amsopn.pdf Binary files differindex 978b9d6a70..6f1b3c0331 100644 --- a/macros/latex-dev/required/amsmath/amsopn.pdf +++ b/macros/latex-dev/required/amsmath/amsopn.pdf diff --git a/macros/latex-dev/required/amsmath/amstext.pdf b/macros/latex-dev/required/amsmath/amstext.pdf Binary files differindex 48ff030166..37ad4cc7fa 100644 --- a/macros/latex-dev/required/amsmath/amstext.pdf +++ b/macros/latex-dev/required/amsmath/amstext.pdf diff --git a/macros/latex-dev/required/amsmath/amsxtra.pdf b/macros/latex-dev/required/amsmath/amsxtra.pdf Binary files differindex a96c13d257..af44bc5e9b 100644 --- a/macros/latex-dev/required/amsmath/amsxtra.pdf +++ b/macros/latex-dev/required/amsmath/amsxtra.pdf diff --git a/macros/latex-dev/required/amsmath/changes.txt b/macros/latex-dev/required/amsmath/changes.txt index a15eab5bbf..588e7d36d0 100644 --- a/macros/latex-dev/required/amsmath/changes.txt +++ b/macros/latex-dev/required/amsmath/changes.txt @@ -1,13 +1,23 @@ +================================================================================ +All changes above are only part of the development branch for the next release. +================================================================================ + +######################### +# 2023-11-01 Release +######################### + +2024-05-23 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * amsmath.dtx: + Do not error with "suspicous date" when rolling back to + early years of LaTeX2e (gh/1336) + 2024-03-11 Frank Mittelbach <Frank.Mittelbach@latex-project.org> * amsmath.dtx (subsection{The \env{gather} environment}): Reset \lineht@ to avoid that this is incorrectly picked up by a following environment, such as align. (gh/1289) -================================================================================ -All changes above are only part of the development branch for the next release. -================================================================================ - ######################### # 2023-11-01 Release ######################### diff --git a/macros/latex-dev/required/amsmath/subeqn.pdf b/macros/latex-dev/required/amsmath/subeqn.pdf Binary files differindex 0f7d593343..54f6fe9385 100644 --- a/macros/latex-dev/required/amsmath/subeqn.pdf +++ b/macros/latex-dev/required/amsmath/subeqn.pdf diff --git a/macros/latex-dev/required/amsmath/technote.pdf b/macros/latex-dev/required/amsmath/technote.pdf Binary files differindex 6f70cc885c..6526568bda 100644 --- a/macros/latex-dev/required/amsmath/technote.pdf +++ b/macros/latex-dev/required/amsmath/technote.pdf diff --git a/macros/latex-dev/required/amsmath/testmath.pdf b/macros/latex-dev/required/amsmath/testmath.pdf Binary files differindex 151d3d2920..e1ce7c6acd 100644 --- a/macros/latex-dev/required/amsmath/testmath.pdf +++ b/macros/latex-dev/required/amsmath/testmath.pdf diff --git a/macros/latex-dev/required/graphics/README.md b/macros/latex-dev/required/graphics/README.md index df1e890c5a..0efecadab8 100644 --- a/macros/latex-dev/required/graphics/README.md +++ b/macros/latex-dev/required/graphics/README.md @@ -1,7 +1,7 @@ The LaTeX `graphics` bundle =========================== -Release 2024-06-01 pre-release 0 +Release 2024-11-01 pre-release 2 Overview -------- @@ -61,4 +61,4 @@ of the package. ----- -<p>Copyright (C) 1993-2023 The LaTeX Project <br /> +<p>Copyright (C) 1993-2024 The LaTeX Project <br /> diff --git a/macros/latex-dev/required/graphics/changes.txt b/macros/latex-dev/required/graphics/changes.txt index 55dde0358f..5e72561389 100644 --- a/macros/latex-dev/required/graphics/changes.txt +++ b/macros/latex-dev/required/graphics/changes.txt @@ -4,11 +4,30 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ======================================================================= +2024-06-24 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * color.dtx (section{Extra Groups}): + Support new @endpe mechanism + ================================================================================ All changes above are only part of the development branch for the next release. ================================================================================ ######################### +# 2024-06-01 Release +######################### + +2024-05-23 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * graphics.dtx: + Do not error with "suspicious date" when rolling back to + early years of LaTeX2e (gh/1336) + +2024-04-28 David Carlisle <David.Carlisle@latex-project.org> + + * grfguide.tex: add \resizebox* example for gh/1339 + +######################### # 2022-11-01 Release ######################### diff --git a/macros/latex-dev/required/graphics/color.dtx b/macros/latex-dev/required/graphics/color.dtx index bd37971470..b14c148f2f 100644 --- a/macros/latex-dev/required/graphics/color.dtx +++ b/macros/latex-dev/required/graphics/color.dtx @@ -2,7 +2,7 @@ % \iffalse % %% color.dtx Copyright (C) 1994--1999 David Carlisle -%% Copyright (C) 2005-2023 LaTeX Project +%% Copyright (C) 2005-2024 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -21,7 +21,7 @@ %<driver> \ProvidesFile{color.drv} % \fi % \ProvidesFile{color.dtx} - [2022/01/06 v1.3d Standard LaTeX Color (DPC)] + [2024/06/23 v1.3e Standard LaTeX Color (DPC)] % % \iffalse %<*driver> @@ -168,7 +168,7 @@ % % \begin{option}{dvips} % \begin{option}{xdvi} -% Tom Rokicki's dvips driver, and the X Windows previewer, xdvi which uses +% Tom Rokicki's dvips driver, and the X Windows previewer, xdvi, which uses % (a subset of) the same |\specials|. % \begin{macrocode} \DeclareOption{dvips}{\def\Gin@driver{dvips.def}% @@ -248,7 +248,7 @@ % \changes{v0.3k}{1995/09/07} % {Merge dviwindo and dvipsone options} % The drivers of the Y\&Y \TeX\ system. -% (Which use the same |\specials|). +% (Which use the same |\specials|.) % \begin{macrocode} \DeclareOption{dvipsone}{\def\Gin@driver{dvipsone.def}} \DeclareOption{dviwindo}{\ExecuteOptions{dvipsone}} @@ -360,7 +360,7 @@ % The |dvipsnames| option predeclares all the names in the colour % prologue of dvips. The |dvips| option automatically implies % |dvipsnames| unless this choice is overruled with the |nodvipsnames| -% option. For other drivers, eg |textures| you may use this option to +% option. For other drivers, eg |textures|, you may use this option to % explicitly request that these names be declared. % \begin{macrocode} \DeclareOption{dvipsnames}{\def\c@lor@namefile{dvipsnam.def}} @@ -371,7 +371,7 @@ % % \begin{option}{usenames} % The |usenames| option modifies the behaviour of |\DefineNamedColor| -% So that it declares the same name as a ```user's colour'' for use in +% so that it declares the same name as a ``user's colour'' for use in % a |\color| command, as well as a name in the |named| colour model. % The normal behaviour is just to declare the name in the named colour % model. @@ -530,7 +530,7 @@ % |\color| or |\textcolor| commands to refer to a colour specified by % \emph{colour-spec} in the colour model \emph{model}. % -% |\definecolor| associates the \emph{name} the to a colour in +% |\definecolor| associates the \emph{name} to a colour in % \emph{model}. So |\color{|\emph{name}|}| would check \emph{name} % then issue a |\special| for the colour model \emph{model}. % @@ -579,12 +579,12 @@ % names. % % The `color1' drivers (dvips) currently ignore the specification of -% the colour, and once a name is defined, just put the colour name in -% the dvi file. For dvips, The header file \texttt{color.pro} is used to +% the colour and, once a name is defined, just put the colour name in +% the dvi file. For dvips, the header file \texttt{color.pro} is used to % give the cmyk equivalents of the names. % % The `color2' drivers (textures) use a special postscript operator -% that takes both the name and the cmyk equivalent. so if the names are +% that takes both the name and the cmyk equivalent, so if the names are % not being used, `fall back' definitions in the cmyk model are available. % These drivers also allow a numeric value to affect the `density' % of the colour to use. @@ -688,9 +688,9 @@ % % \begin{macro}{\normalcolor} % Early versions of this package redefined |\reset@font| to reset the -% color as well. Current versions do not do this (there are too many -% |\reset@font| commands hidden in strange places) and so defines a -% separate command, |\normalcolor| to reset the colour to the colour in +% color as well. Current versions do not do this (since there are too many +% |\reset@font| commands hidden in strange places) and so they define a +% separate command, |\normalcolor|, to reset the colour to the colour in % effect at the start of the document. % % |\normalcolor| is defined (to |\relax|) in the \LaTeX\ kernel, so it @@ -722,9 +722,9 @@ % the truth as the `macro layer' of \TeX\ does not know where the output % routine is going to re-insert floats. This is why drivers must % maintain their own stack of colours in order to fully support these -% commands. +% commands.) % -% For dvips, the |\current@color| it is something like `|Black|' or +% For dvips, the |\current@color| is something like `|Black|' or % `|rgb 0 1 0|', but other packages should not rely on any particular % format for this macro. % @@ -755,7 +755,7 @@ % definition of this command. A graphics package may want to define it % using a special to produce (for example) a PostScript line. Producing % the line in the |\special| has the advantage that on a preview that -% does not understand |\special|s, the line is automatically omited, +% does not understand |\special|s, the line is automatically omitted, % without needing to modify the source of the document (for instance by % adding the |monochrome| option). % @@ -877,10 +877,15 @@ % commands. The |\endgraf| in its definition is required in the case % of groups of text in vertical `par' mode, but doesn't do any harm in % horizontal `LR' contexts. +% The |\@endpefalse| is required for the newer \texttt{@endpe} +% handling, again it is harmless if an older kernel is used +% (because there it was a local assignment). % \changes{v0.2d}{1994/05/13} % {New definition, was previously just \cs{endgroup}} +% \changes{v1.3e}{2024/06/23} +% {Support new \texttt{@endpe} mechanism} % \begin{macrocode} -\def\color@endgroup{\endgraf\endgroup} +\def\color@endgroup{\endgraf\@endpefalse\endgroup} % \end{macrocode} % \end{macro} % @@ -894,7 +899,7 @@ % \end{macro} % % \begin{macro}{\color@vbox} -% To be used to open a `coloured hbox' +% To be used to open a `coloured vbox' % \changes{v0.3h}{1994/11/22} % {Macro added} % \begin{macrocode} diff --git a/macros/latex-dev/required/graphics/color.pdf b/macros/latex-dev/required/graphics/color.pdf Binary files differindex e1c35c486d..84ae84109e 100644 --- a/macros/latex-dev/required/graphics/color.pdf +++ b/macros/latex-dev/required/graphics/color.pdf diff --git a/macros/latex-dev/required/graphics/drivers.dtx b/macros/latex-dev/required/graphics/drivers.dtx index 19fa2013db..fb5132272b 100644 --- a/macros/latex-dev/required/graphics/drivers.dtx +++ b/macros/latex-dev/required/graphics/drivers.dtx @@ -3,7 +3,7 @@ % %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2023 LaTeX Project +%% Copyright (C) 2000-2024 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/macros/latex-dev/required/graphics/drivers.pdf b/macros/latex-dev/required/graphics/drivers.pdf Binary files differindex b32569dec4..3651bccd85 100644 --- a/macros/latex-dev/required/graphics/drivers.pdf +++ b/macros/latex-dev/required/graphics/drivers.pdf diff --git a/macros/latex-dev/required/graphics/epsfig.dtx b/macros/latex-dev/required/graphics/epsfig.dtx index 8a9911c965..46dc36d0bf 100644 --- a/macros/latex-dev/required/graphics/epsfig.dtx +++ b/macros/latex-dev/required/graphics/epsfig.dtx @@ -2,7 +2,7 @@ % \iffalse % %% epsfig.dtx Copyright (C) 1994-1996 1999 Sebastian Rahtz -%% Copyright (C) 2000-2023 LaTeX Project +%% Copyright (C) 2000-2024 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -19,7 +19,7 @@ %<driver> \ProvidesFile{epsfig.drv} % \fi % \ProvidesFile{epsfig.dtx} - [2017/06/25 v1.7b (e)psfig emulation (SPQR)] + [2024/01/14 v1.7b (e)psfig emulation (SPQR)] % % \iffalse %<*driver> @@ -51,7 +51,7 @@ \RequirePackage{graphicx} % \end{macrocode} % \subsection{Emulation of `psfig' syntax} -% Emulate "epsfig.sty", and most varieties of psfig +% Emulate \texttt{epsfig.sty}, and most varieties of psfig % \begin{macro}{\psfig,\epsfig} % \begin{macrocode} \def\psfig#1{% @@ -83,7 +83,7 @@ % \end{macrocode} % \end{macro} % \subsection{Emulation of `epsf' syntax} -% Emulate Rokicki's "epsf.tex" supplied with the ever-popular dvips. +% Emulate Rokicki's \texttt{epsf.tex}, supplied with the ever-popular dvips. % \begin{macro}{\epsfbox,\epsffile} % \begin{macrocode} \newdimen\epsfxsize diff --git a/macros/latex-dev/required/graphics/epsfig.pdf b/macros/latex-dev/required/graphics/epsfig.pdf Binary files differindex 7c863b7a22..ab7f88d73f 100644 --- a/macros/latex-dev/required/graphics/epsfig.pdf +++ b/macros/latex-dev/required/graphics/epsfig.pdf diff --git a/macros/latex-dev/required/graphics/graphics-2017-06-25.sty b/macros/latex-dev/required/graphics/graphics-2017-06-25.sty index 154867d99a..24f6443124 100644 --- a/macros/latex-dev/required/graphics/graphics-2017-06-25.sty +++ b/macros/latex-dev/required/graphics/graphics-2017-06-25.sty @@ -1,4 +1,8 @@ %% +%% This is an old release of `graphics.sty' used during rollback operations. +%% Do not use this file directly. +%% ============================== +%% %% This is file `graphics.sty', %% generated with the docstrip utility. %% diff --git a/macros/latex-dev/required/graphics/graphics.dtx b/macros/latex-dev/required/graphics/graphics.dtx index d40c70a034..86556ea40a 100644 --- a/macros/latex-dev/required/graphics/graphics.dtx +++ b/macros/latex-dev/required/graphics/graphics.dtx @@ -2,7 +2,7 @@ % \iffalse % %% graphics.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz -%% Copyright (C) 1995-2023 LaTeX Project +%% Copyright (C) 1995-2024 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -17,9 +17,9 @@ \ProvidesFile{graphics.dtx} %</dtx> %<+package>\NeedsTeXFormat{LaTeX2e}[1995/12/01] -%<+package>\providecommand\DeclareRelease[3]{} -%<+package>\providecommand\DeclareCurrentRelease[2]{} %<+package> +% Try to fulfill rollback requests to early years by using the 2017 version: +%<+package>\DeclareRelease{}{1994-06-01}{graphics-2017-06-25.sty} %<+package>\DeclareRelease{}{2017-06-25}{graphics-2017-06-25.sty} %<+package>\DeclareCurrentRelease{}{2019-10-01} %<+package> @@ -27,7 +27,7 @@ %<driver> \ProvidesFile{graphics.drv} % \fi % \ProvidesFile{graphics.dtx} - [2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR)] + [2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR)] % % \iffalse %<*driver> @@ -69,18 +69,18 @@ % \section{Introduction} % % This package implements various `graphics' functions. The main -% features are a) inclusion of `graphics' files. b) Rotation of sections -% of the page, c) Scaling of sections of the page. +% features are: a) inclusion of `graphics' files; b) rotation of sections +% of the page; c) scaling of sections of the page. % % The design is split into three `levels'. % \begin{itemize} % \item The user interface. This is the collection of commands designed -% to appear in a document text. Actually two separate user interface +% to appear in a document text. Actually two separate user interfaces % have been implemented. The `standard' interface, described here, and a % more powerful, and more `user-friendly' interface provided by the % |graphicx| package. % \item The core functions. These functions, which are also implemented -% in this file do all the `main work'. The `user-interface functions +% in this file, do all the `main work'. The `user-interface functions' % just collect together the information from any optional-arguments or % star-forms, and then call one of these functions. % \item The driver files. It is not possible to achieve the @@ -90,7 +90,7 @@ % and the syntax required to pass instructions to the drivers is also % not standardised. So the `core functions' never access |\special| % directly, but rather call a series of commands that must be defined in -% a special file customised for each driver. The accompanying file, +% a special file customised for each driver. The accompanying file % |drivers.dtx| has suitable files for a range of popular drivers. % \end{itemize} % @@ -99,9 +99,9 @@ % driver that is to be used to print the document. You may wish to set % up a configuration file so that this option always takes effect, even % if not specified in the document. To do this, produce a file -% |graphics.cfg| containing the line:\\ +% |graphics.cfg| containing the line\\ % |\ExecuteOptions{dvips}|\\ -% (or whichever other driver you wish.) +% (or whichever other driver you wish). % % Apart from the driver options there are a few other options to control % the behaviour of the package. @@ -166,7 +166,7 @@ % |\graphicspath{{eps/}{tiff/}}| % would cause the system to look in the subdirectories |eps| and |tiff| % of the current directory. The default setting of this path is -% |\input@path| that is: graphics files will be found wherever \TeX\ +% |\input@path|, so that graphics files will be found wherever \TeX\ % files are found. % % \DescribeMacro @@ -204,7 +204,7 @@ % \emph{default rule}. For instance the |dvips| driver file declares all % files to be of type |eps| unless a more specific rule is declared. % -% Since Version v0.6, extensions should be specified including the |.| +% Since Version v0.6, extensions should be specified including the |.|, % that is, |.eps| not |eps|. % % \emph{type} is the `type' of file involved. All files of the same type @@ -241,7 +241,7 @@ % used to denote the filename. Thus using the dvips driver, one may % use\\ % |\DeclareGraphicsRule{.ps.gz}{eps}{.ps.bb}{`zcat #1}|\\ -% the final argument causes dvips to use the |zcat| command to unzip the +% The final argument causes dvips to use the |zcat| command to unzip the % file before inserting it into the PostScript output. % % \subsection{Rotation} @@ -297,18 +297,18 @@ % \DescribeMacro % {\Gread@eps}\marg{file}\\ % For each \emph{type} of graphics file supported, the driver file must -% define |\Ginclude@|\emph{type} and, optionally |\Gread@|\emph{type}. +% define |\Ginclude@|\emph{type} and, optionally, |\Gread@|\emph{type}. % The read command is responsible for obtaining size information from -% the file specified in the |\DeclareGraphicsRule| command. However the +% the file specified in the |\DeclareGraphicsRule| command. However, the % kernel defines a function, |\Gread@eps|, which can read PostScript % files to find the % |%%BoundingBox| comment. This function will be used for any type for % which a specific function has not been declared. |\Gread@eps| accepts % a generalised version of the bounding box comment. \TeX\ units may be % used (but there must be no space before the unit). If the unit is -% omitted |bp| is assumed. So\\ +% omitted, |bp| is assumed. So\\ % |%%BoundingBox 0 0 2in 3in|\\ -% Would be accepted by this function, to produce a 2in wide, by 3in high +% would be accepted by this function, to produce a 2in wide by 3in high % graphic. % % \subsection{Rotation} @@ -334,7 +334,7 @@ % \DescribeMacro % {\Gscale@box@dddd} % \marg{dima}\marg{dimb}\marg{dimc}\marg{dimd}\marg{text}\\ -% Scale \emph{text} in horizontally by a factor \emph{dima}/\emph{dimb}, +% Scale \emph{text} horizontally by a factor \emph{dima}/\emph{dimb}, % and vertically by a factor of \emph{dimc}/\emph{dimd}. % % \DescribeMacro @@ -353,7 +353,7 @@ % |\Ginclude@|\emph{type}\\ % The Graphics kernel function will call this driver-defined function % with the filename as argument, and certain additional information will -% be provided as follows.: +% be provided as follows: % % \noindent\begin{tabular}{p{.4\textwidth}p{.5\textwidth}} % |\Gin@llx|, |\Gin@lly|,\newline @@ -362,7 +362,7 @@ % Registers storing the natural size.\\ % |\Gin@req@width|\newline |\Gin@req@height| & % Registers storing the required size, after scaling.\\ -% |\Gin@scalex|, |\Gin@scaley| & macros with the scale factors. A value +% |\Gin@scalex|, |\Gin@scaley| & Macros with the scale factors. A value % of |!| means: Scale by the same amount as the other direction.\\ % |\ifGin@clip| & |\newif| token, true if the graphic should be % `clipped' to the bounding box. @@ -371,11 +371,11 @@ % Optionally the driver may define a command of the form:\\ % |\Gread@|\emph{type}\\ % This is responsible for reading an external file to find the bounding -% box information. If such a command is not declared, but a read-file is -% specified the command |\Gread@eps|, which is defined in the Graphics -% Kernel will be used. +% box information. If such a command is not declared but a read-file is +% specified, the command |\Gread@eps|, which is defined in the Graphics +% Kernel, will be used. % -% \subsection{Literal Postscript} +% \subsection{Literal PostScript} % Drivers that are producing PostScript output may want to define % the following macros. They each take one argument which should be % passed to an appropriate special. They are not used directly by this @@ -384,7 +384,7 @@ % |\Gin@PS@raw|, Literal PostScript special.\\ % |\Gin@PS@restored|, Literal PostScript special, the driver will % surround this with a save-restore pair.\\ -% |\Gin@PS@literal@header|, Postscript to be inserted in the header +% |\Gin@PS@literal@header|, PostScript to be inserted in the header % section of the PostScript file.\\ % |\Gin@PS@file@header|, external file to be inserted in the header % section of the PostScript file. @@ -550,7 +550,7 @@ % \changes{v0.3g}{1994/03/15} % {Use dvips def file not development version} % \begin{option}{xdvi} -% Tomas Rockicki's PostScript driver (unix, MSDOS, VMS\ldots). +% Tomas Rokicki's PostScript driver (unix, MSDOS, VMS\ldots). % The |X11| previewer |xdvi| supports basically the same set of % |\specials|. % \begin{macrocode} @@ -672,7 +672,7 @@ % \begin{option}{pctex32} % \changes{v1.0b}{1996/10/29} % {pctex32 option added} -% PC\TeX\ (MSDOS/Windows) . +% PC\TeX\ (MSDOS/Windows). % \begin{macrocode} \DeclareOption{pctexps}{\def\Gin@driver{pctexps.def}} \DeclareOption{pctexwin}{\def\Gin@driver{pctexwin.def}} @@ -913,7 +913,7 @@ % \end{macro} % % \begin{macro}{\Gin@iii} -% Set the coordinates of the {\bfseries l}lower {\bfseries l}eft corner, +% Set the coordinates of the {\bfseries l}ower {\bfseries l}eft corner, % and the coordinates of the {\bfseries u}pper {\bfseries r}ight % corner. The coordinates may be any \TeX\ dimension, defaulting to |bp|. % \changes{v0.6c}{1994/12/15} @@ -944,8 +944,8 @@ % is invisibly small but files conforming to Adobe DSC should have % \emph{integer} Bounding Box Coordinates, and conceivably some drivers % might demand integer values. -% (Although most seem to accept real values (if they accept bounding box -% coordinates at all) in the |\special|. This is the reason why the +% Although most seem to accept real values (if they accept bounding box +% coordinates at all) in the |\special|, this is the reason why the % mechanism uses |\def| and not \TeX\ lengths, as in earlier releases of % the package. % \begin{macrocode} @@ -1050,7 +1050,8 @@ % % \begin{macrocode} \edef\Gin@gzext{\detokenize{gz}} -% \edef{macrocode} +% \end{macrocode} +% \end{macro} % \end{macro} % % \begin{macro}{\Gin@set@curr@file} @@ -1454,8 +1455,8 @@ % {New macro} % \begin{macro}{\Gread@generic@aux} % \begin{macro}{\Gread@eps} -% Read an EPS file (|#1|) and search for a line -% starting with |%%BoundingBox| and returns the result +% Read an EPS file (|#1|), search for a line +% starting with |%%BoundingBox|; then return the result % by setting four dimension registers % |\Gin@llx|, |\Gin@lly|, |\Gin@urx| and |\Gin@ury|. % \changes{v0.5e}{1994/11/02} @@ -1701,7 +1702,7 @@ % \begin{macro}{\Grot@left} % \begin{macro}{\Grot@right} % \begin{macro}{\Grot@depth} -% Final Rotated box dimensions +% Final rotated box dimensions % \begin{macrocode} \let\Grot@height\@ovxx \let\Grot@left\@ovyy @@ -1920,8 +1921,8 @@ % \end{macrocode} % Now we should translate back by $(O_x,O_y)$, but \TeX\ can not really % deal with boxes that do not have the reference point at the left edge. -% (Everything with a $-$ve $x$-coordinate would over-print earlier -% text). So we modify the horizontal translation so that the +% (Everything with a negative $x$-coordinate would over-print earlier +% text.) So we modify the horizontal translation so that the % reference point as understood by \TeX\ \emph{is} at the left edge. % This means that the `centre of rotation' is not fixed by |\rotatebox|, % but typically moves horizontally. We also need to find the image of @@ -2157,7 +2158,7 @@ % \end{macrocode} % \end{macro} % -% Restore Catcodes +% Restore catcodes. % \begin{macrocode} \Gin@codes \let\Gin@codes\relax diff --git a/macros/latex-dev/required/graphics/graphics.pdf b/macros/latex-dev/required/graphics/graphics.pdf Binary files differindex 343be34fa6..f4dcb01727 100644 --- a/macros/latex-dev/required/graphics/graphics.pdf +++ b/macros/latex-dev/required/graphics/graphics.pdf diff --git a/macros/latex-dev/required/graphics/graphicx.dtx b/macros/latex-dev/required/graphics/graphicx.dtx index 3bce2bdcf0..92f1af1d39 100644 --- a/macros/latex-dev/required/graphics/graphicx.dtx +++ b/macros/latex-dev/required/graphics/graphicx.dtx @@ -2,7 +2,7 @@ % \iffalse % %% graphicx.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz -%% Copyright (C) 1995-2023 LaTeX Project +%% Copyright (C) 1995-2024 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/macros/latex-dev/required/graphics/graphicx.pdf b/macros/latex-dev/required/graphics/graphicx.pdf Binary files differindex 06aa1ba087..2407cb488b 100644 --- a/macros/latex-dev/required/graphics/graphicx.pdf +++ b/macros/latex-dev/required/graphics/graphicx.pdf diff --git a/macros/latex-dev/required/graphics/grfguide.pdf b/macros/latex-dev/required/graphics/grfguide.pdf Binary files differindex 7aa2c8bc89..adf18e969a 100644 --- a/macros/latex-dev/required/graphics/grfguide.pdf +++ b/macros/latex-dev/required/graphics/grfguide.pdf diff --git a/macros/latex-dev/required/graphics/grfguide.tex b/macros/latex-dev/required/graphics/grfguide.tex index 585e87adc7..959486c05c 100644 --- a/macros/latex-dev/required/graphics/grfguide.tex +++ b/macros/latex-dev/required/graphics/grfguide.tex @@ -1,5 +1,5 @@ %% grfguide.tex Copyright (C) 1994-1999 David Carlisle -%% Copyright (C) 2005-2021 +%% Copyright (C) 2005-2024 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -62,7 +62,8 @@ stroke \begin{document} \title{Packages in the `graphics' bundle} \author{D. P. Carlisle \and The \LaTeX\ Project} -\date{2021-03-05} + +\date{2024-05-22} \maketitle @@ -95,8 +96,10 @@ For special requirements you may edit a copy of these |cfg| files to set up a site default for these options. Suppose that you wish the \package{color} package to always default to use specials for the PostScript driver, |dvisvgm|. In that case, create a file |color.cfg| -containing the line:\\ -|\ExecuteOptions{dvisvgm}|\\ +containing the line: +\begin{quote} + |\ExecuteOptions{dvisvgm}| +\end{quote} Normally you will want an identical file |graphics.cfg| to set a similar default for the graphics packages. @@ -113,12 +116,12 @@ The following two options are also supported, they do not correspond to separate definition files, but are essentially aliases for the |dvips| option (and |monochrome| in the case of |xdvi|). \begin{quote}\raggedright - |xdvi|, |oztex| + |xdvi|, |oztex| \end{quote} The following set of options are supported by these packages with associated driver files extracted from the |drivers.dtx| -documented source in this bundle. These are now, mainly of historic +documented source in this bundle. These are now mainly of historic interest but the documented sources do contain some useful code and advice if you need to produce a new definition file for a new driver or \TeX\ system. |drivers.dtx| also contains documented @@ -206,11 +209,11 @@ your own colours use the |\definecolor| command. This defines \m{name} as a colour which can be used in later colour -commands. For example -\begin{verbatim} -\definecolor{light-blue}{rgb}{0.8,0.85,1} -\definecolor{mygrey}{gray}{0.75} -\end{verbatim} +commands. For example: +\begin{quote} + |\definecolor{light-blue}{rgb}{0.8,0.85,1}| \\ + |\definecolor{mygrey}{gray}{0.75}| +\end{quote} \definecolor{light-blue}{rgb}{0.8,0.85,1} \definecolor{mygrey}{gray}{0.75} @@ -227,7 +230,7 @@ The basic syntax is: |\color|\arg{name} \end{decl} -This is a \emph{declaration}, like |\bfseries| It changes the current +This is a \emph{declaration}, like |\bfseries|. It changes the current colour to \m{name} until the end of the current group or environment. @@ -259,7 +262,6 @@ See \texttt{mathcolor.pdf} for details on this command. \subsubsection{Using colour specifications directly} - \begin{decl} |\color|\oarg{model}\arg{specification}\\ |\textcolor|\oarg{model}\arg{specification}\arg{text}\\ @@ -271,18 +273,23 @@ the document preamble, but sometimes it is convenient to directly use a colour without naming it first. To achieve this |\color| (and all the other colour commands) take an optional argument specifying the model. If this is used then the mandatory argument takes a -\m{colour specification} instead of a \m{name}. For example:\\ -|\color[rgb]{1,0.2,0.3}|\\ +\m{colour specification} instead of a \m{name}. For example: +\begin{quote} + |\color[rgb]{1,0.2,0.3}| +\end{quote} would directly select that colour. -This is particularly useful for accessing the \textbf{named} model:\\ -|\color[named]{BrickRed}| selects the |dvips| colour BrickRed. +This is particularly useful for accessing the \textbf{named} model: +\begin{quote} + |\color[named]{BrickRed}| +\end{quote} +selects the |dvips| colour BrickRed. Rather than repeatedly use |[named]| you may use |\definecolor| to -provide convenient aliases:\\ -|\definecolor{myred}{named}{WildStrawberry}| - \ldots\ |\color{myred}|\ \ldots - +provide convenient aliases: +\begin{quote} + |\definecolor{myred}{named}{WildStrawberry}|\ldots |\color{myred}|\kern-10pt +\end{quote} Alternatively if you are happy to use the existing names from the \textbf{named} model, you may use the |usenames| package option, which effectively calls |\definecolor| on every colour in the \textbf{named} @@ -396,7 +403,7 @@ you should set up a site-default in a file, The graphics packages have some other options for controlling how many of the features to enable: \begin{description} -\item[draft] suppress all the `special' features. In particular +\item[draft] Suppress all the `special' features. In particular graphics files are not included (but they are still read for size info) just the filename is printed in a box of the correct size. \item[final] The opposite of |draft|. Useful to over-ride a global @@ -480,18 +487,23 @@ An abbreviation for |\scalebox{-1}[1]|\arg{text}. Scale \emph{text} so that the width is \emph{h-length}. If |!| is used as either length argument, the other argument is used to determine a scale factor that is used in both directions. - Normally \emph{v-length} refers to the height of the box, but in the - star form, it refers to the `height + depth'. + As normal for \LaTeXe\ box length arguments, |\height|, |\width|, |\totalheight|, |\depth| may be used to refer to the original size of the box. + Normally \emph{v-length} refers to the height of the box, but in the + star form, |\resizebox*|, it refers to the `height + depth'. + |\resizebox{1in}{\height}{Some text}|: \resizebox{1in}{\height}{Some text} |\resizebox{1in}{!}{Some text}|: \resizebox{1in}{!}{Some text} +|\resizebox{!}{20pt}{Q} \resizebox*{!}{20pt}{Q}|: +\resizebox{!}{20pt}{Q} \resizebox*{!}{20pt}{Q} + \subsection{Including Graphics Files} The functions for graphics inclusion try to give the same user syntax for including any kind of graphics file that can be understood by the @@ -568,7 +580,7 @@ otherwise it will not use one of the others, with a driver-defined order of preference. |MediaBox| is always present. -The |pagebox| key may be used to specify which bounding box specification to use, +The |pagebox| key may be used to specify which bounding box specification to use. The value should be one of |mediabox|, |cropbox|, |bleedbox|, |trimbox|, |artbox|. \item[viewport]\NEWfeature{1995/06/01} @@ -602,7 +614,7 @@ The value should be one of \item[scale] Scale factor. \item[clip] Either `true' or `false' (or no value, which is equivalent to `true'). Clip the graphic to the bounding box. -\item[draft] a boolean valued key, like `clip'. Locally switches to +\item[draft] A boolean valued key, like `clip'. Locally switches to draft mode. \item[type] Specify the graphics type. \item[ext] Specify the file extension. This should \emph{only} be @@ -614,12 +626,16 @@ The value should be one of \item[quiet]\NEWfeature{2017/06/01} Skip writing information to the log. \item[page]\NEWfeature{2017/06/01} -Page of a multi-page PDF file. (by default the first page will be used.) +Page of a multi-page PDF file. (By default the first page will be used.) \item[interpolate]\NEWfeature{2017/06/01} Enable/disable interpolation of bitmap images by the viewer. +\item[alt]\NEWfeature{2021/09/16} + Alternative text for accessibility uses. By default this key is not used + but users are encouraged to add descriptive text here that may be used in + tagged PDF or as the |alt| attribute in conversions to HTML. \end{description} -For the keys specifying the original size (i.e,, the bounding box, +For the keys specifying the original size (i.e., the bounding box, trim and viewport keys) the units can be omitted, in which case bp (i.e., PostScript points) are assumed. @@ -710,7 +726,7 @@ the \LaTeXe\ primitive |\input@path|. A list of directories, each in a as the directory separator, even on Windows.) The default setting of this path is - |\input@path| that is: graphics files will be found wherever \TeX\ + |\input@path|, so that graphics files will be found wherever \TeX\ files are found. \begin{decl} @@ -748,7 +764,7 @@ must exist at the time \LaTeX\ is used. extension from the \emph{ext-list} specified with |\DeclareGraphicsExtensions|.) -\emph{ext} the file extension for which this rule applies. As a special +\emph{ext} is the file extension for which this rule applies. As a special case, \emph{ext} may be given as |*| to denote the default behaviour for all undeclared extensions (see the example below). @@ -838,7 +854,7 @@ argument would change (and generate errors) if the user were to load \section{Remaining packages in the graphics bundle} \subsection{Epsfig} -This is a small package essentially a `wrapper' around the +This is a small package, essentially a `wrapper' around the \package{graphicx} package, defining a command |\psfig| which has the syntax\\ |\psfig{file=xxx,...}| rather than |\includegraphics[...]{xxx}|.\\ @@ -860,7 +876,7 @@ As well as being used as a \LaTeX\ package, the macros may be extracted with the \package{docstrip} options \texttt{plain,package}. In this case the \LaTeX\ package declarations are omitted from the file, and the macros may be directly used as part of another macro file (they work -with any format based on plain \TeX.) +with any format based on plain \TeX). \subsection{Keyval} The \package{keyval} package is intended to be used by other diff --git a/macros/latex-dev/required/graphics/keyval.dtx b/macros/latex-dev/required/graphics/keyval.dtx index 6e710a78f9..02f9a15ec7 100644 --- a/macros/latex-dev/required/graphics/keyval.dtx +++ b/macros/latex-dev/required/graphics/keyval.dtx @@ -1,7 +1,7 @@ % % \iffalse %% keyval.dtx Copyright (C) 1993 1994 1995 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2023 David Carlisle, LaTeX Project +%% Copyright (C) 2000-2024 David Carlisle, LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/macros/latex-dev/required/graphics/keyval.pdf b/macros/latex-dev/required/graphics/keyval.pdf Binary files differindex 7b1c32da0e..31c8bcc0bc 100644 --- a/macros/latex-dev/required/graphics/keyval.pdf +++ b/macros/latex-dev/required/graphics/keyval.pdf diff --git a/macros/latex-dev/required/graphics/lscape.dtx b/macros/latex-dev/required/graphics/lscape.dtx index c30a9f8dbd..eca5aa432b 100644 --- a/macros/latex-dev/required/graphics/lscape.dtx +++ b/macros/latex-dev/required/graphics/lscape.dtx @@ -2,7 +2,7 @@ % \iffalse % %% lscape.dtx Copyright (C) 1994 1999-2000 David Carlisle -%% Copyright (C) 2000-2023 LaTeX Project +%% Copyright (C) 2000-2024 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/macros/latex-dev/required/graphics/lscape.pdf b/macros/latex-dev/required/graphics/lscape.pdf Binary files differindex a225429e46..49be46adcf 100644 --- a/macros/latex-dev/required/graphics/lscape.pdf +++ b/macros/latex-dev/required/graphics/lscape.pdf diff --git a/macros/latex-dev/required/graphics/mathcolor.pdf b/macros/latex-dev/required/graphics/mathcolor.pdf Binary files differindex f1bcf17585..82a7579d12 100644 --- a/macros/latex-dev/required/graphics/mathcolor.pdf +++ b/macros/latex-dev/required/graphics/mathcolor.pdf diff --git a/macros/latex-dev/required/graphics/rotating.dtx b/macros/latex-dev/required/graphics/rotating.dtx index 4aefc71156..bac5759956 100644 --- a/macros/latex-dev/required/graphics/rotating.dtx +++ b/macros/latex-dev/required/graphics/rotating.dtx @@ -5,7 +5,7 @@ % File: rotating.dtx %% Copyright (C) 1995-1999 Sebastian Rahtz and Leonor Barroca %% Copyright (C) 2001-2003,2007-2009 Robin Fairbairns -%% Copyright (C) 2016-2023 LaTeX Project +%% Copyright (C) 2016-2024 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. % diff --git a/macros/latex-dev/required/graphics/rotating.pdf b/macros/latex-dev/required/graphics/rotating.pdf Binary files differindex 1fe5a8b8b9..57e646c94f 100644 --- a/macros/latex-dev/required/graphics/rotating.pdf +++ b/macros/latex-dev/required/graphics/rotating.pdf diff --git a/macros/latex-dev/required/graphics/rotex.pdf b/macros/latex-dev/required/graphics/rotex.pdf Binary files differindex 7c153bad33..9e3bd42516 100644 --- a/macros/latex-dev/required/graphics/rotex.pdf +++ b/macros/latex-dev/required/graphics/rotex.pdf diff --git a/macros/latex-dev/required/graphics/trig.dtx b/macros/latex-dev/required/graphics/trig.dtx index 7e80931d2a..d2fa91f91f 100644 --- a/macros/latex-dev/required/graphics/trig.dtx +++ b/macros/latex-dev/required/graphics/trig.dtx @@ -1,6 +1,6 @@ % \iffalse %% File: trig.dtx Copyright (C) 1993-1999 David Carlisle -%% Copyright (C) 2000-2023 LaTeX Project +%% Copyright (C) 2000-2024 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -19,7 +19,7 @@ %<driver> \ProvidesFile{trig.drv} % \fi % \ProvidesFile{trig.dtx} - [2021/08/11 v1.11 sin cos tan (DPC)] + [2023/12/02 v1.11 sin cos tan (DPC)] % % \iffalse %</!plain> @@ -214,7 +214,7 @@ % \end{macro} % % \begin{macro}{\TG@reduce} -% Repeatedly use one of the the relations +% Repeatedly use one of the relations % $\sin(x)=\sin(180-x)=\sin(-180-x)$ to get $x$ in the range $-90 \leq % x\leq 90$. Then call |\TG@series|. % \begin{macrocode} diff --git a/macros/latex-dev/required/graphics/trig.pdf b/macros/latex-dev/required/graphics/trig.pdf Binary files differindex 6daa5bc8a2..35d2e24dfd 100644 --- a/macros/latex-dev/required/graphics/trig.pdf +++ b/macros/latex-dev/required/graphics/trig.pdf diff --git a/macros/latex-dev/required/l3kernel/CHANGELOG.md b/macros/latex-dev/required/l3kernel/CHANGELOG.md index 82eb45806a..70b869d905 100644 --- a/macros/latex-dev/required/l3kernel/CHANGELOG.md +++ b/macros/latex-dev/required/l3kernel/CHANGELOG.md @@ -7,11 +7,53 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2024-09-10] + +### Fixed +- `\seq_map_pairwise_function:NNN` not work with `\seq_map_break:(n)` (issue \#1587) + +### Changed +- Increase outdent of long function names in `l3doc` (issue \#1585) + +## [2024-08-30] + +### Changed +- Reduce memory usage when building Unicode data storage +- Avoid recursive doc for `\file_if_exist:n(TF)` (issue \#1573) + +### Fixed +- Handling of `ltcmd` newlines (`\obeyedline`) in `l3doc` (issue \#1577) + +## [2024-08-16] + +### Added +- Add quark (`\q_`) and scan mark (`\s_`) prefixes to naming scheme + (issue \#1565) + +## [2024-07-20] + +### Fixed +- Implementation of deprecated `\tl_mixed_case:n(n)` +- Redo the fix for LaTeX2e key properties (issue latex3/latex2e\#1415) + +## [2024-06-19] + +### Fixed +- Avoid a low-level error when LaTeX2e key properties are given without a value + +## [2024-05-27] + +### Added +- Syntax entries of `\keys_set_groups:nnn(n)N` + +### Fixed +- `\peek_analysis_map_inline:n` with active spaces (issue \#1539) + ## [2024-05-08] ### Added - Full set of variants for `\prop_(g)put_if_not_in:Nnn` -- `keys_set_groups:nnn(n)N` to match `keys_set_exclude_groups:nnn(n)N` +- `\keys_set_groups:nnn(n)N` to match `\keys_set_exclude_groups:nnn(n)N` ### Fixed - Implementation of deprecated `\pdf_object_write:nn` @@ -1734,7 +1776,13 @@ this project uses date-based 'snapshot' version identifiers. - Step functions have been added for dim variables, e.g. `\dim_step_inline:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2024-05-08...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2024-09-10...HEAD +[2024-09-10]: https://github.com/latex3/latex3/compare/2024-08-30...2024-09-10 +[2024-08-30]: https://github.com/latex3/latex3/compare/2024-08-16...2024-08-30 +[2024-08-16]: https://github.com/latex3/latex3/compare/2024-07-20...2024-08-16 +[2024-07-20]: https://github.com/latex3/latex3/compare/2024-06-19...2024-07-20 +[2024-06-19]: https://github.com/latex3/latex3/compare/2024-05-27...2024-06-19 +[2024-05-27]: https://github.com/latex3/latex3/compare/2024-05-08...2024-05-27 [2024-05-08]: https://github.com/latex3/latex3/compare/2024-04-11...2024-05-08 [2024-04-11]: https://github.com/latex3/latex3/compare/2024-03-14...2024-04-11 [2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-20...2024-03-14 diff --git a/macros/latex-dev/required/l3kernel/README.md b/macros/latex-dev/required/l3kernel/README.md index 0928ea46ce..76cf62b310 100644 --- a/macros/latex-dev/required/l3kernel/README.md +++ b/macros/latex-dev/required/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2024-05-08 +Release 2024-09-10 Overview -------- diff --git a/macros/latex-dev/required/l3kernel/expl3.dtx b/macros/latex-dev/required/l3kernel/expl3.dtx index f4129aeb02..2842da27d1 100644 --- a/macros/latex-dev/required/l3kernel/expl3.dtx +++ b/macros/latex-dev/required/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2024-05-08}% +\def\ExplFileDate{2024-09-10}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -454,6 +454,15 @@ % implementation in \LaTeX3 means that |toks| are not required, and that % all operations for storing tokens can use the |tl| variable type. % +% There are two more special types of constants: +% \begin{arg-description} +% \item[q] constants of quark type; +% \item[s] constants of scan mark type. +% \end{arg-description} +% The \meta{type} part of quark and scan mark constants is omitted, and +% the \meta{module} part of general quarks and scan marks is often +% omitted too. +% % Experienced \TeX{} programmers will notice that some of the variable % types listed are native \TeX{} registers whilst others are not. In % general, the underlying \TeX{} implementation for a data structure may diff --git a/macros/latex-dev/required/l3kernel/expl3.pdf b/macros/latex-dev/required/l3kernel/expl3.pdf Binary files differindex 6c334e54d6..3892145fe1 100644 --- a/macros/latex-dev/required/l3kernel/expl3.pdf +++ b/macros/latex-dev/required/l3kernel/expl3.pdf diff --git a/macros/latex-dev/required/l3kernel/interface3.pdf b/macros/latex-dev/required/l3kernel/interface3.pdf Binary files differindex db66e71788..d5dbb77029 100644 --- a/macros/latex-dev/required/l3kernel/interface3.pdf +++ b/macros/latex-dev/required/l3kernel/interface3.pdf diff --git a/macros/latex-dev/required/l3kernel/interface3.tex b/macros/latex-dev/required/l3kernel/interface3.tex index 613eb673b0..9db72db2f0 100644 --- a/macros/latex-dev/required/l3kernel/interface3.tex +++ b/macros/latex-dev/required/l3kernel/interface3.tex @@ -58,7 +58,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-09-10} \pagenumbering{roman} \maketitle diff --git a/macros/latex-dev/required/l3kernel/l3basics.dtx b/macros/latex-dev/required/l3kernel/l3basics.dtx index 4c00ec0032..48a4371d98 100644 --- a/macros/latex-dev/required/l3kernel/l3basics.dtx +++ b/macros/latex-dev/required/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -1151,10 +1151,9 @@ % argument (a single token denoted by |N|) is still free for definition. % It would be used in constructions like % \begin{quote} -% |\bool_if:nTF {| \\ -% \verb" \cs_if_free_p:N \l_tmpz_tl || \cs_if_free_p:N \g_tmpz_tl " \\ -% |}| -% \Arg{true code} \Arg{false code} +% "\bool_if:nTF" \\ +% " { \cs_if_free_p:N \l_tmpz_tl || \cs_if_free_p:N \g_tmpz_tl }" \\ +% " "\Arg{true code} \Arg{false code} % \end{quote} % % For each predicate defined, a \enquote{branching conditional} diff --git a/macros/latex-dev/required/l3kernel/l3bitset.dtx b/macros/latex-dev/required/l3kernel/l3bitset.dtx index 22cf7dc1f7..6c7dddd9c0 100644 --- a/macros/latex-dev/required/l3kernel/l3bitset.dtx +++ b/macros/latex-dev/required/l3kernel/l3bitset.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3bootstrap.dtx b/macros/latex-dev/required/l3kernel/l3bootstrap.dtx index e17c056909..3a2d2c2477 100644 --- a/macros/latex-dev/required/l3kernel/l3bootstrap.dtx +++ b/macros/latex-dev/required/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3box.dtx b/macros/latex-dev/required/l3kernel/l3box.dtx index 5d5aa54027..7ee8f93e2e 100644 --- a/macros/latex-dev/required/l3kernel/l3box.dtx +++ b/macros/latex-dev/required/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -906,9 +906,9 @@ % \begin{syntax} % \cs{box_set_trim:Nnnnn} \meta{box} \Arg{left} \Arg{bottom} \Arg{right} \Arg{top} % \end{syntax} -% Adjusts the bounding box of the \meta{box} \meta{left} is removed from +% Adjusts the bounding box of the \meta{box}: \meta{left} is removed from % the left-hand edge of the bounding box, \meta{right} from the right-hand -% edge and so fourth. All adjustments are \meta{dim exprs}. +% edge, and so forth. All adjustments are \meta{dim exprs}. % Material outside of the bounding box is still displayed in the output % unless \cs{box_set_clipped:N} is subsequently applied. % The updated \meta{box} is an diff --git a/macros/latex-dev/required/l3kernel/l3cctab.dtx b/macros/latex-dev/required/l3kernel/l3cctab.dtx index a8c5232b3e..7fbab7c75a 100644 --- a/macros/latex-dev/required/l3kernel/l3cctab.dtx +++ b/macros/latex-dev/required/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3clist.dtx b/macros/latex-dev/required/l3kernel/l3clist.dtx index ebbfa29ddc..8f2da5d029 100644 --- a/macros/latex-dev/required/l3kernel/l3clist.dtx +++ b/macros/latex-dev/required/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -324,8 +324,10 @@ % { % \clist_remove_all:Nn, \clist_remove_all:cn, % \clist_remove_all:NV, \clist_remove_all:cV, +% \clist_remove_all:Ne, \clist_remove_all:ce, % \clist_gremove_all:Nn, \clist_gremove_all:cn, -% \clist_gremove_all:NV, \clist_gremove_all:cV +% \clist_gremove_all:NV, \clist_gremove_all:cV, +% \clist_gremove_all:Ne, \clist_gremove_all:ce % } % \begin{syntax} % \cs{clist_remove_all:Nn} \meta{clist~var} \Arg{item} @@ -350,7 +352,7 @@ % Reverses the order of items stored in the \meta{clist~var}. % \end{function} % -% \begin{function}[added = 2014-07-18]{\clist_reverse:n} +% \begin{function}[added = 2014-07-18, EXP]{\clist_reverse:n} % \begin{syntax} % \cs{clist_reverse:n} \Arg{comma list} % \end{syntax} @@ -1429,13 +1431,15 @@ % \begin{macro} % { % \clist_remove_all:Nn, \clist_remove_all:cn, -% \clist_remove_all:NV, \clist_remove_all:cV +% \clist_remove_all:NV, \clist_remove_all:cV, +% \clist_remove_all:Ne, \clist_remove_all:ce % } % \UnitTested % \begin{macro} % { % \clist_gremove_all:Nn, \clist_gremove_all:cn, -% \clist_gremove_all:NV, \clist_gremove_all:cV +% \clist_gremove_all:NV, \clist_gremove_all:cV, +% \clist_gremove_all:Ne, \clist_gremove_all:ce % } % \UnitTested % \begin{macro}{\@@_remove_all:NNNn} @@ -1509,8 +1513,8 @@ \cs_new:Npn \@@_remove_all: { \exp_after:wN \@@_remove_all:w \@@_tmp:w , } \cs_new:Npn \@@_remove_all:w #1 , \s_@@_mark , #2 , { \exp_not:n {#1} } -\cs_generate_variant:Nn \clist_remove_all:Nn { c , NV , cV } -\cs_generate_variant:Nn \clist_gremove_all:Nn { c , NV , cV } +\cs_generate_variant:Nn \clist_remove_all:Nn { c , NV , cV , Ne , ce } +\cs_generate_variant:Nn \clist_gremove_all:Nn { c , NV , cV , Ne , ce } % \end{macrocode} % \end{macro} % \end{macro} diff --git a/macros/latex-dev/required/l3kernel/l3coffins.dtx b/macros/latex-dev/required/l3kernel/l3coffins.dtx index 76bbc78d99..be982e324a 100644 --- a/macros/latex-dev/required/l3kernel/l3coffins.dtx +++ b/macros/latex-dev/required/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3color.dtx b/macros/latex-dev/required/l3kernel/l3color.dtx index f9383d0404..0fafd8ef24 100644 --- a/macros/latex-dev/required/l3kernel/l3color.dtx +++ b/macros/latex-dev/required/l3kernel/l3color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -103,7 +103,7 @@ % \begin{itemize} % \item \texttt{Gray} Grayscale color, with a single axis running from % $0$ (fully black) to $15$ (fully white) -% \item \texttt{hsb} Hue-saturation-brightness color, with three axes,all +% \item \texttt{hsb} Hue-saturation-brightness color, with three axes, all % real values in the range $[0,1]$ for hue saturation and brightness % \item \texttt{Hsb} Hue-saturation-brightness color, with three axes, integer % in the range $[0,360]$ for hue, real values in the range $[0,1]$ for @@ -325,7 +325,7 @@ % \end{function} % % \begin{variable}[module = color]{color.sc} -% When using \texttt{dvips}, this PostScript variables hold the stroke color. +% When using \texttt{dvips}, this PostScript variable holds the stroke color. % \end{variable} % % \subsection{Coloring math mode material} @@ -406,20 +406,20 @@ % % \begin{function}{\color_export:nnN} % \begin{syntax} -% \cs{color_export:nnN} \Arg{color expression} \Arg{format} \Arg{tl} +% \cs{color_export:nnN} \Arg{color expression} \Arg{format} \meta{tl var} % \end{syntax} % Parses the \meta{color expression} as described earlier, % then converts to the \meta{format} specified and assigns the data to the -% \meta{tl}. +% \meta{tl var}. % \end{function} % % \begin{function}{\color_export:nnnN} % \begin{syntax} -% \cs{color_export:nnnN} \Arg{model} \Arg{value(s)} \Arg{format} \Arg{tl} +% \cs{color_export:nnnN} \Arg{model} \Arg{value(s)} \Arg{format} \meta{tl var} % \end{syntax} % Expresses the combination of \meta{model} and \meta{value(s)} in an % internal representation, then converts to the \meta{format} specified and -% assigns the data to the \meta{tl}. +% assigns the data to the \meta{tl var}. % \end{function} % % \section{Creating new color models} @@ -495,7 +495,7 @@ % % Color profiles are used to ensure color accuracy by linking to collaboration. % Applying a profile can be used to standardise color which is otherwise -% device-dependence. +% device-dependent. % % \begin{function}[added = 2021-02-23]{\color_profile_apply:nn} % \begin{syntax} @@ -697,14 +697,14 @@ % \begin{macro}{\@@_convert:nnnN, \@@_convert:nVnN, \@@_convert:nnVN} % \begin{macro}[EXP] % { -% \@@_convert_gray_gray:w -% \@@_convert_gray_rgb:w -% \@@_convert_gray_cmyk:w -% \@@_convert_cmyk_gray:w -% \@@_convert_cmyk_rgb:w -% \@@_convert_cmyk_cmyk:w -% \@@_convert_rgb_gray:w -% \@@_convert_rgb_rgb:w +% \@@_convert_gray_gray:w, +% \@@_convert_gray_rgb:w, +% \@@_convert_gray_cmyk:w, +% \@@_convert_cmyk_gray:w, +% \@@_convert_cmyk_rgb:w, +% \@@_convert_cmyk_cmyk:w, +% \@@_convert_rgb_gray:w, +% \@@_convert_rgb_rgb:w, % \@@_convert_rgb_cmyk:w % } % \begin{macro}[EXP]{\@@_convert_rgb_cmyk:nnn} diff --git a/macros/latex-dev/required/l3kernel/l3debug.dtx b/macros/latex-dev/required/l3kernel/l3debug.dtx index 7fb64a8c13..496004c34b 100644 --- a/macros/latex-dev/required/l3kernel/l3debug.dtx +++ b/macros/latex-dev/required/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -69,7 +69,7 @@ % % Standard file identification. % \begin{macrocode} -\ProvidesExplFile{l3debug.def}{2024-05-08}{}{L3 Debugging support} +\ProvidesExplFile{l3debug.def}{2024-09-10}{}{L3 Debugging support} % \end{macrocode} % % \begin{variable}{\s_@@_stop} diff --git a/macros/latex-dev/required/l3kernel/l3deprecation.dtx b/macros/latex-dev/required/l3kernel/l3deprecation.dtx index d947bb4599..8f36b2075f 100644 --- a/macros/latex-dev/required/l3kernel/l3deprecation.dtx +++ b/macros/latex-dev/required/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -505,10 +505,10 @@ { \text_uppercase:nn {#1} {#2} } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n } \cs_new:Npn \tl_mixed_case:n #1 - { \text_titlecase_first:n {#1} } + { \text_titlecase_first:n { \text_lowercase:n {#1} } } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:nn } \cs_new:Npn \tl_mixed_case:nn #1#2 - { \text_titlecase_first:nn {#1} {#2} } + { \text_titlecase_first:nn {#1} { \text_lowercase:n {#2} } } % \end{macrocode} % \end{macro} % @@ -571,7 +571,7 @@ % \char_lower_case:N, \char_upper_case:N, % \char_mixed_case:Nn, \char_fold_case:N, % \char_str_lower_case:N, \char_str_upper_case:N, -% \char_str_mixed_case:Nn, \char_str_fold_case:N, +% \char_str_mixed_case:N, \char_str_fold_case:N, % } % \begin{macrocode} \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n } diff --git a/macros/latex-dev/required/l3kernel/l3doc.dtx b/macros/latex-dev/required/l3kernel/l3doc.dtx index 24efea50c7..9268f85744 100644 --- a/macros/latex-dev/required/l3kernel/l3doc.dtx +++ b/macros/latex-dev/required/l3kernel/l3doc.dtx @@ -71,7 +71,7 @@ and all files in that bundle must be distributed together. % This isn't included in the typeset documentation because it's a bit % ugly: %<*class> -\ProvidesExplClass{l3doc}{2024-05-08}{} +\ProvidesExplClass{l3doc}{2024-09-10}{} {L3 Experimental documentation class} %</class> % \fi @@ -84,7 +84,7 @@ and all files in that bundle must be distributed together. % require you to do updates, if the class changes.}} % % \author{\Team} -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % \maketitle % \tableofcontents % @@ -1618,7 +1618,7 @@ and all files in that bundle must be distributed together. % % \subsection{Design} % -% Increase the text width slightly so that width the standard fonts +% Increase the text width slightly so that with the standard fonts % 72~columns of code may appear in a \env{macrocode} environment. % Increase the marginpar width slightly, for long command names. And % increase the left margin by a similar amount. @@ -2160,10 +2160,18 @@ and all files in that bundle must be distributed together. % % \begin{macro}{\@@_names_get_seq:nN} % The argument~|#1| (argument of a |function| or |macro| environment) -% has catcodes $10$ (space), $12$ (other) and $13$ (active). Sanitize -% catcodes. If the |verb| option was used, output a one-item -% sequence. Otherwise, remove any \enquote{\%} character at the -% beginning of a line. Remove tabs and newlines. Finally, convert +% has catcodes $10$ (space), $12$ (other) and $13$ (active), and +% since \LaTeX{} 2024-06-01 also macro \cs{obeyedline} in replacement +% of active |^^M| tokens (due to the revised behavior of |+v| +% argument type in |ltcmd|). +% If the |verb| option was used, sanitize catcodes and output +% a one-item sequence. +% Otherwise, remove any \enquote{\%} character at the beginning of +% a line using new end-of-line marker \cs{obeyedline}. Remove any +% remaining \cs{obeyedline}. Then sanitize catcodes so we keep those +% verbatim \cs{obeyedline} typed in by user. Remove remaining +% \enquote{\%} character at the beginning of a line using traditional +% |^^M| marker. Remove tabs and newlines. Finally, convert % |_@@| and |@@| to |__|\meta{module name} (if it is non-empty). At % this point, \cs{l_@@_tmpa_tl} contains a comma-delimited list of % names, where |@| and~|_| have category code letter. Turn it to a @@ -2172,17 +2180,20 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \cs_new_protected:Npn \@@_names_get_seq:nN #1#2 { - \__kernel_tl_set:Nx \l_@@_tmpa_tl { \tl_to_str:n {#1} } \bool_if:NTF \l_@@_names_verb_bool { \seq_clear:N #2 - \seq_put_right:NV #2 \l_@@_tmpa_tl + \seq_put_right:No #2 { \tl_to_str:n {#1} } } { + \tl_set:Nn \l_@@_tmpa_tl {#1} \tl_remove_all:Ne \l_@@_tmpa_tl - { \iow_char:N \^^M \c_percent_str } + { \exp_not:N \obeyedline \c_percent_str } + \tl_remove_all:Ne \l_@@_tmpa_tl + { \exp_not:N \obeyedline } + \__kernel_tl_set:Nx \l_@@_tmpa_tl { \tl_to_str:N \l_@@_tmpa_tl } \tl_remove_all:Ne \l_@@_tmpa_tl - { \token_to_str:N \obeyedline \c_space_tl \c_percent_str } + { \iow_char:N \^^M \c_percent_str } \tl_remove_all:Ne \l_@@_tmpa_tl { \tl_to_str:n { ^ ^ A } } \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^I } \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^M } @@ -2529,7 +2540,7 @@ and all files in that bundle must be distributed together. \cs_new_protected:Npn \@@_function_typeset_stop: { \par - \dim_set:Nn \prevdepth { \box_dp:N \l_@@_descr_coffin } + \dim_set:Nn \prevdepth { \coffin_dp:N \l_@@_descr_coffin } \allowbreak } % \end{macrocode} @@ -2594,7 +2605,7 @@ and all files in that bundle must be distributed together. \dim_zero:N \l_@@_trial_width_dim \hcoffin_set:Nn \l_@@_functions_coffin { \@@_typeset_functions: } \dim_set:Nn \l_@@_trial_width_dim - { \box_wd:N \l_@@_functions_coffin } + { \coffin_wd:N \l_@@_functions_coffin } \bool_set:Nn \l_@@_long_name_bool { \dim_compare_p:nNn \l_@@_trial_width_dim > \marginparwidth } } @@ -2643,7 +2654,7 @@ and all files in that bundle must be distributed together. \coffin_join:NnnNnnnn \l_@@_output_coffin {l} {b} \l_@@_descr_coffin {l} {t} - {0.75\marginparwidth + \marginparsep} {-\medskipamount} + {\marginparwidth + \marginparsep} {-\medskipamount} \coffin_typeset:Nnnnn \l_@@_output_coffin {\l_@@_descr_coffin-l} {\l_@@_descr_coffin-t} {0pt} {0pt} @@ -2695,8 +2706,7 @@ and all files in that bundle must be distributed together. % \end{macro} % % ^^A TODO: collect all index targets from a given function environment in a box and stick it at the top. -% \begin{macro} -% {\@@_typeset_function_block:nN, \@@_typeset_function_block:eN} +% \begin{macro}{\@@_typeset_function_block:nN} % \begin{macro}{\@@_function_index:n, \@@_function_index:e} % |#1| is a csname, |#2| a boolean indicating whether to add |TF| or not. % \begin{macrocode} @@ -2712,7 +2722,6 @@ and all files in that bundle must be distributed together. { \@@_typeset_variant_list:nN {#1} #2 } \\ } -\cs_generate_variant:Nn \@@_typeset_function_block:nN { e } \cs_new_protected:Npn \@@_function_index:n #1 { \seq_gput_right:Nn \g_doc_functions_seq {#1} @@ -2840,7 +2849,7 @@ and all files in that bundle must be distributed together. { \textwidth \bool_if:NT \l_@@_long_name_bool - { + 0.75 \marginparwidth - \l_@@_trial_width_dim } + { + \marginparwidth - \l_@@_trial_width_dim } } \hbox_gset:Nw \g_@@_syntax_box \small \ttfamily @@ -3213,7 +3222,7 @@ and all files in that bundle must be distributed together. % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_print_macroname_aux:nn} +% \begin{macro}{\@@_print_macroname_aux:nn, \@@_print_macroname_aux:on} % |#1| is prefix, |#2| is optional |TF| suffix. % \begin{macrocode} \cs_new_protected:Npn \@@_print_macroname_aux:nn #1#2 @@ -4254,7 +4263,6 @@ and all files in that bundle must be distributed together. {#2} \l_@@_index_internal_bool } -\cs_generate_variant:Nn \@@_special_index:nn { o } % \end{macrocode} % \end{macro} % diff --git a/macros/latex-dev/required/l3kernel/l3doc.pdf b/macros/latex-dev/required/l3kernel/l3doc.pdf Binary files differindex 8ebd6f5caf..71c30326ad 100644 --- a/macros/latex-dev/required/l3kernel/l3doc.pdf +++ b/macros/latex-dev/required/l3kernel/l3doc.pdf diff --git a/macros/latex-dev/required/l3kernel/l3docstrip.dtx b/macros/latex-dev/required/l3kernel/l3docstrip.dtx index a3b62db0af..c7664dbcce 100644 --- a/macros/latex-dev/required/l3kernel/l3docstrip.dtx +++ b/macros/latex-dev/required/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3docstrip.pdf b/macros/latex-dev/required/l3kernel/l3docstrip.pdf Binary files differindex 019b64c130..bdd6de971b 100644 --- a/macros/latex-dev/required/l3kernel/l3docstrip.pdf +++ b/macros/latex-dev/required/l3kernel/l3docstrip.pdf diff --git a/macros/latex-dev/required/l3kernel/l3expan.dtx b/macros/latex-dev/required/l3kernel/l3expan.dtx index 7b859acaa5..376d19bf7e 100644 --- a/macros/latex-dev/required/l3kernel/l3expan.dtx +++ b/macros/latex-dev/required/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -75,8 +75,8 @@ % If \cs{seq_gpush:No} was not defined it could be coded in the following way: % \begin{verbatim} % \exp_args:NNo \seq_gpush:Nn -% \g_file_name_stack -% { \l_tmpa_tl } +% \g_file_name_stack +% { \l_tmpa_tl } % \end{verbatim} % In other words, the first argument to \cs{exp_args:NNo} is the base % function and the other arguments are preprocessed and then passed to diff --git a/macros/latex-dev/required/l3kernel/l3file.dtx b/macros/latex-dev/required/l3kernel/l3file.dtx index ba460e3fee..b08d59abce 100644 --- a/macros/latex-dev/required/l3kernel/l3file.dtx +++ b/macros/latex-dev/required/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -718,8 +718,10 @@ % \cs{file_if_exist_p:n} \Arg{file name} % \cs{file_if_exist:nTF} \Arg{file name} \Arg{true code} \Arg{false code} % \end{syntax} -% Tests if \meta{file name} is found in the path as detailed for -% \cs{file_if_exist:nTF}. +% Expands the argument of the \meta{file name} to give a string, then +% searches for this string using the current \TeX{} search +% path and the additional paths controlled by +% \cs{l_file_search_path_seq}. % \end{function} % % \subsection{Information about files and file contents} @@ -809,7 +811,6 @@ % Sets the \meta{tl var} to the result of applying % \cs{file_size:n} to the \meta{file}. If the file is not found, % the \meta{tl var} will be set to \cs{q_no_value}. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[rEXP, added = 2019-09-03] @@ -825,7 +826,6 @@ % \meta{minute}\meta{second}\meta{offset}, where the latter may be |Z| % (UTC) or \meta{plus-minus}\meta{hours}|'|\meta{minutes}|'|. % When the file is not found, the result of expansion is empty. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16] @@ -836,7 +836,6 @@ % Sets the \meta{tl var} to the result of applying % \cs{file_timestamp:n} to the \meta{file}. If the file is not found, % the \meta{tl var} will be set to \cs{q_no_value}. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[added = 2019-05-13, updated = 2019-09-20, pTF, EXP] @@ -847,11 +846,11 @@ % \file_compare_timestamp:VNV % } % \begin{syntax} -% \cs{file_compare_timestamp_p:nNn} \Arg{file-1} \meta{comparator} \Arg{file-2} -% \cs{file_compare_timestamp:nNnTF} \Arg{file-1} \meta{comparator} \Arg{file-2} \Arg{true code} \Arg{false code} +% \cs{file_compare_timestamp_p:nNn} \Arg{file-1} \meta{relation} \Arg{file-2} +% \cs{file_compare_timestamp:nNnTF} \Arg{file-1} \meta{relation} \Arg{file-2} \Arg{true code} \Arg{false code} % \end{syntax} % Compares the file stamps on the two \meta{files} as indicated by -% the \meta{comparator}, and inserts either the \meta{true code} +% the \meta{relation}, and inserts either the \meta{true code} % or \meta{false case} as required. A file which is not found % is treated as older than any file which is found. This allows for % example the construct @@ -863,7 +862,6 @@ % \end{verbatim} % to work when the derived file is entirely absent. The timestamp % of two absent files is regarded as different. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[noTF, updated = 2019-02-16] diff --git a/macros/latex-dev/required/l3kernel/l3flag.dtx b/macros/latex-dev/required/l3kernel/l3flag.dtx index bf7776f449..5b1794b3ad 100644 --- a/macros/latex-dev/required/l3kernel/l3flag.dtx +++ b/macros/latex-dev/required/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-assign.dtx b/macros/latex-dev/required/l3kernel/l3fp-assign.dtx index 9ef1944a99..e7a618d598 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-assign.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-assign.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % \maketitle % % \begin{documentation} diff --git a/macros/latex-dev/required/l3kernel/l3fp-aux.dtx b/macros/latex-dev/required/l3kernel/l3fp-aux.dtx index f788b85df9..aeab995210 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-aux.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-basics.dtx b/macros/latex-dev/required/l3kernel/l3fp-basics.dtx index 83c9cc87fa..9056f9e3ff 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-basics.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-basics.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-convert.dtx b/macros/latex-dev/required/l3kernel/l3fp-convert.dtx index e42fb383fe..cc0112bf03 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-convert.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-expo.dtx b/macros/latex-dev/required/l3kernel/l3fp-expo.dtx index 31eb49093d..4ef3b85c07 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-expo.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-expo.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-extended.dtx b/macros/latex-dev/required/l3kernel/l3fp-extended.dtx index e35f0ae55e..4ebbbb3f09 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-extended.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-extended.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-functions.dtx b/macros/latex-dev/required/l3kernel/l3fp-functions.dtx index e7667eaa9b..13753cbde4 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-functions.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-functions.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-logic.dtx b/macros/latex-dev/required/l3kernel/l3fp-logic.dtx index 49ad2b1c02..0ab92fb5ff 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-logic.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-logic.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-parse.dtx b/macros/latex-dev/required/l3kernel/l3fp-parse.dtx index 7999be7966..fb9a07fbec 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-parse.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-parse.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-random.dtx b/macros/latex-dev/required/l3kernel/l3fp-random.dtx index 2a3d00cb58..7832c58792 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-random.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-random.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-round.dtx b/macros/latex-dev/required/l3kernel/l3fp-round.dtx index b96d496b22..1ea74e51dd 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-round.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-symbolic.dtx b/macros/latex-dev/required/l3kernel/l3fp-symbolic.dtx index cdb7383949..cb3e2e2655 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-symbolic.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-symbolic.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-traps.dtx b/macros/latex-dev/required/l3kernel/l3fp-traps.dtx index bca459effa..b73d27a304 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-traps.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-traps.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % \maketitle % % \begin{documentation} diff --git a/macros/latex-dev/required/l3kernel/l3fp-trig.dtx b/macros/latex-dev/required/l3kernel/l3fp-trig.dtx index 8e8bc1cbf8..d9c9db6071 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-trig.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-trig.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp-types.dtx b/macros/latex-dev/required/l3kernel/l3fp-types.dtx index 9764606e83..4e0d024d4f 100644 --- a/macros/latex-dev/required/l3kernel/l3fp-types.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp-types.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3fp.dtx b/macros/latex-dev/required/l3kernel/l3fp.dtx index d49d2431cb..ef02d0f816 100644 --- a/macros/latex-dev/required/l3kernel/l3fp.dtx +++ b/macros/latex-dev/required/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -773,7 +773,7 @@ % The result may contain other functions, which are % then replaced by their results if they have any. For instance, % \begin{quote} -% \cs{fp_new_function:n} |{ foo }| \\ +% \cs{fp_new_function:n} |{ npow }| \\ % \cs{fp_set_function:nnn} |{ npow } { a,b } { a**b }| \\ % \cs{fp_show:n} |{ npow(16,0.25) } }| % \end{quote} diff --git a/macros/latex-dev/required/l3kernel/l3fparray.dtx b/macros/latex-dev/required/l3kernel/l3fparray.dtx index 8b8026a6b8..8ce29ecaf8 100644 --- a/macros/latex-dev/required/l3kernel/l3fparray.dtx +++ b/macros/latex-dev/required/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3int.dtx b/macros/latex-dev/required/l3kernel/l3int.dtx index c4e8408af2..0d9b0137de 100644 --- a/macros/latex-dev/required/l3kernel/l3int.dtx +++ b/macros/latex-dev/required/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -100,21 +100,6 @@ % restricted-expandable functions can both be used, and \cs{exp_not:n} % and its variants have no effect while \cs{exp_not:N} may incorrectly % interrupt the expression. -% \begin{texnote} -% Exactly two expansions are needed to evaluate \cs{int_eval:n}. -% The result is \emph{not} an \meta{internal integer}, and therefore -% should be terminated by a space if used in \cs{int_value:w} or in -% a \TeX{}-style integer assignment. -% -% As all \TeX{} integers, integer operands can also be: -% \tn{value}\Arg{\LaTeXe{} counter}; dimension or skip variables, -% converted to integers in~\texttt{sp}; the character code of some -% character given as \texttt{`}\meta{char} or -% \texttt{`\textbackslash}\meta{char}; octal numbers given as -% \texttt{'} followed by digits from \texttt{0} to \texttt{7}; or -% hexadecimal numbers given as |"| followed by digits and upper case -% letters from \texttt{A} to~\texttt{F}. -% \end{texnote} % % \begin{function}[EXP]{\int_eval:n} % \begin{syntax} @@ -124,43 +109,7 @@ % input stream as an integer denotation: for positive results an % explicit sequence of decimal digits not starting with~\texttt{0}, % for negative results \texttt{-}~followed by such a sequence, and -% \texttt{0}~for zero. The \meta{int expr} should consist, -% after expansion, of \texttt{+}, \texttt{-}, \texttt{*}, \texttt{/}, -% \texttt{(}, \texttt{)} and of course integer operands. The result -% is calculated by applying standard mathematical rules with the -% following peculiarities: -% \begin{itemize} -% \item \texttt{/} denotes division rounded to the closest integer with -% ties rounded away from zero; -% \item there is an error and the overall expression evaluates to zero -% whenever the absolute value of any intermediate result exceeds -% $2^{31}-1$, except in the case of scaling operations -% $a$\texttt{*}$b$\texttt{/}$c$, for which $a$\texttt{*}$b$ may be -% arbitrarily large; -% \item parentheses may not appear after unary \texttt{+} or -% \texttt{-}, namely placing \texttt{+(} or \texttt{-(} at the start -% of an expression or after \texttt{+}, \texttt{-}, \texttt{*}, -% \texttt{/} or~\texttt{(} leads to an error. -% \end{itemize} -% Each integer operand can be either an integer variable (with no need -% for \cs{int_use:N}) or an integer denotation. For example both -% \begin{verbatim} -% \int_eval:n { 5 + 4 * 3 - ( 3 + 4 * 5 ) } -% \end{verbatim} -% and -% \begin{verbatim} -% \tl_new:N \l_my_tl -% \tl_set:Nn \l_my_tl { 5 } -% \int_new:N \l_my_int -% \int_set:Nn \l_my_int { 4 } -% \int_eval:n { \l_my_tl + \l_my_int * 3 - ( 3 + 4 * 5 ) } -% \end{verbatim} -% evaluate to $-6$ because \cs[no-index]{l_my_tl} expands to the -% integer denotation~|5|. As the \meta{int expr} is fully -% expanded from left to right during evaluation, fully expandable and -% restricted-expandable functions can both be used, and \cs{exp_not:n} -% and its variants have no effect while \cs{exp_not:N} may incorrectly -% interrupt the expression. +% \texttt{0}~for zero. % \begin{texnote} % Exactly two expansions are needed to evaluate \cs{int_eval:n}. % The result is \emph{not} an \meta{internal integer}, and therefore @@ -462,7 +411,8 @@ % \end{syntax} % This function evaluates the \meta{test int expr} and % compares this in turn to each of the -% \meta{int expr cases}. If the two are equal then the +% \meta{int expr case}s until a match is found. +% If the two are equal then the % associated \meta{code} is left in the input stream % and other cases are discarded. If any of the % cases are matched, the \meta{true code} is also inserted into the @@ -481,6 +431,10 @@ % { No idea! } % \end{verbatim} % leaves \enquote{\texttt{Medium}} in the input stream. +% Since evaluation of the test expressions stops at the first +% successful case, the order of possible matches should normally +% be that the most likely are earlier: this will reduce the average +% steps required to complete expansion. % \end{function} % % \begin{function}[EXP,pTF]{\int_if_even:n, \int_if_odd:n} @@ -909,7 +863,6 @@ % \end{syntax} % Evaluates the two \meta{int expr}s and produces a % pseudo-random number between the two (with bounds included). -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[EXP, added = 2018-05-05]{\int_rand:n} @@ -918,7 +871,6 @@ % \end{syntax} % Evaluates the \meta{int expr} then produces a % pseudo-random number between $1$ and the \meta{int expr} (included). -% This is not available in older versions of \XeTeX{}. % \end{function} % % \section{Viewing integers} diff --git a/macros/latex-dev/required/l3kernel/l3intarray.dtx b/macros/latex-dev/required/l3kernel/l3intarray.dtx index 20e6219ef8..0320579e94 100644 --- a/macros/latex-dev/required/l3kernel/l3intarray.dtx +++ b/macros/latex-dev/required/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3kernel-functions.dtx b/macros/latex-dev/required/l3kernel/l3kernel-functions.dtx index 6779a3ca6c..ab12634783 100644 --- a/macros/latex-dev/required/l3kernel/l3kernel-functions.dtx +++ b/macros/latex-dev/required/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3keys.dtx b/macros/latex-dev/required/l3kernel/l3keys.dtx index f03c628a63..4535a6e845 100644 --- a/macros/latex-dev/required/l3kernel/l3keys.dtx +++ b/macros/latex-dev/required/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -649,15 +649,13 @@ % { key } % Name of choice key % { choice-a , choice-b , choice-c } % Valid choices % { \exp_not:n {#1} } % Invalid choice given -% % -% % % } % \end{verbatim} % % Multiple choices are created in a very similar manner to mutually-exclusive % choices, using the properties \texttt{.multichoice:} and % \texttt{.multichoices:nn}. As with mutually exclusive choices, multiple -% choices are define as sub-keys. Thus both +% choices are defined as sub-keys. Thus both % \begin{verbatim} % \keys_define:nn { mymodule } % { @@ -792,36 +790,6 @@ % } % \end{verbatim} % -% \begin{function}[added = 2011-08-23, updated = 2019-01-29] -% { -% \keys_set_known:nn, \keys_set_known:nV, -% \keys_set_known:nv, \keys_set_known:ne, -% \keys_set_known:no, -% \keys_set_known:nnN, \keys_set_known:nVN, -% \keys_set_known:nvN, \keys_set_known:neN, -% \keys_set_known:noN, -% \keys_set_known:nnnN, \keys_set_known:nVnN, -% \keys_set_known:nvnN, \keys_set_known:nenN, -% \keys_set_known:nonN -% } -% \begin{syntax} -% \cs{keys_set_known:nn} \Arg{module} \Arg{keyval list} -% \cs{keys_set_known:nnN} \Arg{module} \Arg{keyval list} \meta{tl} -% \cs{keys_set_known:nnnN} \Arg{module} \Arg{keyval list} \Arg{root} \meta{tl} -% \end{syntax} -% These functions set keys which are known for the \meta{module}, and -% simply ignore other keys. The \cs{keys_set_known:nn} function parses the -% \meta{keyval list}, and sets those keys which are defined for -% \meta{module}. Any keys which are unknown are not processed further by -% the parser. In addition, \cs{keys_set_known:nnN} stores the key--value -% pairs in the \meta{tl} in comma-separated form (\emph{i.e.}~an edited -% version of the \meta{keyval list}). When a \meta{root} is given -% (\cs{keys_set_known:nnnN}), the key--value entries are returned -% relative to this point in the key tree. When it is absent, only the -% key name and value are provided. The correct list is returned by -% nested calls. -% \end{function} -% % \section{Selective key setting} % \label{sec:l3keys:selective} % @@ -862,33 +830,37 @@ % groups to be made \enquote{active}, or by marking one or more groups to % be ignored in key setting. % -% \begin{function}[added = 2024-01-10] +% \begin{function}[added = 2011-08-23, updated = 2019-01-29] % { -% \keys_set_exclude_groups:nnn, \keys_set_exclude_groups:nnV, -% \keys_set_exclude_groups:nnv, \keys_set_exclude_groups:nno, -% \keys_set_exclude_groups:nnnN, \keys_set_exclude_groups:nnVN, -% \keys_set_exclude_groups:nnvN, \keys_set_exclude_groups:nnoN, -% \keys_set_exclude_groups:nnnnN, \keys_set_exclude_groups:nnVnN, -% \keys_set_exclude_groups:nnvnN, \keys_set_exclude_groups:nnonN, +% \keys_set_known:nn, \keys_set_known:nV, +% \keys_set_known:nv, \keys_set_known:ne, +% \keys_set_known:no, +% \keys_set_known:nnN, \keys_set_known:nVN, +% \keys_set_known:nvN, \keys_set_known:neN, +% \keys_set_known:noN, +% \keys_set_known:nnnN, \keys_set_known:nVnN, +% \keys_set_known:nvnN, \keys_set_known:nenN, +% \keys_set_known:nonN % } % \begin{syntax} -% \cs{keys_set_exclude_groups:nnn} \Arg{module} \Arg{groups} \Arg{keyval list} -% \cs{keys_set_exclude_groups:nnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{tl} -% \cs{keys_set_exclude_groups:nnnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{root} \meta{tl} +% \cs{keys_set_known:nn} \Arg{module} \Arg{keyval list} +% \cs{keys_set_known:nnN} \Arg{module} \Arg{keyval list} \meta{tl~var} +% \cs{keys_set_known:nnnN} \Arg{module} \Arg{keyval list} \Arg{root} \meta{tl~var} % \end{syntax} -% Sets keys by excluding those in the specified \meta{groups}. -% The \meta{groups} are -% given as a comma-separated list. Unknown keys are not assigned to any -% group and are thus always set. The key--value pairs for each -% key which is filtered out are stored in the \meta{tl} in a -% comma-separated form (\emph{i.e.}~an edited version of the \meta{keyval -% list}). The \cs{keys_set_exclude_groups:nnn} version skips this stage. -% -% Use of \cs{keys_set_exclude_groups:nnnN} can be nested, with the correct residual -% \meta{keyval list} returned at each stage. In the version which takes -% a \meta{root} argument, the key list is returned relative to that point -% in the key tree. In the cases without a \meta{root} argument, only -% the key names and values are returned. +% These functions set keys which are known for the \meta{module}, and +% simply ignore other keys. The \cs{keys_set_known:nn} function parses the +% \meta{keyval list}, and sets those keys which are defined for +% \meta{module}. Any keys which are unknown are not processed further by +% the parser. +% +% In addition, \cs{keys_set_known:nnN} and \cs{keys_set_known:nnnN} +% store the key--value pairs for unknown keys in the \meta{tl~var} +% in comma-separated form (\emph{i.e.}~an edited version of the +% \meta{keyval list}). When a \meta{root} is given +% (\cs{keys_set_known:nnnN}), the key--value entries are returned +% relative to this point in the key tree. When it is absent, only the +% key name and value are provided. The correct list is returned by +% nested calls. % \end{function} % % \begin{function}[added = 2013-07-14, updated = 2024-05-08] @@ -902,25 +874,62 @@ % } % \begin{syntax} % \cs{keys_set_groups:nnn} \Arg{module} \Arg{groups} \Arg{keyval list} +% \cs{keys_set_groups:nnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{tl~var} +% \cs{keys_set_groups:nnnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \Arg{root} \meta{tl~var} +% \end{syntax} +% These functions activate key selection in an \enquote{opt-in} sense: +% only keys assigned to one or more of the \meta{groups} specified are set. +% The \meta{groups} are given as a comma-separated list. Unknown keys are +% not assigned to any group and are thus never set. +% +% In addition, \cs{keys_set_groups:nnnN} and \cs{keys_set_groups:nnnnN} +% store the key--value pairs for skipped keys in the \meta{tl~var} +% in comma-separated form (\emph{i.e.}~an edited version of the +% \meta{keyval list}). When a \meta{root} is given +% (\cs{keys_set_groups:nnnnN}), the key--value entries are returned +% relative to this point in the key tree. When it is absent, only the +% key name and value are provided. The correct list is returned by +% nested calls. +% \end{function} +% +% \begin{function}[added = 2024-01-10] +% { +% \keys_set_exclude_groups:nnn, \keys_set_exclude_groups:nnV, +% \keys_set_exclude_groups:nnv, \keys_set_exclude_groups:nno, +% \keys_set_exclude_groups:nnnN, \keys_set_exclude_groups:nnVN, +% \keys_set_exclude_groups:nnvN, \keys_set_exclude_groups:nnoN, +% \keys_set_exclude_groups:nnnnN, \keys_set_exclude_groups:nnVnN, +% \keys_set_exclude_groups:nnvnN, \keys_set_exclude_groups:nnonN, +% } +% \begin{syntax} +% \cs{keys_set_exclude_groups:nnn} \Arg{module} \Arg{groups} \Arg{keyval list} +% \cs{keys_set_exclude_groups:nnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{tl~var} +% \cs{keys_set_exclude_groups:nnnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \Arg{root} \meta{tl~var} % \end{syntax} -% Activates key filtering in an \enquote{opt-in} sense: only keys assigned to -% one or more of the \meta{groups} specified are set. The \meta{groups} are -% given as a comma-separated list. Unknown keys are not assigned to any -% group and are thus never set. The key--value pairs for each -% key which is filtered out are stored in the \meta{tl} in a -% comma-separated form (\emph{i.e.}~an edited version of the \meta{keyval -% list}). The \cs{keys_set_groups:nnn} version skips this stage +% These functions activate key selection in an \enquote{opt-out} sense: +% keys assigned to one or more of the \meta{groups} specified are +% \emph{not} set. The \meta{groups} are given as a comma-separated list. +% Unknown keys are not assigned to any group and are thus always set. +% +% In addition, \cs{keys_set_exclude_groups:nnnN} and +% \cs{keys_set_exclude_groups:nnnnN} store the key--value pairs for +% skipped keys in the \meta{tl~var} in comma-separated form +% (\emph{i.e.}~an edited version of the \meta{keyval list}). When a +% \meta{root} is given (\cs{keys_set_exclude_groups:nnnnN}), the +% key--value entries are returned relative to this point in the key +% tree. When it is absent, only the key name and value are provided. +% The correct list is returned by nested calls. % \end{function} % % \section{Digesting keys} % % \begin{function}[added = 2022-03-09]{\keys_precompile:nnN} % \begin{syntax} -% \cs{keys_precompile:nnN} \Arg{module} \Arg{keyval list} \meta{tl} +% \cs{keys_precompile:nnN} \Arg{module} \Arg{keyval list} \meta{tl~var} % \end{syntax} % Parses the \meta{keyval list} as for \cs{keys_set:nn}, placing the % resulting code for those which set variables or functions into the -% \meta{tl}. Thus this function \enquote{precompiles} the keyval list into +% \meta{tl~var}. Thus this function \enquote{precompiles} the keyval list into % a set of results which can be applied rapidly. % \end{function} % @@ -1687,14 +1696,14 @@ % \begin{variable}{\l_@@_selective_clist} % The list of key groups being filtered in or out during selective setting. % \begin{macrocode} -\seq_new:N \l_@@_selective_clist +\clist_new:N \l_@@_selective_clist % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_tmp_clist} % Scratch space used as a data dump. % \begin{macrocode} -\seq_new:N \l_@@_tmp_clist +\clist_new:N \l_@@_tmp_clist % \end{macrocode} % \end{variable} % @@ -1915,19 +1924,21 @@ % \end{macro} % % \begin{macro}{\@@_define_code:n} +% \begin{macro}[EXP]{\@@_define_code:nnn} % \begin{macro}[EXP]{\@@_define_code:w} % Two possible cases. If there is a value for the key, then just use % the function. If not, then a check to make sure there is no need for % a value with the property. If there should be one then complain, -% otherwise execute it. There is no need to check for a |:| as if it -% was missing the earlier tests would have failed. +% otherwise execute it. For a \LaTeXe{} property like |.code| which +% doesn't contain a |:|, treat it as having arity 1 and pass the +% (empty) value to it. % \begin{macrocode} \cs_new_protected:Npn \@@_define_code:n #1 { \bool_if:NTF \l_@@_no_value_bool { - \exp_after:wN \@@_define_code:w - \l_@@_property_str \s_@@_stop + \@@_define_code:nnn + { \use:c { \c_@@_props_root_str \l_@@_property_str } {#1} } { \use:c { \c_@@_props_root_str \l_@@_property_str } } { \msg_error:nnee { keys } { property-requires-value } @@ -1936,12 +1947,31 @@ } { \use:c { \c_@@_props_root_str \l_@@_property_str } {#1} } } -\exp_last_unbraced:NNNNo - \cs_new:Npn \@@_define_code:w #1 \c_colon_str #2 \s_@@_stop - { \tl_if_empty:nTF {#2} } +\cs_new:Npe \@@_define_code:nnn + { + \exp_not:N \exp_after:wN \exp_not:N \@@_define_code:w + \exp_not:N \l_@@_property_str + \c_colon_str \c_colon_str + \exp_not:N \s_@@_stop + } +\use:e + { + \cs_new:Npn \exp_not:N \@@_define_code:w + #1 \c_colon_str #2 \c_colon_str #3 \exp_not:N \s_@@_stop + } + { + \tl_if_empty:nTF {#3} + { \use_i:nnn } + { + \tl_if_empty:nTF {#2} + { \use_ii:nnn } + { \use_iii:nnn } + } + } % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} % % \subsection{Turning properties into actions} % @@ -2148,7 +2178,7 @@ % % \begin{macro}{\@@_initialise:n} % A set up for initialisation: just run the code if it exists. -% We need to set the key string here, using the deprecated \texttt{tl} +% We need to set the key string here, using the deprecated \texttt{tl~var} % as a piece of scratch space. % \begin{macrocode} \cs_new_protected:Npn \@@_initialise:n #1 diff --git a/macros/latex-dev/required/l3kernel/l3legacy.dtx b/macros/latex-dev/required/l3kernel/l3legacy.dtx index fd30799ea1..06827eb5db 100644 --- a/macros/latex-dev/required/l3kernel/l3legacy.dtx +++ b/macros/latex-dev/required/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3luatex.dtx b/macros/latex-dev/required/l3kernel/l3luatex.dtx index 19d92a1591..9c1cabc9bd 100644 --- a/macros/latex-dev/required/l3kernel/l3luatex.dtx +++ b/macros/latex-dev/required/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3msg.dtx b/macros/latex-dev/required/l3kernel/l3msg.dtx index 96fc231193..5d1d0a5bec 100644 --- a/macros/latex-dev/required/l3kernel/l3msg.dtx +++ b/macros/latex-dev/required/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3names.dtx b/macros/latex-dev/required/l3kernel/l3names.dtx index c2af4697f2..7dec3ca091 100644 --- a/macros/latex-dev/required/l3kernel/l3names.dtx +++ b/macros/latex-dev/required/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3news.pdf b/macros/latex-dev/required/l3kernel/l3news.pdf Binary files differindex dd143fa9e6..67357d3ca7 100644 --- a/macros/latex-dev/required/l3kernel/l3news.pdf +++ b/macros/latex-dev/required/l3kernel/l3news.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news01.pdf b/macros/latex-dev/required/l3kernel/l3news01.pdf Binary files differindex 5b3278a9c0..294e75b55f 100644 --- a/macros/latex-dev/required/l3kernel/l3news01.pdf +++ b/macros/latex-dev/required/l3kernel/l3news01.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news02.pdf b/macros/latex-dev/required/l3kernel/l3news02.pdf Binary files differindex cf92aa6e2b..521ec3c1f1 100644 --- a/macros/latex-dev/required/l3kernel/l3news02.pdf +++ b/macros/latex-dev/required/l3kernel/l3news02.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news03.pdf b/macros/latex-dev/required/l3kernel/l3news03.pdf Binary files differindex bfec3ed2d1..c0fa44acf0 100644 --- a/macros/latex-dev/required/l3kernel/l3news03.pdf +++ b/macros/latex-dev/required/l3kernel/l3news03.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news04.pdf b/macros/latex-dev/required/l3kernel/l3news04.pdf Binary files differindex ffda2b9917..90e38afc4b 100644 --- a/macros/latex-dev/required/l3kernel/l3news04.pdf +++ b/macros/latex-dev/required/l3kernel/l3news04.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news05.pdf b/macros/latex-dev/required/l3kernel/l3news05.pdf Binary files differindex 36d6f0617b..5c221e067f 100644 --- a/macros/latex-dev/required/l3kernel/l3news05.pdf +++ b/macros/latex-dev/required/l3kernel/l3news05.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news06.pdf b/macros/latex-dev/required/l3kernel/l3news06.pdf Binary files differindex 35f4d87bbd..64028db3f0 100644 --- a/macros/latex-dev/required/l3kernel/l3news06.pdf +++ b/macros/latex-dev/required/l3kernel/l3news06.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news07.pdf b/macros/latex-dev/required/l3kernel/l3news07.pdf Binary files differindex 6e60a66006..015e68873b 100644 --- a/macros/latex-dev/required/l3kernel/l3news07.pdf +++ b/macros/latex-dev/required/l3kernel/l3news07.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news08.pdf b/macros/latex-dev/required/l3kernel/l3news08.pdf Binary files differindex e1912b8a38..2b97620485 100644 --- a/macros/latex-dev/required/l3kernel/l3news08.pdf +++ b/macros/latex-dev/required/l3kernel/l3news08.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news09.pdf b/macros/latex-dev/required/l3kernel/l3news09.pdf Binary files differindex 85edc9f516..f9fb62b930 100644 --- a/macros/latex-dev/required/l3kernel/l3news09.pdf +++ b/macros/latex-dev/required/l3kernel/l3news09.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news10.pdf b/macros/latex-dev/required/l3kernel/l3news10.pdf Binary files differindex 80187c9117..edb54effc4 100644 --- a/macros/latex-dev/required/l3kernel/l3news10.pdf +++ b/macros/latex-dev/required/l3kernel/l3news10.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news11.pdf b/macros/latex-dev/required/l3kernel/l3news11.pdf Binary files differindex 10daf64a29..794a1b4a13 100644 --- a/macros/latex-dev/required/l3kernel/l3news11.pdf +++ b/macros/latex-dev/required/l3kernel/l3news11.pdf diff --git a/macros/latex-dev/required/l3kernel/l3news12.pdf b/macros/latex-dev/required/l3kernel/l3news12.pdf Binary files differindex 3f5955a1fc..3579fa74c2 100644 --- a/macros/latex-dev/required/l3kernel/l3news12.pdf +++ b/macros/latex-dev/required/l3kernel/l3news12.pdf diff --git a/macros/latex-dev/required/l3kernel/l3pdf.dtx b/macros/latex-dev/required/l3kernel/l3pdf.dtx index 007cb5b5ad..4d90b326cf 100644 --- a/macros/latex-dev/required/l3kernel/l3pdf.dtx +++ b/macros/latex-dev/required/l3kernel/l3pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -70,8 +70,8 @@ % \cs{pdf_object_write:nnn} \Arg{object} \Arg{type} \Arg{content} % \end{syntax} % Writes the \meta{content} as content of the \meta{object}. Depending on the -% \meta{type} declared for the object, the format required for the -% \meta{data} will vary +% \meta{type} declared for the object, the format required for +% \meta{content} will vary: % \begin{itemize} % \item[\texttt{array}] A space-separated list of values % \item[\texttt{dict}] Key--value pairs in the form @@ -159,7 +159,7 @@ % \cs{pdf_object_unnamed_write:nn} \Arg{type} \Arg{content} % \end{syntax} % Writes the \meta{content} as content of an anonymous object. Depending on the -% \meta{type}, the format required for the \meta{data} will vary +% \meta{type}, the format required for \meta{content} will vary: % \begin{itemize} % \item[\texttt{array}] A space-separated list of values % \item[\texttt{dict}] Key--value pairs in the form @@ -192,11 +192,11 @@ % % \begin{function}[pTF, EXP, added = 2021-02-10]{\pdf_version_compare:Nn} % \begin{syntax} -% \cs{pdf_version_compare_p:Nn} \meta{comparator} \Arg{version} -% \cs{pdf_version_compare:NnTF} \meta{comparator} \Arg{version} \Arg{true code} \Arg{false code} +% \cs{pdf_version_compare_p:Nn} \meta{relation} \Arg{version} +% \cs{pdf_version_compare:NnTF} \meta{relation} \Arg{version} \Arg{true code} \Arg{false code} % \end{syntax} % Compares the version of the PDF being created with the \meta{version} -% string specified, using the \meta{comparator}. Either the \meta{true code} +% string specified, using the \meta{relation}. Either the \meta{true code} % or \meta{false code} will be left in the output stream. % \end{function} % @@ -251,9 +251,9 @@ % % \section{Destinations} % -% Destinations are the places a link jumped too. -% Unlike the name may suggest they don't described -% an exact location in the PDF. Instead a destination contains a reference to +% Destinations are the places a link jumped to. +% Unlike the name may suggest, they don't describe +% an exact location in the PDF. Instead, a destination contains a reference to % a page along with an instruction how to display this page. % The normally used \enquote{XYZ \textit{top left zoom}} for example instructs % the viewer to show the page with the given \textit{zoom} and diff --git a/macros/latex-dev/required/l3kernel/l3prefixes.csv b/macros/latex-dev/required/l3kernel/l3prefixes.csv index 7baa984582..11cfeb08f4 100644 --- a/macros/latex-dev/required/l3kernel/l3prefixes.csv +++ b/macros/latex-dev/required/l3kernel/l3prefixes.csv @@ -26,6 +26,7 @@ block,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https: bool,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, box,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, bxjh,BXjaholiday,Takuto Asakura,https://github.com/wtsnjp/BXjaholiday,https://github.com/wtsnjp/BXjaholiday.git,https://github.com/wtsnjp/BXjaholiday/issues,2018-02-02,2019-02-02, +cal,spath3,Andrew Stacey,https://github.com/loopspace/spath3,https://github.com/loopspace/spath3.git,https://github.com/loopspace/spath3/issues,2024-07-18,2024-07-18, cascade,cascade,F. Pantigny,,,,2020-07-21,2020-07-21, catcode,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, cctab,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-28,2012-09-28, @@ -78,6 +79,7 @@ etex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https: etl,etl,Jonathan P. Spratte,https://github.com/Skillmon/ltx_etl,git@github.com:Skillmon/ltx_etl.git,https://github.com/Skillmon/ltx_etl/issues,2021-08-16,2021-08-16, exp,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, expl,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, +expltools,expltools,VÃt Starý Novotný,https://github.com/witiko/expltools/,https://github.com/witiko/expltools.git,https://github.com/witiko/expltools/issues,2024-06-26,2024-06-26,Development tools for expl3 programmers exsheets,exsheets,Clemens Niederberger,https://bitbucket.org/cgnieder/exsheets/,git@bitbucket.org:cgnieder/exsheets.git,https://bitbucket.org/cgnieder/exsheets/issues,2013-03-16,2013-03-16, extblx,biblatex-ext,Moritz Wemheuer,https://github.com/moewew/biblatex-ext/,https://github.com/moewew/biblatex-ext.git,https://github.com/moewew/biblatex-ext/issues,2020-02-09,2020-02-09, exwf,exwrapfig,Takuto Asakura,https://github.com/wtsnjp/exwrapfig,https://github.com/wtsnjp/exwrapfig.git,https://github.com/wtsnjp/exwrapfig/issues,2018-06-07,2018-06-07, @@ -135,8 +137,10 @@ keys,"l3kernel,l3keys2e,ltkeys",The LaTeX Project,https://www.latex-project.org/ keyval,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, kgl,kantlipsum,Enrico Gregorio,,,,2013-03-16,2013-03-16, kivitendo,"kiviletter, kivitables",Marei Peischl for Kivitendo,https://www.kivitendo.de/,https://github.com/kivitendo/kivitendo-erp,https://forum.kivitendo.de/,2021-05-28,2021-05-28, +knot,spath3,Andrew Stacey,https://github.com/loopspace/spath3,https://github.com/loopspace/spath3.git,https://github.com/loopspace/spath3/issues,2024-07-18,2024-07-18, langsci,langscibook,Language Science Press,https://langsci-press.org,https://github.com/langsci/langscibook,https://github.com/langsci/langscibook/issues,2021-07-20,2021-07-21, left,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, +liftarm,liftarm,Matthias Floré,,,,2024-05-25,2024-05-25, lltxmath,lualatex-math,Philipp Stephani,https://github.com/phst/lualatex-math,https://github.com/phst/lualatex-math.git,https://github.com/phst/lualatex-math/issues,2012-11-07,2012-11-07, log,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, lua,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, @@ -159,6 +163,7 @@ minibox,minibox,Will Robertson,,https://github.com/wspr/will2e.git,https://githu minus,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, mix,media9,Alexander Grahn,,https://gitlab.com/agrahn/media9,https://gitlab.com/agrahn/media9/issues,2013-01-18,2020-04-15, mode,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, +moremath,moremath,Marcel Ilg,https://github.com/Mister00X/moremath,https://github.com/Mister00X/moremath.git,https://github.com/Mister00X/moremath/issues,2024-07-27,2024-07-27, morewrites,morewrites,Bruno Le Floch,https://github.com/blefloch/latex-morewrites,https://github.com/blefloch/latex-morewrites.git,https://github.com/blefloch/latex-morewrites/issues,2013-03-16,2015-09-22, msg,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, msvg,media4svg,Alexander Grahn,,https://gitlab.com/agrahn/media4svg,https://gitlab.com/agrahn/media4svg/issues,2020-04-15,2020-04-15, @@ -200,6 +205,7 @@ piton,piton,François Pantigny,,,,29/09/2022,29/09/2022, pkgploader,pkgploader,Michiel Helvensteijn,,,,2014-02-05,2014-02-05, platex,platex,Japanese TeX Development Community,https://github.com/texjporg/platex,https://github.com/texjporg/platex.git,https://github.com/texjporg/platex/issues,2020-09-30,2020-09-30, polyglossia,polyglossia,Arthur Reutenauer,https://www.polyglossia.org/,https://github.com/reutenauer/polyglossia,https://github.com/reutenauer/polyglossia/issues,2019-09-03,, +polyomino,polyomino,Matthias Floré,,,,2024-09-05,2024-09-05 postnotes,postnotes,gusbrs,https://github.com/gusbrs/postnotes,https://github.com/gusbrs/postnotes.git,https://github.com/gusbrs/postnotes/issues,2022-04-23,2022-04-23, prelim,prelim2e,Marei Peischl,https://github.com/TeXhackse/prelim2e,https://github.com/TeXhackse/prelim2e.git,https://github.com/TeXhackse/prelim2e/issues,2020-11-24,2020-11-24, prg,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, @@ -209,6 +215,7 @@ property,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,htt pseudo,pseudo,Magnus Lie Hetland,https://github.com/mlhetland/pseudo.sty,https://github.com/mlhetland/pseudo.sty.git,https://github.com/mlhetland/pseudo.sty/issues,2019-06-24,2019-06-24, ptex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2015-07-28,2015-07-28, ptxcd,ptxcd,Marei Peischl,,,,2020-07-27,2020-07-27,Used for specific corporate design templates +ptxtools,"depp, ptxtools",Marei Peischl,https://gitlab.com/islandoftex/texmf/depp,https://gitlab.com/islandoftex/texmf/depp.git,https://gitlab.com/islandoftex/texmf/depp,2024-07-09,2024-07-09, qrbill,qrbill,Marei Peischl,https://github.com/peiTeX/qrbill,https://github.com/peiTeX/qrbill.git,https://github.com/peiTeX/qrbill/issues,2020-06-27,2020-06-27, quark,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, rainbow,beamertheme-rainbow,samcarter,https://github.com/samcarter/beamertheme-rainbow,https://github.com/samcarter/beamertheme-rainbow,https://github.com/samcarter/beamertheme-rainbow/issues,2023-07-04,2023-07-04, @@ -238,6 +245,7 @@ slcd,se2thesis,Stephan Lukasczyk,https://github.com/se2p/se2thesis,https://githu socket,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2023-10-17,2023-10-17, sort,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2017-02-13, space,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, +spath,spath3,Andrew Stacey,https://github.com/loopspace/spath3,https://github.com/loopspace/spath3.git,https://github.com/loopspace/spath3/issues,2024-07-18,2024-07-18, starray,starray,Alceu Frigeri,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray/issues,2023-05-15,2023-05-15, statistics,statistics,Julien Rivaud,https://gitlab.com/frnchfrgg-latex/statistics,https://gitlab.com/frnchfrgg-latex/statistics.git,https://gitlab.com/frnchfrgg-latex/statistics/issues,2018-06-25,2018-06-25, stm,lt3-stm,CV Radhakrishnan,http://www.cvr.cc/,,,2014-02-26,2014-02-26, @@ -257,6 +265,7 @@ tex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https:/ text,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2020-01-15,2020-01-15, tikzfill,tikzfill,Thomas F. Sturm,https://github.com/T-F-S/tikzfill,https://github.com/T-F-S/tikzfill.git,https://github.com/T-F-S/tikzfill/issues,2022-07-19,2022-07-19, tikzlings,tikzlings,samcarter,https://github.com/samcarter/tikzlings,git@github.com:samcarter/tikzlings.git,https://github.com/samcarter/tikzlings/issues,2023-02-17,2023-02-17, +tikzspath,spath3,Andrew Stacey,https://github.com/loopspace/spath3,https://github.com/loopspace/spath3.git,https://github.com/loopspace/spath3/issues,2024-07-18,2024-07-18, tikzsymbols,tikzsymbols,Ben Vitecek,https://github.com/Vidabe/tikzsymbols,https://github.com/Vidabe/tikzsymbols.git,https://github.com/Vidabe/tikzsymbols/issues,2018-09-26,2018-09-26, tilde,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, tl,"l3kernel,l3tl-build",The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, @@ -287,6 +296,7 @@ xmarks,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https xparse,xparse,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, xpatch,"regexpatch,xpatch",Enrico Gregorio,,,,2013-03-16,2013-03-16, xpeek,xpeek,Joel C. Salomon,,,,2013-03-16,2013-03-16, +xpg,polyglossia,Jürgen Spitzmüller,https://github.com/reutenauer/polyglossia/,https://github.com/reutenauer/polyglossia/,https://github.com/reutenauer/polyglossia/issues,2024-07-02,2024-07-02, xpinyin,xpinyin,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/CTeX-org/ctex-kit.git,https://github.com/CTeX-org/ctex-kit/issues,2013-03-16,2013-05-26, xsb,xsavebox,Alexander Grahn,,https://gitlab.com/agrahn/xsavebox,https://gitlab.com/agrahn/xsavebox/issues,2016-02-26,2020-04-15, xsim,xsim,Clemens Niederberger,https://github.com/cgnieder/xsim/,https://github.com/cgnieder/xsim.git,https://github.com/cgnieder/xsim/issues,2020-04-14,2020-04-14, @@ -298,4 +308,5 @@ zhnum,zhnumber,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/ zrefcheck,zref-check,gusbrs,https://github.com/gusbrs/zref-check,https://github.com/gusbrs/zref-check,https://github.com/gusbrs/zref-check/issues,2021-08-05,2021-08-05, zrefclever,zref-clever,gusbrs,https://github.com/gusbrs/zref-clever,https://github.com/gusbrs/zref-clever,https://github.com/gusbrs/zref-clever/issues,2021-11-29,2021-11-29, zrefvario,zref-vario,gusbrs,https://github.com/gusbrs/zref-vario,https://github.com/gusbrs/zref-vario,https://github.com/gusbrs/zref-vario/issues,2022-02-02,2022-02-02, +zugferd,zugferd,Marei Peischl,https://github.com/TeXhackse/LaTeX-ZUGFeRD,https://github.com/TeXhackse/LaTeX-ZUGFeRD.git,https://github.com/TeXhackse/LaTeX-ZUGFeRD/issues,2024-07-09,2024-07-09, zxjt,zxjatype,Takayuki Yato,,,,2013-03-16,2013-03-16, diff --git a/macros/latex-dev/required/l3kernel/l3prefixes.pdf b/macros/latex-dev/required/l3kernel/l3prefixes.pdf Binary files differindex d90fd943f7..725c43b53b 100644 --- a/macros/latex-dev/required/l3kernel/l3prefixes.pdf +++ b/macros/latex-dev/required/l3kernel/l3prefixes.pdf diff --git a/macros/latex-dev/required/l3kernel/l3prg.dtx b/macros/latex-dev/required/l3kernel/l3prg.dtx index 96ef859b3f..a5d6db8455 100644 --- a/macros/latex-dev/required/l3kernel/l3prg.dtx +++ b/macros/latex-dev/required/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -664,7 +664,7 @@ % ~~\Arg{true code} % ~~\Arg{false code} % \end{syntax} -% Evaluates in turn each of the \meta{boolean expression cases} until +% Evaluates in turn each of the \meta{boolean expression case}s until % the first one that evaluates to \texttt{true}. % The \meta{code} associated to this first case is left in the input % stream, followed by the \meta{true code}, and other cases are diff --git a/macros/latex-dev/required/l3kernel/l3prop.dtx b/macros/latex-dev/required/l3kernel/l3prop.dtx index 3350b27792..7a0e76cc54 100644 --- a/macros/latex-dev/required/l3kernel/l3prop.dtx +++ b/macros/latex-dev/required/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -181,11 +181,11 @@ % \prop_gset_from_keyval:Nn, \prop_gset_from_keyval:cn, % } % \begin{syntax} -% \cs{prop_set_from_keyval:Nn} \meta{property list} -% \{ -% \meta{key1} |=| \meta{value1} |,| -% \meta{key2} |=| \meta{value2} |,| \ldots{} -% \} +% \cs{prop_set_from_keyval:Nn} \meta{property list} \\ +% ~~\{ \\ +% ~~~~\meta{key1} |=| \meta{value1} |,| \\ +% ~~~~\meta{key2} |=| \meta{value2} |,| \ldots{} \\ +% ~~\} % \end{syntax} % Sets \meta{property list} to contain key--value pairs given in the second % argument. If duplicate keys appear only the last of the values is kept. @@ -205,11 +205,11 @@ % \begin{function}[added = 2017-11-28, updated = 2021-11-07] % {\prop_const_from_keyval:Nn, \prop_const_from_keyval:cn} % \begin{syntax} -% \cs{prop_const_from_keyval:Nn} \meta{property list} -% \{ -% \meta{key1} |=| \meta{value1} |,| -% \meta{key2} |=| \meta{value2} |,| \ldots{} -% \} +% \cs{prop_const_from_keyval:Nn} \meta{property list} \\ +% ~~\{ \\ +% ~~~~\meta{key1} |=| \meta{value1} |,| \\ +% ~~~~\meta{key2} |=| \meta{value2} |,| \ldots{} \\ +% ~~\} % \end{syntax} % Creates a new constant \enquote{flat} \meta{property list} or raises % an error if the @@ -224,11 +224,11 @@ % \begin{function}[added = 2024-02-12] % {\prop_const_linked_from_keyval:Nn, \prop_const_linked_from_keyval:cn} % \begin{syntax} -% \cs{prop_const_linked_from_keyval:Nn} \meta{prop~var} -% \{ -% \meta{key1} |=| \meta{value1} |,| -% \meta{key2} |=| \meta{value2} |,| \ldots{} -% \} +% \cs{prop_const_linked_from_keyval:Nn} \meta{prop~var} \\ +% ~~\{ \\ +% ~~~~\meta{key1} |=| \meta{value1} |,| \\ +% ~~~~\meta{key2} |=| \meta{value2} |,| \ldots{} \\ +% ~~\} % \end{syntax} % Creates a new constant \enquote{linked} \meta{prop~var} or raises an % error if the @@ -347,11 +347,11 @@ % \prop_gput_from_keyval:Nn, \prop_gput_from_keyval:cn, % } % \begin{syntax} -% \cs{prop_put_from_keyval:Nn} \meta{property list} -% \{ -% \meta{key1} |=| \meta{value1} |,| -% \meta{key2} |=| \meta{value2} |,| \ldots{} -% \} +% \cs{prop_put_from_keyval:Nn} \meta{property list} \\ +% ~~\{ \\ +% ~~~~\meta{key1} |=| \meta{value1} |,| \\ +% ~~~~\meta{key2} |=| \meta{value2} |,| \ldots{} \\ +% ~~\} % \end{syntax} % Updates the \meta{property list} by adding entries for each key--value % pair given in the second argument. The addition is done through diff --git a/macros/latex-dev/required/l3kernel/l3quark.dtx b/macros/latex-dev/required/l3kernel/l3quark.dtx index c989bd4024..409efd6b7b 100644 --- a/macros/latex-dev/required/l3kernel/l3quark.dtx +++ b/macros/latex-dev/required/l3kernel/l3quark.dtx @@ -32,7 +32,7 @@ % % \title{^^A % The \pkg{l3quark} module\\ Quarks and scan marks^^A -% } +% }\ifdefined\thechapter\label{sec:l3quarks}\fi % % \author{^^A % The \LaTeX{} Project\thanks @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3regex.dtx b/macros/latex-dev/required/l3kernel/l3regex.dtx index ad44b8c6f9..cad8961101 100644 --- a/macros/latex-dev/required/l3kernel/l3regex.dtx +++ b/macros/latex-dev/required/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -643,7 +643,7 @@ % \end{syntax} % Determines which of the \meta{regular expressions} matches at the % earliest point in the \meta{token list}, and leaves the -% corresponding \meta{code_i} followed by the \meta{true code} in the +% corresponding \meta{code} followed by the \meta{true code} in the % input stream. If several \meta{regex} match starting at the same % point, then the first one in the list is selected and the others are % discarded. If none of the \meta{regex} match, the \meta{false code} diff --git a/macros/latex-dev/required/l3kernel/l3seq.dtx b/macros/latex-dev/required/l3kernel/l3seq.dtx index 713e4a33b1..f998531c34 100644 --- a/macros/latex-dev/required/l3kernel/l3seq.dtx +++ b/macros/latex-dev/required/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -354,7 +354,6 @@ % \end{syntax} % Selects a pseudo-random item of the \meta{seq~var}. If the % \meta{seq~var} is empty the result is empty. -% This is not available in older versions of \XeTeX{}. % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} @@ -748,7 +747,7 @@ % Applies \meta{inline function} to every \meta{item} stored % within the \meta{seq~var_2}. The \meta{inline function} should % consist of code which will receive the \meta{item} as |#1|. -% The sequence resulting applying \meta{inline function} to each +% The sequence resulting from applying \meta{inline function} to each % \meta{item} is assigned to \meta{seq~var_1}. % \begin{texnote} % Contrarily to other mapping functions, \cs{seq_map_break:} cannot @@ -2410,6 +2409,7 @@ \exp_after:wN \@@_map_pairwise_function:wNw #2 \s_@@_stop #3 #1 { ? \prg_break: } { } \prg_break_point: + \prg_break_point:Nn \seq_map_break: { } } \cs_new:Npn \@@_map_pairwise_function:wNw \s_@@ #1 \s_@@_stop #2 { diff --git a/macros/latex-dev/required/l3kernel/l3skip.dtx b/macros/latex-dev/required/l3kernel/l3skip.dtx index 3eeb891e3d..07ccb471fc 100644 --- a/macros/latex-dev/required/l3kernel/l3skip.dtx +++ b/macros/latex-dev/required/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -277,7 +277,8 @@ % \end{syntax} % This function evaluates the \meta{test dim expr} and % compares this in turn to each of the -% \meta{dim expr cases}. If the two are equal then the +% \meta{dim expr case}s until a match is found. +% If the two are equal then the % associated \meta{code} is left in the input stream % and other cases are discarded. If any of the % cases are matched, the \meta{true code} is also inserted into the @@ -297,6 +298,10 @@ % { No idea! } % \end{verbatim} % leaves \enquote{\texttt{Medium}} in the input stream. +% Since evaluation of the test expressions stops at the first +% successful case, the order of possible matches should normally +% be that the most likely are earlier: this will reduce the average +% steps required to complete expansion. % \end{function} % % \section{Dimension expression loops} diff --git a/macros/latex-dev/required/l3kernel/l3sort.dtx b/macros/latex-dev/required/l3kernel/l3sort.dtx index 9ba8713244..1d4580f640 100644 --- a/macros/latex-dev/required/l3kernel/l3sort.dtx +++ b/macros/latex-dev/required/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3str-convert.dtx b/macros/latex-dev/required/l3kernel/l3str-convert.dtx index 0b280fb109..cde36b4e60 100644 --- a/macros/latex-dev/required/l3kernel/l3str-convert.dtx +++ b/macros/latex-dev/required/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3str.dtx b/macros/latex-dev/required/l3kernel/l3str.dtx index d4e08b2dd2..8ac612d1b6 100644 --- a/macros/latex-dev/required/l3kernel/l3str.dtx +++ b/macros/latex-dev/required/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -303,7 +303,8 @@ % ~~\Arg{false code} % \end{syntax} % Compares the \meta{test string} in turn with each -% of the \meta{string case}s (all token lists are converted to strings). +% of the \meta{string case}s until a match is found +% (all token lists are converted to strings). % If the two are equal (as described for % \cs{str_if_eq:nnTF}) then the associated \meta{code} is left in the % input stream and other cases are discarded. If any of the @@ -757,7 +758,7 @@ % \item Case changing text for typesetting: see the % \cs[index=text_lowercase:n]{text_lowercase:n(n)}, % \cs[index=text_uppercase:n]{text_uppercase:n(n)} and -% \cs[index=text_titlecase_all:n]{text_titlecase_(all|once):n(n)} functions which +% \cs[index=text_titlecase_all:n]{text_titlecase_(all|first):n(n)} functions which % correctly deal with context-dependence and other factors appropriate % to text case changing. % \end{itemize} diff --git a/macros/latex-dev/required/l3kernel/l3styleguide.pdf b/macros/latex-dev/required/l3kernel/l3styleguide.pdf Binary files differindex c3b43c90a8..e283bd363d 100644 --- a/macros/latex-dev/required/l3kernel/l3styleguide.pdf +++ b/macros/latex-dev/required/l3kernel/l3styleguide.pdf diff --git a/macros/latex-dev/required/l3kernel/l3styleguide.tex b/macros/latex-dev/required/l3kernel/l3styleguide.tex index 2cffd774e3..46c5109535 100644 --- a/macros/latex-dev/required/l3kernel/l3styleguide.tex +++ b/macros/latex-dev/required/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-09-10} \begin{document} diff --git a/macros/latex-dev/required/l3kernel/l3syntax-changes.pdf b/macros/latex-dev/required/l3kernel/l3syntax-changes.pdf Binary files differindex 83d368f738..79d4f5f76c 100644 --- a/macros/latex-dev/required/l3kernel/l3syntax-changes.pdf +++ b/macros/latex-dev/required/l3kernel/l3syntax-changes.pdf diff --git a/macros/latex-dev/required/l3kernel/l3syntax-changes.tex b/macros/latex-dev/required/l3kernel/l3syntax-changes.tex index 0b21c09da0..3e3da5f95e 100644 --- a/macros/latex-dev/required/l3kernel/l3syntax-changes.tex +++ b/macros/latex-dev/required/l3kernel/l3syntax-changes.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-09-10} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex-dev/required/l3kernel/l3sys.dtx b/macros/latex-dev/required/l3kernel/l3sys.dtx index 0417a963bc..0fcfa9f915 100644 --- a/macros/latex-dev/required/l3kernel/l3sys.dtx +++ b/macros/latex-dev/required/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3term-glossary.pdf b/macros/latex-dev/required/l3kernel/l3term-glossary.pdf Binary files differindex 7bd8b3b0fd..da80575d10 100644 --- a/macros/latex-dev/required/l3kernel/l3term-glossary.pdf +++ b/macros/latex-dev/required/l3kernel/l3term-glossary.pdf diff --git a/macros/latex-dev/required/l3kernel/l3term-glossary.tex b/macros/latex-dev/required/l3kernel/l3term-glossary.tex index 86ad15568a..6432d71c88 100644 --- a/macros/latex-dev/required/l3kernel/l3term-glossary.tex +++ b/macros/latex-dev/required/l3kernel/l3term-glossary.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-09-10} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex-dev/required/l3kernel/l3text-case.dtx b/macros/latex-dev/required/l3kernel/l3text-case.dtx index 888e6e97b9..60b92198b5 100644 --- a/macros/latex-dev/required/l3kernel/l3text-case.dtx +++ b/macros/latex-dev/required/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3text-map.dtx b/macros/latex-dev/required/l3kernel/l3text-map.dtx index ab4a6db91e..ed95ff2d34 100644 --- a/macros/latex-dev/required/l3kernel/l3text-map.dtx +++ b/macros/latex-dev/required/l3kernel/l3text-map.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3text-purify.dtx b/macros/latex-dev/required/l3kernel/l3text-purify.dtx index ec85eb8be4..f568063a21 100644 --- a/macros/latex-dev/required/l3kernel/l3text-purify.dtx +++ b/macros/latex-dev/required/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3text.dtx b/macros/latex-dev/required/l3kernel/l3text.dtx index a59e047bd7..3f771d3137 100644 --- a/macros/latex-dev/required/l3kernel/l3text.dtx +++ b/macros/latex-dev/required/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -65,11 +65,11 @@ % \end{syntax} % Takes user input \meta{text} and expands the content. % Protected commands (typically -% formatting) are left in place, and no processing takes place of +% formatting) are left in place, and no processing of % math mode material (as delimited by pairs given in % \cs{l_text_math_delims_tl} or as the argument to commands listed -% in \cs{l_text_math_arg_tl}). Commands which are neither engine- -% nor \LaTeX{} protected are expanded exhaustively. +% in \cs{l_text_math_arg_tl}) takes place. Commands which are neither engine- +% nor \LaTeX{}-protected are expanded exhaustively. % Any commands listed in \cs{l_text_expand_exclude_tl} are excluded from % expansion, as are those in \cs{l_text_case_exclude_arg_tl} and % \cs{l_text_math_arg_tl}. @@ -114,8 +114,8 @@ % \end{function} % % Upper- and lowercase have the obvious meanings. Titlecasing may be regarded -% informally as converting the first character of the \meta{tokens} to -% uppercase. However, the process is more complex +% informally as converting the first \emph{non-space} character of the +% \meta{tokens} to uppercase. However, the process is more complex % than this as there are some situations where a single lowercase character % maps to a special form, for example \texttt{ij} in Dutch which becomes % \texttt{IJ}. There are two functions available for titlecasing: one which @@ -214,8 +214,8 @@ % \text_declare_uppercase_mapping:nnn % } % \begin{syntax} -% \cs{text_declare_lowercase_mapping:nn} \Arg{codeppoint} \Arg{replacement} -% \cs{text_declare_lowercase_mapping:nnn} \Arg{BCP-47} \Arg{codeppoint} \Arg{replacement} +% \cs{text_declare_lowercase_mapping:nn} \Arg{codepoint} \Arg{replacement} +% \cs{text_declare_lowercase_mapping:nnn} \Arg{BCP-47} \Arg{codepoint} \Arg{replacement} % \end{syntax} % Declares that the \meta{replacement} tokens should be used when case mapping % the \meta{codepoint}, rather than the standard mapping given in the diff --git a/macros/latex-dev/required/l3kernel/l3tl-analysis.dtx b/macros/latex-dev/required/l3kernel/l3tl-analysis.dtx index 80a7d74cef..4ae3f120d5 100644 --- a/macros/latex-dev/required/l3kernel/l3tl-analysis.dtx +++ b/macros/latex-dev/required/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -1303,14 +1303,20 @@ % Expandable tokens (which are automatically |N|-type) can be % \tn{outer} macros, hence the need for \cs{exp_after:wN} and % \cs{exp_not:N} in the code above, which allows the next function to -% safely grab the token as an argument. We run some code that is -% expanded using the primitive \cs{cs_set_nopar:Npe} rather than -% \cs{tl_set:Ne} to avoid grabbing it as an argument as |#1| may be -% \tn{outer}. To allow~|#1| as an argument of the user's function -% (stored in \cs{l_@@_peek_code_tl}), we set it equal to -% \cs{scan_stop:}, but we do it at the last minute because |#1| -% may be some pretty important function such as \cs{exp_after:wN}. -% Then we put the user's function and the elaborate first argument +% safely grab the token as an argument. To allow the +% possibly-\tn{outer} token~|#1| as an argument of the \meta{user's +% function} (which is protected and stored in \cs{l_@@_peek_code_tl}), +% we set it equal to a harmless macro. This must be done at the very +% last minute because |#1| may be some pretty important function such +% as \cs{exp_after:wN}. Using a primitive \cs{cs_set_nopar:Npe} +% expansion (to avoid \tn{outer} problems) we set up to run the code +% \tn{let} |#1| \meta{user's function} \meta{user's function} followed +% by arguments involving~|#1|. Regardless of~|#1| (including the +% user's function itself), the user's function is run. It always +% starts with \cs{group_end:}, which has not been redefined since |#1| +% started out as expandable, and which restores the definition of~|#1|. +% +% Then we put the elaborate first argument % \cs{__kernel_exp_not:w} \cs{exp_after:wN} |{| \cs{exp_not:N} |#1| |}|: % indeed we cannot use \cs{exp_not:n} |{#1}| as this breaks for an % \tn{outer} macro and we cannot use \cs{exp_not:N} |#1|, as @@ -1323,29 +1329,31 @@ % the two cases is easy: since we have made the escape character % printable, \cs{token_to_str:N} gives at least two characters for a % control sequence versus a single one for an active character -% (possibly being a space). Importantly, once we apply -% \cs{token_to_str:N} we no longer need to worry about \tn{outer} -% tokens. +% (possibly being a space, in which case the trailing brace group is +% taken as the first argument of \cs{@@_peek_analysis_exp_aux:Nw}). +% Importantly, |#1| could be an \tn{outer} token (as it is only set to +% \cs{scan_stop:} at the last minute) but once we apply +% \cs{token_to_str:N} we no longer need to worry about it. % \begin{macrocode} \cs_new_protected:Npn \@@_peek_analysis_exp:N #1 { \cs_set_nopar:Npe \l_@@_peek_code_tl { - \tex_let:D \exp_not:N #1 \scan_stop: - \exp_not:o \l_@@_peek_code_tl + \tex_let:D \exp_not:N #1 \l_@@_peek_code_tl + \l_@@_peek_code_tl { \exp_not:n { \__kernel_exp_not:w \exp_after:wN } { \exp_not:N \exp_not:N \exp_not:N #1 } } \exp_after:wN \@@_peek_analysis_exp_aux:Nw - \token_to_str:N #1 \prg_do_nothing: \s_@@ + \token_to_str:N #1 { } \s_@@ } \l_@@_peek_code_tl } \cs_new:Npe \@@_peek_analysis_exp_aux:Nw #1#2 \s_@@ { - \exp_not:N \if:w \scan_stop: #2 \scan_stop: - { \exp_not:N \int_value:w `#1 } \token_to_str:N D + \exp_not:N \if_meaning:w \scan_stop: #2 \scan_stop: + { \exp_not:N \int_value:w `#1 ~ } \token_to_str:N D \exp_not:N \else: { -1 } 0 \exp_not:N \fi: diff --git a/macros/latex-dev/required/l3kernel/l3tl-build.dtx b/macros/latex-dev/required/l3kernel/l3tl-build.dtx index 708ea81680..e058e2be47 100644 --- a/macros/latex-dev/required/l3kernel/l3tl-build.dtx +++ b/macros/latex-dev/required/l3kernel/l3tl-build.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % diff --git a/macros/latex-dev/required/l3kernel/l3tl.dtx b/macros/latex-dev/required/l3kernel/l3tl.dtx index 940b3cb8d0..f6f0e19f66 100644 --- a/macros/latex-dev/required/l3kernel/l3tl.dtx +++ b/macros/latex-dev/required/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -994,7 +994,6 @@ % \end{syntax} % Selects a pseudo-random item of the \meta{token list}. If the % \meta{token list} is blank, the result is empty. -% This is not available in older versions of \XeTeX{}. % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} diff --git a/macros/latex-dev/required/l3kernel/l3token.dtx b/macros/latex-dev/required/l3kernel/l3token.dtx index 5c31ab04e7..23b7e24b07 100644 --- a/macros/latex-dev/required/l3kernel/l3token.dtx +++ b/macros/latex-dev/required/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -660,7 +660,10 @@ % \cs{token_if_long_macro_p:N} \meta{token} \\ % \cs{token_if_long_macro:NTF} \meta{token} \Arg{true code} \Arg{false code} % \end{syntax} -% Tests if the \meta{token} is a long macro. +% Tests if the \meta{token} is a long macro with no other prefix; to +% test for a macro that is both long and protected, use +% \cs[index = token_if_protected_long_macro:NTF]^^A +% {token_if_protected_long_macro:N(TF)}. % \end{function} % % \begin{function}[EXP,pTF, updated=2012-01-20]{\token_if_protected_macro:N} @@ -668,8 +671,10 @@ % \cs{token_if_protected_macro_p:N} \meta{token} \\ % \cs{token_if_protected_macro:NTF} \meta{token} \Arg{true code} \Arg{false code} % \end{syntax} -% Tests if the \meta{token} is a protected macro: for a macro which -% is both protected and long this returns \texttt{false}. +% Tests if the \meta{token} is a protected macro with no other prefix; to +% test for a macro that is both protected and long, use +% \cs[index = token_if_protected_long_macro:NTF]^^A +% {token_if_protected_long_macro:N(TF)}. % \end{function} % % \begin{function}[EXP,pTF, updated=2012-01-20]{\token_if_protected_long_macro:N} @@ -776,7 +781,7 @@ % ~~\Arg{false code} % \end{syntax} % This function compares the \meta{test token} in turn with each of -% the \meta{token cases}. If the two are equal (as described for +% the \meta{token case}s. If the two are equal (as described for % \cs{token_if_eq_catcode:NNTF}, \cs{token_if_eq_charcode:NNTF} and % \cs{token_if_eq_meaning:NNTF}, respectively) then the associated % \meta{code} is left in the input stream and other cases are diff --git a/macros/latex-dev/required/l3kernel/l3unicode.dtx b/macros/latex-dev/required/l3kernel/l3unicode.dtx index 3b3bd007a4..b824a1f0a0 100644 --- a/macros/latex-dev/required/l3kernel/l3unicode.dtx +++ b/macros/latex-dev/required/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-09-10} % % \maketitle % @@ -719,15 +719,22 @@ \tl_set:ce { l_@@_ #1 _block_tl } { \int_eval:n { \tl_use:c { l_@@_ #1 _block_tl } + 1 } } } - \prg_replicate:nn {#2} +% \end{macrocode} +% Here, we avoid \cs{prg_replicate:nn} as the number of tokens generated would be +% high: that shows in the format dump (although \TeX{} recovers memory during +% the subsequent runs). +% \begin{macrocode} + \int_step_inline:nnn + { \tl_use:c { l_@@_ #1 _pos_tl } + 1 } + { \tl_use:c { l_@@_ #1 _pos_tl } + #2 } { - \tl_set:ce { l_@@_ #1 _pos_tl } - { \int_eval:n { \tl_use:c { l_@@_ #1 _pos_tl } + 1 } } \exp_args:Nc \__kernel_intarray_gset:Nnn { g_@@_ #1 _index_intarray } - { \tl_use:c { l_@@_ #1 _pos_tl } } + {##1} \l_@@_matched_block_tl } + \tl_set:ce { l_@@_ #1 _pos_tl } + { \int_eval:n { \tl_use:c { l_@@_ #1 _pos_tl } + #2 } } \clist_clear:c { l_@@_ #1 _block_clist } } % \end{macrocode} diff --git a/macros/latex-dev/required/l3kernel/source3.pdf b/macros/latex-dev/required/l3kernel/source3.pdf Binary files differindex 065674e225..7aa5a99a26 100644 --- a/macros/latex-dev/required/l3kernel/source3.pdf +++ b/macros/latex-dev/required/l3kernel/source3.pdf diff --git a/macros/latex-dev/required/l3kernel/source3.tex b/macros/latex-dev/required/l3kernel/source3.tex index 623b9cc1a0..c8322135cc 100644 --- a/macros/latex-dev/required/l3kernel/source3.tex +++ b/macros/latex-dev/required/l3kernel/source3.tex @@ -57,7 +57,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-09-10} \pagenumbering{roman} \maketitle diff --git a/macros/latex-dev/required/l3kernel/source3body.tex b/macros/latex-dev/required/l3kernel/source3body.tex index 8471296227..44b67816d6 100644 --- a/macros/latex-dev/required/l3kernel/source3body.tex +++ b/macros/latex-dev/required/l3kernel/source3body.tex @@ -285,7 +285,7 @@ pass it to |\foo:N|. Variables are named in a similar manner to functions, but begin with a single letter to define the type of variable: -\begin{description} +\begin{description}[leftmargin=2\parindent, labelindent*=-\parindent] \item[\texttt{c}] Constant: global parameters whose value should not be changed. \item[\texttt{g}] Parameters whose value should only be set globally. @@ -302,7 +302,7 @@ function, typically starting with the module\footnote{The module names are \texttt{\string\l_int_tmpa_int} would be very unreadable.} name and then a descriptive part. Variables end with a short identifier to show the variable type: -\begin{description}% +\begin{description}[leftmargin=2\parindent, labelindent*=-\parindent] \item[\texttt{bitset}] a set of bits (a string made up of a series of \texttt{0} and \texttt{1} tokens that are accessed by position). \item[\texttt{clist}] Comma separated list. @@ -318,7 +318,7 @@ Variables end with a short identifier to show the variable type: Applying \texttt{V}-type or \texttt{v}-type expansion to variables of one of the above types is supported, while it is not supported for the following variable types: -\begin{description} +\begin{description}[leftmargin=2\parindent, labelindent*=-\parindent] \item[\texttt{bool}] Either true or false. \item[\texttt{box}] Box register. \item[\texttt{coffin}] A \enquote{box with handles} --- a higher-level @@ -344,6 +344,19 @@ are never used by the core code. The nature of \TeX{} grouping means that as with any other scratch variable, these should only be set and used with no intervening third-party code. +There are two more special types of constants: +\begin{description}[leftmargin=2\parindent, labelindent*=-\parindent] + \item[\texttt{q}] Quark constants. + \item[\texttt{s}] Scan mark constants. +\end{description} +Similarly, each quark or scan mark name starts with the module name, +but doesn't end with a variable type, because the type is already +marked by the prefix \texttt{q} or \texttt{s}. +Some general quarks and scan marks provided by \LaTeX3 don't start +with a module name, for example \cs{s_stop}. +See documentation of quarks and scan marks in Chapter~\ref{sec:l3quarks} +for more info. + \subsection{Terminological inexactitude} A word of warning. In this document, and others referring to the \pkg{expl3} diff --git a/macros/latex-dev/required/latex-lab/README.md b/macros/latex-dev/required/latex-lab/README.md index 8663b7e4ad..116223aecb 100644 --- a/macros/latex-dev/required/latex-lab/README.md +++ b/macros/latex-dev/required/latex-lab/README.md @@ -1,6 +1,6 @@ # LaTeX laboratory -Release 2024-06-01 pre-release 2 +Release 2024-11-01 pre-release 3 ## Overview diff --git a/macros/latex-dev/required/latex-lab/blocks-code.pdf b/macros/latex-dev/required/latex-lab/blocks-code.pdf Binary files differindex 958db3a440..38ff9f597e 100644 --- a/macros/latex-dev/required/latex-lab/blocks-code.pdf +++ b/macros/latex-dev/required/latex-lab/blocks-code.pdf diff --git a/macros/latex-dev/required/latex-lab/blocks-doc.pdf b/macros/latex-dev/required/latex-lab/blocks-doc.pdf Binary files differindex d34cb17fa3..e27577d88b 100644 --- a/macros/latex-dev/required/latex-lab/blocks-doc.pdf +++ b/macros/latex-dev/required/latex-lab/blocks-doc.pdf diff --git a/macros/latex-dev/required/latex-lab/changes.txt b/macros/latex-dev/required/latex-lab/changes.txt index cc5bb2d4f0..9b016419ab 100644 --- a/macros/latex-dev/required/latex-lab/changes.txt +++ b/macros/latex-dev/required/latex-lab/changes.txt @@ -1,3 +1,69 @@ +2024-08-22 Joseph Wright <Joseph.Wright@latex-project.org> + * latex-lab-math.dtx: correct handling of empty math processing + +2024-08-21 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-math.dtx: correct luamml patches for array, + allow to use luamml without unicode-math + +2024-08-14 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-math.dtx: add luamml support for automatic mathml generation + +2024-08-12 Joseph Wright <Joseph.Wright@latex-project.org> + * latex-lab-math.dtx: add support for math in tabulars + +2024-08-11 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-firstaid.dtx: amsproc support, discussion in PR #517 + +2024-08-11 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-block.dtx: preset verbatim para-instance, issue #119 + +2024-08-10 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-block.dtx, latex-lab-table.dtx: reset flattened level in para/restore, issue #544 + +2024-08-08 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-minipage.dtx, latex-lab-table.dtx: improve support for minipage in tables. + handle issue #37 + +2024-08-06 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-table.dtx: add support for header-columns + * latex-lab-table.dtx: add support for multirows + * latex-lab-table.dtx: handle issue #432 + * latex-lab-marginpar.dtx: handle issue #444 + +2024-07-11 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-footnote.dtx: restore paragraph defaults at the begin of the footnote + tagging-project#262 + +2024-07-13 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * latex-lab-table.dtx (subsection{Tagging support sockets}): + add plugs for tbl/leaders/begin and /end + (subsection{Misc stuff}): drop unused socket + +2024-07-11 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-toc.dtx, latex-lab-toc-kernel-changes: switch from configuration points + to sockets. + +2024-05-25 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-table.dtx: disable table headers in presentation tables. + +2024-05-25 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-firstaid.dtx: add firstaid for booktabs cmidrules, + see tagging-issue 69. + +2024-04-18 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * documentmetadata-support.dtx: change handling of default language. + The code now tries to detect languages set by babel/polyglossia. + +2024-04-16 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-math.dtx: use tagging socket to disable math-writing if tagging + is suspended + +2024-03-24 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * latex-lab-namespace.xlsx: + File added (draft) replacing tagnames-commands.md + 2024-03-23 Ulrike Fischer <Ulrike.Fischer@latex-project.org> * documentmetadata-support.dtx: keys for A4-E and A4-F @@ -47,15 +113,15 @@ them too. Of course, none of this is very robust. By the end of the day well need updating to the new standard solution. -2024-02-23 Ulrike Fischer <Ulrike.Fischer@latex-project.org> - * latex-lab-amsmath.dtx, latex-lab-mathpkg.dtx: handle \pbm and poormans \bm +2024-02-23 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-amsmath.dtx, latex-lab-mathpkg.dtx: handle \pbm and poormans \bm (luatex only) -2024-02-23 Ulrike Fischer <Ulrike.Fischer@latex-project.org> +2024-02-23 Ulrike Fischer <Ulrike.Fischer@latex-project.org> * update tagpdf and pdfmanagement -2024-02-16 Ulrike Fischer <Ulrike.Fischer@latex-project.org> - * latex-lab-graphic.dtx: move end structure behind \fi, tagging-project#64 +2024-02-16 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-graphic.dtx: move end structure behind \fi, tagging-project#64 2024-02-12 Ulrike Fischer <Ulrike.Fischer@latex-project.org> * latex-lab-block.dtx: left align description labels. diff --git a/macros/latex-dev/required/latex-lab/documentmetadata-support-code.pdf b/macros/latex-dev/required/latex-lab/documentmetadata-support-code.pdf Binary files differindex 8699dd4426..b2d74f849f 100644 --- a/macros/latex-dev/required/latex-lab/documentmetadata-support-code.pdf +++ b/macros/latex-dev/required/latex-lab/documentmetadata-support-code.pdf diff --git a/macros/latex-dev/required/latex-lab/documentmetadata-support-doc.pdf b/macros/latex-dev/required/latex-lab/documentmetadata-support-doc.pdf Binary files differindex 89d9c58314..362954edba 100644 --- a/macros/latex-dev/required/latex-lab/documentmetadata-support-doc.pdf +++ b/macros/latex-dev/required/latex-lab/documentmetadata-support-doc.pdf diff --git a/macros/latex-dev/required/latex-lab/documentmetadata-support.dtx b/macros/latex-dev/required/latex-lab/documentmetadata-support.dtx index 54483ec4c9..a629d9c551 100644 --- a/macros/latex-dev/required/latex-lab/documentmetadata-support.dtx +++ b/macros/latex-dev/required/latex-lab/documentmetadata-support.dtx @@ -350,14 +350,35 @@ \file_input:n {l3backend-testphase-\c_sys_backend_str.def} \ExplSyntaxOff\makeatother % \end{macrocode} -% Set the default language (this requires that the backend has been loaded), -% process the rest of the keys, -% and setup the generic driver. +% +% Process the init keys and setup the generic driver. % \begin{macrocode} - \keys_set_filter:nnn { document / metadata } { init } { lang=en-US, #1 } + \keys_set_filter:nnn { document / metadata } { init } { #1 } \bool_if:NT \g_@@_active_bool { \PassOptionsToPackage{customdriver=hgeneric-testphase}{hyperref} +% \end{macrocode} +% Finally we setup the language default. +% This is done after the begindocument hook so that it can pick up settings +% from babel. If the Catalog dictionary already contains a lang value we do nothing, +% otherwise we use the value stored in \cs{BCPdata}, either the main language +% (if its exists) or the fall back language. +% Note: if babel is loaded without a language this gives the language \texttt{und}. +% \begin{macrocode} + \g@addto@macro\@kernel@after@begindocument + { + \pdfdict_get:nnN {g__pdf_Core/Catalog}{Lang}\l_@@_tmpa_tl + \quark_if_no_value:NT\l_@@_tmpa_tl + { + \tl_if_empty:eTF { \BCPdata{main.language} } + { \tl_set:Ne \l_@@_tmpb_tl { \BCPdata{language} } } + { \tl_set:Ne \l_@@_tmpb_tl { \BCPdata{main.language} } } + \msg_warning:nne { meta } { lang-missing }{ \l_@@_tmpb_tl } + \exp_last_unbraced:Ne + \AddToDocumentProperties{[document]{lang}{\l_@@_tmpb_tl}} + \pdfmanagement_add:nne {Catalog} {Lang}{(\l_@@_tmpb_tl)} + } + } } % \end{macrocode} % \cs{pdfmanagement_add:nnn} has collected values in this hook. @@ -556,6 +577,11 @@ { LaTeX-lab~package~'#1'~not~found. } +\msg_new:nnn { meta } { lang-missing } + { + The~language~has~not~been~set~in~\token_to_str:N + \DocumentMetadata.\\Setting~it~to~'#1'~as~fallback. + } % \end{macrocode} % % \begin{macrocode} diff --git a/macros/latex-dev/required/latex-lab/latex-lab-amsmath.dtx b/macros/latex-dev/required/latex-lab/latex-lab-amsmath.dtx index 57e27067cb..1b6302bb33 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-amsmath.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-amsmath.dtx @@ -66,7 +66,7 @@ % \subsection{File declaration} % \begin{macrocode} \ProvidesFile{latex-lab-amsmath.ltx} - [2024-02-12 v0.1b amsmath adaptions] + [2024-07-05 v0.1b amsmath adaptions] % \end{macrocode} % \subsection{Tagpdf support} % To make the code independent from tagging being loaded and active @@ -200,8 +200,8 @@ % \end{macrocode} % % \subsection{\cs{pmb}} -% \cs{pmb} prints is argument three times. For tagging we must mark -% two of occurences as artifact. +% \cs{pmb} prints its argument three times. For tagging we must mark +% two of occurrences as artifact. % For luatex the attributes in the box must be reset, for this % we switch to expl3-boxes. % \begin{macrocode} diff --git a/macros/latex-dev/required/latex-lab/latex-lab-amsmath.pdf b/macros/latex-dev/required/latex-lab/latex-lab-amsmath.pdf Binary files differindex 3b652dd264..6bb389ef9e 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-amsmath.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-amsmath.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-bib.dtx b/macros/latex-dev/required/latex-lab/latex-lab-bib.dtx index e8ee192a7b..9d336aba20 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-bib.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-bib.dtx @@ -16,7 +16,7 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabbibdate{2024-02-12} +\def\ltlabbibdate{2024-07-05} \def\ltlabbibversion{0.81b} %<*driver> \documentclass{l3doc} @@ -128,7 +128,7 @@ % % \begin{function}{\@extra@binfo,\@extra@b@citeb} % -% These are taken from hyperref, they are for chapterbib compability (and also +% These are taken from hyperref, they are for chapterbib compatibility (and also % signal to chapterbib not to change the citation commands) % \end{function} % @@ -157,7 +157,7 @@ % \end{macrocode} % \begin{macro}{\@extra@binfo,\@extra@b@citeb} -% These are taken from hyperref, they are for chapterbib compability (and also +% These are taken from hyperref, they are for chapterbib compatibility (and also % signal to chapterbib not to change the citation commands) % \begin{macrocode} \providecommand*\@extra@binfo{}% @@ -270,7 +270,7 @@ % \end{macrocode} % Now we add the tagging structure. % TODO: with the next tagpdf version it should no longer be -% needed to exand the ref key. +% needed to expand the ref key. % \begin{macrocode} \AddToHookWithArguments{bibcite/before} { @@ -305,7 +305,7 @@ % We need in part different code for both systems: % with biblatex we have to take care that only the first % structure sets a label, and if -% hyperref is not loaded (or deactived) we will need additional code +% hyperref is not loaded (or deactivated) we will need additional code % but this currently doesn't exist. % We assume that no document loads both package -- that will probably break. % \begin{macrocode} diff --git a/macros/latex-dev/required/latex-lab/latex-lab-bib.pdf b/macros/latex-dev/required/latex-lab/latex-lab-bib.pdf Binary files differindex 94cc528e47..2643725efa 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-bib.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-bib.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-block.dtx b/macros/latex-dev/required/latex-lab/latex-lab-block.dtx index 7d08b270d2..23c590419e 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-block.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-block.dtx @@ -9,8 +9,8 @@ % % https://www.latex-project.org/lppl.txt % -\def\ltlabblockdate{2024-03-23} -\def\ltlabblockversion{0.8n} +\def\ltlabblockdate{2024-08-11} +\def\ltlabblockversion{0.8p} %<*driver> \documentclass[kernel]{l3doc} \usepackage{amstext} @@ -341,7 +341,7 @@ % % The idea of a \key{heading} key needs some further % thoughts. Maybe instead the object type should accept a second -% argument and receive input for such a headding from the document +% argument and receive input for such a heading from the document % level instead. % % The names of the keys need further thoughts and some @@ -474,7 +474,7 @@ % \>\>\> The paragraph text before the display element \ldots\\ % \>\> \struct{/text}\\ % \>\> \struct{display element structure}\\ -% \>\>\> Content of the display structure possiblly involving inner \struct{text-unit} tags\\ +% \>\>\> Content of the display structure possibly involving inner \struct{text-unit} tags\\ % \>\> \struct{/display element structure}\\ % \>\> \struct{text}\\ % \>\>\> \ldots{} continuing the outer paragraph text\\ @@ -722,7 +722,7 @@ blockenv implementation] % \end{macrocode} % -% Generell kernel changes, also loaded by the sec and toc code. +% General kernel changes, also loaded by the sec and toc code. % \begin{macrocode} \RequirePackage{latex-lab-kernel-changes} % \end{macrocode} @@ -795,7 +795,52 @@ % The flag itself should be set globally not locally.\fmi{verify % that this claim is actually correct!} % \begin{macrocode} -\def\@endpetrue {\global\let\if@endpe\iftrue} +\def\@endpetrue {% + \global\let\if@endpe\iftrue +% if called inside a group propagate to the outside + \ifnum\currentgrouplevel>\z@ + \aftergroup\propagate@doendpe + \fi +} +% \end{macrocode} +% +% If \cs{if@endpe} is still true run \cs{@doendpe} +% that in turn runs another \cs{@endpetrue} (besides other things), +% thus propagating further, if necessary +% However, if the endpe situation got resolved nothing further happens +% \begin{macrocode} +\def\propagate@doendpe{% + \if@endpe + \@@_debug_typeout:n{run~ (another)~ @doendpe~ at~ + group~ level~ \the\currentgrouplevel}% + \@doendpe + \else + \@@_debug_typeout:n{do~ not~ run~ (another)~ @doendpe}% + \fi +} +% \end{macrocode} +% +% With the above approach we do not need the propagation in +% \cs{end...} any longer +% (since this is now handled by +% \cs{aftergroup}\cs{propagate@doendpe}) so +% here a simple \cs{endgroup} is enough. This replaces the +% definition in ...: +% \begin{macrocode} +\@namedef{end }#1{% + \romannumeral + \IfHookEmptyTF{env/#1/end}% + {\expandafter\z@}% + {\z@\UseHook{env/#1/end}}% + \csname end#1\endcsname\@checkend{#1}% +% \expandafter\endgroup\if@endpe\@doendpe\fi + \endgroup + \UseHook{env/#1/after}% + \if@ignore\@ignorefalse\ignorespaces\fi +} +% \end{macrocode} +% +% \begin{macrocode} \def\@endpefalse{\global\let\if@endpe\iffalse} % \end{macrocode} % \end{macro} @@ -1569,7 +1614,7 @@ % \end{macrocode} % We need to know later if we have nested blockenvs inside % a flattened environment. Whenever we start a new blockenv we -% increment \cs{\l_@@_flattened_level_int} if it is already +% increment \cs{l__tag_block_flattened_level_int} if it is already % different from zero. If it is zero we increment it if flattening % is requested. % Thus a value of \texttt{0} means no flattening requested so far @@ -1578,14 +1623,14 @@ % is surrounded by a \texttt{text-unit} tag, while for any value above % \texttt{1} we have to omit the \texttt{text-unit}. % \begin{macrocode} - \int_compare:nNnTF \l_@@_flattened_level_int > 0 + \int_compare:nNnTF \l__tag_block_flattened_level_int > 0 { - \int_incr:N \l_@@_flattened_level_int + \int_incr:N \l__tag_block_flattened_level_int } { \bool_if:NT \l__tag_para_flattened_bool { - \int_incr:N \l_@@_flattened_level_int + \int_incr:N \l__tag_block_flattened_level_int } } % @@ -1681,11 +1726,15 @@ % \end{template} % % -% \begin{macro}{\l_@@_flattened_level_int} +% \begin{macro}{\l__tag_block_flattened_level_int} % Count the levels of nested blockenvs starting with the first that -% is \enquote{flattened}. +% is \enquote{flattened}. The counter is defined in lttagging.dtx, +% but until the next release 11/24 we set it up here too % \begin{macrocode} -\int_new:N \l_@@_flattened_level_int +\int_if_exist:NF \l__tag_block_flattened_level_int + { + \int_new:N \l__tag_block_flattened_level_int + } % \end{macrocode} % \end{macro} % @@ -1814,9 +1863,13 @@ % and should not inherit the setting from the outer environment. % \begin{macrocode} \socket_new_plug:nnn{tagsupport/block-endpe}{on} - { \legacy_if_gset_true:n { @endpe } } +% \end{macrocode} +% We can't use \cs{legacy_if_gset_true:n} because this is now doing +% more than setting the legacy switch +% \begin{macrocode} + { \@endpetrue } \socket_new_plug:nnn{tagsupport/block-endpe}{off} - { \legacy_if_gset_false:n { @endpe } } + { \@endpefalse } % \end{macrocode} % % \begin{macrocode} @@ -1981,7 +2034,7 @@ % \cs{parskip} and some other housekeeping, unless this block is inside a list and the list % \cs{item} has not yet placed. In that case the vertical % space and penalty us suppressed. This -% is controled through the legacy switches \texttt{@noparitem}, +% is controlled through the legacy switches \texttt{@noparitem}, % \texttt{minipage}, and \texttt{@nobreak}. % \begin{macrocode} \legacy_if:nTF { @noparitem } @@ -2520,7 +2573,7 @@ % % \begin{macro}{\item} % Here we already have all the building blocks. Complain in math -% mode. Distingusih between first item (do necessary tagging) and +% mode. Distinguish between first item (do necessary tagging) and % later items \cs{@@_inter_item:} to % cleanly close what's before, then call \cs{@@_item_instance:n} (which % calls \cs{UseInstance}\{item\}\marg{instance}) to prepare the @@ -2751,7 +2804,7 @@ \socket_assign_plug:nn{tagsupport/block-endpe}{on} % \end{macrocode} % -% Handle the tag name and attribute classess using the key values +% Handle the tag name and attribute classes using the key values % from the current list instance. % \begin{macrocode} \tl_if_empty:NTF \l_@@_tag_name_tl @@ -2994,6 +3047,7 @@ block-instance = verbatimblock , inner-instance = , final-code = \legacyverbatimsetup , + para-instance = justify } % \end{macrocode} % \end{instance} @@ -3173,7 +3227,7 @@ % block quoteblock-4, % block quoteblock-5, % block quoteblock-6 } -% Default layout is to indent equaly from both side. +% Default layout is to indent equally from both sides. % \begin{macrocode} \DeclareInstance{block}{quoteblock-1}{display} { rightmargin = \KeyValue{leftmargin} } @@ -3468,7 +3522,7 @@ % then have to avoid adding another \texttt{text-unit}. % \begin{macrocode} { - \int_compare:nNnT \l_@@_flattened_level_int < 2 + \int_compare:nNnT \l__tag_block_flattened_level_int < 2 { \__tag_gincr_para_main_begin_int: \tag_struct_begin:n diff --git a/macros/latex-dev/required/latex-lab/latex-lab-block.pdf b/macros/latex-dev/required/latex-lab/latex-lab-block.pdf Binary files differindex 806562c30a..3b31116fd8 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-block.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-block.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-firstaid.dtx b/macros/latex-dev/required/latex-lab/latex-lab-firstaid.dtx index ba4addadd2..9a94863d7a 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-firstaid.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-firstaid.dtx @@ -16,8 +16,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabfirstaiddate{2024-03-18} -\def\ltlabfirstaidversion{0.85c} +\def\ltlabfirstaiddate{2024-08-11} +\def\ltlabfirstaidversion{0.85e} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -65,8 +65,34 @@ \ltlabfirstaiddate\space v\ltlabfirstaiddate\space Temporary patches to external packages needed for the tagging project] % \end{macrocode} +% \begin{macro}{\FirstAidNeededT} +% This is a very simple help to ensure that we only apply first aid +% to an unmodified package or class. It only works in the case the +% file has already been loaded and the csname \cs{ver@\#1.\#2} got +% defined (holding the current date, version, and short description +% info). We then compare its content to a frozen string and make +% the modification \verb=#3= only if both agree. If they differ we +% assume that the package/class in question got updated by its +% maintainer. +% \begin{macrocode} +\ExplSyntaxOn +\providecommand\FirstAidNeededT[3]{ + \exp_args:Ncx\str_if_eq:onF{ver@#1.#2}{#3} + { \typeout{==>~ First~ Aid~ for~ #1.#2~ no~ longer~ applied!^^J + \@spaces Expected:^^J + \@spaces\@spaces #3^^J + \@spaces but~ found:^^J + \@spaces\@spaces \use:c{ver@#1.#2}^^J + \@spaces so~ I'm~ assuming~ it~ got~ fixed. + } } + \exp_args:Ncx\str_if_eq:onT{ver@#1.#2}{#3} +} +\ExplSyntaxOff +% \end{macrocode} +% \end{macro} + % \subsection{ams classes} -% The amsart and amsbook classes do not use \cs{@author} to store the author list +% The amsart, amsbook and amsproc classes do not use \cs{@author} to store the author list % but a command \cs{authors}. To be able to nevertheless use the authors in the % xmp-metadata we map \cs{@author} to this new command. % @@ -75,6 +101,8 @@ {\def\@author{\authors}} \AddToHook{class/amsbook/after} {\def\@author{\authors}} +\AddToHook{class/amsproc/after} + {\def\@author{\authors}} % \end{macrocode} % % @@ -254,6 +282,41 @@ } % \end{macrocode} % +% \subsection{booktabs} +% In some cases booktabs inserts a +% \cs{multispan} into the table (through the commands \cs{@cmidruleb} +% and \cs{@cmidrulea} and this then errors +% with the tagging code. +% This affects both tabular and longtable +% (but longtable more as booktabs handles lines in longtable differently). +% See also issue \url{https://github.com/latex3/tagging-project/issues/69} +% +% +\ExplSyntaxOn +\AddToHook{package/booktabs/after} + { + \def\@cmidrulea{ + \multispan\@cmidla + &\multispan\@cmidlb + \unskip\hskip\cmrkern@l + { + \tag_mc_begin:n{artifact} + \CT@arc@\leaders\hrule \@height\@thisrulewidth\hfill\kern\z@} + \hskip\cmrkern@r + \tag_mc_end: \int_gdecr:N \g__tbl_row_int + \cr} + + \def\@cmidruleb{% + \multispan\@cmidlb + \unskip\hskip \cmrkern@l% + { + \tag_mc_begin:n{artifact} + \CT@arc@\leaders\hrule \@height\@thisrulewidth\hfill\kern\z@} + \hskip\cmrkern@r + \tag_mc_end: \int_gdecr:N \g__tbl_row_int + \cr} + } +\ExplSyntaxOff % % \begin{macrocode} %</package> diff --git a/macros/latex-dev/required/latex-lab/latex-lab-firstaid.pdf b/macros/latex-dev/required/latex-lab/latex-lab-firstaid.pdf Binary files differindex a9789040a1..ce2e69882a 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-firstaid.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-firstaid.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-float.dtx b/macros/latex-dev/required/latex-lab/latex-lab-float.dtx index a817133713..25ae805cfd 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-float.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-float.dtx @@ -16,7 +16,7 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabfloatdate{2024-03-23} +\def\ltlabfloatdate{2024-07-05} \def\ltlabfloatversion{0.81e} %<*driver> \documentclass{l3doc} @@ -64,7 +64,7 @@ % % A special type, called a H-float, (provided by the float package) % is always placed in the main text stream and does not -% necessarly preserve the order with normal floats of the same type: It is basically +% necessarily preserve the order with normal floats of the same type: It is basically % a minipage with a caption. % % Floats typically contain a figure (or a table, etc.) and a caption, diff --git a/macros/latex-dev/required/latex-lab/latex-lab-float.pdf b/macros/latex-dev/required/latex-lab/latex-lab-float.pdf Binary files differindex 7940618082..1ac490c00a 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-float.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-float.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-footnotes.dtx b/macros/latex-dev/required/latex-lab/latex-lab-footnotes.dtx index a3d044ab87..039d8554f4 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-footnotes.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-footnotes.dtx @@ -17,8 +17,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabfootnotedate{2024-03-12} -\def\ltlabfootnoteversion{0.8d} +\def\ltlabfootnotedate{2024-07-27} +\def\ltlabfootnoteversion{0.8e} %<*driver> \documentclass{l3doc} @@ -636,7 +636,7 @@ % number to setup the reference and the link. % % The structure related to the \cs{footref} is added to the end of the \texttt{/Ref} array of the note and so the -% \texttt{/Ref} array doesn't necessarly reflect the order of the marks in the document. It would probably +% \texttt{/Ref} array doesn't necessarily reflect the order of the marks in the document. It would probably % be possible to change this, but it is not clear if it actually matters and so it worth the additional coding % and processing. % @@ -1150,6 +1150,21 @@ % % % \begin{macro}{\fnote_footnotetext:n} +% We temporarily test for the tagging socket until it is in the next release: +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/para/restore_plug_str } + { + \NewSocket{tagsupport/para/restore}{0} + \NewSocketPlug{tagsupport/para/restore}{default} + { + \tl_set:Nn \l__tag_para_main_tag_tl {text-unit} + \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl + \bool_set_false:N\l__tag_para_flattened_bool + } + \AssignSocketPlug{tagsupport/para/restore}{default} + } +% \end{macrocode} +% % \begin{macrocode} \cs_new_protected:Npn \fnote_footnotetext:n #1 { \@@_debug_footnotetext: @@ -1191,6 +1206,7 @@ \floatingpenalty \@MM \hsize\columnwidth \@parboxrestore + \UseTaggingSocket{para/restore} \parindent 1em % typical default used in \@makefntext moved up here \def\@currentcounter{footnote} \protected@edef \@currentlabel { \p@footnote \@thefnmark } @@ -1673,7 +1689,7 @@ % % \subsubsection{\pkg{memoir}} % The \pkg{memoir} class redefines various internal commands to inject its -% hooks and addtional code. The following reinstates the kernel command and +% hooks and additional code. The following reinstates the kernel command and % so probably breaks various options of \pkg{memoir}, but without the % changes it errors anyway. The \pkg{footmisc} package should be used to change % for example to para footnotes. @@ -2446,7 +2462,7 @@ % This can use the default interface, except that a negative value for % \footnotemargin makes little sense, so we test for this and warn if -% necessary. But -\maxdimen is ok again, so would need to be a litte bit more elaborate. +% necessary. But -\maxdimen is ok again, so would need to be a little bit more elaborate. % %\AddToHook{fntext/para}{ @@ -2483,7 +2499,7 @@ \leavevmode % \end{macrocode} % Typesetting the mark twice means that one can't have any material -% inside that gets unhappy in that case. Tha shouldn't be a +% inside that gets unhappy in that case. That shouldn't be a % problem, but perhaps we have to come up with a more elaborate % solution in the end. % \begin{macrocode} diff --git a/macros/latex-dev/required/latex-lab/latex-lab-footnotes.pdf b/macros/latex-dev/required/latex-lab/latex-lab-footnotes.pdf Binary files differindex 2c1ca4f76d..58309a62f5 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-footnotes.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-footnotes.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-graphic.dtx b/macros/latex-dev/required/latex-lab/latex-lab-graphic.dtx index 5ea4a2db9c..a596366aa7 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-graphic.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-graphic.dtx @@ -15,7 +15,7 @@ % https://github.com/latex3/latex2e/required/latex-lab % % for those people who are interested or want to report an issue. -\def\ltlabgraphicdate{2024-03-13} +\def\ltlabgraphicdate{2024-07-05} \def\ltlabgraphicversion{0.80d} % %<*driver> @@ -78,7 +78,7 @@ % The value of a \texttt{BBox} is an array of four numbers that gives the % coordinates of the left, bottom, right, and top edges % of the structure element’s bounding box. That is the rectangle that completely encloses -% its \emph{visible} content so not necessarly the TeX bounding box: +% its \emph{visible} content so not necessarily the TeX bounding box: % if \texttt{viewport} or \texttt{trim} is used and the % graphic is not clipped, the visible content can be larger. % @@ -146,8 +146,8 @@ % \item[\texttt{artifact}] When used the graphic will be tagged as artifact. This doesn't % require a \texttt{BBox} and so works also in some of the not yet supported cases described % above. -% \item[\texttt{false}] When used tagging will be stopped completly. It is then the -% responsability of the surrounding code to add appropriate tagging commands. +% \item[\texttt{false}] When used tagging will be stopped completely. It is then the +% responsibility of the surrounding code to add appropriate tagging commands. % \item[\meta{name}] Other values will be used as tag names in the structure. If the tag is not % known as a structure tag you will get an warning from tagpdf. The default name is currently % \texttt{Figure} @@ -291,7 +291,7 @@ % ,\l_@@_graphic_trim_uy_fp % } % A bunch of fp-variables (we don't use tl-vars, -% to avoid to have to take care about minus signs everwhere) +% to avoid to have to take care about minus signs everywhere) % \begin{macrocode} \fp_new:N\l_@@_graphic_sin_fp \fp_new:N\l_@@_graphic_cos_fp diff --git a/macros/latex-dev/required/latex-lab/latex-lab-graphic.pdf b/macros/latex-dev/required/latex-lab/latex-lab-graphic.pdf Binary files differindex 7cb2babc4b..359856eb77 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-graphic.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-graphic.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-marginpar.dtx b/macros/latex-dev/required/latex-lab/latex-lab-marginpar.dtx index ca79d8a67f..a57ebaab80 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-marginpar.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-marginpar.dtx @@ -18,8 +18,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabmarginpardate{2024-02-12} -\def\ltlabmarginparversion{0.85b} +\def\ltlabmarginpardate{2024-08-06} +\def\ltlabmarginparversion{0.85c} %<*driver> \documentclass[kernel]{l3doc} @@ -72,7 +72,7 @@ % They can be tagged either as artifacts (if they are merely distracting decoration), % as small headings before the paragraph, or as |Aside|. Unlike the PDF 1.7 fallback |Note| % the structure |Aside| is not allowed inside |P|, -% so if |Aside| is used, it must be placed before or after the current |P| in the surounding |text-unit|, +% so if |Aside| is used, it must be placed before or after the current |P| in the surrounding |text-unit|, % or it must split the |P|. Splitting is probably not so good as % |\marginpar| is often used somewhere in the middle of sentence. % The best default is probably to use |Aside|, find the parent |text-unit| and add it there. @@ -153,13 +153,38 @@ \socket_new:nn {tagsupport/marginpar/end}{0} % \end{macrocode} % \end{socketdecl} +% +% \begin{macro}{\@@_get_marginpar_parent:N,\@@_get_marginpar_parent_aux:nn} +% In a paragraph we must retrieve +% the structure number of the surrounding Part structure +% TODO: if this is needed in more places this should +% go into tagpdf. +% \begin{macrocode} +\cs_new_protected:Npn\@@_get_marginpar_parent_aux:nn #1 #2 + { + \str_if_eq:eeT{\use_ii:nn #1}{Part}{\seq_put_right:Nn\l_@@_tmpa_seq {#2}} + } +\cs_new_protected:Npn \@@_get_marginpar_parent:N #1 + { + \seq_clear:N\l_@@_tmpa_seq + \seq_map_pairwise_function:NNN + \g_@@_struct_tag_stack_seq + \g_@@_struct_stack_seq + \@@_get_marginpar_parent_aux:nn + \seq_put_right:Nn\l_@@_tmpa_seq {2} + \seq_get_left:NN \l_@@_tmpa_seq #1 + } +\cs_generate_variant:Nn \tag_struct_begin:n {e} +% \end{macrocode} +% \end{macro} % \begin{plugdecl}{tagsupport/marginpar/begin,tagsupport/marginpar/end} % \begin{macrocode} \socket_new_plug:nnn {tagsupport/marginpar/begin}{default} { \if_mode_horizontal: - \tag_mc_end: - \tag_struct_begin:n{tag=Aside,parent=\g__tag_para_main_struct_tl}% + \tag_mc_end: + \@@_get_marginpar_parent:N \l_@@_tmpa_tl + \tag_struct_begin:e{tag=Aside,parent=\l_@@_tmpa_tl}% \else: \tag_struct_begin:n{tag=Aside}% \fi: diff --git a/macros/latex-dev/required/latex-lab/latex-lab-marginpar.pdf b/macros/latex-dev/required/latex-lab/latex-lab-marginpar.pdf Binary files differindex a80fe64faa..ad936afd31 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-marginpar.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-marginpar.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-math.dtx b/macros/latex-dev/required/latex-lab/latex-lab-math.dtx index 4fabde3d11..c6e07d4832 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-math.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-math.dtx @@ -19,8 +19,8 @@ % for those people who are interested or want to report an issue. % % -\def\ltlabmathdate{2024-02-09} -\def\ltlabmathversion{0.5i} +\def\ltlabmathdate{2024-08-22} +\def\ltlabmathversion{0.6c} % %<*driver> \documentclass{l3doc} @@ -247,8 +247,15 @@ % It can be suppressed by an option with % \texttt{math/tex/AF=false}, see below. % -% The MathML is attached if a file |\jobname-mathml.html| is found and -% if it contains a suitable MathML snippet for the current formula. +% The MathML is attached if the files |\jobname-mathml.html| and/or +% |\jobname-luamml-mathml.html| are found +% and if they contains a suitable MathML snippet for the current formula. +% If the files contain more than one suitable snippet (as identified by the hash) +% the first one is used. +% |\jobname-luamml-mathml.html| is automatically generated (see below section~\ref{sec:luamml}) +% and read after |\jobname-mathml.html|. This means that |\jobname-mathml.html| can contain +% improved versions of a formula. +% % The MathML processing can be suppressed globally by emptying the list of % mathml files with |math/mathml/sources=|. Locally for a formula |math/mathml/AF=false| % can be used. @@ -306,7 +313,7 @@ % % As mentioned above the MathML-AF can be suppressed for the equations in a group with % |math/mathml/AF=false|, or -% completly by setting |math/mathml/sources=| in the preamble. +% completely by setting |math/mathml/sources=| in the preamble. % % Files embedded in a PDF can be listed in the attachments panel of a PDF viewer. % This is probably not so useful for lots of small files (but one could create @@ -316,6 +323,27 @@ % |viewer/pane/mathsource=true| (anywhere in the document) and |viewer/pane/mathml=false| (in the % preamble, before the external file is read). % +% +% \subsection{Automatic mathml creation with luamml}\label{sec:luamml} +% +% If lualatex is used, if the package \texttt{unicode-math} is used +% and if the package \texttt{luamml} is found +% then it will automatically generate the file |\jobname-luamml-mathml.html| +% with mathml representations of all math formulas. +% The generation of the file can be suppressed with |math/mathml/luamml=false|. +% If \texttt{unicode-math} is not used, +% the generation of the file can be forced +% with |math/mathml/luamml=true| or |math/mathml/luamml| but be aware that +% it is then probable that various symbols are mapped to the wrong unicode code +% points. +% The package is still quite experimental and the output should be checked. +% The |\jobname-luamml-mathml.html| file may be previewed in a browser although +% you may need to add additional css or javascript declarations +% to enable browser support for all mathml constructs. +% The file is then used in subsequent compilations and works also with +% pdflatex. +% +% % \subsection{Options} % % @@ -538,6 +566,7 @@ % \begin{macrocode} \tl_new:N \l_@@_tmpa_tl \skip_new:N \l_@@_tmpa_skip +\str_new:N \l_@@_tmpa_str % \end{macrocode} % \end{variable} % @@ -592,8 +621,12 @@ % \l__tag_math_mathml_AF_bool, % \g__tag_math_mathml_AF_bool, % \l__tag_math_mathml_pane_bool, -% \l__tag_math_alt_bool +% \l__tag_math_alt_bool, +% \g__tag_math_luamml_tl, % } +% The variable \cs{g__tag_math_luamml_tl} is initially 0 and +% the user key can set it to -1 or 1. This allows to distinguish +% the unset case from a value set by the user. % \begin{macrocode} \bool_new:N\l__tag_math_texsource_AF_bool \bool_new:N\l__tag_math_texsource_pane_bool @@ -601,6 +634,8 @@ \bool_new:N\g__tag_math_mathml_AF_bool \bool_new:N\l__tag_math_mathml_pane_bool \bool_new:N\l__tag_math_alt_bool +\tl_new:N\g__tag_math_luamml_tl +\tl_gset:Nn\g__tag_math_luamml_tl {0} % \end{macrocode} % \end{variable} % @@ -631,9 +666,11 @@ % % \begin{variable}{\l__tag_math_mathml_files_clist} % A sequence to store the file list for the mathml. +% If luatex is detected with also check the luamml file. % \begin{macrocode} \clist_new:N\l__tag_math_mathml_files_clist -\clist_put_right:Ne\l__tag_math_mathml_files_clist {\c_sys_jobname_str-mathml} +\clist_put_right:Ne\l__tag_math_mathml_files_clist + {\c_sys_jobname_str-mathml,\c_sys_jobname_str-luamml-mathml} % \end{macrocode} % \end{variable} @@ -654,15 +691,15 @@ % a simple Desc key, take care that it is a valid string! % \begin{macrocode} \pdfdict_put:nne {l_pdffile/Filespec} {Desc}{(mathml-#1)} - \pdffile_embed_stream:nnN {#4}{mathml-#1.xml}\l_tmpa_tl + \pdffile_embed_stream:nnN {#4}{mathml-#1.xml}\l_@@_tmpa_tl % \end{macrocode} % not strictly necessary but makes the files visible in the file attachment % page % \begin{macrocode} \bool_if:NT \l__tag_math_mathml_pane_bool - {\pdfmanagement_add:nne {Catalog/Names}{EmbeddedFiles}{\l_tmpa_tl}} + {\pdfmanagement_add:nne {Catalog/Names}{EmbeddedFiles}{\l_@@_tmpa_tl}} \tl_new:c{g_@@_mathml_#3_tl} - \tl_gset_eq:cN{g_@@_mathml_#3_tl}\l_tmpa_tl + \tl_gset_eq:cN{g_@@_mathml_#3_tl}\l_@@_tmpa_tl } } % \end{macrocode} @@ -685,8 +722,268 @@ \@@_AF_mml:nnnn{#1}{#2}{#3}{#4} } % \end{macrocode} +% +% As with luatex we write two files we define a few constants for +% the shared texts. +% +% \begin{macro} +% {\c_@@_mathml_write_init_tl,\l_@@_mathml_write_before_tl, +% \c_@@_mathml_write_after_tl,\c_@@_mathml_write_final_tl} +% \begin{macrocode} +\tl_const:Nn \c_@@_mathml_write_init_tl + { + <!DOCTYPE~html> + \iow_newline: + <html> + \iow_newline: + } +\tl_new:N \l_@@_mathml_write_before_tl +\tl_const:Nn \c_@@_mathml_write_after_tl + { + \iow_newline: + </div> + \iow_newline: + } +\tl_const:Nn \c_@@_mathml_write_final_tl + { + </html> + } +% \end{macrocode} +% \end{macro} +% \begin{socketdecl}{tagsupport/math/mathml/write/prepare} +% To prepare the hash and the starting command we use a socket, so +% that both the dummy and luamml can make use of it. +% \begin{macrocode} +\socket_new:nn {tagsupport/math/mathml/write/prepare}{0} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{plugdecl}{On} +% \begin{macrocode} +\socket_new_plug:nnn{tagsupport/math/mathml/write/prepare}{On} + { + \str_set:NV\l_@@_tmpa_str\l_@@_content_AF_source_tl + \str_replace_all:Nnn\l_@@_tmpa_str{&}{&} + \str_replace_all:Nnn\l_@@_tmpa_str{<}{<} + \tl_set:Nn \l_@@_mathml_write_before_tl + { + <div> + \iow_newline: + <h2>\c_backslash_str mml\c_space_tl \int_use:N \g_@@_math_total_int </h2> + \iow_newline: + <p>\l_@@_tmpa_str</p> + \iow_newline: + <p>\l_@@_content_hash_tl </p> + \iow_newline: + } + } +% \end{macrocode} +% \end{plugdecl} +% +% With luatex we automatically generate mathml with luamml if the package +% can be loaded and unicode-math is detected. +% We start the process in the begindocument/end hook +% so that the reading from a previous compilation can happen before! +% \begin{macrocode} +\sys_if_engine_luatex:T + { + \file_if_exist:nT { luamml.sty } + { + \RequirePackage { luamml } +% \end{macrocode} +% Temporary (!) fixes for endarray +% \begin{macrocode} + \AddToHook{package/array/after} + { + \cs_set:Npn \endarray + { + \tbl_crcr:n{endarray} + \__luamml_array_save_array: + \egroup + \UseTaggingSocket{tbl/finalize} + \tbl_restore_outer_cell_data: + \egroup + \mode_if_math:T { \__luamml_array_finalize_array: } + \@arrayright + \gdef \@preamble {} + } + \cs_set:Npn \@classz + { + \@classx + \@tempcnta \count@ + \prepnext@tok + \@addtopreamble { + \ifcase \@chnum + \hfil + \hskip 1sp + \d@llarbegin + \cs_if_eq:NNTF \d@llarbegin \begingroup { + \insert@column + \d@llarend + } { + \__luamml_array_init_col: + \insert@column + \luamml_flag_save:nn {} {mtd} + \d@llarend + \__luamml_array_finalize_col:w 0~ + } + \do@row@strut + \hfil + \or + \hskip 1sp + \d@llarbegin + \cs_if_eq:NNTF \d@llarbegin \begingroup { + \insert@column + \d@llarend + } { + \__luamml_array_init_col: + \insert@column + \luamml_flag_save:nn {} {mtd} + \d@llarend + \__luamml_array_finalize_col:w 1~ + } + \do@row@strut + \hfil + \or + \hfil + \hskip 1sp + \d@llarbegin + \cs_if_eq:NNTF \d@llarbegin \begingroup { + \insert@column + \d@llarend + } { + \__luamml_array_init_col: + \insert@column + \luamml_flag_save:nn {} {mtd} + \d@llarend + \__luamml_array_finalize_col:w 2~ + } + \do@row@strut + \or + \setbox \ar@mcellbox \vbox \@startpbox { \@nextchar } + \insert@pcolumn + \@endpbox + \ar@align@mcell + \do@row@strut + \or + \vtop \@startpbox { \@nextchar } + \insert@pcolumn + \@endpbox + \do@row@strut + \or + \vbox \@startpbox { \@nextchar } + \insert@pcolumn + \@endpbox + \do@row@strut + \fi + } + \prepnext@tok + } + } +% \end{macrocode} % +% \begin{macrocode} + \AddToHook{begindocument/end} + { + \str_case:on \g__tag_math_luamml_tl + { + { 1 } { + \@@_luamml_activate_write: + \msg_note:nnnn { tag } + { luamml-status }{ enabled }{ create } + } + {-1 } { + \msg_note:nnnn { tag } + { luamml-status }{ disabled }{ not~create } + } + { 0 } + { + \@ifpackageloaded { unicode-math } + { + \@@_luamml_activate_write: + \msg_note:nnnn { tag } + { luamml-status }{ enabled }{ create } + } + { \msg_warning:nn { tag }{ unicode-math-missing } } + } + } + } + } + } +\msg_new:nnn { tag }{ luamml-status } + { + luamml~has~been~#1~and~will~#2~an~MathML~file. + } + +\msg_new:nnn { tag }{ unicode-math-missing } + { + The~package~unicode-math~is~missing\\ + luamml~will~not~create~an~MathML~file.\\ + To~avoid~this~warning~load~unicode-math~\\ + or~disable~luamml~with~\\ + \tl_to_str:n{\tagpdfsetup{math/mathml/luamml=false}}\\ + or~force~luamml~with~\\ + \tl_to_str:n{\tagpdfsetup{math/mathml/luamml=true}} + } +\cs_new_protected:Npn \@@_luamml_activate_write: + { +% \end{macrocode} +% to avoid that nothing is written in the first run, we must activate the sockets: +% \begin{macrocode} + \bool_gset_true:N\g__tag_math_mathml_AF_bool + \AssignSocketPlug{tagsupport/math/struct/begin}{test-mathml} + \AssignSocketPlug{tagsupport/math/struct/end}{test-mathml} + \AssignSocketPlug{tagsupport/math/substruct/begin}{single} + \AssignSocketPlug{tagsupport/math/substruct/end}{single} + \int_set:Nn \l__luamml_pretty_int { 5 } + \RegisterFamilyMapping\symsymbols{oms} + \RegisterFamilyMapping\symletters{oml} + \AssignSocketPlug{tagsupport/math/mathml/write/prepare}{On} + \iow_new:N \g_@@_luamml_iow + \iow_open:Nn \g_@@_luamml_iow {\c_sys_jobname_str-luamml-mathml.html} + \iow_now:Ne \g_@@_luamml_iow { \c_@@_mathml_write_init_tl } + \cs_new:Npn \@@_luamml_output_hook:n ##1 + { + \tl_if_empty:NF \l_@@_mathml_write_before_tl + { + \iow_now:Ne \g_@@_luamml_iow + { + \l_@@_mathml_write_before_tl + ##1 + \c_@@_mathml_write_after_tl + } + } + } + \__luamml_register_output_hook:N \@@_luamml_output_hook:n +% \end{macrocode} +% this starts the process and set flag to 3, +% not really needed, as it is the default but set here for clarity: +% \begin{macrocode} + \luamml_flag_process: +% \end{macrocode} +% At the end of the document we must finish and close the file: +% \begin{macrocode} + \AddToHook{enddocument/afterlastpage} + { + \iow_now:Ne \g_@@_luamml_iow + { \c_@@_mathml_write_final_tl } + \iow_close:N \g_@@_luamml_iow + } + } +% \end{macrocode} +% And now a key to deactivate luamml +% \begin{macrocode} + +\keys_define:nn { __tag / setup } + { + math/mathml/luamml .choice: , + math/mathml/luamml/true .code:n = {\tl_gset:Nn \g__tag_math_luamml_tl{1}}, + math/mathml/luamml/false .code:n = {\tl_gset:Nn \g__tag_math_luamml_tl{-1}}, + math/mathml/luamml .default:n = true, + math/mathml/luamml .usage:n=preamble + } +% \end{macrocode} % \begin{socketdecl}{tagsupport/math/mathml/write} % This writes a html-dummy with the hash and the math content. % This should be optional, so it uses a socket that can be disabled @@ -700,24 +997,11 @@ % \begin{macrocode} \socket_new_plug:nnn{tagsupport/math/mathml/write}{On} { - \str_set:NV\l_@@_tmpa_str\l_@@_content_AF_source_tl - \str_replace_all:Nnn\l_@@_tmpa_str{&}{&} - \str_replace_all:Nnn\l_@@_tmpa_str{<}{<} \iow_now:Ne \g_@@_writedummy_iow { - \iow_newline: - <div> - \iow_newline: - <h2>\c_backslash_str mml\c_space_tl \int_use:N \g_@@_math_total_int </h2> - \iow_newline: - <p>\l_@@_tmpa_str</p> - \iow_newline: - <p>\l_@@_content_hash_tl </p> - \iow_newline: + \l_@@_mathml_write_before_tl <math></math> - \iow_newline: - </div> - \iow_newline: + \c_@@_mathml_write_after_tl } } % \end{macrocode} @@ -739,14 +1023,14 @@ } \iow_now:Ne \g_@@_writedummy_iow { - <!DOCTYPE~html> - \iow_newline: - <html> + \c_@@_mathml_write_init_tl } + \AssignSocketPlug {tagsupport/math/mathml/write/prepare}{On} \AssignSocketPlug {tagsupport/math/mathml/write}{On} \AddToHook{enddocument/afterlastpage} { - \iow_now:Nn \g_@@_writedummy_iow {</html>} + \iow_now:Ne \g_@@_writedummy_iow + { \c_@@_mathml_write_final_tl } \iow_close:N \g_@@_writedummy_iow } } @@ -900,7 +1184,7 @@ % \end{macrocode} % \end{plugdecl} % -% We probably will want to test different tagging receipes. +% We probably will want to test different tagging recipes. % \begin{plugdecl}{default} % \begin{macrocode} \socket_new_plug:nnn @@ -1184,6 +1468,7 @@ { \typeout{WARNING:~mathml~missing~for~hash~\l_@@_content_hash_tl} } + \socket_use:n {tagsupport/math/mathml/write/prepare} \socket_use:n {tagsupport/math/mathml/write} % write hash if request \bool_if:NTF\l__tag_math_texsource_AF_bool { \tl_set_eq:NN \l_@@_content_AF_source_tmpa_tl \l_@@_content_AF_source_tl } @@ -1349,47 +1634,60 @@ % \subsection{Content grabbing} % % \begin{macro}{\@@_grab_dollar:w} -% Grab up to a single |$|, for inline math mode, suppressing -% any processing if the token is \tn{m@th} found in the content. -% -% \fmi{what's that test doing?} -% -% \car{It is some kind of fix, to avoid the remote -% possibility that the math is empty, making the code -% produce an unwanted \texttt{\$\$}.} -% -%\car{cf.~the code for this in \cs{@ensuredmath}} -% -%\car{It is harmless but unnecessary in the dollardollar grabbing below.} -% +% \begin{macro}{\@@_grab_dollar:n} +% \changes{v0.6c}{2024-08-22}{Correct handling of empty math segments} +% Top-level function to handle grabbing of inline math mode delimited by +% |$| tokens. We provide two different ways to do that: a token-by-token +% one that can be used everywhere, and a fast delimited one that does not +% work anywhere that the end |$| token may be hidden, most obviously in +% tabulars. The function here is therefore set up as a variable starting +% point. +% \begin{macrocode} +\cs_new_protected:Npn \@@_grab_dollar:w { \@@_grab_dollar_delim:w } +% \end{macrocode} +% After grabbing inline math material, there is again common processing +% independent of mechanism of collection. % \begin{macrocode} -\cs_new_protected:Npn \@@_grab_dollar:w % $ - #1 $ +\cs_new_protected:Npn \@@_grab_dollar:n #1 { % \end{macrocode} -% \fmi{what's that test doing?} +% We need to do processing first as this picks up \enquote{fake} math mode: +% that information is needed below. % \begin{macrocode} - \tl_if_blank:nF {#1} - { - \@@_process:nn { math } {#1} % $ + \@@_process:nn { math } {#1} % \end{macrocode} % We do not want math tagging in fakemath or when measuring, +% We also do not want math tagging if tagging has been suspended. % \begin{macrocode} - \bool_lazy_or:nnTF - {\legacy_if_p:n { measuring@ }} - { \l_@@_fakemath_bool } - { #1 $ } + \bool_lazy_any:nTF { - \socket_use:n {tagsupport/math/inline/begin} %end P-MC - \socket_use:nn{tagsupport/math/inline/formula/begin}{#1} - $ - \socket_use:n {tagsupport/math/inline/formula/end} - \socket_use:n {tagsupport/math/inline/end} % restart P-MC - } - } + {\legacy_if_p:n { measuring@ }} + { \l_@@_fakemath_bool } + { \tl_if_blank_p:n {#1} } + } + { + #1 $ % $ + } + { + \tag_socket_use:n {math/inline/begin} %end P-MC + \tag_socket_use:nn {math/inline/formula/begin}{#1} + $ % $ + \tag_socket_use:n {math/inline/formula/end} + \tag_socket_use:n {math/inline/end} % restart P-MC + } } % \end{macrocode} % \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_grab_dollar_delim:w} +% Grab up to a single |$|, for inline math mode, suppressing +% any processing if the token is \tn{m@th} found in the content. +% \begin{macrocode} +\cs_new_protected:Npn \@@_grab_dollar_delim:w #1 $ % $ + { \@@_grab_dollar:n {#1} } +% \end{macrocode} +% \end{macro} % % \begin{macro}{\@@_grab_dollardollar:w} % And for the classical \TeX{} display structure. @@ -1402,8 +1700,8 @@ \@@_process:nn { equation* } {#1} \socket_use:n {tagsupport/math/display/begin} \socket_use:nn{tagsupport/math/display/formula/begin}{#1} - $$ } + $$ } % \end{macrocode} % @@ -1462,6 +1760,170 @@ % \end{macrocode} % \end{macro} % +% \subsection{Token-by-token inline grabbing} +% +% Grabbing inline math token-by-token is more involved. The mechanism here +% is essentially a simplified version of that originally seen in +% \pkg{collcell} and refined in \pkg{siunitx}. We make use of the fact that +% in math mode spaces are ignored, so we have to deal with only \texttt{N}-type +% tokens and groups. Furthermore, there is no need to look inside groups, so +% the only special cases are a small selection of \texttt{N}-type tokens. +% +% \begin{variable}{\l_@@_grabbed_tl} +% For collection of the material piecewise. +% \begin{macrocode} +\tl_new:N \l_@@_grabbed_tl +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_@@_grab_env_int} +% Needed to count up the number of nested environments encountered. +% \begin{macrocode} +\int_new:N \l_@@_grab_env_int +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\@@_grab_dollar_loop:} +% \begin{macro}{\@@_grab_loop:} +% The lead-off here establishes a group: we need that as we will have to +% be careful in the way \tn{cr} is handled and ensure this is only +% manipulated whilst grabbing. The main loop is then started. +% \begin{macrocode} +\cs_new_protected:Npn \@@_grab_dollar_loop: + { + \group_begin: + \tl_clear:N \l_@@_grabbed_tl + \@@_grab_loop: + } +\cs_new_protected:Npn \@@_grab_loop: + { + \peek_remove_spaces:n + { + \peek_meaning:NTF \c_group_begin_token + { \@@_grab_loop_group:n } + { \@@_grab_loop_token:N } + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_grab_loop_group:n} +% \begin{macro}{\@@_grab_loop_store:n} +% Handling of grabbed groups is pretty easy. +% \begin{macrocode} +\cs_new_protected:Npn \@@_grab_loop_group:n #1 + { \@@_grab_loop_store:n { {#1} } } +\cs_new_protected:Npn \@@_grab_loop_store:n #1 + { + \tl_put_right:Nn \l_@@_grabbed_tl {#1} + \@@_grab_loop: + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_grab_loop_token:N} +% \begin{macro} +% { +% \@@_grab_loop_$: , +% \@@_grab_loop_\\: , +% \@@_grab_loop_\begin: , +% \@@_grab_loop_\begin : , +% \@@_grab_loop_\end: , +% \@@_grab_loop_\ignorespaces: , +% \@@_grab_loop_\unskip: , +% \@@_grab_loop_\textonly@unskip: +% } +% Filter out the special cases: for performance reasons, use a hash table +% approach rather than a loop (\emph{cf.}~\pkg{collcell}). The need to cover +% \verb*|begin | is that at the start of a cell, \TeX{} will expand \cs{begin} +% but the \LaTeX{} robust mechanism will mean this yields \verb*|begin |. +% If\cs{begin} were protected, that would not be needed. +% \begin{macrocode} +\cs_new_protected:Npn \@@_grab_loop_token:N #1 + { + \cs_if_exist_use:cF + { @@_grab_loop_ \token_to_str:N #1 : } + { \@@_grab_loop_store:n {#1} } + } +\cs_new_protected:cpn { @@_grab_loop_ \token_to_str:N $ : } + { \@@_grab_loop_end: } +\cs_new_protected:cpn { @@_grab_loop_ \token_to_str:N \\ : } + { + \int_compare:nNnTF \l_@@_grab_env_int = 0 + { \@@_grab_loop_newline: } + { \@@_grab_loop_store:n { \\ } } + } +% \end{macrocode} +% In contrast to \pkg{collcell}, nesting is tracked by counting +% \cs{begin}/\cs{end} pairs: this is needed in case there is a tabular-like +% construct containing |\\| inside a cell. As a result, the end-of-tabular +% can be detected without checking the name argument: if \cs{end} is +% encountered at nesting level~0, we've hit the end of a cell. In that case, +% end the row and leave the environment to clean up. +% \begin{macrocode} +\cs_new_protected:cpn { @@_grab_loop_ \token_to_str:N \begin : } + { + \int_incr:N \l_@@_grab_env_int + \@@_grab_loop_store:n { \begin } + } +\cs_new_eq:cc { @@_grab_loop_ \token_to_str:N \begin \c_space_tl : } + { @@_grab_loop_ \token_to_str:N \begin : } +\cs_new_protected:cpn { @@_grab_loop_ \token_to_str:N \end : } + { + \int_compare:nNnTF \l_@@_grab_env_int = 0 + { + \@@_grab_loop_newline: + \end + } + { + \int_decr:N \l_@@_grab_env_int + \@@_grab_loop_store:n { \end } + } + } +\tl_map_inline:nn { \ignorespaces \unskip \textonly@unskip } + { + \cs_new_protected:cpn { @@_grab_loop_ \token_to_str:N #1 : } + { \@@_grab_loop: } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_grab_loop_newline:} +% To allow collection of tokens in the part of the \tn{halign} template after +% |#|, we need \TeX{} to see the primitive with the loop token in the right +% place. That is done by re-defining \tn{cr} at present. Ideally there would +% be a socket in the definition of \texttt{tabular}, etc., to handle this: +% there is also the need to examine in interaction with \pkg{longtable}, which +% also redefines \tn{cr}. +% \begin{macrocode} +\cs_new_protected:Npn \@@_grab_loop_newline: + { + \if_false: { \fi: + \cs_set_protected:Npn \cr + { + \@@_grab_loop: + \tex_cr:D + } + \if_false: } \fi: + \\ + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_grab_loop_end:} +% Clean up and pass on. +% \begin{macrocode} +\cs_new_protected:Npn \@@_grab_loop_end: + { + \exp_args:NNV \group_end: + \@@_grab_dollar:n \l_@@_grabbed_tl + } +% \end{macrocode} +% \end{macro} +% % \subsection{Marking math environments} % % A general mechanism for math mode environments that do not grab their @@ -1860,6 +2322,10 @@ \bool_set_false:N \l_@@_collected_bool \col@sep\tabcolsep \let\d@llarbegin\begingroup \let\d@llarend\endgroup +% \end{macrocode} +% A proper switching mechanism is needed: for the present, do directly. +% \begin{macrocode} + \cs_set_protected:Npn \@@_grab_dollar:w { \@@_grab_dollar_loop: } \@tabarray} } % \end{macrocode} diff --git a/macros/latex-dev/required/latex-lab/latex-lab-math.pdf b/macros/latex-dev/required/latex-lab/latex-lab-math.pdf Binary files differindex f9b74b0553..63bbe46ed7 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-math.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-math.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-mathpkg.pdf b/macros/latex-dev/required/latex-lab/latex-lab-mathpkg.pdf Binary files differindex fb9a09adc9..9b4e0ef1b9 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-mathpkg.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-mathpkg.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-mathtools.dtx b/macros/latex-dev/required/latex-lab/latex-lab-mathtools.dtx index aa27cbf01d..79eee7aab7 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-mathtools.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-mathtools.dtx @@ -23,7 +23,7 @@ \EnableCrossrefs \CodelineIndex \begin{document} - \DocInput{latex-lab-amsmath.dtx} + \DocInput{latex-lab-mathtools.dtx} \end{document} %</driver> % @@ -66,7 +66,7 @@ % \subsection{File declaration} % \begin{macrocode} \ProvidesFile{latex-lab-mathtools.ltx} - [2023-01-05 v0.1a mathtools adaptions] + [2024-07-13 v0.1a mathtools adaptions] % \end{macrocode} % \subsection{Tagpdf support} % To make the code independent from tagging being loaded and active diff --git a/macros/latex-dev/required/latex-lab/latex-lab-mathtools.pdf b/macros/latex-dev/required/latex-lab/latex-lab-mathtools.pdf Binary files differindex 0f6d85c344..7678082ac2 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-mathtools.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-mathtools.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-minipage.dtx b/macros/latex-dev/required/latex-lab/latex-lab-minipage.dtx index ffbe5357e7..f5a324fa5e 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-minipage.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-minipage.dtx @@ -18,8 +18,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabminipagedate{2023-10-30} -\def\ltlabminipageversion{0.81c} +\def\ltlabminipagedate{2024-08-08} +\def\ltlabminipageversion{0.81d} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -120,12 +120,18 @@ % \end{macrocode} % insert the socket % \begin{macrocode} - \socket_use:n{tagsupport/minipage/before}% new + \UseTaggingSocket{minipage/before}% new \setbox\@tempboxa\vbox\bgroup \color@begingroup \hsize\@tempdima \textwidth\hsize \columnwidth\hsize \@parboxrestore +% \end{macrocode} +% minipages are perhaps used in environments where the tagging of paragraphs +% has been altered. So we try to restore this. TODO: this should +% perhaps be done in \cs{@parboxrestore} directly. +% \begin{macrocode} + \UseTaggingSocket{para/restore} \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@ \socket_assign_plug:nn{fntext/process}{mp}% \let\@listdepth\@mplistdepth \@mplistdepth\z@ @@ -153,7 +159,7 @@ \tag_stop:n{minipage} \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}% \tag_start:n{minipage} - \socket_use:n{tagsupport/minipage/after} %new end ... + \UseTaggingSocket{minipage/after} %new end ... } % \end{macrocode} % @@ -164,8 +170,15 @@ \leavevmode \@pboxswfalse \setlength\@tempdima{#4}% - \socket_use:n{tagsupport/parbox/before} - \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}% + \UseTaggingSocket{parbox/before} + \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore +% \end{macrocode} +% parbox are perhaps used in environments where the tagging of paragraphs +% has been altered. So we try to restore this. TODO: this should +% perhaps be done in \cs{@parboxrestore} directly. +% \begin{macrocode} + \UseTaggingSocket{para/restore} + #5\@@par}% \ifx\relax#2\else \setlength\@tempdimb{#2}% \edef\@parboxto{to\the\@tempdimb}% @@ -179,7 +192,7 @@ \csname bm@#3\endcsname}% \if@pboxsw \m@th$\fi \@end@tempboxa% - \socket_use:n{tagsupport/parbox/after} + \UseTaggingSocket{parbox/after} } % \end{macrocode} % @@ -191,9 +204,11 @@ \socket_new_plug:nnn{tagsupport/minipage/before}{tag/dflt} { % \end{macrocode} -% As there was a \cs{leavevmode} before that is a P/text open that we have to close. +% As there was a \cs{leavevmode} before that is a P/text open that we have to close +% if para tagging is active: % \begin{macrocode} - \tag_mc_end_push:\tag_struct_end: + \tag_mc_end_push: + \bool_if:NT \l__tag_para_bool {\tag_struct_end:} % \end{macrocode} % TODO: the P can be further up, we need a proper method to test and handle this. % \begin{macrocode} @@ -203,13 +218,25 @@ % similar for the other sockets: % \begin{macrocode} \socket_new_plug:nnn{tagsupport/minipage/after}{tag/dflt} - {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}} + { + \tag_struct_end: + \bool_if:NT \l__tag_para_bool {\tag_struct_begin:n{tag=\l__tag_para_tag_tl}} + \tag_mc_begin_pop:n{} + } \socket_new_plug:nnn{tagsupport/parbox/before}{tag/dflt} - {\tag_mc_end_push:\tag_struct_end:\tag_struct_begin:n{tag=\l__ltboxes_tag_tl}} + { + \tag_mc_end_push: + \bool_if:NT \l__tag_para_bool {\tag_struct_end:} + \tag_struct_begin:n{tag=\l__ltboxes_tag_tl} + } \socket_new_plug:nnn{tagsupport/parbox/after}{tag/dflt} - {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}} + { + \tag_struct_end: + \bool_if:NT \l__tag_para_bool {\tag_struct_begin:n{tag=\l__tag_para_tag_tl}} + \tag_mc_begin_pop:n{} + } % \end{macrocode} % Activate the default tagging plug % \begin{macrocode} diff --git a/macros/latex-dev/required/latex-lab/latex-lab-minipage.pdf b/macros/latex-dev/required/latex-lab/latex-lab-minipage.pdf Binary files differindex eda0551b7a..6d68904c29 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-minipage.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-minipage.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-namespace.dtx b/macros/latex-dev/required/latex-lab/latex-lab-namespace.dtx index a6087abe57..d76dd8d489 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-namespace.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-namespace.dtx @@ -26,7 +26,7 @@ % \fi % \title{Prototype reimplementation of \LaTeXe{}'s role mapping} % \author{\LaTeX{} Project, initial implementation Ulrike Fischer} -% \date{v0.8 2023-09-04} +% \date{v0.8b 2024-07-05} % % \maketitle % @@ -37,7 +37,7 @@ % \section{Introduction} % % This short file collects tag names from the \LaTeX{} namespace and their role mapping used -% in the latex-lab files. The names and the roles are not necessarly the final ones! +% in the latex-lab files. The names and the roles are not necessarily the final ones! % % Later settings of the same tag overwrite previous settings. % The syntax of a line is a list of three strings ending with commas: @@ -62,18 +62,33 @@ % \begin{macrocode} title, Title, pdf2, part, Title, pdf2, +% \end{macrocode} +% Headings differ in article and book class. This here is for article: +% \begin{macrocode} section, H1, pdf2, subsection, H2, pdf2, subsubsection,H3, pdf2, paragraph, H4, pdf2, subparagraph, H5, pdf2, +% \end{macrocode} +% And this here is used in book: +% \begin{macrocode} +%chapter, H1, pdf2, +%section, H2, pdf2, +%subsection, H3, pdf2, +%subsubsection, H4, pdf2, +%paragraph, H5, pdf2, +%subparagraph, H6, pdf2, +% \end{macrocode} +% +% \begin{macrocode} list, L, pdf2, itemize, L, pdf2, enumerate, L, pdf2, description, L, pdf2, quote, BlockQuote,pdf, quotation, BlockQuote,pdf, -verbatim, Div, pdf2, +verbatim, Div, pdf2, % overwritten by block item, LI, pdf2, itemlabel, Lbl, pdf2, itembody, LBody, pdf2, diff --git a/macros/latex-dev/required/latex-lab/latex-lab-namespace.pdf b/macros/latex-dev/required/latex-lab/latex-lab-namespace.pdf Binary files differindex 113688d669..3363ce1918 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-namespace.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-namespace.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-new-or-1.pdf b/macros/latex-dev/required/latex-lab/latex-lab-new-or-1.pdf Binary files differindex c2cd53f8e5..4a808d7f1b 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-new-or-1.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-new-or-1.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-new-or-2.pdf b/macros/latex-dev/required/latex-lab/latex-lab-new-or-2.pdf Binary files differindex b0c53e859b..8618ee7deb 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-new-or-2.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-new-or-2.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-sec.dtx b/macros/latex-dev/required/latex-lab/latex-lab-sec.dtx index f3786c2ddb..231ed1a864 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-sec.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-sec.dtx @@ -16,7 +16,7 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabsecdate{2024-02-12} +\def\ltlabsecdate{2024-07-05} \def\ltlabsecversion{0.84c} %<*driver> \documentclass[kernel]{l3doc} @@ -121,7 +121,7 @@ % commands must be at the right grouping level. % \end{itemize} % -% \subsection{Funktions and keys} +% \subsection{Functions and keys} % % \begin{function}{\tag_tool:n,\tagtool} % @@ -138,7 +138,7 @@ % to allow e.g. to put an epigraph or similar in front. % % \item The number in \cs{part} and \cs{chapter} is currently not correctly -% tagged as a \texttt{Lbl} as this requires to redefine the internal (class dependant) +% tagged as a \texttt{Lbl} as this requires to redefine the internal (class dependent) % commands too. % % \end{itemize} @@ -376,7 +376,7 @@ \tag_struct_begin:n{tag=part,title=#1} % \end{macrocode} % We remap here the text-unit from the paragraph to NonStruct. -% It would be better to suppress it completly as with the other +% It would be better to suppress it completely as with the other % sectioning commands, but this would require to redefine \cs{@spart} % and \cs{@part}, as there is the grouping, and these commands are % all slightly different in the standard classes. So this is delayed diff --git a/macros/latex-dev/required/latex-lab/latex-lab-sec.pdf b/macros/latex-dev/required/latex-lab/latex-lab-sec.pdf Binary files differindex cdf61e2b1e..c62c8dbeb1 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-sec.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-sec.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-table.dtx b/macros/latex-dev/required/latex-lab/latex-lab-table.dtx index 5352df9550..be0c05a4e1 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-table.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-table.dtx @@ -16,8 +16,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabtbldate{2024-02-07} -\def\ltlabtblversion{0.85k} +\def\ltlabtbldate{2024-08-10} +\def\ltlabtblversion{0.85m} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -100,6 +100,7 @@ % support for the tagging of tables. A list of the known limitations % is shown below. % +% \subsection{Loading} % The module is not loaded automatically (i.e., not yet integrated % into any \texttt{phase-XX}) and by itself it doesn't activate % tagging. For experimenting with table tagging it is therefore best @@ -113,7 +114,26 @@ % It will then automatically tag all table environments it already supports with % the exception of tables in the header and footer of the page (where tagging is disabled). % Such tables can be nested. +% +% Inside cells the automatic tagging of paragraphs is disabled with the exception of +% p/m/b-type cells. % +% Rows do not need to contain a full number of \&, missing cells are automatically +% added with an empty TD-structure. +% +% You should not insert meaningful text with \verb+!{...}+ or \verb+@{...}+ or \cs{noalign} +% between the rows or columns of the table. +% With pdflatex such text will be unmarked, with lualatex it will be marked as artifact. +% Either case means that it will be currently ignored in the +% structure.\footnote{While it is theoretically possible +% to collect such text and move it into a structure it would require manual markup +% from the author to clarify where this text belongs too.} +% +% As mentioned below the \pkg{colortbl} doesn't work fully with the tagging, +% but when it does, colors inside the table are currently ignored. If such a color +% has a semantic meaning (like \enquote{important value}) this meaning will be lost. +% +% \subsection{Untagged and presentation tables} % If a table should not be tagged as table, for example because it is merely used % as a layout to ensure that the content is properly aligned % or because it is a not yet (fully) supported table structure, @@ -121,47 +141,52 @@ % \verb|\tagpdfsetup{table/tagging=false}| or with \verb|\tagpdfsetup{table/tagging=presentation}|% % \footnote{The key has been renamed. The old name `table-tagging` still works but is % deprecated. The value \texttt{presentation} refers to the ARIA role \enquote{presentation}.} -% The first option disables the table tagging code and he content of the tabular +% The first option disables the table tagging code and the content of the tabular % is then treated more or less like running text. This works ok for simple tables using % only hmode-cells (l/c/r) with normal text content, but fails if the table uses vmode-cells % (p/m/b). In such cases the second option works better: it keeps the tagging code active -% but changes the tag names to \texttt{Div} and the grouping structure \texttt{NonStruct}. -% -% Inside cells the automatic tagging of paragraphs is disabled with the exception of -% p/m/b-type cells. -% -% Rows do not need to contain a full number of \&, missing cells are automatically -% added with an empty TD-structure. +% but changes the tag names to \texttt{Div} and the grouping structure \texttt{NonStruct}. It also +% (re)sets the \texttt{table/header-rows} key to empty. +% The key should currently only be used in a group as there is no key (yet) to reset to the default +% tag names. % +% \subsection{Header rows and columns} % There is some basic support\footnote{This is not meant to be the % final interface, though.} for headers. With\footnote{The old key name \texttt{table-header-rows} still % works but is deprecated.} % \begin{quote} % \verb|\tagpdfsetup{table/header-rows={|\meta{list of row numbers}\verb|}| +% \verb|\tagpdfsetup{table/header-columns={|\meta{list of column numbers}\verb|}| % \end{quote} % you can -% declare which (absolute) row numbers should be tagged as header rows. -% It applies to all tables until it is changed to a different list of row numbers or undone by setting -% the key to \meta{empty}. -% A row number can be -% negative, then the counting starts from the end of the table. There is no support -% for header columns yet. In a \env{longtable} the code will currently use the \cs{endhead} or +% declare which (absolute) row and column numbers should be tagged as header rows and header columns. +% It applies to all tables until it is changed to a different list of row or +% columns numbers or undone by setting +% the keys to \meta{empty}. +% A row or column number can be +% negative, then the counting starts from the end of the table. +% In a \env{longtable} the code will currently use the \cs{endhead} or % \cs{endfirsthead} rows as header if one of these commands has been % used and in that case the code % ignores a \texttt{table/header-rows} setting. % -% You should not insert meaningful text with \verb+!{...}+ or \verb+@{...}+ or \cs{noalign} -% between the rows or columns of the table. -% With pdflatex such text will be unmarked, with lualatex it will be marked as artifact. -% Either case means that it will be currently ignored in the -% structure.\footnote{While it is theoretically possible -% to collect such text and move it into a structure it would require manual markup -% from the author to clarify where this text belongs too.} +% \subsection{Spanning of cells} % -% As mentioned below the \pkg{colortbl} doesn't yet work properly with the tagging, -% but once it does, then colors inside the table will probably be -% simply ignored (at least initially). If such a color -% has a semantic meaning (like \enquote{important value}) this meaning will be lost. +% \cs{multicolumn} is supported out of the box and will create a structure with a +% suitable \texttt{ColSpan} attribute\footnote{The code uses actually an attribute \emph{class}. +% The validator PAC doesn't handle this correctly currently and complains about a missing attribute.} +% +% For cells spanning rows some preliminary support exists\footnote{The interface is bound to change!}: +% If you add +% \begin{quote} +% \verb|\tagpdfsetup{table/multirow={|\meta{number of rows}\verb|}| +% \end{quote} +% to a cell the code will add the suitable \texttt{RowSpan} attribute and suppress the tagging of affected +% cells in the following rows. This will also work if the current cell is a \cs{multicolumn}, then +% the cell will span both rows and columns. It is the duty of the author to +% ensure that all cells below and covered by a \texttt{RowSpan} are empty! +% The code neither checks that nor does +% it tries to suppress content. % % Feedback and problems with the code can be reported at % \url{https://github.com/latex3/tagging-project} either in form of @@ -180,19 +205,19 @@ % \item the \env{array} environment is assumed to be part of math and tagging as a table is disabled for % it. % -% \item Row spans are not yet supported (and the \pkg{multirow} package is untested). +% \item Row spans can only be added manually (the \pkg{multirow} package is untested). % -% \item The \pkg{colortbl} package breaks tagging if there are nested tables. It also breaks -% the filling up of incomplete rows. +% \item The \pkg{colortbl} package breaks tagging if there are nested tables. % % \item The \pkg{tabularray} package use a completed different % method to create tables and will not be supported by this code. % % \item The \pkg{nicematrix} package is currently incompatible. % -% \item Most other packages related to tables in \LaTeX{} are not yet tested, +% \item Most other packages related to tables in \LaTeX{} are not fully tested, % that includes packages that change rules like \pkg{booktabs}, \pkg{hhline}, -% \pkg{arydshln}, \pkg{hvdashln}. +% \pkg{arydshln}, \pkg{hvdashln}. Some problems have been resolved, either +% in the packages or through a firstaid which can be loaded the \verb+testphase=firstaid+. % % \item \env{longtable} currently only works with lualatex. % With other engines it breaks as its output @@ -205,9 +230,9 @@ % the tagging of the table must be deactivated with \verb|\tagpdfsetup{table/tagging=false}| % or \verb|\tagpdfsetup{table/tagging=presentation}|. % -% \item Only simple header rows are currently supported. Columns and complex headers with +% \item Only simple header rows and columns are currently supported. Complex headers with % subheaders will be handled later as that needs some syntax changes. Tables -% with more than one header row are probably not pdf/UA as the headers array in +% with more than one header row or column are probably not pdf/UA as the headers array in % the cells is missing. % % \item A \pkg{longtable} \cs{caption} is currently simply formatted as a multicolumn and @@ -256,9 +281,6 @@ % % \item Longtable captions should be properly supported. % -% \item Handle p-cells better. para-tagging should probably be enabled, -% but Part can't be a child of TD, so this should probably be changed to Div here. -% Also there is a stray MC somewhere. % % \item More packages must be tested. % \end{itemize} @@ -289,8 +311,8 @@ % ,\l_@@_cellattribute_tl % ,\l_@@_rowattribute_tl % ,\l_@@_tmpa_clist -% ,\l_@@_tmpa_seq % ,\l_@@_tmpa_tl +% ,\l_@@_tmpa_str % } % This is for the celltag, e.g. TD or TH: % \begin{macrocode} @@ -316,10 +338,16 @@ \tl_new:N \l_@@_rowattribute_tl \tl_set:Nn \l_@@_rowattribute_tl {} % \end{macrocode} +% Variable to store cell info like which cell must be skipped when tagging multirows. +% \begin{macrocode} +\prop_new:N\g_@@_untagged_cells_prop +\prop_new:N\l_@@_saved_untagged_cells_prop +% \end{macrocode} % Temp variables % \begin{macrocode} \clist_new:N \l_@@_tmpa_clist \tl_new:N \l_@@_tmpa_tl +\str_new:N \l_@@_tmpa_str % \end{macrocode} % \end{macro} % @@ -327,7 +355,41 @@ % % % This are the standard plugs for tagging of cells and rows. -% +% +% The following two sockets are defined in lttagging, but we check +% for their existence until the release 11/2024. +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/tbl/init/celldata_plug_str } + { + \NewSocket{tagsupport/tbl/init/celldata}{0} + \NewSocket{tagsupport/tbl/restore/celldata}{0} + } +% \end{macrocode} +% \begin{plugdecl}{default} +% This socket is used inside \cs{tbl_init_cell_data_for_table} for the +% case that this a nested table in a cell. +% \begin{macrocode} +\NewSocketPlug{tagsupport/tbl/init/celldata}{default} + { + \prop_set_eq:NN\l_@@_saved_untagged_cells_prop \g_@@_untagged_cells_prop + \prop_gclear:N \g_@@_untagged_cells_prop + } +\AssignSocketPlug{tagsupport/tbl/init/celldata}{default} +% \end{macrocode} +% \end{plugdecl} + +% \begin{plugdecl}{default} +% This socket is used inside \cs{tbl_restore_outer_cell_data:} and restores +% values when a nested table is ended. +% \begin{macrocode} +\NewSocketPlug{tagsupport/tbl/restore/celldata}{default} + { + \prop_gset_eq:NN\g_@@_untagged_cells_prop \l_@@_saved_untagged_cells_prop + } +\AssignSocketPlug{tagsupport/tbl/restore/celldata}{default} +% \end{macrocode} +% \end{plugdecl} +% % \begin{plugdecl}{TD} % \begin{macrocode} \NewSocketPlug{tagsupport/tbl/cell/begin}{TD} @@ -337,21 +399,44 @@ % always even if the noop plug is in force this needs a different solution. % \begin{macrocode} \@@_show_curr_cell_data: - \tag_struct_begin:n +% \end{macrocode} +% We test if the cell should be tagged at all. +% \begin{macrocode} + \@@_if_tag_cell:nnT {\g_@@_row_int } { \g_@@_col_int } { - tag =\l_@@_celltag_tl, - attribute-class =\l_@@_cellattribute_tl - } - \seq_gput_right:Ne \g_@@_struct_cur_seq { \tag_get:n {struct_num} } +% \end{macrocode} +% this sets row headers +% \begin{macrocode} + \clist_if_in:NVT \l_@@_header_columns_clist\g_@@_col_int + { + \tl_set:Nn \l_@@_celltag_tl {TH} + \tl_set:Ne \l_@@_cellattribute_tl {\l_@@_cellattribute_tl,TH-row} + } +% \end{macrocode} +% Here we handle negative value for row headers: +% \begin{macrocode} + \tl_set:Ne \l_@@_tmpa_tl {\int_eval:n { \g_@@_col_int - 1 - \g_@@_table_cols_tl }} + \clist_if_in:NoT \l_@@_header_columns_clist { \l_@@_tmpa_tl } + { + \tl_set:Nn \l_@@_celltag_tl {TH} + \tl_set:Ne \l_@@_cellattribute_tl {\l_@@_cellattribute_tl,TH-row} + } + \tag_struct_begin:n + { + tag =\l_@@_celltag_tl, + attribute-class ={\l_@@_cellattribute_tl} + } + \seq_gput_right:Ne \g_@@_struct_cur_seq { \tag_get:n {struct_num} } % \end{macrocode} % we store the cells of multicolumns as negative number. This allow to skip them % or to use them as needed. % \begin{macrocode} - \int_step_inline:nn { \g_@@_span_tl - 1 } - { - \seq_gput_right:Ne \g_@@_struct_cur_seq { -\tag_get:n {struct_num} } - } - \tag_mc_begin:n{} + \int_step_inline:nn { \g_@@_span_tl - 1 } + { + \seq_gput_right:Ne \g_@@_struct_cur_seq { -\tag_get:n {struct_num} } + } + \tag_mc_begin:n{} + } } % \end{macrocode} % \end{plugdecl} @@ -360,8 +445,11 @@ % \begin{macrocode} \NewSocketPlug{tagsupport/tbl/cell/end}{TD} { - \tag_mc_end: - \tag_struct_end: + \@@_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int } + { + \tag_mc_end: + \tag_struct_end: + } } % \end{macrocode} % \end{plugdecl} @@ -373,18 +461,26 @@ \NewSocketPlug{tagsupport/tbl/pcell/begin}{TDpbox} { \@@_show_curr_cell_data: - \tag_struct_begin:n - { - tag =\l__tbl_pcelltag_tl, - attribute-class =\l__tbl_cellattribute_tl - } - \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} } - \int_step_inline:nn { \g__tbl_span_tl - 1 } + \@@_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int } { - \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} } - } - \tagpdfparaOn - \tl_set:Nn \l__tag_para_main_tag_tl {Div} + \clist_if_in:NVT \l_@@_header_columns_clist\g_@@_col_int + { + \tl_set:Nn \l_@@_celltag_tl {TH} + \tl_set:Ne \l_@@_cellattribute_tl {\l_@@_cellattribute_tl,TH-row} + } + \tag_struct_begin:n + { + tag =\l_@@_pcelltag_tl, + attribute-class ={\l_@@_cellattribute_tl} + } + \seq_gput_right:Ne \g_@@_struct_cur_seq { \tag_get:n {struct_num} } + \int_step_inline:nn { \g_@@_span_tl - 1 } + { + \seq_gput_right:Ne \g_@@_struct_cur_seq { -\tag_get:n {struct_num} } + } + \tagpdfparaOn + \tl_set:Nn \l__tag_para_main_tag_tl {Div} + } } % \end{macrocode} % \end{plugdecl} @@ -393,7 +489,12 @@ % \begin{macrocode} \NewSocketPlug{tagsupport/tbl/pcell/end}{TDpbox} { - \tag_struct_end: + \@@_if_tag_cell:nnT {\g_@@_row_int } { \g_@@_col_int } + { + \tag_struct_end: + \legacy_if:nT {@endpe}{\par} + \mode_if_vertical:T{ \tagpdfparaOff } + } } % \end{macrocode} % \end{plugdecl} @@ -429,7 +530,7 @@ { \@@_trace:n {==>~ - stucture~stored~for~row~\int_use:N\g_@@_row_int :~ + structure~stored~for~row~\int_use:N\g_@@_row_int :~ \seq_use:Nn \g_@@_struct_cur_seq {,} } } @@ -444,21 +545,49 @@ % normal tables which can also be used inline and nested and % \enquote{vmode} tables like longtable. % +% \begin{macro}{\l__tag_block_flattened_level_int} +% Count the levels of nested blockenvs starting with the first that +% is \enquote{flattened}. The counter is defined in lttagging.dtx, +% but until the next release 11/24 we set it up here too so that we can +% use it in the following socket +% \begin{macrocode} +\int_if_exist:NF \l__tag_block_flattened_level_int + { + \int_new:N \l__tag_block_flattened_level_int + } +% \end{macrocode} +% \end{macro} +% +% \begin{plugdecl}{Table} +% Inside a TD or TR Part is not allowed as child. For structures that restore +% paragraph settings we therefore need a special plug that adjust the settings. +% Currently we set the para main tag to Div. This leads to double Div-structures +% but flattening the paragraph doesn't work, it errors if there is a list inside. +% \begin{macrocode} +\NewSocketPlug{tagsupport/para/restore}{Table} + { + \tl_set:Nn \l__tag_para_main_tag_tl {Div} + \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl + \bool_set_true:N \l__tag_para_bool + \bool_set_false:N \l__tag_para_flattened_bool + \int_zero:N \l__tag_block_flattened_level_int + } +% \end{macrocode} +% \end{plugdecl} +% % \begin{plugdecl}{Table} % Inside a table we currently only disable paratagging. We assume -% that these sockets are in an environment group, so there is no +% that these sockets are called in a group, so there is no % need to reenable paratagging. % \begin{macrocode} \NewSocketPlug{tagsupport/tbl/init}{Table} { - \tag_if_active:T - { - \bool_set_false:N \l__tag_para_bool + \bool_set_false:N \l__tag_para_bool + \AssignSocketPlug{tagsupport/para/restore}{Table} % \end{macrocode} % We also initialize the structure data variables a this point. % \begin{macrocode} - \@@_init_struct_data: - } + \@@_init_struct_data: } % \end{macrocode} % \end{plugdecl} @@ -570,7 +699,7 @@ \prop_if_exist:cT { g__tag_struct_ \l_@@_tmpa_tl _prop } { - \@@_struct_prop_gput:Vnn \l_@@_tmpa_tl {S}{/Artifact} + \__tag_struct_prop_gput:onn { \l_@@_tmpa_tl } {S}{/Artifact} } } } @@ -661,7 +790,7 @@ \prop_if_exist:cT { g__tag_struct_ \l_@@_tmpa_tl _prop } { - \@@_struct_prop_gput:Vnn \l_@@_tmpa_tl {S}{/Artifact} + \__tag_struct_prop_gput:onn {\l_@@_tmpa_tl} {S}{/Artifact} } } } @@ -708,7 +837,7 @@ \tag_mc_end_push: % \end{macrocode} % Close the P-chunk. This assumes that para-tagging is active. -% For nested tables that is not necessarly true, so we test for it. +% For nested tables that is not necessarily true, so we test for it. % \begin{macrocode} \bool_lazy_and:nnT { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool } @@ -726,7 +855,7 @@ \tag_struct_end: % \end{macrocode} % reopen the P-chunk. This assumes that para-tagging is active. -% For nested tables that is not necessarly true, so we test for it. +% For nested tables that is not necessarily true, so we test for it. % \begin{macrocode} \bool_lazy_and:nnT { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool } @@ -775,15 +904,32 @@ {/O /Table /ColSpan~\int_eval:n{#1}} } \tl_set:Ne \l_@@_cellattribute_tl - {colspan-\int_eval:n{#1}} + {\l_@@_cellattribute_tl,colspan-\int_eval:n{#1}} } } % \end{macrocode} -% TODO: move to tagpdf +% \end{plugdecl} +% +% +% +% +% \begin{plugdecl}{code} +% The sockets will be in lttagging.dtx, but that may only happen in +% the next main release, so for now we test if they are in the +% format and if not define them now. % \begin{macrocode} -\tag_if_active:T - { \cs_generate_variant:Nn \__tag_attr_new_entry:nn {ee} } - +\str_if_exist:cF { l__socket_tagsupport/tbl/leaders/end_plug_str } + { + \NewSocket{tagsupport/tbl/leaders/begin}{0} + \NewSocket{tagsupport/tbl/leaders/end}{0} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewSocketPlug{tagsupport/tbl/leaders/begin}{code} + { \tag_mc_begin:n{artifact} } +\NewSocketPlug{tagsupport/tbl/leaders/end}{code} + { \tag_mc_end: } % \end{macrocode} % \end{plugdecl} % @@ -807,8 +953,7 @@ % \subsection{Interfaces to tagging} % % \subsubsection{Tagging helper commands} -% -% + % \subsubsection{Disabling/enabling} % % For now we have only the option true/false but this will probably be extended @@ -836,6 +981,8 @@ \AssignSocketPlug{tagsupport/tbl/vmode/begin}{noop} \AssignSocketPlug{tagsupport/tbl/vmode/end}{noop} \AssignSocketPlug{tagsupport/tbl/colspan}{noop} + \AssignSocketPlug{tagsupport/tbl/leaders/begin}{noop} + \AssignSocketPlug{tagsupport/tbl/leaders/end}{noop} } % \end{macrocode} % \end{macro} @@ -863,6 +1010,8 @@ \AssignSocketPlug{tagsupport/tbl/vmode/begin}{Table} \AssignSocketPlug{tagsupport/tbl/vmode/end}{Table} \AssignSocketPlug{tagsupport/tbl/colspan}{code} + \AssignSocketPlug{tagsupport/tbl/leaders/begin}{code} + \AssignSocketPlug{tagsupport/tbl/leaders/end}{code} } % \end{macrocode} % \end{macro} @@ -883,13 +1032,15 @@ \tl_set:Nn\l_@@_pcelltag_tl {NonStruct} \tl_set:Nn\l_@@_celltag_tl {text} \tl_set:Nn\l_@@_tabletag_tl {Div} + \clist_clear:N \l_@@_header_rows_clist + \clist_clear:N \l_@@_header_columns_clist }, table/tagging .default:n = true, table/tagging .initial:n = true } % \end{macrocode} % This are the old key names kept for now for -% compability. They will got at some time. +% compatibility. They will got at some time. % \begin{macrocode} \keys_define:nn { __tag / setup } { @@ -951,30 +1102,16 @@ % \end{macrocode} % -% \begin{variable}{\l_@@_header_rows_clist} -% This holds the numbers of the header rows. Negative numbers are -% possible and count from the back. +% \begin{variable}{\l_@@_header_rows_clist,\l_@@_header_columns_clist} +% This holds the numbers of the header rows and columns. Negative numbers are +% possible and count from the last column backwards. % \begin{macrocode} \clist_new:N \l_@@_header_rows_clist +\clist_new:N \l_@@_header_columns_clist % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_set_header_rows:} -% TEMP: Next tagpdf will have the right command which also updates -% the debug info. -% For now a temporary command: -% \begin{macrocode} -\cs_if_free:NTF \__tag_struct_prop_gput:nnn - { - \cs_new_protected:Npn \@@_struct_prop_gput:nnn #1#2#3 - { \prop_gput:cnn { g__tag_struct_#1_prop }{#2}{#3} } - } - { \cs_new_protected:Npn \@@_struct_prop_gput:nnn #1#2#3 - { \__tag_struct_prop_gput:nnn {#1}{#2}{#3} } - } -\cs_generate_variant:Nn \@@_struct_prop_gput:nnn {nne,Vnn} -% \end{macrocode} -% % \begin{macrocode} \cs_new_protected:Npn \@@_set_header_rows: { @@ -991,17 +1128,29 @@ % \begin{macrocode} \prop_if_exist:cT { g__tag_struct_####1_prop } { - \@@_struct_prop_gput:nnn{ ####1 }{S}{/TH} + \__tag_struct_prop_gput:nnn{ ####1 }{S}{/TH} % \end{macrocode} -% This need refinement once row headers (and perhaps other attributes) -% are used too, but for now it should be ok. +% This sets the scope class. If the header has already a row attribute +% we replace by TH-both. % \begin{macrocode} \prop_get:cnNTF { g__tag_struct_####1_prop } { C } \l_@@_tmpa_tl - {\@@_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l_@@_tmpa_tl]} } - {\@@_struct_prop_gput:nnn{ ####1 }{C}{/TH-col}} + { + \str_set:Ne \l_@@_tmpa_str {\l_@@_tmpa_tl} + \str_remove_once:Nn \l_@@_tmpa_str {[} + \str_remove_once:Nn \l_@@_tmpa_str {]} + \str_if_in:NnTF\l_@@_tmpa_str{/TH-row} + { + \str_replace_once:Nnn \l_@@_tmpa_str {/TH-row}{/TH-both} + \__tag_struct_prop_gput:nne{ ####1 }{C}{[\l_@@_tmpa_str]} + } + { + \__tag_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l_@@_tmpa_str]} + } + } + {\__tag_struct_prop_gput:nnn{ ####1 }{C}{/TH-col}} } } } @@ -1015,6 +1164,7 @@ \keys_define:nn { __tag / setup } { table/header-rows .clist_set:N = \l_@@_header_rows_clist, + table/header-columns .clist_set:N = \l_@@_header_columns_clist, % \end{macrocode} % obsolete older name: % \begin{macrocode} @@ -1022,8 +1172,114 @@ } % \end{macrocode} % +% \subsection{Multirow support} +% +% \begin{macro}{\@@_multirow:n} +% This command makes the current cell into a multirow cell: +% it creates, if needed, an RowSpan-attribute, adds it to the attributes +% of the cell structure, and marks all following cells spanned by the multirow +% as cells that should not be tagged. The argument is the number of spanned row +% (including the current row). +% \begin{macrocode} +\cs_if_exist:NT \__tag_struct_prop_gput:nnn + { + \cs_generate_variant:Nn \__tag_struct_prop_gput:nnn {one} + } +\cs_new_protected:Npn \@@_multirow:n #1 + { +% \end{macrocode} +% Create an attribute if needed: +% \begin{macrocode} + \prop_get:NeNF \g__tag_attr_entries_prop + {rowspan-\int_eval:n{#1}} + \l_@@_tmpa_tl + { + \__tag_attr_new_entry:ee + {rowspan-\int_eval:n{#1}} + {/O /Table /RowSpan~\int_eval:n{#1}} + } +% \end{macrocode} +% ensure that the attribute is marked as used: +% \begin{macrocode} + \seq_gput_left:Ne\g__tag_attr_class_used_seq + {\pdf_name_from_unicode_e:n{rowspan-\int_eval:n{#1}}} +% \end{macrocode} +% Get the structure number of the current cell +% \begin{macrocode} + \seq_get_right:NN\g_@@_struct_cur_seq \l_@@_tmpb_tl +% \end{macrocode} +% If we are in a multicolumn the number can be negative and +% this must be changed +% \begin{macrocode} + \tl_set:Ne \l_@@_tmpb_tl { \int_abs:n{\l_@@_tmpb_tl} } +% \end{macrocode} +% no we must update an existing attribute. +% TODO: simplify this ... (see also colspan handling). +% \begin{macrocode} + \prop_get:cnNTF + { g__tag_struct_\l_@@_tmpb_tl _prop } + { C } + \l_@@_tmpa_tl + { + \tl_remove_once:Nn \l_@@_tmpa_tl {[} + \tl_remove_once:Nn \l_@@_tmpa_tl {]} + \__tag_struct_prop_gput:one{ \l_@@_tmpb_tl } + {C} + {[/rowspan-\int_eval:n{#1}~\l_@@_tmpa_tl]} + } + { + \__tag_struct_prop_gput:one{ \l_@@_tmpb_tl } + {C} + {[/rowspan-\int_eval:n{#1}]} + } +% \end{macrocode} +% Now mark the spanned cells that should be ignored. +% \begin{macrocode} + \@@_gset_untagged_row_cells:nn {#1-1}{\g_@@_span_tl} + } +% \end{macrocode} +% \end{macro} % +% \begin{macrocode} +\keys_define:nn{ __tag / setup } + { table/multirow .code:n = {\@@_multirow:n {#1} } + ,table/multirow .default:n = 1 + } +% \end{macrocode} % +% \begin{macro}{\@@_gset_untagged_row_cells:nn} +% This command stores the row and column numbers of the cells in the following row(s) +% that should not be tagged as they are a part of a rowspan. +% \begin{macrocode} +\cs_new_protected:Npn \@@_gset_untagged_row_cells:nn #1 #2 % #1 number of rows, #2 number of columns + { + \int_step_inline:nn {#1} + { + \int_step_inline:nn {#2} + { + \prop_gput:Nee \g_@@_untagged_cells_prop + { \int_eval:n {\g_@@_row_int + ##1},\int_eval:n{\g_@@_col_int + ####1 -1 } }{} + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_if_tag_cell:nn} +% We must be able to detect if a cell should be tagged. For this +% we define a conditional --- if more options are needed it can be extended. +% \begin{macrocode} +\prg_new_protected_conditional:Npnn\@@_if_tag_cell:nn #1 #2 %#1 row, #2 col + { T,TF } + { + \prop_get:NeNTF \g_@@_untagged_cells_prop + {\int_eval:n{#1},\int_eval:n{#2}}\l__tbl_tmpa_tl + { \prg_return_false:} + { \prg_return_true: } + } +% \end{macrocode} +% \end{macro} +% % \subsection{Misc stuff} % % \begin{macro}{\@@_show_curr_cell_data:} @@ -1048,13 +1304,6 @@ % cell of a row, but still inside that cell, so we use two % commands. The one adding is used in the row/end socket. % \begin{macrocode} -\NewSocket{tbl/celldata/missingcount}{1} -\NewSocketPlug{tbl/celldata/missingcount}{code}{\tbl_count_missing_cells:n{#1}} -\AssignSocketPlug{tbl/celldata/missingcount}{code} - -% \end{macrocode} -% -% \begin{macrocode} \cs_new:Npn \@@_add_missing_cells: { % \end{macrocode} @@ -1069,6 +1318,7 @@ additional~cell(s)~into~previous~row:} \int_step_inline:nn { \g_@@_missing_cells_int } { + \int_gincr:N\g_@@_col_int \UseTaggingSocket{tbl/cell/begin} \UseTaggingSocket{tbl/cell/end} } diff --git a/macros/latex-dev/required/latex-lab/latex-lab-table.pdf b/macros/latex-dev/required/latex-lab/latex-lab-table.pdf Binary files differindex a87f7638df..c2bb7e7c2f 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-table.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-table.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-testphase.dtx b/macros/latex-dev/required/latex-lab/latex-lab-testphase.dtx index f0a6fe65d0..1134654cd6 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-testphase.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-testphase.dtx @@ -47,7 +47,7 @@ % % Currently the values |phase-I|, |phase-II|, |phase-III| and |new-or| (bundles |new-or-1| % and |new-or-2|) are provided. -% |tagpdf| is an undocumented alias for |phase-II| which is kept for compability. +% |tagpdf| is an undocumented alias for |phase-II| which is kept for compatibility. % The value |math| combines various math related files. % % \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } diff --git a/macros/latex-dev/required/latex-lab/latex-lab-testphase.pdf b/macros/latex-dev/required/latex-lab/latex-lab-testphase.pdf Binary files differindex 9cb5334c0d..c9988c89af 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-testphase.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-testphase.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-text.pdf b/macros/latex-dev/required/latex-lab/latex-lab-text.pdf Binary files differindex 8b778cc94b..8c4fc7780d 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-text.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-text.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-title.pdf b/macros/latex-dev/required/latex-lab/latex-lab-title.pdf Binary files differindex 94ea473b98..64dfa09d2c 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-title.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-title.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-toc-hyperref-changes.pdf b/macros/latex-dev/required/latex-lab/latex-lab-toc-hyperref-changes.pdf Binary files differindex e94e8e9cc3..caf6bd4b7b 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-toc-hyperref-changes.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-toc-hyperref-changes.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx b/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx index bb88ffdcb0..bf10bf4f2f 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx @@ -17,8 +17,8 @@ % for those people who are interested or want to report an issue. % % dates for latex-lab-kernel-changes.sty (pulled from various sources, see ins) -\def\ltlabkerneldate{2024-02-12} -\def\ltlabkernelversion{0.85c} +\def\ltlabkerneldate{2024-07-11} +\def\ltlabkernelversion{0.85d} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -44,6 +44,11 @@ % % \providecommand\hook[1]{\texttt{#1}} % +% +% \ProvideDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl} +% \ProvideDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl} +% \ProvideDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl} +% % \begin{abstract} % \end{abstract} % @@ -187,12 +192,24 @@ % \subsection{\cs{contentsline} extension} % [latex-lab] % The tagging code must add code at the begin and end of \cs{contentsline}. -% This code must have access to the arguments. We set it up as config point -% for now. +% This code must have access to the arguments. They are passed +% together in tagging socket. +% \begin{socketdecl}{tagsupport/toc/contentsline/before, +% tagsupport/toc/contentsline/after} +% Tagging sockets at the begin and end of contentsline. +% They receive \emph{all} contentsline arguments as one argument +% in four brace groups. The socket code should then use the parts it needs. +% The sockets will be in lttagging.dtx, but that may only happen in +% the next main release, so for now we test if they are in the +% format and if not define them now. % \begin{macrocode} -\def\@contentsline@cfgpoint@before#1#2#3#4{} -\def\@contentsline@cfgpoint@after#1#2#3#4{} +\str_if_exist:cF { l__socket_tagsupport/toc/contentsline/before_plug_str } + { + \NewSocket{tagsupport/toc/contentsline/before}{1} + \NewSocket{tagsupport/toc/contentsline/after}{1} + } % \end{macrocode} +% \end{socketdecl} % for the hooks we need that the \cs{l@XX} pass also the destination and % that \cs{l@XX} takes three arguments. % TODO: test that, if there are two many problems we should pass the @@ -200,10 +217,10 @@ % \begin{macrocode} \def\contentsline#1#2#3#4% {% - \@contentsline@cfgpoint@before{#1}{#2}{#3}{#4}% + \UseTaggingSocket{toc/contentsline/before}{{#1}{#2}{#3}{#4}}% \gdef\@contentsline@destination{#4}% \csname l@#1\endcsname{#2}{#3}% - \@contentsline@cfgpoint@after{#1}{#2}{#3}{#4}% + \UseTaggingSocket{toc/contentsline/after}{{#1}{#2}{#3}{#4}}% } % \end{macrocode} % @@ -225,17 +242,33 @@ % \subsection{\cs{@starttoc}} % [kernel?] % -% We add a configuration point before and after reading the file +% We add a tagging socket before and after reading the file % for the tagging. +% \begin{socketdecl}{tagsupport/toc/starttoc/before, +% tagsupport/toc/starttoc/after} +% Tagging sockets for the begin and end of start of \cs{@starttoc}. +% They take one argument, the extension. +% The sockets will be in lttagging.dtx, but that may only happen in +% the next main release, so for now we test if they are in the +% format and if not define them now. +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/toc/starttoc/before_plug_str } + { + \NewSocket{tagsupport/toc/starttoc/before}{1} + \NewSocket{tagsupport/toc/starttoc/after}{1} + } +% \end{macrocode} +% \begin{macrocode} +% \end{macrocode} +% \end{socketdecl} +% % \begin{macrocode} -\def\@starttoc@cfgpoint@before#1{} -\def\@starttoc@cfgpoint@after#1{} \def\@starttoc#1{% \begingroup \makeatletter - \@starttoc@cfgpoint@before{#1}% + \UseTaggingSocket{toc/starttoc/before}{#1}% \@input{\jobname.#1}% - \@starttoc@cfgpoint@after{#1}% + \UseTaggingSocket{toc/starttoc/after}{#1}% \if@filesw \expandafter\newwrite\csname tf@#1\endcsname \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax @@ -269,15 +302,32 @@ \NewMirroredHookPairWithArguments{contentsline/page/before}{contentsline/page/after}{4}% % \end{macrocode} % -% The dot in the leader must be set as artifact. +% The dots in the leader must be set as artifact. % But luatex requires that the mc are set outside the leaders. -% So we need a config point. +% So we need sockets. % % \cs{@dottedtocline} needs hooks and formatting commands. -% We add a sixth argument so that it can grab the destination too. +% To make the leaders into artifact we use tagging sockets. +% The declaration should perhaps be moved into lttagging so that +% it can be used also by external packages even if the tagging code is not +% loaded? +% \begin{socketdecl}{tagsupport/toc/leaders/before, +% tagsupport/toc/leaders/after} +% Tagging sockets to make the dot leaders an artifact. +% They do not take an argument. +% The sockets will be in lttagging.dtx, but that may only happen in +% the next main release, so for now we test if they are in the +% format and if not define them now. +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/toc/leaders/before_plug_str } + { + \NewSocket{tagsupport/toc/leaders/before}{0} + \NewSocket{tagsupport/toc/leaders/after}{0} + } +% \end{macrocode} +% \end{socketdecl} +% The destination is accessed through \cs{@contentsline@destination}. % \begin{macrocode} -\def\@dottedtocline@cfgpoint@leaders#1{#1} - \def\@dottedtocline#1#2#3#4#5{% \ifnum #1>\c@tocdepth \else \vskip \z@ \@plus.2\p@ @@ -291,10 +341,11 @@ \csname contentsline@text@#1@format\endcsname{#4}% \UseHookWithArguments{contentsline/text/after}{4}{#1}{#4}{#5}{\@contentsline@destination}% \nobreak - \@dottedtocline@cfgpoint@leaders{% + \UseTaggingSocket{toc/leaders/before}\SuspendTagging{toc/leaders}% \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep - mu$}\hfill}% + mu$}\hfill + \ResumeTagging{toc/leaders}\UseTaggingSocket{toc/leaders/after}% \nobreak \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor \UseHookWithArguments{contentsline/page/before}{4}{#1}{#4}{#5}{\@contentsline@destination}% diff --git a/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.pdf b/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.pdf Binary files differindex 65e534d37b..7e19e8a9eb 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.pdf diff --git a/macros/latex-dev/required/latex-lab/latex-lab-toc.dtx b/macros/latex-dev/required/latex-lab/latex-lab-toc.dtx index 7235eb9ed9..5ad0d3cec1 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-toc.dtx +++ b/macros/latex-dev/required/latex-lab/latex-lab-toc.dtx @@ -16,8 +16,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabtocdate{2023-10-16} -\def\ltlabtocversion{0.85b} +\def\ltlabtocdate{2024-07-11} +\def\ltlabtocversion{0.85c} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -42,7 +42,10 @@ % \newcommand{\docclass}{document class \marginpar{\raggedright document class % customizations}} % -% \providecommand\hook[1]{\texttt{#1}} +% +% \ProvideDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl} +% \ProvideDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl} +% \ProvideDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl} % % \begin{abstract} % \end{abstract} @@ -196,14 +199,17 @@ \tag_struct_begin:n{tag=TOC,title=#1} } % \end{macrocode} -% Now map it into the config point: +% \end{macro} +% Now define the tagging plug and assign it to the socket. +% \begin{plugdecl}{default} % \begin{macrocode} -\cs_set_protected:Npn\@starttoc@cfgpoint@before#1 - { - \@@_toc_starttoc_init:n{#1} - } +\NewSocketPlug{tagsupport/toc/starttoc/before}{default} + { + \@@_toc_starttoc_init:n{#1} + } +\AssignSocketPlug{tagsupport/toc/starttoc/before}{default} % \end{macrocode} -% \end{macro} +% \end{plugdecl} % \begin{macro}{\@@_toc_starttoc_finalize:} % \begin{macrocode} \cs_new_protected:Npn \@@_toc_starttoc_finalize: @@ -215,15 +221,18 @@ \seq_gclear:N \g_@@_toc_stack_seq } % \end{macrocode} -% Now map it into the config point: +% \end{macro} +% Now define the tagging plug and assign it to the socket. +% \begin{plugdecl}{default} % \begin{macrocode} -\cs_set_protected:Npn\@starttoc@cfgpoint@after#1 - { - \@@_toc_starttoc_finalize: - } +\NewSocketPlug{tagsupport/toc/starttoc/after}{default} + { + \@@_toc_starttoc_finalize: + } +\AssignSocketPlug{tagsupport/toc/starttoc/after}{default} % \end{macrocode} -% \end{macro} - +% \end{plugdecl} +% % \begin{macro}{\@@_toc_end:n} % This commands ends all TOC on the stack with a level higher than the argument % \begin{macrocode} @@ -249,10 +258,11 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_toc_contentsline_begin:nnn} +% \begin{macro}{\@@_toc_contentsline_begin:nnnn} % This is main command executed at the begin of a |\contentsline|. % \begin{macrocode} -\cs_new_protected:Npn \@@_toc_contentsline_begin:nnn #1 #2 #3 %#1 level, #2 content, #3 destination +\cs_new_protected:Npn \@@_toc_contentsline_begin:nnnn #1 #2 #3 #4 + %#1 level, #2 content, #3 page number (unused) #4 destination { \tag_if_active:T { @@ -308,30 +318,34 @@ % \end{NOTE} % \begin{macrocode} \prop_gput:Nee \g_@@_struct_ref_by_dest_prop - { \tag_get:n {struct_num} }{#3} + { \tag_get:n {struct_num} }{#4} \seq_gpush:Ne \g_@@_toc_stack_seq {{TOCI}\use:c{toclevel@#1}} \group_end: } } } % \end{macrocode} -% Now map it into the config point: +% \end{macro} +% Now define the tagging plug and assign it to the socket. +% \begin{plugdecl}{default} % \begin{macrocode} -\cs_set_protected:Npn\@contentsline@cfgpoint@before#1#2#3#4 +\NewSocketPlug{tagsupport/toc/contentsline/before}{default} { - \@@_toc_contentsline_begin:nnn {#1}{#2}{#4} - } + \@@_toc_contentsline_begin:nnnn #1 + } +\AssignSocketPlug{tagsupport/toc/contentsline/before}{default} % \end{macrocode} -% \end{macro} +% \end{plugdecl} % -% \begin{macro}{\@@_toc_contentsline_end:n} +% \begin{macro}{\@@_toc_contentsline_end:nnnn} % This is the closing code of a |\contentsline|. % If the contentsline was actually printed, the code has to % close the TOCI structure and to update the stack. % \begin{macrocode} \msg_new:nnn {tag}{toc-no-TOCI}{Missing~TOCI~structure~on~toc~stack} -\cs_new_protected:Npn \@@_toc_contentsline_end:n #1 %#1 level name +\cs_new_protected:Npn \@@_toc_contentsline_end:nnnn #1 #2 #3 #4 +% #1 level, #2 content (unused), #3 page number (unused) #4 destination (unused) { \int_compare:nNnF { \use:c{toclevel@#1} } > {\use:c{c@tocdepth}} { @@ -348,14 +362,17 @@ } } % \end{macrocode} -% Now we map it to the config point +% \end{macro} +% Now define the tagging plug and assign it to the socket. +% \begin{plugdecl}{default} % \begin{macrocode} -\cs_set_protected:Npn \@contentsline@cfgpoint@after #1#2#3#4 - { - \@@_toc_contentsline_end:n {#1} - } +\NewSocketPlug{tagsupport/toc/contentsline/after}{default} + { + \@@_toc_contentsline_end:nnnn #1 + } +\AssignSocketPlug{tagsupport/toc/contentsline/after}{default} % \end{macrocode} -% \end{macro} +% \end{plugdecl} % % \subsection{Tagging of the content} % This need discussion. @@ -380,12 +397,16 @@ \tag_struct_end: \tag_mc_begin:n{tag=Reference}} % \end{macrocode} -% +% \begin{plugdecl}{artifact} % \begin{macrocode} -\def\@dottedtocline@cfgpoint@leaders#1{% - \tag_mc_begin:n{artifact}\tag_stop:n{leaders}\nobreak#1\nobreak\tag_start:n{leaders}\tag_mc_end:} +\NewSocketPlug{tagsupport/toc/leaders/before}{artifact} + {\tag_mc_begin:n{artifact}\nobreak} +\NewSocketPlug{tagsupport/toc/leaders/after}{artifact} + {\nobreak\tag_mc_end:} +\AssignSocketPlug{tagsupport/toc/leaders/before}{artifact} +\AssignSocketPlug{tagsupport/toc/leaders/after}{artifact} % \end{macrocode} - +% \end{plugdecl} % % \begin{macrocode} %</package> diff --git a/macros/latex-dev/required/latex-lab/latex-lab-toc.pdf b/macros/latex-dev/required/latex-lab/latex-lab-toc.pdf Binary files differindex 1bea97e1d9..5f6e705a90 100644 --- a/macros/latex-dev/required/latex-lab/latex-lab-toc.pdf +++ b/macros/latex-dev/required/latex-lab/latex-lab-toc.pdf diff --git a/macros/latex-dev/required/tools/README.md b/macros/latex-dev/required/tools/README.md index f1500cc4c4..d5c8915ba9 100644 --- a/macros/latex-dev/required/tools/README.md +++ b/macros/latex-dev/required/tools/README.md @@ -1,7 +1,7 @@ The LaTeX `tools` bundle ======================== -Release 2024-06-01 pre-release 2 +Release 2024-11-01 pre-release 2 Overview -------- diff --git a/macros/latex-dev/required/tools/afterpage.pdf b/macros/latex-dev/required/tools/afterpage.pdf Binary files differindex afe6cd4471..63c625d8ef 100644 --- a/macros/latex-dev/required/tools/afterpage.pdf +++ b/macros/latex-dev/required/tools/afterpage.pdf diff --git a/macros/latex-dev/required/tools/array-2016-10-06.sty b/macros/latex-dev/required/tools/array-2016-10-06.sty index f079fd4975..ced72d2913 100644 --- a/macros/latex-dev/required/tools/array-2016-10-06.sty +++ b/macros/latex-dev/required/tools/array-2016-10-06.sty @@ -1,5 +1,7 @@ %% -%% This is an old release of `array.sty', +%% This is an old release of `array.sty' used during rollback operations. +%% Do not use this file directly. +%% ============================== %% %% Copyright 1993-2016 %% The LaTeX Project and any individual authors listed elsewhere diff --git a/macros/latex-dev/required/tools/array-2020-02-10.sty b/macros/latex-dev/required/tools/array-2020-02-10.sty index 1243f25f74..5acd9c727e 100644 --- a/macros/latex-dev/required/tools/array-2020-02-10.sty +++ b/macros/latex-dev/required/tools/array-2020-02-10.sty @@ -1,4 +1,8 @@ %% +%% This is an old release of `array.sty' used during rollback operations. +%% Do not use this file directly. +%% ============================== +%% %% This is file `array.sty', %% generated with the docstrip utility. %% @@ -38,11 +42,6 @@ %% Package `array' to use with LaTeX 2e %% Copyright (C) 1989-1998 Frank Mittelbach, all rights reserved. \NeedsTeXFormat{LaTeX2e}[1995/06/01] -\providecommand\DeclareRelease[3]{} -\providecommand\DeclareCurrentRelease[2]{} - -\DeclareRelease{}{2016-10-06}{array-2016-10-06.sty} -\DeclareCurrentRelease{}{2019-10-01} \ProvidesPackage{array} [2020/02/10 v2.4m Tabular extension package (FMi)] diff --git a/macros/latex-dev/required/tools/array-2023-11-01.sty b/macros/latex-dev/required/tools/array-2023-11-01.sty index cd6eee6a0f..b5267cffd2 100644 --- a/macros/latex-dev/required/tools/array-2023-11-01.sty +++ b/macros/latex-dev/required/tools/array-2023-11-01.sty @@ -1,4 +1,8 @@ %% +%% This is an old release of `array.sty' used during rollback operations. +%% Do not use this file directly. +%% ============================== +%% %% This is file `array.sty', %% generated with the docstrip utility. %% @@ -38,12 +42,6 @@ %% Package `array' to use with LaTeX 2e %% Copyright (C) 1989-1998 Frank Mittelbach, all rights reserved. \NeedsTeXFormat{LaTeX2e}[1995/06/01] -\providecommand\DeclareRelease[3]{} -\providecommand\DeclareCurrentRelease[2]{} - -\DeclareRelease{}{2016-10-06}{array-2016-10-06.sty} -\DeclareRelease{v2.4}{2020-02-10}{array-2020-02-10.sty} -\DeclareCurrentRelease{}{2020-10-01} \ProvidesPackage{array} [2023/10/16 v2.5g Tabular extension package (FMi)] diff --git a/macros/latex-dev/required/tools/array.dtx b/macros/latex-dev/required/tools/array.dtx index 66c40a5267..ca5e991bee 100644 --- a/macros/latex-dev/required/tools/array.dtx +++ b/macros/latex-dev/required/tools/array.dtx @@ -25,9 +25,10 @@ %% Package `array' to use with LaTeX 2e %% Copyright (C) 1989-1998 Frank Mittelbach, all rights reserved. %<+package>\NeedsTeXFormat{LaTeX2e}[1995/06/01] -%<+package>\providecommand\DeclareRelease[3]{} -%<+package>\providecommand\DeclareCurrentRelease[2]{} %<+package> +% For anything before 2016-10-06 we load the 2016 version and hope for the best: +%<+package>\DeclareRelease{}{1994-06-01}{array-2016-10-06.sty} +% %<+package>\DeclareRelease{}{2016-10-06}{array-2016-10-06.sty} %<+package>\DeclareRelease{v2.4}{2020-02-10}{array-2020-02-10.sty} %<+package>\DeclareRelease{v2.5}{2023-11-01}{array-2023-11-01.sty} @@ -38,7 +39,7 @@ % \begin{macrocode} %<+package>\NeedsTeXFormat{LaTeX2e}[2024/06/01] %<+package>\ProvidesPackage{array} -%<+package> [2023/12/11 v2.6a Tabular extension package (FMi)] +%<+package> [2024/07/13 v2.6e Tabular extension package (FMi)] % % \fi % @@ -714,7 +715,7 @@ % % A similar problem happened when "\extrarowheight" was used. For that % reason m-cells now manually position the cell content which -% allows to ignore this extra space request during the vertical aligment. +% allows to ignore this extra space request during the vertical alignment. % % % \subsection{Bugs and Features} @@ -1371,6 +1372,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % % \begin{macro}{\insert@column} % \begin{macro}{\@sharp} +% \begin{macro}{\textonly@unskip} % We now define the macro =\insert@column= which will do % this work for us. % \begin{macrocode} @@ -1399,8 +1401,9 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \changes{v2.0e}{1991/02/07}{Added \{\} around \cs{@sharp} for new ftsel} % \changes{v2.0h}{1992/06/22}{Removed \{\} again in favour of % \cs{d@llarbegin}} +% \changes{v2.6b}{2024/04/08}{Do not \cs{unskip} if in math mode (gh/1323)} % \begin{macrocode} - \ignorespaces \@sharp \unskip + \ignorespaces \@sharp \textonly@unskip % \end{macrocode} % Then the second \textsf{token} register follows whose number should % be saved in =\count@=. @@ -1420,6 +1423,12 @@ Bug reports can be opened (category \texttt{#1}) at\\% \UseTaggingSocket{tbl/cell/end}% } % \end{macrocode} +% Do the unskip only if we are in hmode: +% \changes{v2.6b}{2024/04/08}{Do not \cs{unskip} if in math mode (gh/1323)} +% \begin{macrocode} +\protected\def\textonly@unskip{\ifhmode\unskip\fi} +% \end{macrocode} +% \end{macro} % \end{macro} % \end{macro} % @@ -1891,7 +1900,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % is how much do we need to move down? If there is any % =\arraystretch= in place then the first line will have some % unusual height and we don't want to consider that when finding -% the middle point. So we substract from the cell height the height +% the middle point. So we subtract from the cell height the height % of that strut. But of course we want to include the normal height % of the first line (which would be something like =\ht\strutbox=) % so we need to add that. On the other hand, when centering around @@ -2647,7 +2656,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \begin{macro}{\d@llarbegin} % \begin{macro}{\d@llarend} % =\d@llar= has to be -% locally asigned since otherwise nested \textsf{tabular} and \textsf{array} +% locally assigned since otherwise nested \textsf{tabular} and \textsf{array} % environments (via =\multicolumn=) are impossible. % For 25 years or so =\@halignto= was set globally (to save space on the % save stack, but that was a mistake: if there is a tabular in the @@ -2843,11 +2852,13 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \end{macrocode} % % \begin{macro}{\@preamerr} +% \changes{v2.6d}{2024/06/14}{Keep message sources out of L3 code (gh/1378)} % We also have to redefine the error routine =\@preamerr= since % new kind of errors are possible. % The code for this macro is not perfect yet; % it still needs too much memory. % \begin{macrocode} +\ExplSyntaxOff \def\@preamerr#1{\def\@tempd{{..} at wrong position: }% \PackageError{array}{% \ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0 @@ -2896,7 +2907,6 @@ Bug reports can be opened (category \texttt{#1}) at\\% % to define letters, to be used in the same way as the primitive % column specifiers, `c' `p' etc. % \begin{macrocode} -\ExplSyntaxOff % this is really oldstyle using \@tfor := \def\newcolumntype#1{% % \end{macrocode} % "\NC@char" was added in V2.01 so that active characters, like "@" in @@ -3430,7 +3440,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \subsection{Implementing column types \texttt{w} and \texttt{W}} % % In TugBoat 38/2 an extension was presented that implemented two -% aditional column types \texttt{w} and \texttt{W}. These have now +% additional column types \texttt{w} and \texttt{W}. These have now % been added to the package itself. % % @@ -3507,8 +3517,47 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \end{macro} % % +% \subsection{Handling \cs{cline}} +% +% In the past \pkg{array} did not have to concern itself with +% \cs{cline} but simply used the definition already provided in the +% kernel. However, for tagged PDF output this definition is +% insufficient, because it causes incorrect row counting and the rules +% it generates would need to be marked as artifacts. +% We therefore update it here. % % +% \begin{macro}{\@cline} +% Tagging support for \cs{cline} +% \changes{v2.6e}{2024/07/13}{Support for tagging \cs{cline} (tagging/134)} +% \begin{macrocode} +\ExplSyntaxOn +\def\@cline#1-#2\@nil{ + \omit + \@multicnt#1 + \advance\@multispan\m@ne + \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi + \@multicnt#2 + \advance\@multicnt-#1 + \advance\@multispan\@ne +% \end{macrocode} +% The rule needs artifact tagging in tagged PDF. +% \begin{macrocode} + \UseTaggingSocket{tbl/leaders/begin} + \leaders\hrule\@height\arrayrulewidth\hfill + \UseTaggingSocket{tbl/leaders/end} +% \end{macrocode} +% To the row counting the above appears like an extra row, so we +% have to correct the count. +% \begin{macrocode} + \tbl_gdecr_row_count: + \cr + \noalign{\vskip-\arrayrulewidth} +} +\ExplSyntaxOff +% \end{macrocode} +% \end{macro} +% % % \begin{macrocode} \ExplSyntaxOff diff --git a/macros/latex-dev/required/tools/array.pdf b/macros/latex-dev/required/tools/array.pdf Binary files differindex c0c1d1035f..f42a936a8b 100644 --- a/macros/latex-dev/required/tools/array.pdf +++ b/macros/latex-dev/required/tools/array.pdf diff --git a/macros/latex-dev/required/tools/bm.pdf b/macros/latex-dev/required/tools/bm.pdf Binary files differindex a94e1325b8..8da4641478 100644 --- a/macros/latex-dev/required/tools/bm.pdf +++ b/macros/latex-dev/required/tools/bm.pdf diff --git a/macros/latex-dev/required/tools/calc.pdf b/macros/latex-dev/required/tools/calc.pdf Binary files differindex 3e1f07af3a..07f9891480 100644 --- a/macros/latex-dev/required/tools/calc.pdf +++ b/macros/latex-dev/required/tools/calc.pdf diff --git a/macros/latex-dev/required/tools/changes.txt b/macros/latex-dev/required/tools/changes.txt index 4339d8e702..31292d1b2b 100644 --- a/macros/latex-dev/required/tools/changes.txt +++ b/macros/latex-dev/required/tools/changes.txt @@ -1,3 +1,14 @@ +2024-08-13 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + + * longtable.dtx: + store row number of head also if it ends with a \cr + (tagging-project-gh/554). + +2024-07-13 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * array.dtx (subsection{Handling \cs{cline}}): + Support for tagging \cline (tagging/134) + ======================================================================= This file lists changes to the LaTeX2e files in reverse chronological order. It is provided for convenience only. It therefore makes no claims to @@ -5,6 +16,60 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ======================================================================= +2024-07-04 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + + * longtable.dtx: + Added \LTcaptype (from package ltcaption) to support other types + beside table and to support unnumbered longtables (gh/1377). + + +2024-06-28 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * multicol.dtx: + Update documentation to reflect that \sloppy isn't using + \tolerance=10000 any longer (it did in the early days of LaTeX) + (gh/1385) + +================================================================================ +All changes above are only part of the development branch for the next release. +================================================================================ + +2024-06-14 David Carlisle <David.Carlisle@latex-project.org> + + * array.dtx move \ExplSyntaxOff earlier so error message spaces preserved gh/1378 + + +######################### +# 2024-06-01 Release +######################### + +2024-05-23 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * array.dtx: + * longtable.dtx: + * multicol.dtx: + * showkeys.dtx: + * varioref.dtx: + Do not error with "suspicous date" when rolling back to + early years of LaTeX2e (gh/1336) + +2024-05-09 Yukai Chou <muzimuzhi@gmail.com> + + * amsmath.dtx: + Fix typo in comment, \Umathcar -> \Umathchar (gh/1343) + +2024-04-10 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + + * xr.dtx: + Merged in the code from xr-hyper. This extends xr to properly support + targets and links and also adds support for properties (gh/1180). + +2024-04-08 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * array.dtx (section{The insertion of declarations): + Do not \unskip if in math mode, this way explicit spaces at the + end of the math cell remain as it is with array env in core LaTeX (gh/1323) + 2024-03-13 David Carlisle <David.Carlisle@latex-project.org> * l3sys-query.dtx @@ -16,7 +81,7 @@ are not part of the distribution. 2023-12-16 David Carlisle <David.Carlisle@latex-project.org> - * showkeys.dtx: avoid adding extra box to \@lables gh/1123 + * showkeys.dtx: avoid adding extra box to \@labels gh/1123 2023-12-16 Frank Mittelbach <Frank.Mittelbach@latex-project.org> @@ -41,10 +106,6 @@ are not part of the distribution. * multicol.dtx (subsection{Maintaining the mark registers}]): Get rid of forced breaks for mark extraction (gh/1130) -================================================================================ -All changes above are only part of the development branch for the next release. -================================================================================ - ######################### # 2023-11-01c Release ######################### diff --git a/macros/latex-dev/required/tools/dcolumn.pdf b/macros/latex-dev/required/tools/dcolumn.pdf Binary files differindex 3b0e4e485b..15d118feae 100644 --- a/macros/latex-dev/required/tools/dcolumn.pdf +++ b/macros/latex-dev/required/tools/dcolumn.pdf diff --git a/macros/latex-dev/required/tools/delarray.pdf b/macros/latex-dev/required/tools/delarray.pdf Binary files differindex 75c9f0225e..28d9497fd9 100644 --- a/macros/latex-dev/required/tools/delarray.pdf +++ b/macros/latex-dev/required/tools/delarray.pdf diff --git a/macros/latex-dev/required/tools/enumerate.pdf b/macros/latex-dev/required/tools/enumerate.pdf Binary files differindex 71af43ddc0..7a3aa3b340 100644 --- a/macros/latex-dev/required/tools/enumerate.pdf +++ b/macros/latex-dev/required/tools/enumerate.pdf diff --git a/macros/latex-dev/required/tools/fileerr.pdf b/macros/latex-dev/required/tools/fileerr.pdf Binary files differindex bfa08b68cb..2e5d92685b 100644 --- a/macros/latex-dev/required/tools/fileerr.pdf +++ b/macros/latex-dev/required/tools/fileerr.pdf diff --git a/macros/latex-dev/required/tools/fontsmpl.pdf b/macros/latex-dev/required/tools/fontsmpl.pdf Binary files differindex 54a21ad1cc..4bc67919a4 100644 --- a/macros/latex-dev/required/tools/fontsmpl.pdf +++ b/macros/latex-dev/required/tools/fontsmpl.pdf diff --git a/macros/latex-dev/required/tools/ftnright.pdf b/macros/latex-dev/required/tools/ftnright.pdf Binary files differindex 7218f93ab4..631413b685 100644 --- a/macros/latex-dev/required/tools/ftnright.pdf +++ b/macros/latex-dev/required/tools/ftnright.pdf diff --git a/macros/latex-dev/required/tools/hhline.pdf b/macros/latex-dev/required/tools/hhline.pdf Binary files differindex 2040d11a2e..a8b5e0b679 100644 --- a/macros/latex-dev/required/tools/hhline.pdf +++ b/macros/latex-dev/required/tools/hhline.pdf diff --git a/macros/latex-dev/required/tools/indentfirst.pdf b/macros/latex-dev/required/tools/indentfirst.pdf Binary files differindex 4ac9dbaf87..d87fd104cd 100644 --- a/macros/latex-dev/required/tools/indentfirst.pdf +++ b/macros/latex-dev/required/tools/indentfirst.pdf diff --git a/macros/latex-dev/required/tools/l3sys-query.dtx b/macros/latex-dev/required/tools/l3sys-query.dtx index d8c92adac1..3cba5da4a6 100644 --- a/macros/latex-dev/required/tools/l3sys-query.dtx +++ b/macros/latex-dev/required/tools/l3sys-query.dtx @@ -15,7 +15,7 @@ %<driver> \ProvidesFile{l3sys-query.drv} % \fi % \ProvidesFile{l3sys-query.dtx} - [2024-03-13 v1.0a LaTeX2e interface for l3sys file queries] + [2024-03-28 v1.0a LaTeX2e interface for l3sys file queries] % % \iffalse %<*driver> @@ -122,7 +122,7 @@ % programming interface described in the following section, which allows % the sequence to be manipulated before being used. % -% The defined keys map vey closely to the options of the +% The defined keys map very closely to the options of the % \texttt{l3sys-query} command which is described in % section~\ref{sec:lua}. % @@ -138,7 +138,7 @@ % The key \texttt{type} accepts \texttt{d} or \texttt{f}. % % \item -% The key \texttt{exclude} accepts a glob (or Lua pattern) mathing +% The key \texttt{exclude} accepts a glob (or Lua pattern) matching % files to be excluded. The package arranges that the quoting of the % argument is automatically added if unrestricted shell escape is % enabled. diff --git a/macros/latex-dev/required/tools/l3sys-query.pdf b/macros/latex-dev/required/tools/l3sys-query.pdf Binary files differindex 9f67a453e1..1eafdab83a 100644 --- a/macros/latex-dev/required/tools/l3sys-query.pdf +++ b/macros/latex-dev/required/tools/l3sys-query.pdf diff --git a/macros/latex-dev/required/tools/layout.pdf b/macros/latex-dev/required/tools/layout.pdf Binary files differindex 90c51932ce..8ab18ca488 100644 --- a/macros/latex-dev/required/tools/layout.pdf +++ b/macros/latex-dev/required/tools/layout.pdf diff --git a/macros/latex-dev/required/tools/longtable-2020-01-07.sty b/macros/latex-dev/required/tools/longtable-2020-01-07.sty index f79c691e10..fc7c3f4290 100644 --- a/macros/latex-dev/required/tools/longtable-2020-01-07.sty +++ b/macros/latex-dev/required/tools/longtable-2020-01-07.sty @@ -1,4 +1,8 @@ %% +%% This is an old release of `longtable.sty' used during rollback operations. +%% Do not use this file directly. +%% ============================== +%% %% This is file `longtable.sty', %% generated with the docstrip utility. %% diff --git a/macros/latex-dev/required/tools/longtable.dtx b/macros/latex-dev/required/tools/longtable.dtx index 5a23f3ecb3..439542a18c 100644 --- a/macros/latex-dev/required/tools/longtable.dtx +++ b/macros/latex-dev/required/tools/longtable.dtx @@ -27,8 +27,9 @@ \ProvidesFile{longtable.dtx} %</dtx> %<package>\NeedsTeXFormat{LaTeX2e}[1995/06/01] -%<package>\providecommand\DeclareRelease[3]{} -%<package>\providecommand\DeclareCurrentRelease[2]{} +%<package> +% Try the 2020 version for any rollback before that date: +%<package>\DeclareRelease{}{1994-06-01}{longtable-2020-01-07.sty} %<package> %<package>\DeclareRelease{v4.13}{2020-01-02}{longtable-2020-01-07.sty} %<package>\DeclareCurrentRelease{}{2020-02-07} @@ -37,7 +38,7 @@ %<driver> \ProvidesFile{longtable.drv} % \fi % \ProvidesFile{longtable.dtx} - [2023-12-16 v4.19 Multi-page Table package (DPC)] + [2024-07-06 v4.21 Multi-page Table package (DPC)] % % \iffalse %<*driver> @@ -178,7 +179,7 @@ % \env{longtable}, which has most of the features of the \env{tabular} % environment, but produces tables which may be broken by \TeX's % standard page-breaking algorithm. It also shares some features with -% the \env{table} environment. In particular it uses the same counter, +% the \env{table} environment. In particular it uses by default the same counter, % \texttt{table}, and has a similar "\caption" command. Also, the % standard "\listoftables" command lists tables produced by either the % \env{table} or \env{longtable} environments. @@ -334,6 +335,29 @@ % \caption{A floating table} % \end{table} % +% \section{Counter and Caption Types} +% +% As mentioned in the introduction \env{longtable} uses and updates by default +% the \texttt{table} counter, the "\caption" command creates a table caption +% which is added to the list of tables. +% Packages like \pkg{ltcaption} added more flexibility here by adding the +% command "\LTcaptype" which allowed to change the type, e.g. to a listing. +% Starting with version 4.21 \pkg{longtable} supports this command directly. +% \DescribeMacro{\LTcaptype}% +% By redefining this command it is possible to change the counter and caption type. +% After "\renewcommand\LTcaptype{"\meta{counter}"}" \env{longtable} will update +% the counter \meta{counter}, use "\fnum@"\meta{counter} in the caption (which +% typically will make use of "\"\meta{counter}"name" and "\the"\meta{counter}), and +% write content line entries into the file with the extension stored in the +% command "\ext@"\meta{counter}. When \pkg{hyperref} is loaded the name of +% the anchor will use \meta{counter} too. Packages or documents that change +% "\LTcaptype" to some nonstandard value must ensure that the counter +% \meta{counter} and the commands "\fnum@"\meta{counter} +% and "\ext@"\meta{counter} exist and do not error. +% If "\LTcaptype" is empty no counter is advanced and "\"\meta{counter}"name" in +% the caption is suppressed. +% +% % \section{Captions and Headings} % % At the start of the table one may specify lines which are to appear at @@ -906,6 +930,15 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\LTcaptype} +% The name used as counter, in caption, "\addcontentsline" and in targets. +% "\providecommand" is used for compability with \pkg{ltcaption} +% \changes{v4.21}{2024/07/04} +% {Added \cs{LTcaptype} to support other types beside table.} +% \begin{macrocode} +\providecommand\LTcaptype{table} +% \end{macrocode} +% \end{macro} % \subsection{Internal Parameters} % % \begin{macro}{\LT@head} @@ -956,8 +989,11 @@ % are preserved correctly when "\includeonly" is used. In the rest of % the file "\LT@tables" has been replaced by "\c@LT@tables" without % further comment. +% \changes{v4.21}{2024/07/04} +% {Provide a \cs{theH}-representation for targets.} % \begin{macrocode} \newcounter{LT@tables} +\providecommand\theHLT@tables{\theLT@tables} % \end{macrocode} % \end{macro} % @@ -1049,12 +1085,12 @@ \LT@err{longtable not in 1-column mode}\@ehc \fi % \end{macrocode} -% +% % \changes{v4.19}{2023/12/16}{Support for tagged PDF} % \begin{macrocode} \UseTaggingSocket{tbl/vmode/begin}% % \end{macrocode} -% +% % \begin{macrocode} \begingroup % \end{macrocode} @@ -1079,6 +1115,9 @@ % Since Version 3.02, \package{longtable} has used the internal counter % "\c@LT@tables". The \LaTeX\ counter "table" is still incremented % so that "\caption" works correctly. +% \changes{v4.21}{2024/07/04} +% {Use \cs{LTcaptype} instead of \texttt{table} in various places +% to support other types beside table.} % \begin{macrocode} \def\LT@array[#1]#2{% % \end{macrocode} @@ -1096,25 +1135,31 @@ % TODO: When a line is killed the structure subtree is there already % too and must be removed. If hard to do, then maybe at first warn if the % construction is used. -% +% % \cs{LT@array} is executed in a group, so we can disable para-tagging here. % \changes{v4.19}{2023/12/16}{Support for tagged PDF} % \begin{macrocode} \UseTaggingSocket{tbl/init} - \@kernel@refstepcounter{table}\stepcounter{LT@tables} + \tl_if_empty:eTF { \LTcaptype } + { + \tl_gset:Ne \@currentHref {LT@tables.\theHLT@tables} + } + { + \@kernel@refstepcounter{\LTcaptype}\stepcounter{LT@tables} % \end{macrocode} -% The target is created rather late and a \cs{label} can come earlier, +% The target is created rather late and a \cs{label} can come earlier, % so we have to define \cs{@currentHref} explicitly. We can't currently % assume that \cs{theHtable} is defined always. % \begin{macrocode} - \tl_gset:Ne \@currentHref {table.\cs_if_exist_use:N\theHtable} + \tl_gset:Ne \@currentHref {\LTcaptype.\cs_if_exist_use:c {theH\LTcaptype}} + } % \end{macrocode} -% +% % \changes{v4.19}{2023/12/16}{Managing cell indexes} % \begin{macrocode} \tbl_gzero_row_count: % \end{macrocode} -% +% % \changes{v4.19}{2023/12/16}{Support for tagged PDF} % \begin{macrocode} \UseTaggingSocket{tbl/longtable/init} @@ -1224,7 +1269,7 @@ \begingroup \@mkpream{#2}% % \end{macrocode} -% +% % \changes{v4.19}{2023/12/16}{Managing cell indexes} % \begin{macrocode} \tbl_count_table_cols: @@ -1270,12 +1315,12 @@ \tabskip\z@ \@arstrut % \end{macrocode} % Insert the tagging socket to start the row and initialize the cell -% data for the row. +% data for the row. % \changes{v4.19}{2023/12/16}{Support for tagged PDF} % \begin{macrocode} \UseTaggingSocket{tbl/row/begin}% % \end{macrocode} -% +% % \changes{v4.19}{2023/12/16}{Managing cell indexes} % \begin{macrocode} \tbl_init_cell_data_for_row: @@ -1313,7 +1358,7 @@ column:~ \the\g_@@_col_int } % \end{macrocode} -% +% % \changes{v4.19}{2023/12/16}{Support for tagged PDF} % \begin{macrocode} \tbl_if_row_was_started:T @@ -1398,7 +1443,7 @@ % We also have to make sure that this breakpoint doesn't affect how the next % page is broken, so we make the penalty 9999 (10000 is infinite and thus not % a legal breakpoint) and cancel out the "\kern" with a new "\kern". -% +% % I don't think this is the \emph{right} solution to the problem (that would be % that the standard output routine has a feature for syncronizing with % typesetting, as part of the preparations for switching output routine), but @@ -1475,9 +1520,17 @@ \maxdepth\z@ \fi % \end{macrocode} -% +% \changes{v4.21}{2024/07/04} +% {Use \cs{LTcaptype} to support other types beside table and handle +% the case if it is empty.} % \begin{macrocode} - \MakeLinkTarget{table} + \tl_if_empty:eTF{\LTcaptype} + { + \MakeLinkTarget{LT@tables} + } + { + \MakeLinkTarget{\LTcaptype} + } % \end{macrocode} % Put the table head on the page, and then switch to the new output % routine. @@ -1486,12 +1539,12 @@ % \begin{macrocode} \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak % \end{macrocode} -% +% % \changes{v4.19}{2023/12/16}{Support for tagged PDF} % \begin{macrocode} \UseTaggingSocket{tbl/longtable/head} % \end{macrocode} -% +% % \begin{macrocode} \output{\LT@output}} \ExplSyntaxOff @@ -1523,18 +1576,18 @@ % \begin{macrocode} \tbl_crcr:n {endlongtable} % \end{macrocode} -% +% % \changes{v4.01}{1996/04/11} % {(DPC) use \cs{noalign} to sneak in \cs{LT@entry@chop}} % \begin{macrocode} \noalign{% % \end{macrocode} -% +% % \changes{v4.19}{2023/12/16}{Support for tagged PDF} % \begin{macrocode} \UseTaggingSocket{tbl/longtable/finalize} % \end{macrocode} -% +% % \begin{macrocode} \let\LT@entry\LT@entry@chop \xdef\LT@save@row{\LT@save@row}}% @@ -1578,7 +1631,11 @@ \ifx\LT@save@row\LT@@@@save@row \else \LT@warn{Column~ widths~ have~ changed\MessageBreak - in~ table~ \thetable}% + in~ + \tl_if_empty:eTF{\LTcaptype} + {longtable~ \theLT@tables} + {\LTcaptype\c_space_tl\use:c{the\LTcaptype}} + } \LT@final@warn \fi % \end{macrocode} @@ -1612,7 +1669,7 @@ % \begin{macrocode} \ifvoid\footins\else\insert\footins{}\fi % \end{macrocode} -% +% % \changes{v4.19}{2023/12/16}{Support for tagged PDF} % \begin{macrocode} \UseTaggingSocket{tbl/vmode/end}% @@ -2160,7 +2217,6 @@ \tbl_gdecr_row_count: \penalty\@M} \@gtempa} -\ExplSyntaxOff %<@@=> % \end{macrocode} % \end{macro} @@ -2186,14 +2242,22 @@ % {Add new control argument} % \changes{v4.16}{2021/05/07} % {use \cs{ext@table} gh/561} -% \begin{macrocode} -\def\LT@c@ption#1[#2]#3{% - \LT@makecaption#1\fnum@table{#3}% - \def\@tempa{#2}% - \ifx\@tempa\@empty\else - {\let\\\space - \addcontentsline{\ext@table}{table}{\protect\numberline{\thetable}{#2}}}% - \fi} +% \changes{v4.21}{2024/07/04} +% {Use \cs{LTcaptype} to support other types beside table.} +% \begin{macrocode} +\def\LT@c@ption#1[#2]#3{ + \tl_if_empty:eTF{\LTcaptype} + {\LT@makecaption\@gobble{}{#3}} + {\LT@makecaption#1{\csname fnum@\LTcaptype\endcsname}{#3} + \def\@tempa{#2} + \ifx\@tempa\@empty\else + {\let\\\space + \addcontentsline + {\@nameuse{ext@\LTcaptype}} + {\LTcaptype} + {\protect\numberline{\@nameuse{the\LTcaptype}}{#2}}} + \fi}} +\ExplSyntaxOff % \end{macrocode} % \end{macro} % @@ -2374,7 +2438,7 @@ \ExplSyntaxOn \def\LT@end@hd@ft#1{% % \end{macrocode} -% +% % This command is used to store the head and foot boxes. % We need to retrieve and store the row so that we can clean % up the structure in the finalize code. @@ -2387,7 +2451,7 @@ % \end{macrocode} % TODO: This is exposing internal counters, so it should be encapsulated % in some interface command (but I'm not sure what that should be -% called, so not done yet. +% called, so not done yet. % \changes{v4.19}{2023/12/16}{Managing cell indexes} % \begin{macrocode} \tbl_count_missing_cells:n {head/foot} @@ -2412,19 +2476,28 @@ % To get out of this trap we run \cs{crcr} (which would normally % come inside \cs{LT@echunk}. That will then trigger \cs{everycr} % and update row counter unnecessarily, but now we have a defined state, so -% we can use \cs{noalign} to undo that. +% we can use \cs{noalign} to undo that. % We also change \cs{LT@rows} so that further \cs{cr}s do not do % any harm (as explained above. % % The \cs{crcr} inside \cs{LT@echunk} will be bypassed in that case % as we have just executed a \cs{crcr} and are still in scanning modus for -% \cs{omit} or \cs{noalign}. +% \cs{omit} or \cs{noalign}. % \begin{macrocode} { \crcr \noalign{ % \end{macrocode} -% +% \changes{v4.22}{2024/08/13}{Store header row numbers} +% \begin{macrocode} + \int_step_inline:nn + { \LT@rows } + { + \seq_gput_left:ce + {g_@@_\cs_to_str:N #1 _rows_seq } + { \int_eval:n {\g_@@_row_int - ##1 } } + } +% \end{macrocode} % \changes{v4.19}{2023/12/16}{Managing cell indexes} % \begin{macrocode} \tbl_gdecr_row_count: % undo the increment @@ -2441,7 +2514,7 @@ {Increase~ LTchunksize}% \fi \setbox#1\box\z@ - \@@_trace:n {-->>~ Saving~\noexpand#1} + \@@_trace:n {-->>~ Saving~\noexpand#1} \LT@get@widths \LT@bchunk} % \end{macrocode} @@ -2500,7 +2573,7 @@ \bgroup % \end{macrocode} % \changes{v4.12}{2019/02/06}{Color group to match array package} -% \changes{v4.18}{2023/08/25}{Use \cs{everypar} to match array package, github 1128}% +% \changes{v4.18}{2023/08/25}{Use \cs{everypar} to match array package, github 1128} % \begin{macrocode} \color@begingroup \let\@footnotetext\LT@p@ftntext @@ -2508,7 +2581,7 @@ \@arrayparboxrestore \everypar{% \vrule \@height \ht\@arstrutbox \@width \z@ - \everypar{}}% + \everypar{}}% } % \end{macrocode} % \end{macro} diff --git a/macros/latex-dev/required/tools/longtable.pdf b/macros/latex-dev/required/tools/longtable.pdf Binary files differindex c1c37913ff..7be619967c 100644 --- a/macros/latex-dev/required/tools/longtable.pdf +++ b/macros/latex-dev/required/tools/longtable.pdf diff --git a/macros/latex-dev/required/tools/manifest.txt b/macros/latex-dev/required/tools/manifest.txt index 004245d1d5..c07b6cd831 100644 --- a/macros/latex-dev/required/tools/manifest.txt +++ b/macros/latex-dev/required/tools/manifest.txt @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2024 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -49,7 +49,7 @@ bm.dtx Access bold math symbols. calc.dtx - Infix arithmetic expresions. Contributed to the distribution by + Infix arithmetic expressions. Contributed to the distribution by Kresten Krab Thorup and Frank Jensen. enumerate.dtx @@ -60,7 +60,7 @@ fileerr.dtx missing file error loop. fontsmpl.dtx - Package and test file for producing `font samples' + Package and test file for producing `font samples'. ftnright.dtx Place footnotes in the right hand column in two-column mode. @@ -77,7 +77,7 @@ multicol.dtx rawfonts.dtx Preload fonts under the old internal font names of LaTeX2.09. - Not recomended for new packages, but may help when updating old + Not recommended for new packages, but may help when updating old files. shellesc.dtx @@ -103,7 +103,7 @@ verbatim.dtx Flexible version of verbatim environment. xr.dtx - eXternall References. Extend \ref to access \label commands in + eXternal References. Extend \ref to access \label commands in other documents. xspace.dtx diff --git a/macros/latex-dev/required/tools/multicol-2017-04-11.sty b/macros/latex-dev/required/tools/multicol-2017-04-11.sty index 9e346656bb..bdebc93db9 100644 --- a/macros/latex-dev/required/tools/multicol-2017-04-11.sty +++ b/macros/latex-dev/required/tools/multicol-2017-04-11.sty @@ -1,5 +1,7 @@ %% -%% This is an old release of `multicol.sty', +%% This is an old release of `multicol.sty' used during rollback operations. +%% Do not use this file directly. +%% ============================== %% %% The source is maintained by the LaTeX Project team and bug %% reports for it can be opened at http://latex-project.org/bugs.html diff --git a/macros/latex-dev/required/tools/multicol-2019-10-01.sty b/macros/latex-dev/required/tools/multicol-2019-10-01.sty index 221f62f68e..fc8bda5479 100644 --- a/macros/latex-dev/required/tools/multicol-2019-10-01.sty +++ b/macros/latex-dev/required/tools/multicol-2019-10-01.sty @@ -1,6 +1,7 @@ -%% This is a rollback file for multicol to the last version within release 2019-10-01 -%% ======================= %% +%% This is an old release of `multicol.sty' used during rollback operations. +%% Do not use this file directly. +%% ============================== %% %% This is file `multicol.sty', %% generated with the docstrip utility. @@ -101,14 +102,6 @@ %% %% Frank.Mittelbach@latex-project.org %% -\NeedsTeXFormat{LaTeX2e}[2018-04-01] - -\providecommand\DeclareRelease[3]{} -\providecommand\DeclareCurrentRelease[2]{} - -\DeclareRelease{}{2017-04-11}{multicol-2017-04-11.sty} -\DeclareCurrentRelease{}{2018-04-01} - \ProvidesPackage{multicol} [2019/12/09 v1.8y multicolumn formatting (FMi)] %% diff --git a/macros/latex-dev/required/tools/multicol.dtx b/macros/latex-dev/required/tools/multicol.dtx index 9c680ab563..99f513097e 100644 --- a/macros/latex-dev/required/tools/multicol.dtx +++ b/macros/latex-dev/required/tools/multicol.dtx @@ -20,7 +20,7 @@ % \iffalse This is a METACOMMENT % %% Package `multicol' to use with LaTeX2e -%% Copyright 1989-2023 Frank Mittelbach +%% Copyright 1989-2024 Frank Mittelbach %% %% In addition to the terms of LPPL any distributed version %% (unchanged or modified) of multicol has to keep the statement @@ -77,7 +77,7 @@ %% not for the payment of a license fee per se (which might or might %% not follow from this evaluation). %% -%% The license fee, if any, can be payed either to the LaTeX fund +%% The license fee, if any, can be paid either to the LaTeX fund %% (see ltx3info.txt in the base LaTeX distribution) or to the author of %% the program who can be contacted at %% @@ -86,11 +86,10 @@ %<*dtx> \ProvidesFile{multicol.dtx} %</dtx> -%<package>\NeedsTeXFormat{LaTeX2e}[2018-04-01] -%<package> -%<package>\providecommand\DeclareRelease[3]{} -%<package>\providecommand\DeclareCurrentRelease[2]{} %<package> +% For any rollback before 2017 load the 2017 version and hope for the best: +%<package>\DeclareRelease{}{1994-06-01}{multicol-2017-04-11.sty} +% %<package>\DeclareRelease{}{2017-04-11}{multicol-2017-04-11.sty} %<package>\DeclareRelease{v1.8}{2019-10-01}{multicol-2019-10-01.sty} %<package>\DeclareCurrentRelease{}{2021-11-15} @@ -99,7 +98,7 @@ %<driver> \ProvidesFile{multicol.drv} % \fi % \ProvidesFile{multicol.dtx} - [2024/01/29 v1.9g multicolumn formatting (FMi)] + [2024/07/01 v1.9h multicolumn formatting (FMi)] % % % @@ -404,12 +403,17 @@ % the most important is called |\tolerance|: this controls the % allowed `looseness' (i.e.\ the amount of blank space between words). % Its default value is 200 (the \LaTeX{} |\fussy|) which is too -% small for narrow columns. On the other hand the |\sloppy| -% declaration (which sets |\tolerance| to $10000=\infty$) is too -% large, allowing really bad spacing.\footnote{Look at the next -% paragraph, it was set with the \cs{sloppy} declaration.} -% -% \begin{sloppypar} +% small for narrow columns. + +% Setting it to \texttt{10000} (a.k.a.\ $\infty$) means arbitrary bad +% lines are possible. With that setting \LaTeX{} will make most lines +% perfect but intermix them with really bad lines. This was the +% setting originally used by \cs{sloppy} (nowadays it is a bit more +% cautious and used \texttt{9999} which makes a huge +% difference).\footnote{Look at the next paragraph, it was set with +% the \cs{tolerance}\texttt{=10000}.} +% +% \begin{sloppypar}\tolerance=10000 % \DescribeMacro\multicoltolerance \DescribeMacro\multicolpretolerance % We therefore use a |\multicoltolerance| parameter for the % |\tolerance| value inside the \mc{} environment. Its default value @@ -418,10 +422,10 @@ % be done outside the \mc{} environment. Since |\tolerance| is set % to |\multicoltolerance| at the beginning of every \textsf{multicols} % environment one can locally overwrite this default by assigning -% \verb*+\tolerance = +\meta{desired value}. There also exists a +% \cs{tolerance}\texttt{=}\meta{desired value}. There also exists a % |\multicolpretolerance| parameter holding the value for % |\pretolerance| within a \mc{} environment. Both parameters are -% usually used only by package designers. +% usually used only by package or class designers. % \end{sloppypar} % % Generation of multicolumn output can be divided into two parts. In @@ -680,7 +684,7 @@ % this value will additionally trace the mark handling % algorithm. It will show what marks are found, what marks are % considered, etc. To fully understand this information you will -% probably have to read carefully trough the implementation. +% probably have to read carefully through the implementation. % \item[$\meta{number}\geq 4$.] Setting \meta{number}\pagebreak[2] to % such a high value will additionally place an |\hrule| into your % output, separating the part of text which had already been @@ -1946,7 +1950,7 @@ % the balancing happened in the output routine then \TeX{} reverts % to the |\prevdepth| that was current before the OR once the OR has % finished. In short |\prevdepth| is something you can't set -% globally it is alway local to the current list being built. Thus +% globally it is always local to the current list being built. Thus % we need to set it back to zero here to avoid incorrect spacing. % \changes{v1.8h}{2014/09/12}{Set \cs{prevdepdth} for current vlist % when returning from multicols environment} @@ -2217,7 +2221,7 @@ % \begin{macro}{\multicolmindepthstring} % The default minimum depth of each column corresponds to the depth % of a `p' in the current font. This makes sense for Latin-based -% languages and was hard-wired intitially, but for Asian languages +% languages and was hard-wired initially, but for Asian languages % it is better to use a zero depth (and alternatively one might % want to use the depth of a strut or a parentheses). So we now % offer a way to adjust this while maintaining backward @@ -2463,7 +2467,7 @@ % If |\kept@firstmark| is non-empty then |\kept@botmark| must be % non-empty too so we can use their values. Otherwise we use the % value of |\kept@topmark| which was first initialized when we -% gathered the |\partical@page| and later on was updated to the +% gathered the |\partial@page| and later on was updated to the % |\botmark| for the preceding page. % % \changes{v1.4a}{1992/02/14}{\cs{botmark} set to \cs{splitbotmark}} @@ -2939,7 +2943,7 @@ % marks from this box. This has to be done \emph{before} we add a % penalty of $-10000$ to the top of the box, otherwise only an % empty box will be considered. But even that is not enough: the box -% may contain \cs{columnbreak}s in which case doing some artifical +% may contain \cs{columnbreak}s in which case doing some artificial % splitting to get the marks out still fails to see all marks % unless we take some special precaution in \cs{get@keptmarks} % (which is now done). diff --git a/macros/latex-dev/required/tools/multicol.pdf b/macros/latex-dev/required/tools/multicol.pdf Binary files differindex dc6ec1cde6..3b740a6974 100644 --- a/macros/latex-dev/required/tools/multicol.pdf +++ b/macros/latex-dev/required/tools/multicol.pdf diff --git a/macros/latex-dev/required/tools/rawfonts.pdf b/macros/latex-dev/required/tools/rawfonts.pdf Binary files differindex e2cae3b61d..f56afeb117 100644 --- a/macros/latex-dev/required/tools/rawfonts.pdf +++ b/macros/latex-dev/required/tools/rawfonts.pdf diff --git a/macros/latex-dev/required/tools/shellesc.pdf b/macros/latex-dev/required/tools/shellesc.pdf Binary files differindex 290df81741..96693de02d 100644 --- a/macros/latex-dev/required/tools/shellesc.pdf +++ b/macros/latex-dev/required/tools/shellesc.pdf diff --git a/macros/latex-dev/required/tools/showkeys-2014-10-28.sty b/macros/latex-dev/required/tools/showkeys-2014-10-28.sty index b4d7b19028..9f465dff5c 100644 --- a/macros/latex-dev/required/tools/showkeys-2014-10-28.sty +++ b/macros/latex-dev/required/tools/showkeys-2014-10-28.sty @@ -1,4 +1,8 @@ %% +%% This is an old release of `showkeys.sty' used during rollback operations. +%% Do not use this file directly. +%% ============================== +%% %% This is file `showkeys.sty', %% generated with the docstrip utility. %% diff --git a/macros/latex-dev/required/tools/showkeys.dtx b/macros/latex-dev/required/tools/showkeys.dtx index aba96a7eab..b6717950a7 100644 --- a/macros/latex-dev/required/tools/showkeys.dtx +++ b/macros/latex-dev/required/tools/showkeys.dtx @@ -22,16 +22,15 @@ % \fi % \iffalse %% File: showkeys.dtx Copyright (C) 1992-1997 David Carlisle -%% File: showkeys.dtx Copyright (C) 2006-2023 David Carlisle, LaTeX Project +%% File: showkeys.dtx Copyright (C) 2006-2024 David Carlisle, LaTeX Project % %<*dtx> \ProvidesFile{showkeys.dtx} %</dtx> %<package>\NeedsTeXFormat{LaTeX2e} %<package> -%<package>\providecommand\DeclareRelease[3]{} -%<package>\providecommand\DeclareCurrentRelease[2]{} -%<package> +% For every rollback request before 2022 use the 2014 version: +%<package>\DeclareRelease{}{1994-06-01}{showkeys-2014-10-28.sty} %<package>\DeclareRelease{}{2014-10-28}{showkeys-2014-10-28.sty} %<package>\DeclareCurrentRelease{}{2022-06-01} %<package> @@ -39,7 +38,7 @@ %<driver> \ProvidesFile{showkeys.drv} % \fi % \ProvidesFile{showkeys.dtx} - [2023/12/16 v3.20 Show cite and label keys (DPC, MH)] + [2024/05/23 v3.21 Show cite and label keys (DPC, MH)] % % \iffalse %<*driver> diff --git a/macros/latex-dev/required/tools/showkeys.pdf b/macros/latex-dev/required/tools/showkeys.pdf Binary files differindex 968476380c..e9fd82c879 100644 --- a/macros/latex-dev/required/tools/showkeys.pdf +++ b/macros/latex-dev/required/tools/showkeys.pdf diff --git a/macros/latex-dev/required/tools/somedefs.pdf b/macros/latex-dev/required/tools/somedefs.pdf Binary files differindex 42fe646dfb..cdc2b30cb5 100644 --- a/macros/latex-dev/required/tools/somedefs.pdf +++ b/macros/latex-dev/required/tools/somedefs.pdf diff --git a/macros/latex-dev/required/tools/tabularx.pdf b/macros/latex-dev/required/tools/tabularx.pdf Binary files differindex 73f2c1bdf2..e35268596a 100644 --- a/macros/latex-dev/required/tools/tabularx.pdf +++ b/macros/latex-dev/required/tools/tabularx.pdf diff --git a/macros/latex-dev/required/tools/theorem.dtx b/macros/latex-dev/required/tools/theorem.dtx index a9c3ccae3e..3fbba473ba 100644 --- a/macros/latex-dev/required/tools/theorem.dtx +++ b/macros/latex-dev/required/tools/theorem.dtx @@ -24,7 +24,7 @@ %% % % -\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)} % % \ProvidesFile{theorem.dtx}[\FMithmInfo] %\iffalse % this is a METACOMMENT ! @@ -952,7 +952,6 @@ % % \subsubsection{The \texttt{changebreak} style} % -% \begin{macrocode} % This style option is stored in the file |thcb.sty|. % \begin{macrocode} %<*thcb> diff --git a/macros/latex-dev/required/tools/theorem.pdf b/macros/latex-dev/required/tools/theorem.pdf Binary files differindex eb1b723c21..f9244454d3 100644 --- a/macros/latex-dev/required/tools/theorem.pdf +++ b/macros/latex-dev/required/tools/theorem.pdf diff --git a/macros/latex-dev/required/tools/tools-overview.pdf b/macros/latex-dev/required/tools/tools-overview.pdf Binary files differindex 74db7e1ce1..f92bdfdd28 100644 --- a/macros/latex-dev/required/tools/tools-overview.pdf +++ b/macros/latex-dev/required/tools/tools-overview.pdf diff --git a/macros/latex-dev/required/tools/tools-overview.tex b/macros/latex-dev/required/tools/tools-overview.tex index 54f4b5ed63..3d45a5e2fc 100644 --- a/macros/latex-dev/required/tools/tools-overview.tex +++ b/macros/latex-dev/required/tools/tools-overview.tex @@ -132,7 +132,7 @@ Access bold math symbols. }% \entry{calc}{% - Infix arithmetic expresions. Contributed to the distribution by + Infix arithmetic expressions. Contributed to the distribution by Kresten Krab Thorup and Frank Jensen. }% \entry{dcolumn}{% @@ -149,7 +149,7 @@ missing file error loop. }% \entry{fontsmpl}{% - Package and test file for producing \emph{font samples} + Package and test file for producing \emph{font samples}. }% \entry{ftnright}{% Place footnotes in the right hand column in two-column mode. @@ -173,7 +173,7 @@ }% \entry{rawfonts}{% Preload fonts under the old internal font names of \LaTeX{}2.09. - Not recomended for new packages, but may help when updating old + Not recommended for new packages, but may help when updating old files. }% \entry{shellesc}{% @@ -206,7 +206,7 @@ Flexible version of verbatim environment. }% \entry{xr}{% - eXternall References. Extend \cs{ref} to access \cs{label} commands in + eXternal References. Extend \cs{ref} to access \cs{label} commands in other documents. }% \entry{xspace}{% diff --git a/macros/latex-dev/required/tools/trace.pdf b/macros/latex-dev/required/tools/trace.pdf Binary files differindex a2f5e7d4fb..336007ba1e 100644 --- a/macros/latex-dev/required/tools/trace.pdf +++ b/macros/latex-dev/required/tools/trace.pdf diff --git a/macros/latex-dev/required/tools/varioref-2016-02-16.sty b/macros/latex-dev/required/tools/varioref-2016-02-16.sty index 747e89dc60..39cc4467a7 100644 --- a/macros/latex-dev/required/tools/varioref-2016-02-16.sty +++ b/macros/latex-dev/required/tools/varioref-2016-02-16.sty @@ -1,4 +1,8 @@ %% +%% This is an old release of `varioref.sty' used during rollback operations. +%% Do not use this file directly. +%% ============================== +%% %% This is file `varioref.sty', %% generated with the docstrip utility. %% diff --git a/macros/latex-dev/required/tools/varioref.dtx b/macros/latex-dev/required/tools/varioref.dtx index f25c524188..40b3038074 100644 --- a/macros/latex-dev/required/tools/varioref.dtx +++ b/macros/latex-dev/required/tools/varioref.dtx @@ -33,14 +33,15 @@ %% % %<package>\NeedsTeXFormat{LaTeX2e}[1995/05/16] -%<package>\providecommand\DeclareRelease[3]{} -%<package>\providecommand\DeclareCurrentRelease[2]{} %<package> +% +% For any rollback before 2019 load the 2016 version and hope for the best: +%<package>\DeclareRelease{}{1994-06-01}{varioref-2016-02-16.sty} %<package>\DeclareRelease{}{2016-02-16}{varioref-2016-02-16.sty} %<package>\DeclareCurrentRelease{}{2019-10-01} %<package> %<package>\ProvidesPackage{varioref} -%<package> [2024/01/15 v1.6f package for extended references (FMi)] +%<package> [2024/05/23 v1.6g package for extended references (FMi)] % \fi % %% diff --git a/macros/latex-dev/required/tools/varioref.pdf b/macros/latex-dev/required/tools/varioref.pdf Binary files differindex a398d5ff05..45ccb23775 100644 --- a/macros/latex-dev/required/tools/varioref.pdf +++ b/macros/latex-dev/required/tools/varioref.pdf diff --git a/macros/latex-dev/required/tools/verbatim.pdf b/macros/latex-dev/required/tools/verbatim.pdf Binary files differindex d2bd345190..60e64211fa 100644 --- a/macros/latex-dev/required/tools/verbatim.pdf +++ b/macros/latex-dev/required/tools/verbatim.pdf diff --git a/macros/latex-dev/required/tools/xr-2023-07-04.sty b/macros/latex-dev/required/tools/xr-2023-07-04.sty new file mode 100644 index 0000000000..15bfde169a --- /dev/null +++ b/macros/latex-dev/required/tools/xr-2023-07-04.sty @@ -0,0 +1,84 @@ +%% +%% This is an old release of `xr.sty' used during rollback operations. +%% Do not use this file directly. +%% ============================== +%% +%% This is file `xr.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xr.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% The source is maintained by the LaTeX Project team and bug +%% reports for it can be opened at https://latex-project.org/bugs/ +%% (but please observe conditions on bug reports sent to that address!) +%% +%% +%% Copyright (C) 1993-2023 +%% The LaTeX Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'. +%% -------------------------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle' +%% without such generated files. +%% +%% The list of all files belonging to the LaTeX `Tools Bundle' is +%% given in the file `manifest.txt'. +%% +%% File: xr.dtx Copyright (C) 1993-2019 David Carlisle +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{xr} + [2023-07-04 v5.06 eXternal References (DPC)] +\def\externaldocument{\@ifnextchar[\XR@{\XR@[]}} +\let\externalcitedocument\externaldocument +\def\XR@[#1]#2{{% + \makeatletter + \def\XR@prefix{#1}% + \set@curr@file{#2}% + \expandafter\XR@next\@curr@file.aux\relax\\}} +\def\XR@next#1\relax#2\\{% + \edef\XR@list{#2}% + \XR@loop{#1}} +\def\XR@aux{% + \ifx\XR@list\@empty\else\expandafter\XR@explist\fi} + +\def\XR@explist{\expandafter\XR@next\XR@list\\} +\def\XR@loop#1{\openin\@inputcheck{#1}\relax + \ifeof\@inputcheck + \PackageWarning{xr}{^^JNo file #1^^JLABELS NOT IMPORTED.^^J}% + \expandafter\XR@aux + \else + \PackageInfo{xr}{IMPORTING LABELS FROM #1}% + \expandafter\XR@read\fi} +\def\XR@read{% + \read\@inputcheck to\XR@line + \expandafter\XR@test\XR@line...\XR@} +\long\def\XR@test#1#2#3#4\XR@{% + \let\XR@tempa\@gobbletwo + \ifx#1\newlabel + \let\XR@tempa\@firstoftwo + \else\ifx#1\bibcite + \let\XR@tempa\@firstoftwo + \else\ifx#1\@input + \let\XR@tempa\@secondoftwo + \fi\fi\fi + \XR@tempa{#1{\XR@prefix#2}{#3}}{\edef\XR@list{\XR@list#2\relax}}% + \ifeof\@inputcheck\expandafter\XR@aux + \else\expandafter\XR@read\fi} +\endinput +%% +%% End of file `xr.sty'. diff --git a/macros/latex-dev/required/tools/xr.dtx b/macros/latex-dev/required/tools/xr.dtx index 3914cebcd9..daa0778b36 100644 --- a/macros/latex-dev/required/tools/xr.dtx +++ b/macros/latex-dev/required/tools/xr.dtx @@ -21,14 +21,49 @@ % % \fi % \iffalse -%% File: xr.dtx Copyright (C) 1993-2019 David Carlisle +%% File: xr.dtx Copyright (C) 1993-2024 David Carlisle % %<package>\NeedsTeXFormat{LaTeX2e} +%<package>\DeclareRelease{v5}{2023-07-04}{xr-2023-07-04.sty} +%<package>\DeclareCurrentRelease{}{2024-04-10} %<package>\ProvidesPackage{xr} -%<package> [2023-07-04 v5.06 eXternal References (DPC)] +%<package> [2024-04-10 v6.00 eXternal References (DPC)] % %<*driver> -\documentclass{ltxdoc} +\documentclass{l3doc} +% currently missing in l3doc, copied from array.dtx +\makeatletter +\def\MaintainedBy#1{\gdef\@maintainedby{#1}} +\let\@maintainedby\@empty +\def\MaintainedByLaTeXTeam#1{% +{\gdef\@maintainedby{% +This file is maintained by the \LaTeX{} Project team.\\% +Bug reports can be opened (category \texttt{#1}) at\\% +\url{https://latex-project.org/bugs.html}.}}} +\def\@maketitle{% + \newpage + \null + \vskip 2em% + \begin{center}% + \let \footnote \thanks + {\LARGE \@title \par}% + \vskip 1.5em% + {\large + \lineskip .5em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1em% + {\large \@date}% + \ifx\@maintainedby\@empty + \else + \vskip 1em% + \fbox{\fbox{\begin{tabular}{@{}l@{}}\@maintainedby\end{tabular}}}% + \fi + \end{center}% + \par + \vskip 1.5em} +\makeatother \usepackage{xr} \GetFileInfo{xr.sty} \begin{document} @@ -50,44 +85,113 @@ % % \changes{v5.00}{1993/07/07} % {First DPC version (by agreement with J-PD). New mechanism -% (\cmd{\read} instead of \cmd\input).} +% (\cs{read} instead of \cs{input}).} % % \changes{v5.01}{1993/07/20}{Fix bug added by DPC, v5.00 did not import -% aux files of \cmd\include'ed files. (Reported by J-PD)} +% aux files of \cs{include}'ed files. (Reported by J-PD)} % % \changes{v5.02}{1994/05/28}{Update for LaTeX2e} % \changes{v5.03}{2018/10/01}{Fix for conditionals in aux file} % \changes{v5.05}{2019/07/20}{include xcite} +% \changes{v6.00}{2024/04/10}{merge with xr-hyper} % % % This package implements a system for eXternal References. -% +% Version 6.00 merges the \pkg{xr} package and the \pkg{xr-hyper} package. +% \pkg{xr-hyper} was developed to support the +% extended label syntax of the \pkg{hyperref} package and to enable active links +% to the external documents. +% In the \LaTeX{} release 2023-06-01 the label syntax of \pkg{hyperref} +% and the \LaTeX{} kernel have been synchronized and there is no longer +% a need for two packages. The package \pkg{xr-hyper} will be +% deprecated. +% +% The previous version before the merge can be accessed with +% \begin{verbatim} +% \usepackage{xr}[=v5] +% \end{verbatim} +% or with a rollback date between 2023-07-04 and 2024-04-09 +% \begin{verbatim} +% \usepackage{xr}[=2024-04-09] +% \end{verbatim} +% +% \section{Usage} +% +% \begin{syntax} +% \cs{externaldocument}\oarg{prefix}\texttt[nocite\texttt]\marg{document}\oarg{url} +% \end{syntax} +% % If one document needs to refer to sections of another, say |aaa.tex|, % then this package may be loaded in the main file, and the command\\ % |\externaldocument{aaa}|\\ % given in the preamble. % -% Then you may use |\ref| and |\pageref| to refer to anything which has +% Then you may use |\ref| and |\pageref| (or |\nameref| if the +% package \pkg{nameref} has been loaded to refer to anything which has % been given a |\label| in either |aaa.tex| or the main document. +% It is also possible to refer to properties stored with \cs{RecordProperties}. % You may declare any number of such external documents. % % If any of the external documents, or the main document, use the same % |\label| then an error will occur as the label will be multiply % defined. To overcome this problem |\externaldocument| has an optional -% argument. If you declare |\externaldocument[A-]{aaa}|, then all +% argument \meta{prefix}. +% If you declare |\externaldocument[A-]{aaa}|, then all % references from |aaa| are prefixed by |A-|. So for instance, if a % section of |aaa| had |\label{intro}|, then this could be referenced % with |\ref{A-intro}|. The prefix need not be |A-|, it can be any % string chosen to ensure that all the labels imported from external -% files are unique. Note however that if your style declares certain -% active characters (|:| in French, |"| in German) then these -% characters can not usually be used in |\label|, and similarly may not -% be used in the optional argument to |\externaldocument|. +% files are unique. Note however that the prefix is expanded and +% so should not contain commands that are not safe in this context. % % As first suggested in Enrico Gregorio's |xcite| package, the current version % also allows |\cite| to reference |\bibitem| in the external document. % For compatibility with |xcite|, |\externalcitedocument| is made available % as an alias for |\externaldocument| +% +% Many packages have variant citation commands (natbib, +% biblatex,....) and the external document may or may not have used +% hyperref. Because of these differences the citation linking may not +% always work, it can be disabled by specifying \texttt{[nocite]} after the +% \meta{prefix}: +% \begin{verbatim} +% \externaldocument[][nocite]{aaa} +% \end{verbatim} +% +% The `document' referred to by the main argument \meta{document} is the file +% \file{document.aux} which must be somewhere on TeX's input path. +% Some packages (eg hyperref) really need to know the location of the +% final document rather than the aux file. By default this is assumed +% to be \file{document.pdf}. A package may redefine the command \cs{XR@ext} to +% change this default extension. However sometimes the final +% document may be in a position unrelated to the aux file, or the +% browser may not be able to find files at an arbitrary point in +% TeX's input path, so the final optional argument \meta{url} allows a full +% URL to the final document to be specified. +% \begin{verbatim} +% \externaldocument{aaa}[https://example.com/this/path/to/aaa.pdf] +% \end{verbatim} +% +% The package stores the url of the external document in the label data. It can +% e.g. be retrieved with the \pkg{refcount} package +% +% \begin{verbatim} +% \usepackage{refcount,xr} +% \externaldocument{aaa} +% ... +% \getrefbykeydefault{intro}{url}{??} %prints aaa.pdf or ?? +% \end{verbatim} +% +% \pkg{xr} supports also the properties introduced in \LaTeX{} 2023-11-01. +% Here the url of the external document is stored in the \texttt{xr-url} property. +% +% \begin{verbatim} +% \usepackage{xr} +% \externaldocument{aaa} %aaa contains \RecordProperties{intro}{page} +% ... +% \RefProperty{intro}{page} %gives page number +% \RefProperty{intro}{xr-url} %gives aaa.pdf +% \end{verbatim} % % \MaybeStop{} % @@ -98,20 +202,74 @@ % \end{macrocode} % % Check for the optional argument. +% \changes{v6.00}{2024-04-10}{Copied over extended definition of xr-hyper} % \begin{macrocode} -\def\externaldocument{\@ifnextchar[\XR@{\XR@[]}} +\def\externaldocument{\@testopt\XR@cite{}} \let\externalcitedocument\externaldocument +\def\XR@cite[#1]{\@testopt{\XR@[#1]}{}} +\def\XR@[#1][#2]#3{\@testopt{\XR@@{#1}{#2}{#3}}{#3.\XR@ext}} +% \end{macrocode} +% +% \subsection{helper definitions} +% \changes{v6.00}{2024-04-10}{new, copied over from xr-hyper} +% To test the second optional argument +% \begin{macrocode} +\def\XR@@nocite{nocite} +% \end{macrocode} +% Needed in the processing +% \begin{macrocode} +\long\def\@gobblefour #1#2#3#4{} +\long\def\@firstoffour #1#2#3#4{#1} +\long\def\@secondoffour#1#2#3#4{#2} +\long\def\@thirdoffour #1#2#3#4{#3} +\long\def\@fourthoffour #1#2#3#4{#4} +% \end{macrocode} +% The url is added as fifth argument. The command used here is +% \cs{XR@addURL}. The command is more complicated as needed +% as it tries to handle also older documents with +% \cs{newlabel}'s with two arguments. +% \begin{macrocode} +\def\XR@addURL#1{\XR@@dURL#1{}{}{}{}\\} +\def\XR@@dURL#1#2#3#4#5\\{% + \unexpanded{{#1}{#2}{#3}{#4}}{\XR@URL}% + }% +% \end{macrocode} +% +% \subsection{Variables} +% \changes{v6.00}{2024-04-10}{new, copied over from xr-hyper} +% Default file extension: +% \begin{macrocode} +\providecommand\XR@ext{pdf} % \end{macrocode} % -% Save the optional prefix. Start processing the first |aux| file. -% \changes{v5.06}{2020-05-10}{Remove leading and trailing sapces from +% Save the optional prefix. Start processing the first |aux| file. +% \changes{v6.00}{2024-04-10}{copied over the new extended internal command from xr-hyper. +% It prepends the directory name.} +% Olivier Michel pointed out that +% if the aux file was not on texinputs you could not always go +% \cs{externaldocument}{/some/path/to/file} +% specifically that worked if file.aux was a `simple' document with +% one aux file, but if \cs{include} had been used, the `sub' aux files +% would not be found by xr in the remote directory. +% This version calls \cs{filename@parse} to get the directory name of the +% remote directory, which is then explicitly prepended to the names of +% any included aux files. +% \changes{v5.06}{2020-05-10}{Remove leading and trailing spaces from % the filename (gh/2223)} % \begin{macrocode} -\def\XR@[#1]#2{{% +\def\XR@@#1#2#3[#4]{{% \makeatletter \def\XR@prefix{#1}% - \set@curr@file{#2}% - \expandafter\XR@next\@curr@file.aux\relax\\}} + \def\XR@nocite{#2}% + \ifx\XR@nocite\XR@@nocite + \let\XR@bibcite\vadjust + \else + \let\XR@bibcite\bibcite + \fi + \def\XR@URL{#4}% + \set@curr@file{#3}% + \filename@parse\@curr@file + \XR@next\@curr@file.aux\relax\\}} % \end{macrocode} % % Process the next |aux| file in the list and remove it from the head of @@ -161,23 +319,40 @@ % \end{macrocode} % % Look at the first token of the line. -% If it is |\newlabel|, do the |\newlabel|. If it is |\@input|, add the -% filename to the list of files to process. Otherwise ignore. +% If it is |\newlabel|, define \cs{r@}\meta{label}, ensure that it has +% five label data argument and add the url as the last one. +% If it is |\@input|, add the +% filename to the list of files to process. +% If it is |\bibcite|, call a |\bibcite|. +% If it is |\new@label@record| add the url and then call it. +% Otherwise ignore. % Go around the loop if not at end of file. Finally process the next % file in the list. % % 2018 update: make sure the arguments are handled outside the |\ifx| test, +% \changes{v6.00}{2024-04-10}{copied over extended definition from xr-hyper} % \begin{macrocode} \long\def\XR@test#1#2#3#4\XR@{% - \let\XR@tempa\@gobbletwo + \let\XR@tempa\@gobblefour \ifx#1\newlabel - \let\XR@tempa\@firstoftwo - \else\ifx#1\bibcite - \let\XR@tempa\@firstoftwo + \let\XR@tempa\@firstoffour + \else\ifx#1\XR@bibcite + \let\XR@tempa\@secondoffour \else\ifx#1\@input - \let\XR@tempa\@secondoftwo - \fi\fi\fi - \XR@tempa{#1{\XR@prefix#2}{#3}}{\edef\XR@list{\XR@list#2\relax}}% + \let\XR@tempa\@thirdoffour + \else\ifx#1\new@label@record + \let\XR@tempa\@fourthoffour + \fi\fi\fi\fi + \XR@tempa + {% + \expandafter\protected@xdef\csname r@\XR@prefix#2\endcsname{\XR@addURL{#3}}% + }% + {\expandafter\bibcite\expandafter{\XR@prefix#2}{#3}}% + {\edef\XR@list{\XR@list\filename@area#2\relax}}% + {% + \edef\next{\noexpand\new@label@record{\XR@prefix#2}{\unexpanded{#3}{xr-url}{\XR@URL}}}% + \next + } \ifeof\@inputcheck\expandafter\XR@aux \else\expandafter\XR@read\fi} % \end{macrocode} diff --git a/macros/latex-dev/required/tools/xr.pdf b/macros/latex-dev/required/tools/xr.pdf Binary files differindex 3a7be5445a..bfa10f5403 100644 --- a/macros/latex-dev/required/tools/xr.pdf +++ b/macros/latex-dev/required/tools/xr.pdf diff --git a/macros/latex-dev/required/tools/xspace.pdf b/macros/latex-dev/required/tools/xspace.pdf Binary files differindex 51de3e2c87..3eeaa8c7c9 100644 --- a/macros/latex-dev/required/tools/xspace.pdf +++ b/macros/latex-dev/required/tools/xspace.pdf |