diff options
author | Karl Berry <karl@freefriends.org> | 2023-11-02 19:56:02 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-11-02 19:56:02 +0000 |
commit | 71147fa86bd892e6a89bf394448ad5aada518bdb (patch) | |
tree | f9c92a1b69d35b7785469b1ff57911ffdf5bf634 | |
parent | 1e0a29c72707a3dd4a7cf45bc6eea2d43068e2b7 (diff) |
latex-dev (2nov23)
git-svn-id: svn://tug.org/texlive/trunk@68730 c570f23f-e606-0410-a88d-b1316a301751
267 files changed, 4817 insertions, 672 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/texlive/fmtutil.pl b/Build/source/texk/texlive/linked_scripts/texlive/fmtutil.pl index d7dc8fc555c..5634d65757c 100755 --- a/Build/source/texk/texlive/linked_scripts/texlive/fmtutil.pl +++ b/Build/source/texk/texlive/linked_scripts/texlive/fmtutil.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# $Id: fmtutil.pl 65989 2023-02-20 21:52:59Z karl $ +# $Id: fmtutil.pl 68715 2023-11-01 17:28:01Z karl $ # fmtutil - utility to maintain format files. # (Maintained in TeX Live:Master/texmf-dist/scripts/texlive.) # @@ -24,11 +24,11 @@ BEGIN { TeX::Update->import(); } -my $svnid = '$Id: fmtutil.pl 65989 2023-02-20 21:52:59Z karl $'; -my $lastchdate = '$Date: 2023-02-20 22:52:59 +0100 (Mon, 20 Feb 2023) $'; +my $svnid = '$Id: fmtutil.pl 68715 2023-11-01 17:28:01Z karl $'; +my $lastchdate = '$Date: 2023-11-01 18:28:01 +0100 (Wed, 01 Nov 2023) $'; $lastchdate =~ s/^\$Date:\s*//; $lastchdate =~ s/ \(.*$//; -my $svnrev = '$Revision: 65989 $'; +my $svnrev = '$Revision: 68715 $'; $svnrev =~ s/^\$Revision:\s*//; $svnrev =~ s/\s*\$$//; my $version = "r$svnrev ($lastchdate)"; @@ -383,6 +383,11 @@ sub log_to_status { sub callback_build_formats { my ($what, $whatarg) = @_; + # sometimes (missing, all) there is no argument passed. + # Avoid warning from undef value being logged. + # https://tug.org/pipermail/tex-live/2023-September/049526.html + $whatarg = "" if ! defined $whatarg; + # set up a tmp dir # On W32 it seems that File::Temp creates restrictive permissions (ok) # that are copied over with the files created inside it (not ok). @@ -1478,7 +1483,7 @@ Options: --force (does nothing, exists for compatibility) --test (does nothing, exists for compatibility) -Commands: +Commands (exactly one must be specified): --all recreate all format files --missing create all missing format files --byengine ENGINE (re)create formats built with ENGINE diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/README.md b/Master/texmf-dist/doc/latex-dev/amsmath/README.md index 05c4c7543a4..ad82a9cd191 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/README.md +++ b/Master/texmf-dist/doc/latex-dev/amsmath/README.md @@ -1,7 +1,7 @@ The amsmath bundle for LaTeX ============================ -Release 2023-11-01 pre-release 1 +Release 2024-06-01 pre-release 0 Overview -------- diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsbsy.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsbsy.pdf Binary files differindex 60f9c089207..37a4b0c5813 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/amsbsy.pdf +++ b/Master/texmf-dist/doc/latex-dev/amsmath/amsbsy.pdf diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amscd.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amscd.pdf Binary files differindex 582d63279fb..d429bc3ce9c 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/amscd.pdf +++ b/Master/texmf-dist/doc/latex-dev/amsmath/amscd.pdf diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsgen.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsgen.pdf Binary files differindex fdc060f1652..5c71841b1c1 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/amsgen.pdf +++ b/Master/texmf-dist/doc/latex-dev/amsmath/amsgen.pdf diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.pdf Binary files differindex 2e31edf1845..4c1b841a4c3 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.pdf +++ b/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsmath.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsmath.pdf Binary files differindex 188ca0bb436..76cf988993b 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/amsmath.pdf +++ b/Master/texmf-dist/doc/latex-dev/amsmath/amsmath.pdf diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsopn.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsopn.pdf Binary files differindex cae09a4e59b..0fdaf47733d 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/amsopn.pdf +++ b/Master/texmf-dist/doc/latex-dev/amsmath/amsopn.pdf diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amstext.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amstext.pdf Binary files differindex 2da56e8d43a..b5a8fb40f25 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/amstext.pdf +++ b/Master/texmf-dist/doc/latex-dev/amsmath/amstext.pdf diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsxtra.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsxtra.pdf Binary files differindex f7d546fb5de..544783c2bac 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/amsxtra.pdf +++ b/Master/texmf-dist/doc/latex-dev/amsmath/amsxtra.pdf diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt b/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt index b0386772067..10ce2ec83b2 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt +++ b/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt @@ -1,12 +1,16 @@ -2023-08-24 David Carlisle <David.Carlisle@latex-project.org> - - * testmath.tex: remove spaces before ~, - ================================================================================ All changes above are only part of the development branch for the next release. ================================================================================ ######################### +# 2023-11-01 Release +######################### + +2023-08-24 David Carlisle <David.Carlisle@latex-project.org> + + * testmath.tex: remove spaces before ~, + +######################### # 2023-06-01 Release ######################### diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/subeqn.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/subeqn.pdf Binary files differindex 72caa0c5e75..c8db5861448 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/subeqn.pdf +++ b/Master/texmf-dist/doc/latex-dev/amsmath/subeqn.pdf diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/technote.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/technote.pdf Binary files differindex 6f9c45f5a3d..4f4bd688bac 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/technote.pdf +++ b/Master/texmf-dist/doc/latex-dev/amsmath/technote.pdf diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/testmath.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/testmath.pdf Binary files differindex c059693f3bc..e2d278af0d0 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/testmath.pdf +++ b/Master/texmf-dist/doc/latex-dev/amsmath/testmath.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/README.md b/Master/texmf-dist/doc/latex-dev/base/README.md index cb5a4a60dc4..fcfee6ef012 100644 --- a/Master/texmf-dist/doc/latex-dev/base/README.md +++ b/Master/texmf-dist/doc/latex-dev/base/README.md @@ -1,7 +1,7 @@ The LaTeX kernel ================ -Release 2023-11-01 pre-release 1 +Release 2024-06-01 pre-release 0 Overview -------- diff --git a/Master/texmf-dist/doc/latex-dev/base/alltt.pdf b/Master/texmf-dist/doc/latex-dev/base/alltt.pdf Binary files differindex f2368d8b8cf..074d5b4de97 100644 --- a/Master/texmf-dist/doc/latex-dev/base/alltt.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/alltt.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf b/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf Binary files differindex dc422901be7..16a9f23b964 100644 --- a/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/changes.txt b/Master/texmf-dist/doc/latex-dev/base/changes.txt index 3454f49ac67..812143d3e3c 100644 --- a/Master/texmf-dist/doc/latex-dev/base/changes.txt +++ b/Master/texmf-dist/doc/latex-dev/base/changes.txt @@ -1,23 +1,70 @@ +================================================================================ +This file lists changes to the LaTeX2e files in reverse chronological order +of publication (therefore the dates might be out of sequence if there are +hotfixes). It is provided for convenience only. It therefore makes no claims +to completeness or accuracy and it contains some references to files that are +not part of the distribution. +================================================================================ + ================================================================================ -This file lists changes to the LaTeX2e files in reverse chronological order of -publication (therefore the dates might be out of sequence if there are hotfixes). -It is provided for convenience only. It therefore makes no claims to -completeness or accuracy and it contains some references to files that -are not part of the distribution. +All changes above are only part of the development branch for the next release. ================================================================================ + +######################### +# 2023-11-01 Release +######################### + +2023-10-15 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * ltproperties.dtx: + Add support for pagetarget property. + +2023-10-26 David Carlisle <David.Carlisle@latex-project.org> + * ltboxes.dtx: + add check so \makebox[4cm][?]{abc} does not discard text (gh1072) + +2023-10-26 Joseph Wright <Joseph.Wright@latex-project.org> + * ltspace.tex: + Use a protected definition for tilde which is safe in csnames + +2023-10-21 Yukai Chou <muzimuzhi@gmai.com> + * ltfssbas.dtx, ltplain.dtx, ltspace.dtx: + Correct typos + +2023-10-14 Joseph Wright <Joseph.Wright@latex-project.org> + * clsguide.tex: + Additional documentation + +2023-10-14 Joseph Wright <Joseph.Wright@latex-project.org> + * clsguide.tex: + Add that \CurrentOption is available in \DeclareUnknownKeyHandler + +2023-10-13 Joseph Wright <Joseph.Wright@latex-project.org> + * ltexpl.dtx: + Add \IfExplAtLeastTF + +2023-10-10 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * docstrip.dtx (section{Internal functions and variables}): + Explain the steps carried out by the replacement algorithm for @@. + 2023-09-13 Ulrike Fischer <Ulrike.Fischer@latex-project.org> * ltproperties.dtx: - expand consistently the label/property names in the LaTeX2e commands. + Use \protected@edef for expansion in the LaTeX2e commands. + +2023-09-13 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * ltproperties.dtx: + Expand consistently the label/property names in the LaTeX2e commands. 2023-09-13 Joseph Wright <Joseph.Wright@latex-project.org> - * ltmiscen.dtx: - add test to \enddocument for changes in property values. + * ltmiscen.dtx: + Correct typo 2023-09-05 Ulrike Fischer <Ulrike.Fischer@latex-project.org> - * ltproperties.dtx: - First implementation of properties module - * ltmiscen.dtx: - Correct typo + * ltproperties.dtx: + First implementation of properties module + + * ltmiscen.dtx: + Add test to \enddocument for changes in property values. 2023-09-01 Joseph Wright <Joseph.Wright@latex-project.org> @@ -36,8 +83,6 @@ are not part of the distribution. 2023-08-19 Joseph Wright <Joseph.Wright@latex-project.org> -2023-08-19 Joseph Wright <Joseph.Wright@latex-project.org> - * ltcmd.dtx, usrguide.tex Remove \GetDocumentCommandArgSpec, \GetDocumentEnvironmentArgSpec, @@ -75,10 +120,6 @@ are not part of the distribution. * usrguide.tex Various refinements to descriptions of \NewDocumentCommand, etc. -================================================================================ -All changes above are only part of the development branch for the next release. -================================================================================ - ######################### # 2023-06-01 PL1 Release ######################### diff --git a/Master/texmf-dist/doc/latex-dev/base/classes.pdf b/Master/texmf-dist/doc/latex-dev/base/classes.pdf Binary files differindex e77d02dec96..6ba6e988b60 100644 --- a/Master/texmf-dist/doc/latex-dev/base/classes.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/classes.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.pdf b/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.pdf Binary files differindex 9ed59b22555..c40cf8d8d79 100644 --- a/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf b/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf Binary files differindex 04c4ea27a4a..c8c14014da5 100644 --- a/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/clsguide.tex b/Master/texmf-dist/doc/latex-dev/base/clsguide.tex index 7225425ec8a..457f74f2876 100644 --- a/Master/texmf-dist/doc/latex-dev/base/clsguide.tex +++ b/Master/texmf-dist/doc/latex-dev/base/clsguide.tex @@ -42,7 +42,7 @@ \texttt{clsguide.tex} for full details.}% } -\date{2023-01-12} +\date{2023-10-24} \NewDocumentCommand\cs{m}{\texttt{\textbackslash\detokenize{#1}}} \NewDocumentCommand\marg{m}{\arg{#1}} @@ -143,7 +143,7 @@ There are several reasons why we should not make such changes to these files. \begin{itemize} \item - However misguided, the current behaviour is clearly what was + However misguided, the current behavior is clearly what was intended when these classes were designed. \item It is not good practice to change such aspects of `standard classes' @@ -188,7 +188,7 @@ command which should only be used in the \LaTeX{} kernel, whereas However, this rule of thumb is still useful: if a command has |@| in its name then it is not part of the supported \LaTeX{} language---and -its behaviour may change in future releases! If a command is +its behavior may change in future releases! If a command is mixed-case, or is described in \emph{\LaTeXbook}, then you can rely on future releases of \LaTeX{} supporting the command. @@ -489,7 +489,7 @@ the |article| class to set the |\paperheight| and |\paperwidth| lengths: \end{verbatim} Sometimes a user will request an option which the class or package has not explicitly declared. By default this will produce a warning (for classes) or -error (for packages); this behaviour can be altered as follows: +error (for packages); this behavior can be altered as follows: \begin{verbatim} \DeclareOption*{<code>} \end{verbatim} @@ -847,7 +847,7 @@ The basic properties provided here are has no limitation on scope (\texttt{general}) \end{itemize} The part of the \meta{key} before the \m{property} is the \m{name}, with the -\m{value} working with the \m{property} to define the behaviour of the option. +\m{value} working with the \m{property} to define the behavior of the option. For example, with \begin{verbatim} @@ -875,7 +875,15 @@ options. The command |\DeclareUnknownKeyHandler| may be used to define the behavior when an undefined key is encountered. The \m{code} will receive the unknown key name as |#1| and the value as |#2|. These can then be processed as appropriate, -e.g.~by forwarding to another package. +e.g.~by forwarding to another package. The entire option is available as +\cs{CurrentOption}, should it be necessary to pass on options which may or +may not contain an |=|~sign. For example, this may be used to pass an +unknown option on to a non-keyval class such as \pkg{article}: +\begin{verbatim} +\DeclareUnknownKeyHandler{% + \PassOptionsToClass{\CurrentOption}{article} +} +\end{verbatim} \begin{decl} |\ProcessKeyOptions| \oarg{family} @@ -883,6 +891,8 @@ e.g.~by forwarding to another package. The |\ProcessKeyOptions| function is used to check the current option list against the keys defined for \m{family}. Global (class) options and local (package) options are checked when this function is called in a package. +The command will process \emph{all} options given the the current +package or class: there is no need to also apply \cs{ProcessOptions}. \begin{decl} |\SetKeys| \oarg{family} \arg{keyvals} @@ -1181,12 +1191,184 @@ defined as where |#1| is the user input and the first argument to \cs{MakeUppercaseAux} takes two arguments, the locale and input text. +\subsection{Extended and expandable references of properties} + +A property is something that \LaTeX{} can track while processing +the document, such as a page +number, a heading number, other counter values, a heading title, +a position on the page, etc. +The current value of such properties can be labeled and +written to the \texttt{aux}-file. It can then be referenced in +the next compilation, similar to the way the standard \cs{label}/\cs{ref} +commands work (they record/reference a fixed set of properties: +label, page, title, and target). + +\begin{decl} + |\RecordProperties|\arg{label}\arg{list of properties} +\end{decl} +This command writes the value(s) of the \meta{list of properties} +\texttt{aux}-file labeled by \meta{label}. Recorded are either the +values current when \cs{RecordProperties} is called or the value +current when the next shipout happens---which depends on the +declaration for each property. +% +The arguments \meta{label} and \meta{list of properties} can contain +commands that are expanded. \meta{label} can expand to an arbitrary +string (as long as it can safely be written to the \texttt{aux}-file) +but note that the label names of \cs{label} and \cs{RecordProperties} +share a singe namespace. This means that you get a \texttt{Label `A' + multiply defined} warning with the following code: +\begin{verbatim} +\label{A}\RecordProperties{A}{abspage} +\end{verbatim} + + +\begin{decl} + |\RefProperty|\arg{label}\arg{property} +\end{decl} +This command allows to reference the value of the property +\meta{property} recorded in the previous run and labeled by \meta{label}. +Differently to the standard +\cs{ref} command the command is expandable and the value can for +example---if it is a number---be used in an assignment.\footnote{For +this to work the default value for the property would need to be a number too, +because recorded values aren't known in the first \LaTeX{} run.} + +\begin{verbatim} +\section{A section} +\RecordProperties{mylabel}{pagenum,counter} +\RefProperty{mylabel}{counter} % outputs section +\setcounter{mycounter}{\RefProperty{mylabel}{pagenum}} +\end{verbatim} + + + +As \cs{RefProperty} is expandable it can not issue a rerun warning if +a label is not found. If needed such a warning can be forced by the +following command: +\begin{decl} + |\RefUndefinedWarn|\arg{label}\arg{property} +\end{decl} + +\LaTeX{} predefines a set of properties, this set contains also the +properties stored by the standard \cs{label} command. In the list +below \enquote{default} indicates the value returned when the value is +not yet known (i.e., if it wasn't recorded in the previous run and +\enquote{at shipout} means that this property is not recorded +immediately when \cs{RecordProperties} is used but during the next +\cs{shipout}. + +\begin{description} + \item[\texttt{abspage} (default: \texttt{0}, at shipout)] The absolute value of the current page: + starts at $1$ and increases monotonically at each shipout. + + \item[\texttt{page} (default: \texttt{0}, at shipout)] The current page as given by \cs{thepage}: this may or + may not be a numerical value, depending on the current + style. Contrast with \texttt{abspage}. You get this value also with + the standard \cs{label}/\cs{pageref}. + + \item[\texttt{pagenum} (default: \texttt{0}, at shipout)] The current page as arabic number. This is + suitable for integer operations and comparisions. + + \item[\texttt{label} (default: \texttt{??})] The content of \cs{@currentlabel}. This is the value + that you get also with the standard \cs{label}/\cs{ref}. + + \item[\texttt{title} (default: \texttt{\cs{textbf}\{??\}})] The content of \cs{@currentlabelname}. This + command is filled beside others by the \pkg{nameref} package and + some classes (e.g.~\pkg{memoir}) and typically gives + the title defined in the document by some sectioning command + + \item[\texttt{target} (default: \meta{\mdseries empty})] The content of \cs{@currentHref}. This + command is normally filled by \pkg{hyperref} and holds the name of + the last destination it created. + +\item[\texttt{pagetarget} (default: \meta{\mdseries empty}, at shipout)] + The content of \cs{@currentHpage}. This command is filled by + \pkg{hyperref} (version v7.01c or newer) and holds the name of the last + page anchor it created. + + \item[\texttt{counter} (default: \meta{\mdseries empty})] The content of \cs{@currentcounter}. This + command contains after a \cs{refstepcounter} the name of the + counter. + + \item[\texttt{xpos}, \texttt{ypos} (default: \texttt{0}, at shipout)] These properties records the + $x$~and $y$ coordinates of a point previously stored with + \cs{pdfsavepos}/\cs{savepos}. E.g.~(if \pkg{bidi} is used it can + be necessary to save the position before and after the label): + \begin{verbatim} + \pdfsavepos + \RecordProperties{myposition}{xpos,ypos}% + \pdfsavepos + \end{verbatim} +\end{description} + +Class and package authors can define more properties to store other +values they are interested in. +\begin{decl} + |\NewProperty|\arg{name}\arg{setpoint}\arg{default}\arg{code}\\ + |\SetProperty|\arg{name}\arg{setpoint}\arg{default}\arg{code} +\end{decl} +These commands declare or change a property \meta{name}\footnote{Only change +properties that you have declared. The declarations of standard properties of \LaTeX{} and +properties of other packages should never be altered!}. If a new property is +declared within a package it is suggested that its name is always structured +as follows: \meta{package-name}\texttt{/}\meta{property-name}. +\meta{setpoint} is either |now| or |shipout| and decides if the value is +written directly or at the next shipout. \meta{default} is used if the +property is referenced but not yet known, e.g., in the first run. +\meta{code} is the code executed when storing the value. For example, the +\texttt{pagenum} property is declared as +\begin{verbatim} +\NewProperty{pagenum}{shipout}{0}{\the\value{page}} +\end{verbatim} + +The commands related to properties are offered as a set of CamelCase +commands for traditional \LaTeXe{} packages (and for use in the +document preamble if needed) as well as \texttt{expl3} commands for +modern packages, that use the L3 programming layer of \LaTeX{}. The +\texttt{expl3} commands and more details can be found in +\texttt{ltproperties-doc.pdf}. + +\subsection{Preparing link targets} + +Active links in a document need targets to which they can jump to. Such +targets are often created automatically (if the package \pkg{hyperref} +is loaded) by the \cs{refstepcounter} command but there are also cases +where class or package authors need to add a target manually, for +example, in unnumbered sectioning commands or in environments. For this +\LaTeX{} provides the following commands. \emph{Without} +\pkg{hyperref} they do nothing or insert only a whatsits +(to ensure that spacing doesn't change when hyperref is loaded), \emph{with} +\pkg{hyperref} they add the necessary targets. Details about the +behavior and the arguments of the following commands can by found in +the \pkg{hyperref} package in \texttt{hyperref-linktarget.pdf}. + +\begin{decl} + |\MakeLinkTarget|\oarg{prefix}\arg{counter}\\ + |\MakeLinkTarget|\oarg{prefix}\{\}\\ + |\MakeLinkTarget|*\arg{target name} +\end{decl} +This command prepares the creations of targets. + +\begin{decl} + |\LinkTargetOn|\\ + |\LinkTargetOff| +\end{decl} +These commands allow to enable and disable locally the creation of +targets. This can be useful to suppress targets otherwise created automatically +by \cs{refstepcounter}. + +\begin{decl} + |\NextLinkTarget|\arg{target name} +\end{decl} +This changes the name of the next target that will be created. + \section{Commands superseded for new material} A small number of commands were introduced as part of \LaTeXe{} in the -mid-1990s, are widely used but have been superseded by more modern methods. -These are covered here as they are likely to be encountered routinely in -existing classes and packages. +mid-1990s, are widely used but have been superseded by more modern +methods. These are covered here as they are likely to be encountered +routinely in existing classes and packages. \subsection{Defining commands} diff --git a/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf b/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf Binary files differindex b4f89299177..fe88b5af3b7 100644 --- a/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf b/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf Binary files differindex 2bdb5043234..56788065102 100644 --- a/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/doc-code.pdf b/Master/texmf-dist/doc/latex-dev/base/doc-code.pdf Binary files differindex 4ed15617dda..51e6dad9e8b 100644 --- a/Master/texmf-dist/doc/latex-dev/base/doc-code.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/doc-code.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/doc.pdf b/Master/texmf-dist/doc/latex-dev/base/doc.pdf Binary files differindex e31007c8794..e8a184011e9 100644 --- a/Master/texmf-dist/doc/latex-dev/base/doc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/doc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf b/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf Binary files differindex df1404ebe56..b87f05e2e8b 100644 --- a/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/encguide.pdf b/Master/texmf-dist/doc/latex-dev/base/encguide.pdf Binary files differindex aa08d7dc010..53e032c97b7 100644 --- a/Master/texmf-dist/doc/latex-dev/base/encguide.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/encguide.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/exscale.pdf b/Master/texmf-dist/doc/latex-dev/base/exscale.pdf Binary files differindex 546a2d0549d..0c9dd72583f 100644 --- a/Master/texmf-dist/doc/latex-dev/base/exscale.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/exscale.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf b/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf Binary files differindex 07a8643054e..eb2306a8fec 100644 --- a/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf b/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf Binary files differindex 1be6ca422f5..a3c42f9cc30 100644 --- a/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/fntguide.tex b/Master/texmf-dist/doc/latex-dev/base/fntguide.tex index 619cc907b26..143956ecc49 100644 --- a/Master/texmf-dist/doc/latex-dev/base/fntguide.tex +++ b/Master/texmf-dist/doc/latex-dev/base/fntguide.tex @@ -52,7 +52,7 @@ \texttt{fntguide.tex} for full details.}% } -\date{May 2023} +\date{October 2023} \begin{document} @@ -1463,7 +1463,7 @@ which is specific to one encoding. For example, the definition of |\k| in the |T1| encoding is: \begin{verbatim} \DeclareTextCommand{\k}{T1}[1] - {\oalign{\null#1\crcr\hidewidth\char12}} + {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\char12}\egroup} \end{verbatim} |\DeclareTextCommand| takes the same optional arguments as |\newcommand|. diff --git a/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf b/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf Binary files differindex 02c26dfdb60..d68b5190cc8 100644 --- a/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf b/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf Binary files differindex ff5e6a90408..b7638603ef1 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf b/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf Binary files differindex 5b83bb0998c..6e453b60801 100644 --- a/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/lamport-manual.pdf b/Master/texmf-dist/doc/latex-dev/base/lamport-manual.pdf Binary files differindex 35607608f65..704346408a0 100644 --- a/Master/texmf-dist/doc/latex-dev/base/lamport-manual.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/lamport-manual.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf b/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf Binary files differindex 38f5ef20fb2..a33f14a6257 100644 --- a/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf b/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf Binary files differindex 3d6f87b2f13..76b8b572548 100644 --- a/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/lb2.pdf b/Master/texmf-dist/doc/latex-dev/base/lb2.pdf Binary files differindex 4f1de0028ef..1635d1217db 100644 --- a/Master/texmf-dist/doc/latex-dev/base/lb2.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/lb2.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/letter.pdf b/Master/texmf-dist/doc/latex-dev/base/letter.pdf Binary files differindex d4c0361f9ae..bd800591fc4 100644 --- a/Master/texmf-dist/doc/latex-dev/base/letter.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/letter.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf b/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf Binary files differindex 01e844d1271..c4cbbd166e7 100644 --- a/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/lppl.pdf b/Master/texmf-dist/doc/latex-dev/base/lppl.pdf Binary files differindex 6f35bb62a5a..1a7b50860d8 100644 --- a/Master/texmf-dist/doc/latex-dev/base/lppl.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/lppl.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-code.pdf Binary files differindex 598e09076d5..a48cf808d27 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-code.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-code.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-doc.pdf Binary files differindex e00d1a517f0..cdff7b57d71 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-doc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-doc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf Binary files differindex 423d9c8c605..1e3965df674 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf Binary files differindex 607cc91ca17..f104a35011d 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf b/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf Binary files differindex 452cc324fd1..61e9f4a92a8 100644 --- a/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf Binary files differindex 379f81449c7..4cd92794394 100644 --- a/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf b/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf Binary files differindex fa5dd9a06a4..ca793006b10 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltmarks-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltmarks-code.pdf Binary files differindex 7f533207335..655e71aa4cf 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltmarks-code.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltmarks-code.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltmarks-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltmarks-doc.pdf Binary files differindex 94b2a0a7621..c5ccd216067 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltmarks-doc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltmarks-doc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf Binary files differindex a482c44754c..b6fc97ce539 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf Binary files differindex 45080cd0564..a7eb8b72ac7 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf Binary files differindex 3c92dcbb135..1560d5cfaef 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf Binary files differindex 9c76b172f24..a33ab0d6998 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf Binary files differindex 5fc5b7e2f22..0fe86c8d1c6 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf Binary files differindex 82f6e2e66bb..16be61db08a 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf Binary files differindex 86868783902..62f27b9c092 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf Binary files differindex dbde03e3c64..41696cd5b2c 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf Binary files differindex 6de4f5dcc29..d3824fd033d 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf Binary files differindex 703e4fcbc11..ee50c517ada 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf Binary files differindex 92cf03c1007..8aa002886ac 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf Binary files differindex 7fc53570a7c..799f3e69a82 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf Binary files differindex 7bb2af0d907..3017fe26b45 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf Binary files differindex 238024988fd..a471304672c 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf Binary files differindex ca1bde861a3..58c7faeed38 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf Binary files differindex e93edf9da62..a4ccdfcf6a3 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf Binary files differindex 58a8ae986d0..6fbbe159aa5 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf Binary files differindex 48dcad813da..fe38f79c39a 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf Binary files differindex 3bd5213f40e..404206d9284 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf Binary files differindex f61eafeabe2..3f107c45673 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf Binary files differindex fd2f0c7f6c5..8eeacf25901 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf Binary files differindex 3caee8b8aa2..0b709070565 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf Binary files differindex 463eef696d0..60862afc616 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf Binary files differindex fb51fd87384..abf6218395e 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf Binary files differindex e8ef8254483..2a8294b46a5 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf Binary files differindex a7171c631ad..3b2fcf4928b 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf Binary files differindex 6de2aba7016..55d618bb30c 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf Binary files differindex 24265921525..244be0a0bd0 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf Binary files differindex 3b505c36e5c..9536e57f5a4 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf Binary files differindex b9bda4e3adb..6ac0eb8b973 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf Binary files differindex 6197b581621..ad5fb53b4c8 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf Binary files differindex 1de3b0fd5b6..4a6484d05b7 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf Binary files differindex e18c5d44fdf..1964d6203a6 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf Binary files differindex 1190e8ed794..6d8f5775e96 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews34.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews34.pdf Binary files differindex eec3c3f35bb..3985ff0d5eb 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews34.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews34.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews35.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews35.pdf Binary files differindex c03ef0306b5..820f6a341b7 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews35.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews35.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews36.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews36.pdf Binary files differindex 5e16afdce01..4c2d70661f8 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews36.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews36.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews37.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews37.pdf Binary files differindex 02b03b00a0b..3ff2725b4d6 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews37.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews37.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews37.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews37.tex index 5527975c540..3adda3ea90d 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews37.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews37.tex @@ -585,7 +585,7 @@ class option \texttt{doc2}. This has now been corrected. -\subsection{Improve spacing at top of \env{minipages}} +\subsection{Improve spacing at top of \env{minipage}s} A list and several other document elements add some vertical space in front of them. However this should not happen at the beginning of a diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews38.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews38.pdf Binary files differindex 6dfed260684..80ff1a21271 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews38.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews38.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews38.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews38.tex index 38745b9dbfb..04ffe1a0ed2 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews38.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews38.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright 2021-2023 +% Copyright 2023 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -101,6 +101,8 @@ \vbadness=1400 % accept slightly empty columns +\let\finalpagebreak\pagebreak % for TUB (if they use it) + \makeatletter % maybe not the greatest design but normally we wouldn't have subsubsections \renewcommand{\subsubsection}{% @@ -123,7 +125,8 @@ \tubcommand{\input{tubltmac}} \publicationmonth{November} -\publicationyear{2023 --- DRAFT version for upcoming release} +%\publicationyear{2023 --- DRAFT version for upcoming release} +\publicationyear{2023} \publicationissue{38} @@ -139,118 +142,460 @@ \medskip -\section{Introduction} - +%\section{Introduction} -\section{Sockets and plugs} -\emph{write} +\section{News from the \enquote{\LaTeX{} Tagged PDF} project} -For documentation see \texttt{texdoc ltsockets-doc} for now. +The multi-year project to automatically tag \LaTeX{} documents in +order to make them accessible~\cite{38:blueprint} is progressing +steadily (at this point in time mainly as experimental +\texttt{latex-lab} code). -\section{Extended cross-referencing of document properties} +Just recently we added support for automatic tagging of tabular +structures including environments from \pkg{tabularx} and +\pkg{longtable}. The code is still in its early stages and lacks +configuration possibilities\Dash these will be added in the future. -Traditionally \LaTeX{} allowed with \cs{label} to record two \enquote{local} -properties of the document: the representation of the current page number and -of the current counter. Their values could then be referenced with the -(non-expandable) commands \cs{ref} and \cs{pageref} in arbitrary places of a -document. With the summer 2023 release the \cs{label} was enhanced to record -also if set by packages like \pkg{nameref} or \pkg{hyperref} the title and -the name of the link target. +\subsection{Approaching an important milestone} -Over the years packages extended the label-ref system in various ways. -Examples are for example the \pkg{refcount} package to reference the values -expandably, the \pkg{smartref} package, which allows to store more counter -values and so to reference the current chapter together with the current -equation, the \pkg{cleveref} package, which stores in a second internal label -beside other the name of the counter, the \pkg{hyperref} package whose -\cs{autoref} command tries to retrieve the name of the counter from the name -of the link target, the \pkg{tikzmarks} which records absolute positions on -the page, and the \pkg{zref} package which implements a general method to -record and reference properties. +Nevertheless, with this new addition we are more or less able to +automatically tag any document that confines itself to the commands +and environments described in Leslie Lamport's \emph{\LaTeX{} +Manual}~\cite{38:Lamport} by simply adding a single configuration line +at the top. -Starting with this release the \LaTeX{} kernel contains now its own -extension. It is loosely based on \pkg{zref}. It allows to declare new -properties, to record arbitrary combinations of properties. The values are -retrieved expandably. +In addition, a number of extension packages that go beyond Lamport are +already supported, most importantly perhaps \pkg{amsmath} (providing +extended math capabilities) and \pkg{hyperref} (enhancing \LaTeX{} +with interactive hyperlinking features). +\finalpagebreak +Also already supported are +some of the major bibliography support packages such as \pkg{natbib} +and \pkg{biblatex}. -As an example to setup a new property which records the current chapter -number the following declaration could be used: +For now activation is done through the line +\begin{verbatim} +\DocumentMetadata + {testphase={phase-III,math,tabular}} +\end{verbatim} +The math and the tabular support are not yet incorporated into +\texttt{phase-III} but need their own activation, so that we can +better experiment with additions and code adjustments. + +The \texttt{latex-lab} bundle contains various (still untagged) +documentation files about the new code that can be accessed with +\verb|texdoc -l latex-lab|. + +\subsection{A GitHub repository dedicated to the project} + +We have also started a new GitHub repository mainly intended for +reporting issues, and offering a platform for discussions. For +example, there is one discussion on ways to extend the \LaTeX{} +\env{tabular} syntax to allow describing the logical structure of +tables (e.g., which cells are header cells, etc.). + +Having all issues and discussions related to the project in a single +place instead of being spread across multiple repositories such as +\pkg{latex2e}, \pkg{latex3}, \pkg{tagpdf}, \pkg{hyperref}, +\pkg{pdfresources}, etc., helps people to find information easily +and report any issue related to the project without needing to know in which +code repository the problematic code resides. + +You find this repository at +\url{https://github.com/latex3/tagging-project} and the mentioned +discussion on \env{tabular} syntax at +\url{https://github.com/latex3/tagging-project/discussions/1}. + +Your feedback is important and reporting what doesn't yet work is +beneficial to all users, so we hope to see you there and thank you for +any contribution, whether it is an issue or a post on a discussion +thread. + + +\section{Hooks, sockets and plugs} + +In previous releases of \LaTeX{} we introduced the general concept of +hooks (both specific and generic ones). These are places in the +code into which different packages (or the user in the document +preamble) can safely add their own code to extend the functionality of +existing commands and environments without the need to overwrite or +patch them in incompatible ways. An important feature of such hooks is +that the code chunks added by different packages can be ordered by +rules, if necessary, +\finalpagebreak +thereby avoiding problems arising from +differences in package loading order. See \LaTeX{} News issues +32--34~\cite{38:ltnews} for more information. + +However, sometimes you need a kind of \enquote{hook} into which only a +single chunk of code is placed at any time.\footnote{While this is in +theory possible to model with the existing hook mechanism, it is +inefficient and cumbersome.} For example, there is code that +implements footnote placement in relation to bottom floats (above or +below them). But at any time in the document only one such placement +code can be in force. Or consider the extra code needed for making +\LaTeX{} documents accessible (e.g., adding tags to the PDF +output). Such code is either there (perhaps in alternative versions) +or not at all, but it cannot have code from other packages added at +the same point interfering with the algorithm. + +For these use cases we now introduce the concept of sockets and plugs. +A socket is a place in the code into which one can put a plug (a +chunk of code with a name) after which the socket is in use; to put in +a different plug, the former one has to be taken out +first.\footnote{Think of electric outlets and plugging something into +them.} A socket may or may not have inputs that can then be used by +the plugs. +% +While this is technically not much different to putting a command in +the code and at some point alter its definition, the advantage is that +this offers a consistent interface, allows for status information, +supports tracing, etc. + +You declare a new socket and possibly some plugs for it with +\begin{flushleft} + \cs{NewSocket}\Arg{socket name}\Arg{\# of inputs} \\ + \cs{NewSocketPlug}\Arg{socket name}\Arg{plug name}\Arg{code} +\end{flushleft} +For example, after the declaration \verb=\NewSocket{foo}{0}= you can +immediately use this socket in your code with \verb=\UseSocket{foo}=. +The \cs{NewSocket} declaration automatically defines a simple plug +with the name \texttt{noop} for the socket and assigns it to the socket +(plugs it in), thus your \cs{UseSocket} sits idle doing +nothing\footnote{Sockets with one input also define an +\texttt{identity} plug and initially assign that to the socket\Dash +this means that their input is simply returned without processing.} +until you assign it a different plug, which is done with +\cs{AssignSocketPlug}. This takes the current plug out and puts the +new one in. +% +All the declarations and commands are also available in the \LaTeX3 +programming layer as \cs{socket\_new:nn}, \cs{socket\_new\_plug:nnn}, +etc. + +With this concept we can, for example, add tagging support for the +\enquote{\LaTeX{} Tagged PDF} project to various packages without +altering their behavior if the tagging code is inactive. Activating +one or the other form of tagging then just means to assign named plugs +to the different sockets. + +This is just a brief introduction to the mechanism; for more detailed +documentation see \texttt{texdoc ltsockets-doc}. + + +\finalpagebreak + +\section{Document properties and cross-referencing} + +Traditional \LaTeX{} uses \cs{label}\Arg{key} to record the values of two +\enquote{local} properties of the document: the textual +representations of the \emph{current page number} and the +\emph{current \textup{\cs{ref}} value} set by \cs{refstepcounter} +declarations~\cite[p.~209]{38:Lamport}. (These declarations are +issued, for example, by sectioning commands, by numbered environments +like \env{equation}, and by \cs{item} in an \env{enumerate} or +similar environment.) + +These two recorded values can then be accessed and typeset (from +anywhere in the next run of the document) by use of the +(non-expandable) commands \cs{ref} and \cs{pageref} using the +\emph{key} that was specified as the argument to \cs{label} when +recording these values. This supported basic cross-referencing +(within a document), using these recorded values to provide both +page-related and counter-related information (such as the page xvii or +the subsection number 4.5.2).\footnote{In the Spring 2023 release of +\LaTeX{}, the \cs{label} command was extended to record, in addition, +both a title (such as the text used in a section head) and the +\emph{logical name} used for an associated link target provided these +have been set by packages such as \pkg{nameref} or \pkg{hyperref}.} + + +Over the years \LaTeX{} packages have appeared that extend +this basic \enquote{label-ref system} in various ways. +% +For example, the \pkg{refcount} package made a small but significant change +to the functions used to access recorded values, by making them expandable. +And the \pkg{smart-ref} package supports the storage of a larger +collection of counter values so that, for example, a cross-reference +can refer to the relevant chapter together with an equation tag. +The \pkg{cleveref} package stores (by means of a second, internal +\enquote{logical label}) extra information such as the name of the counter. +The \pkg{hyperref} package adds the \cs{autoref} command, which +tries to retrieve the name of a counter from the \emph{logical name} +used for a link target. +The \pkg{tikzmarks} library records information about + \emph{labelled positions} on the page when using \pkg{tikz}. +Finally, the \pkg{zref} package implements many related ideas, including a general +idea of properties and lists of properties, with methods to record, and +subsequently access, the value of any declared property. + + +Starting with this release, the \LaTeX{} kernel provides handling of +general document properties as a core functionality with standard +interfaces. +% +This is based on concepts introduced by the \pkg{zref} package but +with some differences in detail, particularly in the implementation. +It supports the declaration of new properties, and the recording of +the values of any list of properties. These values are retrieved +expandably. + +To set up a new property that is the current chapter +number, for example, here is the declaration to use. \begin{verbatim} -\NewProperty{chapter}{now}{?}{\thechapter} + \NewProperty{chapter}{now}{?}{\thechapter} \end{verbatim} -The second argument means that the property is recorded immediately -(\enquote{now}) and not at shipout. The third argument sets a default if a -label is unknown. It is then possible to record a list of properties with -\cs{RecordProperties}: +\par\finalpagebreak\noindent +The second argument means that the property value will be recorded +immediately (\enquote{now}), and not \enquote{during the next + \cs{shipout}}. The third argument sets a default to be used when, +for example, an unknown label is supplied. +% +The final argument contains the code that will, as part of the +recording process, be expanded to obtain the value to record for this +property. + +Then, to record the value of this new property, +together with others, use this command. \begin{verbatim} -\RecordProperties{mylabel}{chapter,page,currentlabel} + \RecordProperties{mylabel} + {chapter,page,label} \end{verbatim} -To reference the value the \cs{RefProperty} command is provided which takes -two arguments, the label and the property: +This records the current values for the properties \texttt{chapter}, +\texttt{page}, and \texttt{label}, using \texttt{mylabel} as the +label, or \emph{key}, for the record. + +To \emph{reference} (i.e., retrieve) this recorded value for use in a +cross-reference to this chapter, use the \cs{RefProperty} command with +two arguments: the label, or \emph{key}, and the property. \begin{verbatim} -\RefProperty{mylabel}{chapter} + \RefProperty{mylabel}{chapter} \end{verbatim} - -The new module predeclares a set of generally useful properties: -\texttt{currentlabel} (the standard counter representation), \texttt{page} -(the page representation), \texttt{title} (the title if set e.g.~by -\pkg{nameref}), \texttt{target} (the name of the link target if set e.g.~by -\pkg{hyperref}), \texttt{pagenum} (the page as an arabic number), -\texttt{abspage} (the absolute page number), \texttt{counter} (the name of -the current counter), \texttt{xpos} and \texttt{ypos} the position on the -page as set by a previous \cs{pdfsavepos}. - -The module provides both \LaTeXe{} camel case commands and expl3 commands. - -For documentation see \texttt{texdoc ltproperties-doc}. -\section{New or improved commands} +The +\LaTeX{} kernel itself contains +declarations for some generally useful properties, +including these: +\begin{description} +\item[\texttt{label}] the textual representation of the \emph{current +\textup{\cs{ref}} value}, see above; + +\item[\texttt{page}] the textual representation of the page number for + the page currently under construction; + +\item[\texttt{title}] the title, if set by, e.g.,~\pkg{nameref}; + +\item[\texttt{target}] the logical name of the associated link target, + if set by, e.g.,~\pkg{hyperref}; + +\item[\texttt{pagetarget}] the logical name of the target added by + \pkg{hyperref} at the origin of each shipped out page; +\item[\texttt{pagenum}] the value of the \LaTeX{} counter + \texttt{page} in Arabic numerals; + +\item[\texttt{abspage}] the absolute page number of the page under + construction, i.e., one more than the number of pages shipped out so + far (thus it starts at 1 and is increased by 1 whenever a page is + shipped out); + +\item[\texttt{counter}] the name of the counter that produced the + \emph{current \textup{\cs{ref}} value}, i.e., the counter that was + stepped in the most recent \cs{refstepcounter} within the current + scope; + +\item[\texttt{xpos}, \texttt{ypos}] the position on the shipped out + page as set by the most recent \cs{pdfsavepos}: recording these + properties should be done as soon as possible after saving the + position. +\end{description} + +Both \LaTeXe{} commands (using camel-case names) and +\LaTeX3 programming layer commands are provided. % -\githubissue{xxx} +For a more complete documentation, see \texttt{texdoc ltproperties-doc}. -\section{\emph{Removed} commands} -It is very rare that commands are removed from the \LaTeX{} kernel. However, in -this release we have elected to remove \cs{GetDocumentCommandArgSpec}, -\cs{GetDocumentEnvironmentArgSpec}, \cs{ShowDocumentCommandArgSpec} and -\cs{ShowDocumentEnvironmentArgSpec} from the kernel. These commands have been -moved back to the \enquote{stub} \pkg{xparse} provided in \pkg{l3packages}. The -reason for this change is that the commands were essentially part of debugging -early forms of the kernel code, and expose implementation detail in a way that -was not helpful. + +\finalpagebreak + +\section{New or improved commands} + +\subsection{Testing for the \LaTeX3 programming layer version: \cs{IfExplAtLeastTF}} + +The integration of \pkg{expl3} (the \LaTeX3 programming layer) +into the kernel means that programmers can use all of the features +available without needing to load it explicitly. However, as \pkg{expl3} +is upgraded separately from \LaTeXe{} and is not a separate package, its +version is different from that of \LaTeXe{} and cannot be tested using +\cs{IfPackageAtLeastTF}. To date, low-level methods have therefore +been needed to check for the availability of features in +\pkg{expl3}. We have now added \cs{IfExplAtLeastTF} as a test working +in the same way as \cs{IfPackageAtLeastTF} but focused on the +pre-loaded programming layer. Programmers can check the date of +\pkg{expl3} they are using in the \texttt{.log}, as it appears both at +the start and end in the format +\begin{verbatim} + L3 programming layer <YYYY-MM-DD> +\end{verbatim} +just after the line which identifies the format (\texttt{LaTeX2e}, etc.). +% +\githubissue{1004} + \section{Code improvements} -\subsection{Support for tabs in \cs{verb*} and \texttt{verbatim*}} +\subsection{Support for tabs in \cs{verb*} and \env{verbatim*}} \LaTeX{} converts a single tab to a single space, which is then treated like a \enquote{real} space in typesetting. The same has been true to date inside \cs{verb}, but was done in a way that meant that they remained as normal spaces even in \cs{verb*}, etc. We have now adjusted the code so that tabs are retained within the argument to \cs{verb} and \cs{verb*}, and the -\texttt{verbatim} and \texttt{verbatim*} environments independently from +\env{verbatim} and \env{verbatim*} environments, independently from spaces, and are set up to print in the same way spaces do. This means that they -now generate visible spaces inside \cs{verb*} and \texttt{verbatim*}, and their +now generate visible spaces inside \cs{verb*} and \env{verbatim*}, and their behavior can be adjusted if required to be different from that of spaces. % \githubissue{1085} -\section{Bug fixes} -\section{Changes to packages in the \pkg{amsmath} category} +\subsection{Improved argument checking for box commands} +Previously if an alignment option had an unexpected value, such as +\verb|\makebox[4cm][x]{text}|, +no warning was given but the box content was silently discarded. +This will now produce a warning and act like the default \texttt{c} alignment. +\cs{framebox} and \cs{parbox} have a similar change. +% +\githubissue{1072} + + +\subsection{Aligning status of tilde with other active characters} + +Some time ago we revised the definition of active characters in \pdfTeX{} to +allow the full range of UTF-8 codepoints to be used in for example labels, +file names, etc. However, \verb|~| was not changed at that point as it is active +independent of the engine in use. This has now been corrected: the definition +of \verb|~| is an engine-protected one which gives the string version of the +character if used inside a csname. + +\finalpagebreak + +\subsection{In the programming layer} -\section{Changes to packages in the \pkg{graphics} category} +In the programming layer (\pkg{expl3}), we have revised the behavior of the +titlecasing function to enable this to either titlecase only the first word of +the input, or to titlecase every word. This should be transparent at the +document level but will be useful for programmers. + +We have also added the ability to define variables and functions inside +\cs{fpeval} (at the \pkg{expl3} level this is \cs{fp\_eval:n}). This allows +programmers to create non-standard functions that can then be used inside +\cs{fpeval}. For example, this could be used to create a new function +\texttt{dinner}: +\begin{verbatim} +\ExplSyntaxOn +\fp_new_variable:n{duck} +\fp_new_function:n{dinner} +\fp_set_function:nnn{dinner}{duck} + {duck - 0.25 * duck} +\fp_set_variable:nn{duck}{1} +$\fp_eval:n{duck} + >\fp_eval:n{dinner(duck)} + \fp_set_variable:nn{duck}{dinner(duck)} + >\fp_eval:n{dinner(duck)} + \fp_set_variable:nn{duck}{dinner(duck)} + >\fp_eval:n{dinner(duck)} + \fp_set_variable:nn{duck}{dinner(duck)} + >\fp_eval:n{dinner(duck)} +$ +\ExplSyntaxOff +\end{verbatim} + +The computation above would then generate +\begin{quote} +\ExplSyntaxOn +\fp_new_variable:n{duck} +\fp_new_function:n{dinner} +\fp_set_function:nnn{dinner}{duck} + {duck - 0.25 * duck} +\fp_set_variable:nn{duck}{1} +$\fp_eval:n{duck} + >\fp_eval:n{dinner(duck)} + \fp_set_variable:nn{duck}{dinner(duck)} + >\fp_eval:n{dinner(duck)} + \fp_set_variable:nn{duck}{dinner(duck)} + >\fp_eval:n{dinner(duck)} + \fp_set_variable:nn{duck}{dinner(duck)} + >\fp_eval:n{dinner(duck)} +$ +\ExplSyntaxOff +\end{quote} + +Users will be able to access added functions without needing to use the +\pkg{expl3} layer. It is possible that a future release of \LaTeX{} will +add the ability to create and set floating point variables at the +document level: this will be examined based on feedback on the +utility of the programming layer change. + + +\section{\emph{Removed} kernel commands} + +It is very rare that commands are removed from the \LaTeX{} kernel. However, in +this release we have elected to remove \cs{GetDocumentCommandArgSpec}, +\cs{GetDocumentEnvironmentArgSpec}, \cs{ShowDocumentCommandArgSpec} and +\cs{ShowDocumentEnvironmentArgSpec} from the kernel. These commands have been +moved back to the \enquote{stub} \pkg{xparse} provided in \pkg{l3packages}. The +reason for this change is that the removed commands exposed implementation +details. They were essentially debugging tools which with hindsight should +not have been made available directly in the kernel. + + +% \section{Bug fixes} + +\finalpagebreak \section{Changes to packages in the \pkg{tools} category} +\subsection{\pkg{longtable}: correct p-column definition} + +In general the \pkg{longtable} implementation follows the \pkg{array} +usage but the package didn't take over a change made 1992 in +\pkg{array} which adjusted the handling of the strut inserted at the +begin of p-columns. As a consequence there are a number of +inconsistencies in the output of p-columns between \pkg{tabular} and +\pkg{longtable}. This has been corrected; \pkg{longtable} now uses for +the strut the same definition as \pkg{array}. +% +\githubissue{1128} -%\medskip +\medskip +\tubcommand{\newpage} \begin{thebibliography}{9} -\fontsize{9.3}{11.3}\selectfont +%\fontsize{9.3}{11.3}\selectfont + + +\bibitem{38:Lamport} +Leslie Lamport. +\newblock \emph{{\LaTeX}: {A} Document Preparation System: User's Guide and Reference + Manual}. +\newblock \mbox{Addison}-Wesley, Reading, MA, USA, 2nd edition, 1994. +\newblock ISBN 0-201-52983-1. +\newblock Reprinted with corrections in 1996. + + +\bibitem{38:ltnews} \LaTeX{} Project Team. + \emph{\LaTeXe{} news 1--38}.\\ + \url{https://latex-project.org/news/latex2e-news/ltnews.pdf} + +\bibitem{38:blueprint} Frank Mittelbach and Chris Rowley. + \emph{\LaTeX{} Tagged PDF \Dash A blueprint for a large project}.\\ + \url{https://latex-project.org/publications/indexbyyear/2020/} + + \end{thebibliography} diff --git a/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf Binary files differindex 6836c91ff6b..aa77b62b7c6 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf Binary files differindex f29cf22b463..008e6a5f331 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltproperties-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltproperties-code.pdf Binary files differindex 8176e3fdde7..a0757a3b611 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltproperties-code.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltproperties-code.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltproperties-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltproperties-doc.pdf Binary files differindex 553223ecc23..8dccf572dc5 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltproperties-doc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltproperties-doc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf Binary files differindex ff0e6d4c2b9..b688db8cc55 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf Binary files differindex bf58bd09b98..9265263918c 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltsockets-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltsockets-code.pdf Binary files differindex 82ccada4097..7fa60a7f542 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltsockets-code.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltsockets-code.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltsockets-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltsockets-doc.pdf Binary files differindex 0d32f64a1d5..e708f04a3a4 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltsockets-doc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltsockets-doc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf b/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf Binary files differindex d80998b77ca..61f04c83ca3 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf Binary files differindex 4acf824c6b2..334349f4bb1 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf b/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf Binary files differindex aa2de39acef..d6c1e08074e 100644 --- a/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/modguide.pdf b/Master/texmf-dist/doc/latex-dev/base/modguide.pdf Binary files differindex d1f7521e0d2..ff40b00fa92 100644 --- a/Master/texmf-dist/doc/latex-dev/base/modguide.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/modguide.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf b/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf Binary files differindex df53f5fa0ef..c947cc02bfd 100644 --- a/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/proc.pdf b/Master/texmf-dist/doc/latex-dev/base/proc.pdf Binary files differindex 79b95b1af0a..b143f929d5e 100644 --- a/Master/texmf-dist/doc/latex-dev/base/proc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/proc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/slides.pdf b/Master/texmf-dist/doc/latex-dev/base/slides.pdf Binary files differindex 3efdda8edbc..5bdcaaa9e60 100644 --- a/Master/texmf-dist/doc/latex-dev/base/slides.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/slides.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf b/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf Binary files differindex aec17314d41..8dc32739ffa 100644 --- a/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/source2e.pdf b/Master/texmf-dist/doc/latex-dev/base/source2e.pdf Binary files differindex bb85ca131ce..f39b19d128c 100644 --- a/Master/texmf-dist/doc/latex-dev/base/source2e.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/source2e.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf b/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf Binary files differindex c62cd393f79..3390b696f3f 100644 --- a/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf b/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf Binary files differindex b43f85c4a8e..87fd9f964d2 100644 --- a/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/tlc3.err b/Master/texmf-dist/doc/latex-dev/base/tlc3.err index 81975c34e7e..d4f94705d7e 100644 --- a/Master/texmf-dist/doc/latex-dev/base/tlc3.err +++ b/Master/texmf-dist/doc/latex-dev/base/tlc3.err @@ -1,4 +1,4 @@ -\newcommand\erratafiledate{2023/09/01} % needs / not - +\newcommand\erratafiledate{2023/10/30} % needs / and not - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % To produce a printed version of this errata file run this file through @@ -259,8 +259,9 @@ % printing are typeset. % -\renewcommand\erratastartdate{2023/04/01} +\renewcommand\erratastartdate{2023/04/01} % ALL ENTRIES %\renewcommand\erratastartdate{2023/05/30} % for the first digital edition +%\renewcommand\erratastartdate{2023/09/01} % % If you own a digital edition (which is more often updated than the @@ -466,8 +467,12 @@ beyond \> \u{B}eyond \erroronpage{I-xx\ldots I-xxi}{}{FMi}{2023/04/04}{s} Dot leaders have been changed on all sections. + \CHAPTER{Bibliography (Part I)} +\erroronpage{I-779}{[24], l.-1}{FMi}{2023/10/28}{s} +Link should use \texttt{https://} + \erroronpage{I-783}{[55], l.-2}{FMi}{2023/04/04}{s} all \> \u{them} all @@ -543,15 +548,22 @@ Publishing \> Publishing\u{,} \section{Errata for the digital version (not applicable to the print version)} -All known errors to the digital version have already been incorporated in the product as distributed. +Most known errors to the digital version have already been +incorporated in the product as distributed, here are the remaining +ones. + +\begin{erratalist} -%\begin{erratalist} -% %\CHAPTER{General} % %\CHAPTER{Front matter} -% -%\end{erratalist} + +\CHAPTER{Bibliography} + +\erroronpage{II-800}{[50], l.-1}{FMi}{2023/10/28}{s} +Link should use \texttt{https://} + +\end{erratalist} %<-------------------------- @@ -636,6 +648,18 @@ Typo: Assembler (\u{N}otorola68k, x86masm) \> \\ Assembler (\u{M}otorola68k, x86 \CHAPTER{Chapter 5 --- The Layout of the Page} +\erroronpage{I-386}{exa 5-3-1, l.7}{EOl}{2023/09/09}{s} +Change: +paragraph over \u{two} pages. \> paragraph over \u{three} pages. + +\textit{Reason: The third page contains just the word ``pages.'' (which would be page 8) +is not shown.} + +\erroronpage{I-389}{syntax box -1}{DC}{2023/10/06}{s} + +\u{\cs{right}} \> \u{\cs{rightmark}} + + \CHAPTER{Chapter 6 --- Tabular Material} @@ -654,6 +678,9 @@ result in ``31.00'', which is probably not desired. \CHAPTER{Chapter 7 --- Mastering Floats} +\erroronpage{I-520}{paragraph 4, l.3}{EOl}{2023/09/09}{s} +Change: +For \u{a} example \> For example \CHAPTER{Chapter 8 --- Graphics Generation and Manipulation} @@ -1245,6 +1272,11 @@ Changes the output of example 16-7-31 on page II-560 as well. %and stay with one .bib file (in UTF8-encoding). +\erroronpage{II-396}{in box: para 2, l.2}{MJo}{2023/10/30}{s} +the \cs{MakeUpper}\texttt{\u{C}ase} trick \> +the \cs{MakeUpper}\texttt{\u{c}ase} trick + + \erroronpage{II-435}{code}{FMi}{2023/05/26}{s} \verb=\textcolor{See= \> \cs{textcolor}\u{\texttt{\{blue\}}}\texttt{\{See} @@ -1278,9 +1310,11 @@ Jane Doe.\ \textit{A\u{n} second book.}\ 2020.\> Jane Doe.\ \textit{A second boo \CHAPTER{Chapter 17 --- \LaTeX{} Package Documentation Tools} \erroronpage{II-599}{para 3, l.1}{EOl}{2023/07/30}{s} - \u{Whencreating automatically} the driver \> \u{When} the driver +\erroronpage{II-605}{para 1, l.10}{CAR}{2023/10/10}{s} +\u{right numbers} of underscores \> \u{correct number} of underscores + \CHAPTER{Appendix A --- \LaTeX{} Overview for Preamble, \ldots} @@ -1325,6 +1359,8 @@ Appendix title not properly capitalized. \begin{multicols}{3}[Thanks to all who have found errors or omissions. Listed are the people who found an errata entry first.] \contributor{BeB}{Bernd Burghardt} +\contributor{CAR}{Chris Rowley} +\contributor{DC}{Davide Campagnari} \contributor{DFl}{Daniel Flipo} \contributor{EOl}{Edgar Olthof} \contributor{FMi}{Frank Mittelbach} diff --git a/Master/texmf-dist/doc/latex-dev/base/tlc3.pdf b/Master/texmf-dist/doc/latex-dev/base/tlc3.pdf Binary files differindex b7992b71527..24ff91e85bc 100644 --- a/Master/texmf-dist/doc/latex-dev/base/tlc3.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/tlc3.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/tulm.pdf b/Master/texmf-dist/doc/latex-dev/base/tulm.pdf Binary files differindex 57f1df3e27b..8316f50ae87 100644 --- a/Master/texmf-dist/doc/latex-dev/base/tulm.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/tulm.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.pdf b/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.pdf Binary files differindex aabe4c0543e..d41dee80cec 100644 --- a/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf b/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf Binary files differindex 310c0e11ba7..4ab70040183 100644 --- a/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf b/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf Binary files differindex 3925b86fcbe..da318975795 100644 --- a/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf b/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf Binary files differindex ce28e4400f5..afda6ddc4b3 100644 --- a/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf +++ b/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf diff --git a/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt b/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt index 17d8f9acdf2..8db6a5d0fd7 100644 --- a/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt +++ b/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt @@ -1,8 +1,13 @@ +2023-09-20 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + + * latex2e-first-aid-for-external-files.dtx: add firstaid for underscore to + make the active char protected and safe for use in csnames. + 2023-07-18 Ulrike Fischer <Ulrike.Fischer@latex-project.org> - * latex2e-first-aid-for-external-files.dtx: remove no longer needed code for + * latex2e-first-aid-for-external-files.dtx: remove no longer needed code for everysel - * latex2e-first-aid-for-external-files.dtx: remove no longer needed code for bidi - * latex2e-first-aid-for-external-files.dtx: + * latex2e-first-aid-for-external-files.dtx: remove no longer needed code for bidi + * latex2e-first-aid-for-external-files.dtx: remove no longer needed code for memoir/stockheight 2023-05-20 Ulrike Fischer <Ulrike.Fischer@latex-project.org> diff --git a/Master/texmf-dist/doc/latex-dev/firstaid/latex2e-first-aid-for-external-files.pdf b/Master/texmf-dist/doc/latex-dev/firstaid/latex2e-first-aid-for-external-files.pdf Binary files differindex c024fad142f..9716fc75926 100644 --- a/Master/texmf-dist/doc/latex-dev/firstaid/latex2e-first-aid-for-external-files.pdf +++ b/Master/texmf-dist/doc/latex-dev/firstaid/latex2e-first-aid-for-external-files.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/README.md b/Master/texmf-dist/doc/latex-dev/graphics/README.md index 2561c688839..df1e890c5a2 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/README.md +++ b/Master/texmf-dist/doc/latex-dev/graphics/README.md @@ -1,7 +1,7 @@ The LaTeX `graphics` bundle =========================== -Release 2023-11-01 pre-release 0 +Release 2024-06-01 pre-release 0 Overview -------- diff --git a/Master/texmf-dist/doc/latex-dev/graphics/color.pdf b/Master/texmf-dist/doc/latex-dev/graphics/color.pdf Binary files differindex 6a32cdb7f0c..e1c35c486db 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/color.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/color.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/drivers.pdf b/Master/texmf-dist/doc/latex-dev/graphics/drivers.pdf Binary files differindex 6059951a02a..b32569dec4f 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/drivers.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/drivers.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/epsfig.pdf b/Master/texmf-dist/doc/latex-dev/graphics/epsfig.pdf Binary files differindex e663d5bea79..7c863b7a224 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/epsfig.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/epsfig.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/graphics.pdf b/Master/texmf-dist/doc/latex-dev/graphics/graphics.pdf Binary files differindex 3bce5d9644d..343be34fa68 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/graphics.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/graphics.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/graphicx.pdf b/Master/texmf-dist/doc/latex-dev/graphics/graphicx.pdf Binary files differindex dd0266001ca..06aa1ba0870 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/graphicx.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/graphicx.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/grfguide.pdf b/Master/texmf-dist/doc/latex-dev/graphics/grfguide.pdf Binary files differindex 56fadc22e9c..7aa2c8bc899 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/grfguide.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/grfguide.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/keyval.pdf b/Master/texmf-dist/doc/latex-dev/graphics/keyval.pdf Binary files differindex 32511514247..7b1c32da0ef 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/keyval.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/keyval.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/lscape.pdf b/Master/texmf-dist/doc/latex-dev/graphics/lscape.pdf Binary files differindex 7385307c49a..a225429e462 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/lscape.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/lscape.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/mathcolor.pdf b/Master/texmf-dist/doc/latex-dev/graphics/mathcolor.pdf Binary files differindex 16efc52884b..f1bcf17585d 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/mathcolor.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/mathcolor.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/rotating.pdf b/Master/texmf-dist/doc/latex-dev/graphics/rotating.pdf Binary files differindex 99ff1bfe085..1fe5a8b8b9f 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/rotating.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/rotating.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/rotex.pdf b/Master/texmf-dist/doc/latex-dev/graphics/rotex.pdf Binary files differindex 264e6ec00b5..7c153bad339 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/rotex.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/rotex.pdf diff --git a/Master/texmf-dist/doc/latex-dev/graphics/trig.pdf b/Master/texmf-dist/doc/latex-dev/graphics/trig.pdf Binary files differindex 7c2cd0dd38a..6daa5bc8a28 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/trig.pdf +++ b/Master/texmf-dist/doc/latex-dev/graphics/trig.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/README.md b/Master/texmf-dist/doc/latex-dev/latex-lab/README.md index 2b86c4d5ee1..046d498ab82 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/README.md +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/README.md @@ -1,6 +1,6 @@ # LaTeX laboratory -Release 2023-11-01 pre-release 1 +Release 2024-06-01 pre-release 0 ## Overview diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-code.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-code.pdf Binary files differindex 7b3c18298f7..ff13361fcc4 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-code.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-code.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-doc.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-doc.pdf Binary files differindex 4e0408b3618..a0f0e5dfad3 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-doc.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-doc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt b/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt index e447d8130ae..1a65830e8b3 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt @@ -1,3 +1,18 @@ +2023-10-30 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * added latex-lab-table.dtx for basic table tagging. + +2023-10-21 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-minipage.dtx: use sockets to allow local changes + +2023-10-13 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-toc.dtx, latex-lab-sec.dtx, latex-lab-toc-kernel-changes: extend + \MakeLinkTarget to store the target-structure relationship too, see tagging issue #20 + +2023-10-13 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + * latex-lab-graphic.dtx: fix handling of scale factor, tagging issue #16 + * latex-lab-graphic.dtx, latex-lab-footnote.dtx: switch to new property referencing code. + * latex-lab-math.dtx: fix grabbing of \(..\), tagging issue #19 + 2023-09-04 Ulrike Fischer <Ulrike.Fischer@latex-project.org> * latex-lab-math.dtx: fix below display skip, tagging issue #11 * latex-lab-math.dtx: allow to use it without tagging. diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-code.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-code.pdf Binary files differindex ed38483aece..e7e0823f1e3 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-code.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-code.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-doc.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-doc.pdf Binary files differindex d05aca93d9c..af939801139 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-doc.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-doc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-amsmath.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-amsmath.pdf Binary files differindex d47e09867f7..9c0073d19da 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-amsmath.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-amsmath.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-bib.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-bib.pdf Binary files differindex 153923a8715..59569a1735b 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-bib.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-bib.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-block.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-block.pdf Binary files differindex b82beb26845..7cd08195e38 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-block.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-block.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-firstaid.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-firstaid.pdf Binary files differindex 23b2d0d97d2..578d70101e9 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-firstaid.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-firstaid.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-float.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-float.pdf Binary files differindex 6cf52778ba0..1af101107fd 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-float.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-float.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-footnotes.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-footnotes.pdf Binary files differindex 6736fc51322..e0b8bc55802 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-footnotes.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-footnotes.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-graphic.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-graphic.pdf Binary files differindex 03f3d0b3f57..bf57d1bd95c 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-graphic.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-graphic.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-math.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-math.pdf Binary files differindex f68397d94af..deab5ad9147 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-math.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-math.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathpkg.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathpkg.pdf Binary files differindex a8c65f5f9c6..dbfcb0815b2 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathpkg.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathpkg.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathtools.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathtools.pdf Binary files differindex 8dec843fe9d..97026901d66 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathtools.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathtools.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-minipage.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-minipage.pdf Binary files differindex ac235aef7dc..c91e93f2fc6 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-minipage.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-minipage.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-namespace.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-namespace.pdf Binary files differindex e0c02494ca8..ff8e705be3f 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-namespace.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-namespace.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-1.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-1.pdf Binary files differindex 3f68d29e3ed..e670627022f 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-1.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-1.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-2.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-2.pdf Binary files differindex 2846071100b..13f4fa12658 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-2.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-2.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-sec.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-sec.pdf Binary files differindex ca042a4314e..4dc549e7c94 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-sec.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-sec.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-table.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-table.pdf Binary files differnew file mode 100644 index 00000000000..997db2d1a7e --- /dev/null +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-table.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-testphase.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-testphase.pdf Binary files differindex 0fd13aba89d..c65847a04f6 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-testphase.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-testphase.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-text.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-text.pdf Binary files differindex 4940583de08..a4e26db75f3 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-text.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-text.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.pdf Binary files differindex e00a26b1413..161e96f3380 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-kernel-changes.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-kernel-changes.pdf Binary files differindex 22016e835d7..0a78ca15d96 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-kernel-changes.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-kernel-changes.pdf diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc.pdf Binary files differindex 64853b0e8ba..eafeeec42e4 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc.pdf +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/README.md b/Master/texmf-dist/doc/latex-dev/tools/README.md index afcf184c4f8..c87b522b3c5 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/README.md +++ b/Master/texmf-dist/doc/latex-dev/tools/README.md @@ -1,7 +1,7 @@ The LaTeX `tools` bundle ======================== -Release 2023-11-01 pre-release 0 +Release 2024-06-01 pre-release 0 Overview -------- diff --git a/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf b/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf Binary files differindex 17eda0b12fb..1e62bd8f2be 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/array.pdf b/Master/texmf-dist/doc/latex-dev/tools/array.pdf Binary files differindex 1264fc160f6..9cf73a7e982 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/array.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/array.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/bm.pdf b/Master/texmf-dist/doc/latex-dev/tools/bm.pdf Binary files differindex 291ccc98147..c39e17aca08 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/bm.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/bm.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/calc.pdf b/Master/texmf-dist/doc/latex-dev/tools/calc.pdf Binary files differindex ac4b159a159..4c0230c6934 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/calc.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/calc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/changes.txt b/Master/texmf-dist/doc/latex-dev/tools/changes.txt index 74318d41bba..7b38392bd40 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/changes.txt +++ b/Master/texmf-dist/doc/latex-dev/tools/changes.txt @@ -10,6 +10,23 @@ All changes above are only part of the development branch for the next release. ================================================================================ ######################### +# 2023-11-01b Release +######################### + +2023-11-01 David Carlisle <David.Carlisle@latex-project.org> + + * longtable.dtx: corrrect year in date + +######################### +# 2023-11-01 Release +######################### + +2023-08-25 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + + * longtable.dtx: use \everypar to insert the strut in \LT@startpbox + to match the array use, github/1128 + +######################### # 2023-06-01 Release ######################### diff --git a/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf b/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf Binary files differindex 363aac31df9..967e011d284 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf b/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf Binary files differindex 8a6a0acf51e..1a8212075a0 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf b/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf Binary files differindex 3c8a6b4621e..17a894442e1 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf b/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf Binary files differindex 6d3c7a2430a..3fc612b3d86 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf b/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf Binary files differindex eb6abbfb697..61648a2c339 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf b/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf Binary files differindex 3ddaef7217d..2a4e24a4322 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf b/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf Binary files differindex 3fbc14c435a..d8f969b7b00 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf b/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf Binary files differindex 2fadade2989..235e364993b 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/layout.pdf b/Master/texmf-dist/doc/latex-dev/tools/layout.pdf Binary files differindex 58124826649..4e0722c7103 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/layout.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/layout.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf b/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf Binary files differindex 88c5fbce0f3..f24ff36f4fe 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf b/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf Binary files differindex c063c8d70eb..031d1920fa8 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf b/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf Binary files differindex 63e25bc7a9a..08f8d71317f 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf b/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf Binary files differindex cbb18fe3075..ee1a87cc011 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf b/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf Binary files differindex 4566f82b610..2d4da0c5a7c 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf b/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf Binary files differindex e7389d5d092..9d282b58f3a 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf b/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf Binary files differindex 49b97c905b1..9f68f266436 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf b/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf Binary files differindex 157a1f6ce6e..5cdc977c98a 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf b/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf Binary files differindex 39971309c4c..300602a9ed5 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/trace.pdf b/Master/texmf-dist/doc/latex-dev/tools/trace.pdf Binary files differindex 284b3be3d14..7ddd4fc6b73 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/trace.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/trace.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf b/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf Binary files differindex 0573d850a6f..6a8d722fd73 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf b/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf Binary files differindex ba986b56ef6..3908ca304d0 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/xr.pdf b/Master/texmf-dist/doc/latex-dev/tools/xr.pdf Binary files differindex ce523eafe0a..58217a12d21 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/xr.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/xr.pdf diff --git a/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf b/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf Binary files differindex 4f6b3b1bc36..573624719e5 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf +++ b/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf diff --git a/Master/texmf-dist/source/latex-dev/base/docstrip.dtx b/Master/texmf-dist/source/latex-dev/base/docstrip.dtx index be373499e6b..776d0e68d7d 100644 --- a/Master/texmf-dist/source/latex-dev/base/docstrip.dtx +++ b/Master/texmf-dist/source/latex-dev/base/docstrip.dtx @@ -31,7 +31,7 @@ \def\filename{docstrip.dtx} \def\fileversion{v2.6b} \def\filedate{2022-09-03} -\def\docdate {2022-09-03} +\def\docdate {2023-10-10} %% % %\iffalse @@ -838,6 +838,29 @@ % suppressed by giving an empty module name, namely using the % syntax \texttt{\%<@@=>}. % +% The exact steps that are carried out by this replacement +% algorithm are the following: +% \begin{enumerate} +% \item First, deal with \texttt{@@@@} as a special case (by using a +% temporary disguise). +% +% \item Then change all |__@@| to |__|\meta{module}. +% +% \item Then change all remaining |_@@| to +% |__|\meta{module}. +% +% \item Then change all remaining \texttt{@@} to +% |__|\meta{module}. +% +% \item Finally, tidy up by changing each ``disguised +% \texttt{@@@@}'' to \texttt{@@}. +% \end{enumerate} +% Thus, replacement means that \texttt{@@} is replaced by the +% \meta{module} name and that 0, 1, or 2 underscores in front of +% \texttt{@@} are replaced by exactly 2 underscores (whilst any +% larger number of underscores is preserved). +% +% % \section{Those other languages} % Since \TeX\ is an open system some of \TeX\ packages include % non-\TeX\ files. Some authors use \ds\ to generate PostScript diff --git a/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx b/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx index ff1717caa97..d84158c161b 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltboxes.dtx} - [2022/09/07 v1.4d LaTeX Kernel (Box Commands)] + [2023/10/26 v1.4e LaTeX Kernel (Box Commands)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltboxes.dtx} @@ -342,13 +342,36 @@ % \begin{macro}{\@imakebox} % \changes{v0.1a}{1993/12/03} % {macro modified} +% \changes{v1.4e}{2023/10/26} +% {Guard against unknown alignment gh/1072} % Internal form of |\makebox|. % \begin{macrocode} +%</2ekernel> +%<latexrelease>\IncludeInRelease{2023/11/01}% +%<latexrelease> {\@imakebox}{Unknown alignment warning}% +%<*2ekernel|latexrelease> \long\def\@imakebox[#1][#2]#3{% \@begin@tempboxa\hbox{#3}% \setlength\@tempdima{#1}% support calc - \hb@xt@\@tempdima{\csname bm@#2\endcsname}% + \hb@xt@\@tempdima{% + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #2}% + \else + \csname bm@#2\endcsname + \fi}% \@end@tempboxa} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\@imakebox}{Unknown alignment warning}% +%<latexrelease>\long\def\@imakebox[#1][#2]#3{% +%<latexrelease> \@begin@tempboxa\hbox{#3}% +%<latexrelease> \setlength\@tempdima{#1}% support calc +%<latexrelease> \hb@xt@\@tempdima{\csname bm@#2\endcsname}% +%<latexrelease> \@end@tempboxa} +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % @@ -748,19 +771,46 @@ % {\cs{leavevmode} moved to \cs{@frameb@x}} % \changes{v1.0s}{1995/04/27} % {Move \cs{leavevmode} for graphics/1512} +% \changes{v1.4e}{2023/10/26} +% {Guard against unknown alignment gh/1072} % In order to set the whole box, including the frame to the % specified dimension, we first determine that dimension % from the natural size of the text, |#3|. % calculated width. % \begin{macrocode} +%</2ekernel> +%<latexrelease>\IncludeInRelease{2023/11/01}% +%<latexrelease> {\@iframebox}{Unknown alignment warning}% +%<*2ekernel|latexrelease> \long\def\@iframebox[#1][#2]#3{% \leavevmode \@begin@tempboxa\hbox{#3}% \setlength\@tempdima{#1}% \setbox\@tempboxa\hb@xt@\@tempdima - {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}% + {\kern\fboxsep + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #2}% + \else + \csname bm@#2\endcsname + \fi + \kern\fboxsep}% \@frameb@x{\kern-\fboxrule}% \@end@tempboxa} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\@iframebox}{Unknown alignment warning}% +%<latexrelease>\long\def\@iframebox[#1][#2]#3{% +%<latexrelease> \leavevmode +%<latexrelease> \@begin@tempboxa\hbox{#3}% +%<latexrelease> \setlength\@tempdima{#1}% +%<latexrelease> \setbox\@tempboxa\hb@xt@\@tempdima +%<latexrelease> {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}% +%<latexrelease> \@frameb@x{\kern-\fboxrule}% +%<latexrelease> \@end@tempboxa} +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % @@ -881,9 +931,17 @@ % \changes{v1.1g}{2006/05/18} % {Ensure \cs{@parboxto} holds the value of \cs{@tempdimb} not the % register itself (pr/3867)} +% \changes{v1.4e}{2023/10/26} +% {Guard against unknown alignment gh/1072} % The internal version of |\parbox|. % \begin{macrocode} \let\@parboxto\@empty +% \end{macrocode} +% \begin{macrocode} +%</2ekernel> +%<latexrelease>\IncludeInRelease{2023/11/01}% +%<latexrelease> {\@iiiparbox}{Unknown alignment warning}% +%<*2ekernel|latexrelease> \long\def\@iiiparbox#1#2[#3]#4#5{% \leavevmode \@pboxswfalse @@ -899,9 +957,38 @@ \else\@pboxswtrue $\vcenter \fi\fi\fi \@parboxto{\let\hss\vss\let\unhbox\unvbox - \csname bm@#3\endcsname}% + \expandafter\ifx\csname bm@#3\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #3}% + \else + \csname bm@#3\endcsname + \fi}% \if@pboxsw \m@th$\fi \@end@tempboxa} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\@iiiparbox}{Unknown alignment warning}% +%<latexrelease>\long\def\@iiiparbox#1#2[#3]#4#5{% +%<latexrelease> \leavevmode +%<latexrelease> \@pboxswfalse +%<latexrelease> \setlength\@tempdima{#4}% +%<latexrelease> \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}% +%<latexrelease> \ifx\relax#2\else +%<latexrelease> \setlength\@tempdimb{#2}% +%<latexrelease> \edef\@parboxto{to\the\@tempdimb}% +%<latexrelease> \fi +%<latexrelease> \if#1b\vbox +%<latexrelease> \else\if #1t\vtop +%<latexrelease> \else\ifmmode\vcenter +%<latexrelease> \else\@pboxswtrue $\vcenter +%<latexrelease> \fi\fi\fi +%<latexrelease> \@parboxto{\let\hss\vss\let\unhbox\unvbox +%<latexrelease> \csname bm@#3\endcsname}% +%<latexrelease> \if@pboxsw \m@th$\fi +%<latexrelease> \@end@tempboxa} +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % \end{macro} diff --git a/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx b/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx index 92e6de52cb6..4e5eba550b0 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltexpl.dtx} - [2022/02/28 v1.3f LaTeX Kernel (expl3-dependent code)] + [2023/10/13 v1.3g LaTeX Kernel (expl3-dependent code)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltexpl.dtx} @@ -516,4 +516,27 @@ %<latexrelease>\EndIncludeInRelease % \end{macrocode} % +% \DescribeMacro\IfExplAtLeastTF +% A pretty simple wrapper. +% +% \begin{macro}{\IfExplAtLeastTF} +% \changes{v1.3g}{2023/10/13}{Provide a test for \pkg{expl3} date (gh/1004)} +% \begin{macrocode} +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2023/11/01}% +%<latexrelease> {\IfExplAtLeastTF}{Test for expl3 date}% +\def\IfExplAtLeastTF{\@ifl@t@r\ExplLoaderFileDate} +% \end{macrocode} +% \end{macro} +% We make sure the command is always available. +% \begin{macrocode} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\IfExplAtLeastTF}{Test for expl3 date}% +%<latexrelease> +%<latexrelease>\def\IfExplAtLeastTF{\@ifl@t@r\ExplLoaderFileDate} +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% % \Finale diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx index 9e68b38654e..a0746bd08c0 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx @@ -35,7 +35,7 @@ % % \ProvidesFile{ltfssaxes.dtx} - [2021/03/18 v1.0i LaTeX Kernel (NFSS Axes handing)] + [2023/10/30 v1.0i LaTeX Kernel (NFSS Axes handing)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -1240,9 +1240,9 @@ % The next rule might be a bit surprising and rightly so. Correct % would be that \texttt{sc} is not affected by \texttt{up}, i.e., % remains \texttt{sc} as showed in the commented out rule. However, -% for nearly three decades commands such as \upshape{sc} or +% for nearly three decades commands such as \cs{sc} or % \cs{textup} changed small caps back to the ``normal'' shape. So -% for backward compatibility we keep hat behavior. +% for backward compatibility we keep that behavior. % % As a result you are currently typesetting in \texttt{scit} or % \texttt{scsl} using \cs{upshape} twice will return you to the diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx index fda3d1ca4b0..fa82bd73bb6 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx @@ -35,7 +35,7 @@ % % \ProvidesFile{ltfssbas.dtx} - [2023/04/01 v3.2l LaTeX Kernel (NFSS Basic Macros)] + [2023/10/21 v3.2l LaTeX Kernel (NFSS Basic Macros)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -279,7 +279,7 @@ % For this we compare the given value \verb=#3= with one where we % may have dropped an ``m''. If nothing has changes, % fine. Otherwise there was a wrong value which is now corrected in -% \cs{reservedb} so we use that and also issue a warning. +% \cs{reserved@b} so we use that and also issue a warning. % \changes{v3.2j}{2021/06/09}{Improve information message} % \begin{macrocode} \edef\reserved@a{#3}% diff --git a/Master/texmf-dist/source/latex-dev/base/lthooks.dtx b/Master/texmf-dist/source/latex-dev/base/lthooks.dtx index e43fa4ef351..20d48730c48 100644 --- a/Master/texmf-dist/source/latex-dev/base/lthooks.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lthooks.dtx @@ -32,7 +32,7 @@ % % \begin{macrocode} \def\lthooksversion{v1.1f} -\def\lthooksdate{2023/08/11} +\def\lthooksdate{2023/10/02} % \end{macrocode} % %<*driver> @@ -795,7 +795,7 @@ % \end{itemize} % There can only be a single relation between two labels for a % given hook, -% i.e., a later \cs{DeclareHookrule} overwrites any previous +% i.e., a later \cs{DeclareHookRule} overwrites any previous % declaration. % % The \meta{hook} and \meta{label} can be specified using the @@ -1566,8 +1566,8 @@ % % Generic hooks defined in this way are always normal hooks (i.e., % you can't implement reversed hooks this way). This is a -% deliberate limitation, because it speeds up the processessing -% conciderably. +% deliberate limitation, because it speeds up the processing +% considerably. % % % \subsection{Hooks with arguments} diff --git a/Master/texmf-dist/source/latex-dev/base/ltplain.dtx b/Master/texmf-dist/source/latex-dev/base/ltplain.dtx index 89e5017300f..b41810373d0 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltplain.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltplain.dtx @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltplain.dtx} - [2023/04/15 v2.3i LaTeX Kernel (Plain TeX)] + [2023/10/21 v2.3i LaTeX Kernel (Plain TeX)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltplain.dtx} @@ -1281,7 +1281,7 @@ % \cs{par} with whatever definition \cs{par} has when it is % executed. It can, however, be % redefined (before calling \cs{obeylines}!) to achieve some -% special effects. If you want to alter is definition when already +% special effects. If you want to alter this definition when already % in the scope of \cs{obeylines}, it has no effect (because % \cs{let} is used above). % In that case simply make another call to \cs{obeylines} diff --git a/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx b/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx index 71b6e2a14fe..40c50cd20a2 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx @@ -22,8 +22,8 @@ % % for those people who are interested. % \begin{macrocode} -\def\ltpropertiesversion{1.0b} -\def\ltpropertiesdate{2023-09-13} +\def\ltpropertiesversion{1.0c} +\def\ltpropertiesdate{2023-10-15} % \end{macrocode} %<*driver> @@ -177,7 +177,7 @@ % \begin{function} % { % \property_record:nN, -% \property_record:nn, \property_record:nV, \property_record:xx +% \property_record:nn, \property_record:nV, \property_record:ee % } % \begin{syntax} % \cs{property_record:nN} \Arg{label} \Arg{clist var} @@ -227,7 +227,7 @@ % or in some outer group! % \end{function} % -% \begin{function}{\property_ref_undefined_warn:n,\property_ref_undefined_warn:x} +% \begin{function}{\property_ref_undefined_warn:n,\property_ref_undefined_warn:e} % \begin{syntax} % \cs{property_ref_undefined_warn:n} \Arg{label} % \end{syntax} @@ -241,7 +241,7 @@ % \texttt{Reference~`\meta{label}'~on~page~\meta{page}\space undefined}. % \end{function} % -% \begin{function}{\property_ref_undefined_warn:nn,\property_ref_undefined_warn:xx} +% \begin{function}{\property_ref_undefined_warn:nn,\property_ref_undefined_warn:ee} % \begin{syntax} % \cs{property_ref_undefined_warn:nn} \Arg{label} \Arg{property} % \end{syntax} @@ -302,6 +302,8 @@ % \section{\LaTeXe{} interface} % % The LaTeXe{} interfaces always expand label and property arguments. +% This means that one must be careful when using active chars or commands in the +% names. UTF8-chars are protected and should be safe, similar most babel shorthands. % % \begin{function}{\NewProperty,\SetProperty} % \begin{syntax} @@ -397,7 +399,7 @@ % comparisions. % \end{variable} % -% \begin{variable}{currentlabel} +% \begin{variable}{label} % (now) The content of \cs{@currentlabel}. This is the value that % you get also with the standard \cs{label}/\cs{ref}. % \end{variable} @@ -410,10 +412,17 @@ % % \begin{variable}{target} % (now) The content of \cs{@currentHref}. -% This command is normally filled by for example by +% This command is normally filled by for example % \pkg{hyperref} and gives the name of the last destination it created. % \end{variable} % +% \begin{variable}{pagetarget} +% (shipout) The content of \cs{@currentHpage}. +% This command is filled for example by a recent version of +% \pkg{hyperref} and then gives the name of the last page +% destination it created. +% \end{variable} +% % \begin{variable}{counter} % (now) The content of \cs{@currentcounter}. % This command contains after a \cs{refstepcounter} the name of the counter. @@ -486,7 +495,7 @@ } \cs_new_protected:Npn \property_gset:nnnn #1#2#3#4 { - \@@_gset:xnnn { \tl_to_str:n {#1} } + \@@_gset:ennn { \tl_to_str:n {#1} } {#2} {#3} {#4} } \cs_new_protected:Npn \@@_gset:nnnn #1#2#3#4 @@ -504,21 +513,24 @@ } { \msg_error:nnnn { property } { unknown-setpoint } {#1} {#2} } } -\cs_generate_variant:Nn \@@_gset:nnnn {xnnn} +\cs_generate_variant:Nn \@@_gset:nnnn {ennn} % \end{macrocode} % \end{macro} % % \begin{macro}{\NewProperty,\SetProperty} % For consistency we expand the property name, but this doesn't warant a % variant of the L3-commands. +% \changes{v1.0c}{2023-09-20}{use \cs{protected@edef}} % \begin{macrocode} \cs_new_protected:Npn \NewProperty #1#2#3#4 { - \exp_args:Nx \property_new:nnnn {#1}{#2}{#3}{#4} + \protected@edef\reserved@a{#1} + \exp_args:No \property_new:nnnn {\reserved@a} {#2}{#3}{#4} } \cs_new_protected:Npn \SetProperty #1#2#3#4 { - \exp_args:Nx \property_gset:nnnn {#1}{#2}{#3}{#4} + \protected@edef\reserved@a{#1} + \exp_args:No \property_gset:nnnn {\reserved@a} {#2}{#3}{#4} } % \end{macrocode} % \end{macro} @@ -528,9 +540,10 @@ % { % \property_record:nn, % \property_record:nV, -% \property_record:xx, +% \property_record:ee, +% \property_record:oo, % \@@_record:nn, -% \@@_record:xn +% \@@_record:en % } % \begin{macro}[EXP] % {\@@_record_value:n, \@@_record_value_aux:n, \@@_record_value_aux:e} @@ -542,8 +555,8 @@ \cs_new_protected:Npn \property_record:nN #1#2 { \property_record:nV {#1} #2 } \cs_new_protected:Npn \property_record:nn #1#2 - { \@@_record:xn { \tl_to_str:n {#1} } {#2} } -\cs_generate_variant:Nn \property_record:nn { nV , xx } + { \@@_record:en { \tl_to_str:n {#1} } {#2} } +\cs_generate_variant:Nn \property_record:nn { nV , ee, oo } \cs_new_protected:Npn \@@_record:nn #1#2 { \legacy_if:nT { @filesw } @@ -556,7 +569,7 @@ } } } -\cs_generate_variant:Nn \@@_record:nn { x } +\cs_generate_variant:Nn \@@_record:nn { e } \cs_new:Npn \@@_record_value:n #1 { \@@_record_value_aux:e { \tl_to_str:n {#1} } } \cs_new:Npn \@@_record_value_aux:n #1 @@ -580,11 +593,14 @@ % \end{macro} % % \begin{macro}{\RecordProperties} +% \changes{v1.0c}{2023-09-20}{use \cs{protected@edef} for safer handling of active chars.} % % \begin{macrocode} \NewDocumentCommand\RecordProperties { m m } { \@bsphack - \property_record:xx {#1}{#2} + \protected@edef\reserved@a{#1} + \protected@edef\reserved@b{#2} + \property_record:oo {\reserved@a}{\reserved@b} \@esphack } % \end{macrocode} @@ -803,8 +819,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\property_ref_undefined_warn:nn, -% \property_ref_undefined_warn:xx, +% \begin{macro}{\property_ref_undefined_warn:nn, +% \property_ref_undefined_warn:ee, % \RefUndefinedWarn} % \begin{macrocode} \cs_new_protected:Npn \property_ref_undefined_warn:nn #1#2 %#1 label, #2 property @@ -823,8 +839,8 @@ \@latex@warning { Reference~`#1'~on~page~\thepage\space undefined }% } } -\cs_generate_variant:Nn \property_ref_undefined_warn:nn {xx} -\cs_set_eq:NN \RefUndefinedWarn \property_ref_undefined_warn:xx +\cs_generate_variant:Nn \property_ref_undefined_warn:nn {ee} +\cs_set_eq:NN \RefUndefinedWarn \property_ref_undefined_warn:ee % \end{macrocode} % \end{macro} % @@ -849,9 +865,9 @@ % \end{macrocode} % \end{variable} % -% \begin{variable}{currentlabel} +% \begin{variable}{label} % \begin{macrocode} -\property_new:nnnn { currentlabel } { now } { ?? } { \@currentlabel } +\property_new:nnnn { label } { now } { ?? } { \@currentlabel } % \end{macrocode} % \end{variable} % @@ -868,6 +884,13 @@ % \end{macrocode} % \end{variable} % +% \begin{variable}{target} +% \begin{macrocode} +\newcommand\@currentHpage{} +\property_new:nnnn { pagetarget } { shipout } { } { \@currentHpage } +% \end{macrocode} +% \end{variable} + % \begin{variable}{counter} % \begin{macrocode} \property_new:nnnn { counter } { now } { } { \@currentcounter } diff --git a/Master/texmf-dist/source/latex-dev/base/ltspace.dtx b/Master/texmf-dist/source/latex-dev/base/ltspace.dtx index 66841cae384..03b34450474 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltspace.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltspace.dtx @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltspace.dtx} - [2023/06/14 v1.3q LaTeX Kernel (spacing)] + [2023/10/26 v1.3r LaTeX Kernel (spacing)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltspace.dtx} @@ -742,7 +742,7 @@ % true (as |\@esphack| used to do previously). % This is currently used only for floats and similar environments. % \changes{v1.2s}{1996/08/02}{Remove \cs{global} before \cs{@ignore...}} -% \changes{v1.3d}{2015/01/11}{Allow hyphenation (Donald Arseneau pr/3498) (latexrelease)}w +% \changes{v1.3d}{2015/01/11}{Allow hyphenation (Donald Arseneau pr/3498) (latexrelease)} % \begin{macrocode} %</2ekernel> %<latexrelease>\IncludeInRelease{2015/01/01}% @@ -1195,6 +1195,7 @@ % % \begin{macro}{\nobreakspace} % \changes{v1.2k}{1995/12/04}{(Macro added} +% \changes{v1.3r}{2023/10/26}{Protected definition for tilde} % \begin{macro}{\@xobeysp} % \changes{v1.2t}{1996/09/28}{Moved from ltmiscen.dtx and redefined to % use \cs{nobreakspace }} @@ -1213,11 +1214,31 @@ % We need to keep \cs{@xobeysp} as it is widely used; so here it is % let to the non-robust command \cs{nobreakspace }. % +% The fragile version of |~| needs a brace group after \cs{nobreakspace} +% to prevent loss of spaces if it occurs in an expansion context. That's +% not an issue with the updated \cs{protected} definition, so we keep the +% code shorter and avoid that. % \begin{macrocode} \DeclareRobustCommand{\nobreakspace}{% \leavevmode\nobreak\ } \catcode `\~=13 -\def~{\nobreakspace{}} +%</2ekernel> +%<latexrelease>\IncludeInRelease{2023/11/01}% +%<latexrelease> {\tilde}{Protected tilde}% +%<*2ekernel|latexrelease> +\protected\edef~{% + \noexpand\ifincsname\noexpand\expandafter\string~% + \noexpand\else + \noexpand\expandafter\noexpand\nobreakspace + \noexpand\fi +} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\tilde}{Protected tilde}% +%<latexrelease>\def~{\nobreakspace{}} +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> \expandafter\let\expandafter\@xobeysp\csname nobreakspace \endcsname % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex-dev/base/ltvers.dtx b/Master/texmf-dist/source/latex-dev/base/ltvers.dtx index 5b78c3bc5ed..e169dee020d 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltvers.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltvers.dtx @@ -112,10 +112,10 @@ %</2ekernel> %<latexrelease>\edef\latexreleaseversion %<*2ekernel|latexrelease> - {2023-11-01} + {2024-06-01} %</2ekernel|latexrelease> %<*2ekernel> -\def\patch@level{-1} +\def\patch@level{0} % \end{macrocode} % % \begin{macro}{\development@branch@name} diff --git a/Master/texmf-dist/source/latex-dev/firstaid/firstaid.ins b/Master/texmf-dist/source/latex-dev/firstaid/firstaid.ins index b3f30c30daa..22067390cd1 100644 --- a/Master/texmf-dist/source/latex-dev/firstaid/firstaid.ins +++ b/Master/texmf-dist/source/latex-dev/firstaid/firstaid.ins @@ -72,4 +72,7 @@ without such generated files. \generate{\file{filehook-ltx.sty} {\from{latex2e-first-aid-for-external-files.dtx}{filehook-ltx}}} +\generate{\file{underscore-ltx.sty} + {\from{latex2e-first-aid-for-external-files.dtx}{underscore-ltx}}} + \endbatchfile diff --git a/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx b/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx index d1eeaf5ce2a..ed6c898d658 100644 --- a/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx +++ b/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx @@ -111,8 +111,8 @@ % \end{macrocode} % % \begin{macrocode} -\def\LaTeXFirstAidDate{2023/07/18} -\def\LaTeXFirstAidVersion{v1.1a} +\def\LaTeXFirstAidDate{2023/09/20} +\def\LaTeXFirstAidVersion{v1.1b} % \end{macrocode} % % \begin{macrocode} @@ -563,6 +563,44 @@ % \begin{macrocode} %</kernel> % \end{macrocode} +% \subsection{The \pkg{underscore} first aid} +% +% The \pkg{underscore} package makes the underscore active. This means that the +% underscore can not be used in label and references unless the package option \texttt{strings} is used +% (which patches a selection of problematic commands like \cs{label} and \cs{ref}) +% or \pkg{babel} is used which redefines\footnote{unless the recommended option \texttt{safe=none} is used} +% a selection of problematic commands like \cs{@testdef} or \cs{@newl@bel}. +% +% With the new property commands the work-around do not work. We therefore make the +% underscore protected and use \cs{ifincsname} to allow its use in csnames. +% +% \begin{macrocode} +%<*underscore-ltx> +\ProvidesPackage{underscore-ltx}[2023/09/20 LaTeX firstaid to make underscore protected ] +\begingroup + \catcode`\_=\active + \protected\gdef _{% + \ifincsname % + \string_% + \else + \ifx\protect\@typeset@protect + \ifmmode \sb \else \BreakableUnderscore \fi + \else + \ifx\protect\@unexpandable@protect \noexpand_% + \else \protect_% + \fi\fi + \fi + } + \global\let\ActiveUnderscore=_ +\endgroup +%</underscore-ltx> +% \end{macrocode} +% \begin{macrocode} +%<*kernel> +\AddToHook{file/underscore.sty/after}[firstaid]{% + \FirstAidNeededT{underscore}{sty}{2006/09/13}{\RequirePackage{underscore-ltx}}} +%</kernel> +% \end{macrocode} % % \Finale % diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx index 3bd06b72c8f..e0a723ca87c 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx @@ -2314,7 +2314,7 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}{\@@_make_label_box:n, \@@_label_format:x} +% \begin{macro}{\@@_make_label_box:n, \@@_label_format:e} % Make one label, wrapped in \cs{@@_label_format:n}, with an % appropriate \tn{strut} and possibly \tn{makelabel} in compatibility % mode (used for the \env{list} environment). diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx index f62d12bfd9c..2389906c5ac 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx @@ -899,8 +899,6 @@ % \subsection{Variants} % % \begin{macrocode} -\cs_generate_variant:Nn \ref_value:nn { Vn } -\cs_generate_variant:Nn \prop_gput:Nnn {cxn} \cs_generate_variant:Nn \hook_gput_code:nnn{nne} \cs_generate_variant:Nn \tag_struct_use:n {e} % \end{macrocode} @@ -1711,14 +1709,14 @@ % At first we define a suitable attribute, it uses as value the structure % number of the note as stored in \cs{l__fnote_currentstruct_tl} % \begin{macrocode} -\ref_attribute_gset:nnnn {fnote/struct}{1}{now}{\l_@@_currentstruct_tl} +\property_new:nnnn {fnote/struct}{now}{1}{\l_@@_currentstruct_tl} % \end{macrocode} % % We add a hook to the label hook. By default it does nothing -% \begin{macro}{\@@_label_hook:n} +% \begin{macro}{\@@_label_hook:e} % \begin{macrocode} -\cs_new_protected:Npn \@@_label_hook:n #1 {} -\AddToHookWithArguments{label}{ \@@_label_hook:n{#1}} +\cs_new_protected:Npn \@@_label_hook:e #1 {} +\AddToHookWithArguments{label}{ \@@_label_hook:e{#1}} % \end{macrocode} % \end{macro} % Inside a footnotetext we change the hook to store the structure number too. @@ -1726,9 +1724,9 @@ % \begin{macrocode} \AddToHook{fntext/begin} { - \cs_set_protected:Npn \@@_label_hook:n #1 + \cs_set_protected:Npn \@@_label_hook:e #1 { - \ref_label:nn {#1} {fnote/struct} + \property_record:ee {@@/#1} {fnote/struct} } } % \end{macrocode} @@ -1766,7 +1764,7 @@ % \begin{macrocode} \cs_new_protected:Npn \fnote_mark_gput:nn #1 #2 % #1 the representation of the mark, #2 type { - \prop_gput:cxn { g_@@_currentmarks_ #2 _prop } + \prop_gput:cen { g_@@_currentmarks_ #2 _prop } { \tag_get:n{struct_num} } { #1 } } @@ -1839,7 +1837,7 @@ % which means the name of the prop shouldn't be fix. % \begin{macrocode} \fnote_mark_gput:oo {\@thefnmark}{\l_fnote_type_tl} - \tl_set:Nx \l_@@_linktarget_tl {footnote*.\tag_get:n{struct_num}} + \tl_set:Ne \l_@@_linktarget_tl {footnote*.\tag_get:n{struct_num}} } % \end{macrocode} % If there is no autodetecting we need some id, @@ -1854,13 +1852,13 @@ { \exp_not:N\fnote_gput_refs:ee { \tag_get:n{struct_num} } - { \ref_value:Vn\l_@@_currentlabel_tl {fnote/struct} } + { \property_ref:ee{ @@/\l_@@_currentlabel_tl } {fnote/struct} } } % \end{macrocode} % in this case we set the name of the linktarget in the note % to the structure number of the text mark. % \begin{macrocode} - \tl_set:Nx \l_@@_linktarget_tl {footnote*.\ref_value:Vn\l_@@_currentlabel_tl {fnote/struct}} + \tl_set:Ne \l_@@_linktarget_tl {footnote*.\property_ref:ee {@@/\l_@@_currentlabel_tl} {fnote/struct}} } % \end{macrocode} % And now the actual content @@ -1938,7 +1936,7 @@ % \end{macrocode} % Store the current structure number for labels. % \begin{macrocode} - \tl_set:Nx \l_@@_currentstruct_tl { \tag_get:n{struct_num} } + \tl_set:Ne \l_@@_currentstruct_tl { \tag_get:n{struct_num} } % \end{macrocode} % We want to move the label structure here. So we provide a container % It number is |\l__fnote_currentstruct_tl| plus 1. diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx index 1db02774257..158b0d2a9c4 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx @@ -15,8 +15,8 @@ % https://github.com/latex3/latex2e/required/latex-lab % % for those people who are interested or want to report an issue. -\def\ltlabgraphicdate{2023-07-20} -\def\ltlabgraphicversion{0.80a} +\def\ltlabgraphicdate{2023-10-13} +\def\ltlabgraphicversion{0.80b} % %<*driver> \documentclass{l3doc} @@ -184,25 +184,16 @@ \RequirePackage{l3opacity} % \end{macrocode} % -%\subsection{Saving the position} -% We need a replacement for zref-savepos. This uses l3ref which loaded -% by the pdfmanagement/tagpdf. % -% TODO: this is perhaps needed in other places too and should be moved to -% l3ref!! -% \begin{macrocode} -\ref_attribute_gset:nnnn{xpos}{0}{shipout}{\int_use:N\tex_lastxpos:D} -\ref_attribute_gset:nnnn{ypos}{0}{shipout}{\int_use:N\tex_lastypos:D} -% \end{macrocode} - % \begin{macro}{\@@_graphic_savepos:n} -% this is the command which stores the position. It uses -% two savepos in case bidi needs it (see zref-savepos). +% this is the command which stores the position. Similar to +% zref-savepos it uses two savepos commands +% for the case that bidi changes the processing order. % \begin{macrocode} \cs_new_protected:Npn\@@_graphic_savepos:n #1 { \tex_savepos:D - \ref_label:nn{#1}{xpos,ypos,abspage} + \property_record:nn{#1}{xpos,ypos,abspage} \tex_savepos:D } \cs_generate_variant:Nn \@@_graphic_savepos:n {e} @@ -310,8 +301,7 @@ \fp_new:N\l_@@_graphic_lx_fp \fp_new:N\l_@@_graphic_uy_fp % \end{macrocode} -% this holds the scale value. Currently this only the one from -% \cs{Gin@scalex} +% this holds the scale value. Either \cs{Gin@scalex} or (if that is !) \cs{Gin@scaley} % \begin{macrocode} \fp_new:N\l_@@_graphic_scale_fp % \end{macrocode} @@ -353,8 +343,8 @@ { \tl_if_empty:NT\l_@@_graphic_alt_tl { - \msg_warning:nnx{tag}{alt-text-missing}{\l_@@_graphic_alt_dflt_tl} - \tl_set:Nx\l_@@_graphic_alt_tl {\l_@@_graphic_alt_dflt_tl} + \msg_warning:nne{tag}{alt-text-missing}{\l_@@_graphic_alt_dflt_tl} + \tl_set:Ne\l_@@_graphic_alt_tl {\l_@@_graphic_alt_dflt_tl} } \tag_struct_begin:n { @@ -470,7 +460,7 @@ % \begin{macrocode} \AddToHook{package/graphicx/after}[latex-lab] { - \define@key{Gin}{alt} {\tl_set:Nx\l_@@_graphic_alt_tl{\text_purify:n{#1}}} + \define@key{Gin}{alt} {\tl_set:Ne\l_@@_graphic_alt_tl{\text_purify:n{#1}}} \define@key{Gin}{artifact}[] { \bool_set_true:N \l_@@_graphic_artifact_bool @@ -478,7 +468,7 @@ } \define@key{Gin}{actualtext} { - \tl_set:Nx\l_@@_graphic_actual_tl{\text_purify:n{#1}} + \tl_set:Ne\l_@@_graphic_actual_tl{\text_purify:n{#1}} \bool_set_false:N \l_@@_graphic_BBox_bool } \define@key{Gin}{correct-BBox} @@ -509,7 +499,7 @@ \keys_define:nn{tag/picture} { ,alt .code:n = - {\tl_set:Nx\l_@@_graphic_alt_tl{\text_purify:n{#1}}} + {\tl_set:Ne\l_@@_graphic_alt_tl{\text_purify:n{#1}}} ,artifact .code:n = { \bool_set_true:N \l_@@_graphic_artifact_bool @@ -517,7 +507,7 @@ } ,actualtext .code:n = { - \tl_set:Nx\l_@@_graphic_actual_tl{\text_purify:n{#1}} + \tl_set:Ne\l_@@_graphic_actual_tl{\text_purify:n{#1}} \bool_set_false:N \l_@@_graphic_BBox_bool } ,correct-BBox .code:n = @@ -581,7 +571,12 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_graphic_get_scale: { - \fp_set:Nn \l_@@_graphic_scale_fp { \Gin@scalex } + \fp_set:Nn \l_@@_graphic_scale_fp + { + \str_if_eq:eeTF {\Gin@scalex} { ! } + { \Gin@scaley } + { \Gin@scalex } + } } % \end{macrocode} % \end{macro} @@ -636,7 +631,7 @@ (\l_@@_graphic_uy_fp-\l_@@_graphic_ly_fp-\l_@@_graphic_trim_ly_fp) * (-\l_@@_graphic_sin_fp) } - \tl_gset:Nx\g_@@_graphic_lx_tl + \tl_gset:Ne\g_@@_graphic_lx_tl { \fp_eval:n { @@ -651,7 +646,7 @@ +\l_@@_graphic_trim_lx_fp } } - \tl_gset:Nx\g_@@_graphic_ux_tl + \tl_gset:Ne\g_@@_graphic_ux_tl { \fp_eval:n { @@ -695,7 +690,7 @@ (\l_@@_graphic_uy_fp-\l_@@_graphic_ly_fp-\l_@@_graphic_trim_ly_fp) * \l_@@_graphic_cos_fp } - \tl_gset:Nx\g_@@_graphic_ly_tl + \tl_gset:Ne\g_@@_graphic_ly_tl { \fp_eval:n { @@ -709,7 +704,7 @@ + \l_@@_graphic_ly_fp + \l_@@_graphic_trim_ly_fp } } - \tl_gset:Nx\g_@@_graphic_uy_tl + \tl_gset:Ne\g_@@_graphic_uy_tl { \fp_eval:n { @@ -735,7 +730,7 @@ { \bool_if:NT\l_@@_graphic_bboxcorr_bool { - \tl_set:Nx #1 + \tl_set:Ne #1 { \fp_eval:n { @@ -744,7 +739,7 @@ \dim_to_decimal_in_bp:n {\seq_item:Nn \l_@@_graphic_bboxcorr_seq {1} } } } - \tl_set:Nx #2 + \tl_set:Ne #2 { \fp_eval:n { @@ -753,7 +748,7 @@ \dim_to_decimal_in_bp:n {\seq_item:Nn \l_@@_graphic_bboxcorr_seq {2} } } } - \tl_set:Nx #3 + \tl_set:Ne #3 { \fp_eval:n { @@ -762,7 +757,7 @@ \dim_to_decimal_in_bp:n {\seq_item:Nn \l_@@_graphic_bboxcorr_seq {3} } } } - \tl_set:Nx #4 + \tl_set:Ne #4 { \fp_eval:n { @@ -791,22 +786,22 @@ {\l_@@_graphic_BBox_bool} } { - \fp_set:Nn \l_@@_graphic_scale_fp { \Gin@scalex } + \__tag_graphic_get_scale: \@@_graphic_get_trim: \int_gincr:N\g_@@_graphic_int - \tl_set:Nx\l_@@_graphic_currentlabel_tl {_@@_graphic_\int_use:N \g_@@_graphic_int} + \tl_set:Ne\l_@@_graphic_currentlabel_tl {_@@_graphic_\int_use:N \g_@@_graphic_int} \@@_graphic_savepos:e { \l_@@_graphic_currentlabel_tl } - \tl_gset:Nx\g_@@_graphic_lx_tl + \tl_gset:Ne\g_@@_graphic_lx_tl { \dim_to_decimal_in_bp:n - { \@@_ref_value:enn {\l_@@_graphic_currentlabel_tl}{xpos}{0}sp } + { \property_ref:een {\l_@@_graphic_currentlabel_tl}{xpos}{0}sp } } - \tl_gset:Nx\g_@@_graphic_ly_tl + \tl_gset:Ne\g_@@_graphic_ly_tl { \dim_to_decimal_in_bp:n - { \@@_ref_value:enn {\l_@@_graphic_currentlabel_tl}{ypos}{0}sp } + { \property_ref:een {\l_@@_graphic_currentlabel_tl}{ypos}{0}sp } } - \tl_gset:Nx\g_@@_graphic_ux_tl + \tl_gset:Ne\g_@@_graphic_ux_tl { \fp_eval:n { @@ -815,7 +810,7 @@ \dim_to_decimal_in_bp:n { \Gin@req@width } } } - \tl_gset:Nx\g_@@_graphic_uy_tl + \tl_gset:Ne\g_@@_graphic_uy_tl { \fp_eval:n { @@ -829,7 +824,7 @@ % \begin{macrocode} \legacy_if:nF {Gin@clip} { - \tl_gset:Nx\g_@@_graphic_ux_tl + \tl_gset:Ne\g_@@_graphic_ux_tl { \fp_eval:n { @@ -838,7 +833,7 @@ \l_@@_graphic_trim_ux_fp } } - \tl_gset:Nx\g_@@_graphic_lx_tl + \tl_gset:Ne\g_@@_graphic_lx_tl { \fp_eval:n { @@ -847,7 +842,7 @@ \l_@@_graphic_trim_lx_fp } } - \tl_gset:Nx\g_@@_graphic_uy_tl + \tl_gset:Ne\g_@@_graphic_uy_tl { \fp_eval:n { @@ -856,7 +851,7 @@ \l_@@_graphic_trim_uy_fp } } - \tl_gset:Nx\g_@@_graphic_ly_tl + \tl_gset:Ne\g_@@_graphic_ly_tl { \fp_eval:n { @@ -934,26 +929,26 @@ } { \int_gincr:N\g_@@_graphic_int - \tl_set:Nx\l_@@_graphic_currentlabel_tl {_@@_graphic_\int_use:N \g_@@_graphic_int} + \tl_set:Ne\l_@@_graphic_currentlabel_tl {_@@_graphic_\int_use:N \g_@@_graphic_int} \@@_graphic_savepos:e { \l_@@_graphic_currentlabel_tl } - \tl_gset:Nx \g_@@_graphic_lx_tl + \tl_gset:Ne \g_@@_graphic_lx_tl { \dim_to_decimal_in_bp:n - { \@@_ref_value:enn {\l_@@_graphic_currentlabel_tl}{xpos}{0}sp } + { \property_ref:een {\l_@@_graphic_currentlabel_tl}{xpos}{0}sp } } - \tl_gset:Nx \g_@@_graphic_ly_tl + \tl_gset:Ne \g_@@_graphic_ly_tl { \dim_to_decimal_in_bp:n - { \@@_ref_value:enn {\l_@@_graphic_currentlabel_tl}{ypos}{0}sp - \dp\@picbox } + { \property_ref:een {\l_@@_graphic_currentlabel_tl}{ypos}{0}sp - \dp\@picbox } } - \tl_gset:Nx \g_@@_graphic_ux_tl + \tl_gset:Ne \g_@@_graphic_ux_tl { \dim_to_decimal_in_bp:n { \g_@@_graphic_lx_tl bp + \wd\@picbox } } - \tl_gset:Nx \g_@@_graphic_uy_tl + \tl_gset:Ne \g_@@_graphic_uy_tl { \dim_to_decimal_in_bp:n { @@ -1044,7 +1039,7 @@ \int_compare:nNnT {\g_shipout_readonly_int} = - {\@@_ref_value:enn{_@@_graphic_#6}{abspage}{0}} + {\property_ref:een{_@@_graphic_#6}{abspage}{0}} { \put (#1 bp,\dim_eval:n{-\paperheight + \dim_eval:n{#2 bp}}) diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx index d593f93320b..285471addc3 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx @@ -164,8 +164,6 @@ % presumably)\\ % - Math environments created with \pkg{ltcmd} [commands] should not be copied, . . .\\ % - Package authors should be able to manually set up math environments with a public boolean.} -% -% \item % \end{enumerate} % % @@ -243,6 +241,8 @@ % Or do we need an extra storage tl?} % % \begin{variable}{\g_@@_grabbed_env_tl, \g_@@_grabbed_math_tl} +% \cs{g_@@_grabbed_env_tl} contains the name of the math environment (\texttt{math} in the case +% of inline math, \cs{g_@@_grabbed_math_tl} the math content. % \begin{macrocode} \tl_new:N \g_@@_grabbed_env_tl \tl_new:N \g_@@_grabbed_math_tl @@ -312,8 +312,9 @@ % fairly simple this one % \end{macrocode} % We do not want math tagging in fakemath or when measuring, -% so we imitate the test inside -% \cs{@@_process:nn} for now, see https://github.com/latex3/tagging-project/issues/5 +% so we imitate the test inside \cs{@@_process:nn} for now, +% see https://github.com/latex3/tagging-project/issues/5 +% TODO: use socket to get more control about typesetting variants (tagged, drop etc)? % \begin{macrocode} \legacy_if:nTF { measuring@ } { #1 $ } @@ -327,8 +328,7 @@ \@kernel@math@end \tagmcbegin{} % restart P-chunk (whatsits in pdftex) } - } - + } } } % \end{macrocode} @@ -715,7 +715,6 @@ { $ } } { - \bool_set_true:N \l_@@_collected_bool \@@_grab_inline:w } } % \( @@ -796,16 +795,16 @@ \tl_gset:Nx\tmpmathcontent { LaTeX~ formula~ starts~ - \exp_not:N\begin{\g__math_grabbed_env_tl} + \exp_not:N\begin{\g_@@_grabbed_env_tl} \space - \exp_not:V\g__math_grabbed_math_tl + \exp_not:V\g_@@_grabbed_math_tl \space - \exp_not:N\end{\g__math_grabbed_env_tl} + \exp_not:N\end{\g_@@_grabbed_env_tl} \space LaTeX~ formula~ ends~ } \tagstructbegin{tag=Formula, AFinline-o=\tmpmathcontent, - title-o=\g__math_grabbed_env_tl, + title-o=\g_@@_grabbed_env_tl, actualtext=\tmpmathcontent % alt=\tmpmathcontent } @@ -1220,10 +1219,10 @@ \tl_new:N \result \cs_new_protected:Npn\grabaformulapartandstart { - \@@_split_at_nl:NN \g__math_grabbed_math_tl \result + \@@_split_at_nl:NN \g_@@_grabbed_math_tl \result \typeout{====>first-result=\meaning\result} - \typeout{====>first-tmpmathcontent=\meaning\g__math_grabbed_math_tl} - \tl_if_empty:NTF \g__math_grabbed_math_tl + \typeout{====>first-tmpmathcontent=\meaning\g_@@_grabbed_math_tl} + \tl_if_empty:NTF \g_@@_grabbed_math_tl { \typeout{====>formula~ has~ no~ subparts} \global\@subformulasfalse @@ -1231,7 +1230,7 @@ { \typeout{====>formula~ has~ subparts} \global\@subformulastrue - \edef\resulttitle{\g__math_grabbed_env_tl\space (part)} + \edef\resulttitle{\g_@@_grabbed_env_tl\space (part)} \tagstructbegin{tag=Formula, % \end{macrocode} % For now we don't put anything in /alt or /ActualText on subformulas @@ -1244,16 +1243,16 @@ } \cs_new_protected:Npn\grabaformulapartandmayberestart { - \@@_split_at_nl:NN \g__math_grabbed_math_tl \result + \@@_split_at_nl:NN \g_@@_grabbed_math_tl \result \typeout{====>result=\meaning\result} - \typeout{====>tmpmathcontent=\meaning\g__math_grabbed_math_tl} -% \tl_if_empty:NTF \g__math_grabbed_math_tl + \typeout{====>tmpmathcontent=\meaning\g_@@_grabbed_math_tl} +% \tl_if_empty:NTF \g_@@_grabbed_math_tl % { % \typeout{====>tmpmathcontent=empty} % } % { % \typeout{====>tmpmathcontent=not-empty} - \edef\resulttitle{\g__math_grabbed_env_tl\space (part)} + \edef\resulttitle{\g_@@_grabbed_env_tl\space (part)} \tagstructbegin{tag=Formula, alt=\result, title-o=\resulttitle @@ -1272,7 +1271,7 @@ \if@subformulas \ifmeasuring@\else % - \tl_if_empty:NF \g__math_grabbed_math_tl + \tl_if_empty:NF \g_@@_grabbed_math_tl { \tagmcend \tagstructend diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx index bbd40a3c520..1d3ee828aa4 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx @@ -16,8 +16,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabminipagedate{2023-08-20} -\def\ltlabminipageversion{0.81b} +\def\ltlabminipagedate{2023-10-30} +\def\ltlabminipageversion{0.81c} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -49,12 +49,21 @@ % % \section{Introduction} % -% How to tag minipages and parboxes is still under discussion. +% How to best tag minipages and parboxes is still under discussion. % But as they start and contain paragraphs it is clear that -% hooks are needed to interrupt and restart the tagging. +% some sockets are needed to interrupt and restart the tagging. % -% The tagging added is currently quite simple minded. See the todo-testfiles and the -% code comments for some open points. +% The tagging added is currently quite simple-minded. See the +% todo-testfiles and the code comments for some open points. +% +% One of the main problems is how to properly embed them in the +% surrounding. When used in normal text (in a paragraph) they +% typically should close the \texttt{text} structure and reopen one +% at the end. But when used inside low-level \cs{vbox} or \cs{hbox} +% this is often wrong. The code uses now there two sockets +% \texttt{tagsupport/parbox/before} and +% \texttt{tagsupport/parbox/after} which can be set to noop, if +% necessary. % % \begin{macrocode} %<*package> @@ -82,12 +91,13 @@ \def\@kernel@init@minipage{} \def\@kernel@init@parbox{} % \end{macrocode} -% We need a few hooks. +% We use sockets for the tag support code, as there will be cases where we want +% to exchange the content or disable it. % \begin{macrocode} -\def\@kernel@before@minipage{} -\def\@kernel@after@minipage{} -\def\@kernel@before@parbox{} -\def\@kernel@after@parbox{} +\socket_new:nn {tagsupport/minipage/before}{0} +\socket_new:nn {tagsupport/minipage/after} {0} +\socket_new:nn {tagsupport/parbox/before} {0} +\socket_new:nn {tagsupport/parbox/after}{0} % \end{macrocode} % % \subsection{Patch minipage} @@ -106,16 +116,16 @@ \setlength\@tempdima{#4}% \def\@mpargs{{#1}{#2}[#3]{#4}}% % \end{macrocode} -% insert the hook +% insert the socket % \begin{macrocode} - \@kernel@before@minipage% new + \socket_use:n{tagsupport/minipage/before}% new \setbox\@tempboxa\vbox\bgroup \color@begingroup \hsize\@tempdima \textwidth\hsize \columnwidth\hsize \@parboxrestore \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@ - \AssignSocketPlug{fntext/process}{mp}% + \socket_assign_plug:nn{fntext/process}{mp}% \let\@listdepth\@mplistdepth \@mplistdepth\z@ \@minipagerestore \@setminipage} @@ -135,13 +145,13 @@ \color@endgroup \egroup % \end{macrocode} -% as the parbox command is called, we must prevent that it adds its additional -% tagging commands: +% As the parbox command is called, we must prevent that it adds its +% additional tagging commands: % \begin{macrocode} \tag_stop:n{minipage} \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}% \tag_start:n{minipage} - \@kernel@after@minipage%new end ... + \socket_use:n{tagsupport/minipage/after} %new end ... } % \end{macrocode} % @@ -152,7 +162,7 @@ \leavevmode \@pboxswfalse \setlength\@tempdima{#4}% - \@kernel@before@parbox% new + \socket_use:n{tagsupport/parbox/before} \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}% \ifx\relax#2\else \setlength\@tempdimb{#2}% @@ -167,7 +177,7 @@ \csname bm@#3\endcsname}% \if@pboxsw \m@th$\fi \@end@tempboxa% - \@kernel@after@parbox%new end + \socket_use:n{tagsupport/parbox/after} } % \end{macrocode} % @@ -176,7 +186,7 @@ % \begin{macrocode} \tl_new:N \l__ltboxes_tag_tl \tl_set:Nn \l__ltboxes_tag_tl {Div} -\cs_set_protected:Npn\@kernel@before@minipage +\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. @@ -185,14 +195,27 @@ % \end{macrocode} % TODO: the P can be further up, we need a proper method to test and handle this. % \begin{macrocode} - \tag_struct_begin:n{tag=\l__ltboxes_tag_tl}} -\cs_set_protected:Npn\@kernel@after@minipage + \tag_struct_begin:n{tag=\l__ltboxes_tag_tl} + } +% \end{macrocode} +% 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{}} -\cs_set_protected:Npn\@kernel@before@parbox + +\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}} -\cs_set_protected:Npn\@kernel@after@parbox + +\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{}} % \end{macrocode} +% Activate the default tagging plug +% \begin{macrocode} +\socket_assign_plug:nn{tagsupport/minipage/before}{tag/dflt} +\socket_assign_plug:nn{tagsupport/minipage/after} {tag/dflt} +\socket_assign_plug:nn{tagsupport/parbox/before} {tag/dflt} +\socket_assign_plug:nn{tagsupport/parbox/after} {tag/dflt} +% \end{macrocode} % \begin{macrocode} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx index d20c55624b9..ae7a0b85c30 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx @@ -16,8 +16,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabsecdate{2023-07-20} -\def\ltlabsecversion{0.84a} +\def\ltlabsecdate{2023-10-16} +\def\ltlabsecversion{0.84b} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -517,12 +517,10 @@ } } { +% \end{macrocode} +% The relation target-struct is stored internally by the MakeLinkTarget commands +% \begin{macrocode} \MakeLinkTarget[chapter]{} - %todo public function for this update! - \tl_if_blank:VF \@currentHref - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } } % \end{macrocode} % The main call to the underlying commands. @@ -578,10 +576,6 @@ } { \MakeLinkTarget[part]{} - \tl_if_blank:VF \@currentHref - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } } % \end{macrocode} % The main call to the underlying commands. @@ -633,18 +627,14 @@ % probably need something slightly different based on \cs{MakeLinkTarget}. % \begin{macrocode} \cs_new_protected:Npn \@hyp@section@target@nnn #1 #2 #3 %#1 optarg #2 name/counter, #3 indent - { - \makebox[0pt][l] + { + \makebox[0pt][l] { \skip_set:Nn \@tempskipa {#3} \dim_compare:nNnF {\@tempskipa}<{0pt}{\kern-\@tempskipa} \MakeLinkTarget#1{#2} } - \tl_if_blank:VF \@currentHref - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } - } + } % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-table.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-table.dtx new file mode 100644 index 00000000000..700d4ce6c17 --- /dev/null +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-table.dtx @@ -0,0 +1,1975 @@ +% \iffalse meta-comment +% +%% File: latex-lab-table.dtx (C) Copyright 2023 LaTeX Project +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +% +% The development version of the bundle can be found below +% +% https://github.com/latex3/latex2e/required/latex-lab +% +% for those people who are interested or want to report an issue. +% +\def\ltlabtbldate{2023-10-30} +\def\ltlabtblversion{0.85d} +%<*driver> +\documentclass{l3doc} +\EnableCrossrefs +\CodelineIndex +\begin{document} + \DocInput{latex-lab-table.dtx} +\end{document} +%</driver> +% +% \fi +% +% \providecommand\hook[1]{\texttt{#1\DescribeHook[noprint]{#1}}} +% \providecommand\socket[1]{\texttt{#1\DescribeSocket[noprint]{#1}}} +% \providecommand\plug[1]{\texttt{#1\DescribePlug[noprint]{#1}}} +% +% \NewDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl} +% \NewDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl} +% \NewDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl} +% +% +% +% +% \title{The \textsf{latex-lab-table} package\\ +% Changes related to the tagging of tables} +% \author{Frank \& Ulrike, \LaTeX{} Project\thanks{Initial implementation done by Frank Mittelbach}} +% \date{v\ltlabtblversion\ \ltlabtbldate} +% +% \maketitle +% +% \newcommand{\xt}[1]{\textsl{\textsf{#1}}} +% \newcommand{\TODO}[1]{\textbf{[TODO:} #1\textbf{]}} +% \newcommand{\docclass}{document class \marginpar{\raggedright document class +% customizations}} +% +% +% \begin{abstract} +% The following code implements a first draft for the tagging of +% tables. It still has a large number of limitations and restrictions! +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% In \LaTeX{} the word \texttt{table} is used as the name of the float environment that can contain +% a data table\footnote{But it does not really have to, you can put +% other material into such environments.} along with a caption and some additional text. The environments for +% actual data tables have various names like \texttt{tabular}, \texttt{tabular*}, +% \texttt{tabularx} and \texttt{longtable}---the last should not be used inside a float +% and supports its own caption command. +% +% In this documentation \enquote{table} always means such data tables and not the float +% environment. +% +% Tagging of tables is on one side doesn't look very difficult: one only has to +% surround rows and cells by TR and TH or TD structures. +% But there are difficulties: +% \begin{itemize} +% \item +% One is that over the years various packages related to tables have +% been written that all change some of the internals. Inserting the +% tagging commands and testing all the variants and various nestings +% is not trivial. +% +% \item +% The other difficulty is that most of the existing environments to +% create tables do not know the concept of headers as a semantic +% structures. +% +% \item +% Headers are only produced through visual formatting, e.g., by +% making them bold or by underlying some color. But accessible +% tables need headers (and the PDF/UA standards requires them) and +% this means that additional syntax to declare headers (when they +% can't be guessed) must be developed. This is still an area for +% research. +% \end{itemize} +% +% Right now, this module therefore does implement only some basic +% support for the tagging of tables. A list of the known limitations +% is shown below. +% +% 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 +% to load it in combination +% with phase-III in \cs{DocumentMetadata}, i.e.: +% +% \begin{verbatim} +% \DocumentMetadata{testphase={phase-III,table}} +% \end{verbatim} +% +% 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. +% +% If a table should not be tagged as table, for example because it is merely used +% to produce a layout or because it is a not yet (fully) supported table structure, +% the tagging can be disabled with +% \verb|\tagpdfsetup{table-tagging=false}|. +% +% 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. +% +% There is some basic support\footnote{This is not meant to be the +% final interface, though.} for headers. With +% \begin{quote} +% \verb|\tagpdfsetup{table-header-rows={|\meta{list of row 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 +% \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.} +% +% 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. +% +% Feedback and problems with the code can be reported at +% \url{https://github.com/latex3/tagging-project} either in form of +% explicit issues or as a \enquote{discussion topic}, whatever works best. +% +% +% \section{Limitations} +% +% \begin{itemize} +% \item The code loads the \pkg{array} package and so does not work without it (that is +% not really a limitation, but can affect existing tables). +% +% \item It supports only a restricted number of tables types. Currently +% \env{tabular}, \env{tabular*}, \env{tabularx}, and \env{longtable}. +% +% \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 The \pkg{colortbl} package breaks tagging if there are nested tables. It also breaks +% the filling up of incomplete rows. +% +% \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, +% that includes packages that change rules like \pkg{booktabs}, \pkg{hhline}, +% \pkg{arydshln}, \pkg{hvdashln}. +% +% \item \env{longtable} currently only works with lualatex. +% With other engines it breaks as its output +% routine clashes with the code which closes open MC-chunks at pagebreaks and +% if this is resolved there will probably be problems with the head and foot boxes +% (but this can't be tested currently). +% +% \item Not every table should be tagged as a Table structure, often they are +% only used as layout help, e.g. to align authors in a title pages. In such uses +% the tagging of the table must be deactivated with \verb|\tagpdfsetup{table-tagging=false}|. +% +% \item Only simple header rows are currently supported. Columns and 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 +% the cells is missing. +% +% \item A \pkg{longtable} \cs{caption} is currently simply formatted as a multicolumn and +% not tagged as a \texttt{Caption} structure. +% +% \item The \pkg{caption} package will quite probably break the \pkg{longtable} caption. +% +% \item The setup for \pkg{longtable} requires lots of patches to internal \pkg{longtable} +% commands and so can easily break if other packages try to patch \pkg{longtable} too. +% +% \item The \env{longtable} environment supports footnotes in p-type columns, but it hasn't been +% tested yet if this works also with the tagging code. +% +% \item The code is quite noisy and fills the log with lots of +% messages.\footnote{Helpful for us at this stage.} +% \end{itemize} +% +% +% +% \section{Introduction} +% +% +% \section{Technical details and problems} +% +% The implementation has to take care of various details. +% +% \subsection{TODOs} +% +% \begin{itemize} +% \item +% Test \texttt{array-006-longtable.lvt} and +% \texttt{array-007-longtable.lvt} have errors with pdftex (para +% tagging) +% +% \item +% Instead of before/after hooks we should add sockets directly +% into the code. +% +% \item Debugging code and messages must be improved. +% +% \item Cells need an \texttt{Headers} array. +% +% \item Row spans should be supported (but perhaps need syntax support) +% +% \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} +% +% +% \section{Implementation} +% \begin{macrocode} +%<@@=tbl> +%<*package> +% \end{macrocode} +% \begin{macrocode} +\ProvidesExplPackage {latex-lab-testphase-table} {\ltlabtbldate} {\ltlabtblversion} + {Code related to the tagging of tables} +% \end{macrocode} +% This builds on \pkg{array} so we load it by default: +% \begin{macrocode} +\RequirePackage{array} +% \end{macrocode} +% +% +% \subsection{Variables} +% \begin{macro} +% { +% \l_@@_celltag_tl +% ,\l_@@_rowtag_tl +% ,\l_@@_cellattribute_tl +% ,\l_@@_rowattribute_tl +% ,\g_@@_missingcells_int +% ,\l_@@_tmpa_clist +% ,\l_@@_tmpa_seq +% ,\l_@@_tmpa_tl +% } +% This is for the celltag, e.g. TD or TH: +% \begin{macrocode} +\tl_new:N \l_@@_celltag_tl +\tl_set:Nn \l_@@_celltag_tl {TD} +% \end{macrocode} +% For the rowtag, probably always TR: +% \begin{macrocode} +\tl_new:N \l_@@_rowtag_tl +\tl_set:Nn \l_@@_rowtag_tl {TR} +% \end{macrocode} +% And here cell and row attributes: +% \begin{macrocode} +\tl_new:N \l_@@_cellattribute_tl +\tl_set:Nn \l_@@_cellattribute_tl {} +\tl_new:N \l_@@_rowattribute_tl +\tl_set:Nn \l_@@_rowattribute_tl {} +% \end{macrocode} +% This will contain the number of missing cells used: +% \begin{macrocode} +\int_new:N \g_@@_missing_cells_int +% \end{macrocode} +% Temp variables +% \begin{macrocode} +\clist_new:N \l_@@_tmpa_clist +\seq_new:N \l_@@_tmpa_seq +\tl_new:N \l_@@_tmpa_tl +% \end{macrocode} +% \end{macro} +% +% \subsection{Sockets} +% +% The code uses a number of sockets to inject the tagging +% commands. These can be easily set to a noop-plug in case the +% automated tagging is not wanted At first sockets for the begin and +% end of cells and rows +% +% \begin{socketdecl}{tagsupport/tblcell/begin, +% tagsupport/tblcell/end, +% tagsupport/tblrow/begin, +% tagsupport/tblrow/end, +% } +% \begin{macrocode} +\NewSocket{tagsupport/tblcell/begin}{0} +\NewSocket{tagsupport/tblcell/end}{0} +\NewSocket{tagsupport/tblrow/begin}{0} +\NewSocket{tagsupport/tblrow/end}{0} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{socketdecl}{tagsupport/tbl/init} +% This socket should be at the begin of the table, inside a group. +% It is meant for settings like disabling paratagging. This socket +% can perhaps be merged later into the begin-sockets when they are +% no longer added as hooks but in the environment definitions. +% \begin{macrocode} +\NewSocket{tagsupport/tbl/init}{0} +% \end{macrocode} +% \end{socketdecl} +% +% +% \begin{socketdecl}{tagsupport/tbl/finalize} +% To fine tune the structure (change cells to header cells, remove +% unwanted structures, move a foot to the end, etc.) we also need a +% socket that is executed at the end of the table but \emph{before} +% all the variables are restored to the outer or default values. +% The code in the socket can make assignments, but probably +% shouldn't do typesetting and not write whatsits. +% \begin{macrocode} +\NewSocket{tagsupport/tbl/finalize}{0} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{socketdecl}{tagsupport/tbl/finalize/longtable} +% \env{longtable} needs its own socket to fine tune the structure. +% Simply switching the plug in the previous socket interferes with +% enabling/disabling the tagging. +% \begin{macrocode} +\NewSocket{tagsupport/tbl/finalize/longtable}{0} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{socketdecl}{tagsupport/tblhmode/begin, +% tagsupport/tblhmode/end, +% tagsupport/tblvmode/begin, +% tagsupport/tblvmode/end +% } +% +% These sockets are used in the begin and end code of environments, +% to allow a fast enabling and disabling of the tagging. We +% distinguish between tables that can be used inside paragraphs and +% standalone tables like longtable. +% \begin{macrocode} +\NewSocket{tagsupport/tblhmode/begin}{0} +\NewSocket{tagsupport/tblhmode/end}{0} +\NewSocket{tagsupport/tblvmode/begin}{0} +\NewSocket{tagsupport/tblvmode/end}{0} +% \end{macrocode} +% \end{socketdecl} +% +% This are the standard plugs for tagging of cells and rows. +% +% \begin{plugdecl}{TD} +% \begin{macrocode} +\NewSocketPlug{tagsupport/tblcell/begin}{TD} + { + \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{} + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{TD} +% \begin{macrocode} +\NewSocketPlug{tagsupport/tblcell/end}{TD} + { + \tag_mc_end: + \tag_struct_end: + } +% \end{macrocode} +% \end{plugdecl} +% +% In p-columns we need a slightly different plug which reactivates the +% paragraph tagging. +% tagging +% \begin{plugdecl}{TD} +% \begin{macrocode} +\NewSocketPlug{tagsupport/tblcell/begin}{TDpbox} + { + \tag_struct_begin:n + { + tag =\l__tbl_celltag_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 } + { + \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} + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{TD} +% \begin{macrocode} +\NewSocketPlug{tagsupport/tblcell/end}{TDpbox} + { + \tag_struct_end: + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{TR} +% \begin{macrocode} +\NewSocketPlug{tagsupport/tblrow/begin}{TR} + { + \seq_gclear:N \g_@@_struct_cur_seq + \tag_struct_begin:n + { + tag =\l_@@_rowtag_tl, + attribute-class=\l_@@_rowattribute_tl + } + \seq_gput_right:Ne \g_@@_struct_rows_seq { \tag_get:n {struct_num} } + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{TR} +% \begin{macrocode} +\NewSocketPlug{tagsupport/tblrow/end}{TR} + { + \__tag_tbl_add_missing_cells:n { \g_@@_missing_cells_int } + \seq_gput_right:Ne \g_@@_struct_cells_seq + { + \seq_use:Nn \g_@@_struct_cur_seq {,} + } + \int_compare:nNnTF { \g_@@_row_int } = { \seq_count:N\g_@@_struct_cells_seq } + { + \typeout + {==>~ + stucture~stored~for~row~\int_use:N\g_@@_row_int :~ + \seq_use:Nn \g_@@_struct_cur_seq {,} + } + } + { \ERROR } % should not happen ... + \tag_struct_end: + } +% \end{macrocode} +% \end{plugdecl} +% +% And the plugs for the table as whole. The code can be different for +% normal tables which can also be used inline and nested and +% \enquote{vmode} tables like longtable. +% +% \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 +% need to reenable paratagging. +% \begin{macrocode} +\NewSocketPlug{tagsupport/tbl/init}{Table} + { + \tag_if_active:T + { + \bool_set_false:N \l__tag_para_bool + } + } +% \end{macrocode} +% \end{plugdecl} +% +% +% \begin{plugdecl}{Table} +% This plug will fine tune the structure. +% \begin{macrocode} +\NewSocketPlug{tagsupport/tbl/finalize}{Table} + { + \@@_set_header_rows: + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{Table} +% This plug will fine tune the structure of longtable. +% \begin{macrocode} +\NewSocketPlug{tagsupport/tbl/finalize/longtable}{Table} + { +% \end{macrocode} +% If neither \cs{endhead} nor \cs{endfirsthead} has been used +% we use the standard header command: +% \begin{macrocode} + \bool_lazy_and:nnTF + { \seq_if_empty_p:N \g_@@_LT@head_rows_seq } + { \seq_if_empty_p:N \g_@@_LT@firsthead_rows_seq } + { \@@_set_header_rows: } +% \end{macrocode} +% Otherwise, if firsthead has not been used we use head. For this +% we simple retrieve the row numbers and then call the header +% command. +% \begin{macrocode} + { + \seq_if_empty:NTF \g_@@_LT@firsthead_rows_seq + { + \clist_set:Ne \l_@@_header_rows_clist + {\seq_use:Nn \g_@@_LT@head_rows_seq {,}} + \@@_set_header_rows: + } +% \end{macrocode} +% In the other case we use firsthead. +% \begin{macrocode} + { + \clist_set:Ne \l_@@_header_rows_clist + { \seq_use:Nn \g_@@_LT@firsthead_rows_seq {,} } + \@@_set_header_rows: +% \end{macrocode} +% Additionally we have to remove the head to avoid duplication. The +% one option here is to remove the rows from the kid sequence of +% the table (which will lead to orphaned structure elements), the +% other to make them artifact. For now we use the first option for +% pdf 1.7 and the second for pdf 2.0. +% \begin{macrocode} + \pdf_version_compare:NnTF < {2.0} + { + \seq_map_inline:Nn \g_@@_LT@head_rows_seq + { + \seq_gset_item:cnn + {g__tag_struct_kids_ \g_@@_struct_table_tl _seq} + { ##1 } + {} +% \end{macrocode} +% Not sure if needed, but if needed we can remove also the P tag. +% This is currently disabled as it produce warnings. TODO: This +% needs also a tagpdf command which takes care of debug code. +% \begin{macrocode} + \tl_set:Ne \l_@@_tmpa_tl + { \seq_item:Nn\g_@@_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l_@@_tmpa_tl _prop } + { + %\prop_gremove:cn {g__tag_struct_ \l_@@_tmpa_tl _prop} {P} + } + } + } + { + \seq_map_inline:Nn \g_@@_LT@head_rows_seq + { + \tl_set:Ne \l_@@_tmpa_tl + { \seq_item:Nn\g_@@_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l_@@_tmpa_tl _prop } + { + \@@_struct_prop_gput:Vnn \l_@@_tmpa_tl {S}{/Artifact} + } + } + } + } + } +% \end{macrocode} +% The foot is handled similar, the difference is +% that we have to move it to the end one of them +% is not empty, but do nothing if they aren't there. +% \begin{macrocode} + \bool_lazy_and:nnF + { \seq_if_empty_p:N \g_@@_LT@foot_rows_seq } + { \seq_if_empty_p:N \g_@@_LT@lastfoot_rows_seq } + { +% \end{macrocode} +% If lastfoot is empty move foot to the end. +% \begin{macrocode} + \seq_if_empty:NTF \g_@@_LT@lastfoot_rows_seq + { + \seq_map_inline:Nn \g_@@_LT@foot_rows_seq + { + \tl_set:Ne \l_@@_tmpa_tl + { + \seq_item:cn + {g__tag_struct_kids_ \g_@@_struct_table_tl _seq} + {##1} + } + \seq_gset_item:cnn + {g__tag_struct_kids_ \g_@@_struct_table_tl _seq} + { ##1 } + {} + \seq_gput_right:cV + {g__tag_struct_kids_ \g_@@_struct_table_tl _seq} + \l_@@_tmpa_tl + } + } +% \end{macrocode} +% If lastfoot is not empty we move that. +% \begin{macrocode} + { + \seq_map_inline:Nn \g_@@_LT@lastfoot_rows_seq + { + \tl_set:Ne \l_@@_tmpa_tl + { + \seq_item:cn + {g__tag_struct_kids_ \g_@@_struct_table_tl _seq} + {##1} + } + \seq_gset_item:cnn + {g__tag_struct_kids_ \g_@@_struct_table_tl _seq} + { ##1 } + {} + \seq_gput_right:cV + {g__tag_struct_kids_ \g_@@_struct_table_tl _seq} + \l_@@_tmpa_tl + } +% \end{macrocode} +% and we hide foot +% \begin{macrocode} + \pdf_version_compare:NnTF < {2.0} + { + \seq_map_inline:Nn \g_@@_LT@foot_rows_seq + { + \seq_gset_item:cnn + {g__tag_struct_kids_ \g_@@_struct_table_tl _seq} + { ##1 } + {} +% \end{macrocode} +% Not sure if needed, but if needed we can remove also the P tag. +% This is currently disabled as it produce warnings. +% TODO: This needs also +% a tagpdf command which takes care of debug code. +% \begin{macrocode} + \tl_set:Ne \l_@@_tmpa_tl + { \seq_item:Nn\g_@@_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l_@@_tmpa_tl _prop } + { + %\prop_gremove:cn {g__tag_struct_ \l_@@_tmpa_tl _prop} {P} + } + } + } + { + \seq_map_inline:Nn \g_@@_LT@foot_rows_seq + { + \tl_set:Ne \l_@@_tmpa_tl + { \seq_item:Nn\g_@@_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l_@@_tmpa_tl _prop } + { + \@@_struct_prop_gput:Vnn \l_@@_tmpa_tl {S}{/Artifact} + } + } + } + } + } + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{Table} +% \begin{macrocode} +\NewSocketPlug{tagsupport/tblhmode/begin}{Table} + { + \mode_leave_vertical: + \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. +% \begin{macrocode} + \bool_lazy_and:nnT + { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool } + { \tag_struct_end:n { text } } + \tag_struct_begin:n {tag=Table} + \tl_gset:Ne \g_@@_struct_table_tl { \tag_get:n {struct_num} } + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{Table} +% \begin{macrocode} +\NewSocketPlug{tagsupport/tblhmode/end}{Table} + { + \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. +% \begin{macrocode} + \bool_lazy_and:nnT + { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool } + { \tag_struct_begin:n { tag=\l__tag_para_tag_tl } } + \tag_mc_begin_pop:n{} + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{Table} +% \begin{macrocode} +\NewSocketPlug{tagsupport/tblvmode/begin}{Table} + { + \tag_struct_begin:n {tag=Table} + \tl_gset:Ne \g_@@_struct_table_tl { \tag_get:n {struct_num} } + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{Table} +% \begin{macrocode} +\NewSocketPlug{tagsupport/tblvmode/end}{Table} + { + \tag_struct_end: + \par + } +% \end{macrocode} +% \end{plugdecl} +% +% +% +% +% +%\subsection{Environments} +% +% Currently only tabular, tabular*, tabularx and longtable. +% We must use the \texttt{before} and \texttt{after} hooks as the \texttt{end} +% hook is executed before the end of the last row and then MC are messed up. +% This means that this sockets should only contain code that doesn't needs to be +% grouped! +% \begin{macrocode} +\AddToHook{env/tabular/before} {\UseSocket{tagsupport/tblhmode/begin}} +\AddToHook{env/tabular/after} {\UseSocket{tagsupport/tblhmode/end}} +\AddToHook{env/tabular*/before} {\UseSocket{tagsupport/tblhmode/begin}} +\AddToHook{env/tabular*/after} {\UseSocket{tagsupport/tblhmode/end}} +\AddToHook{env/tabularx/before} {\UseSocket{tagsupport/tblhmode/begin}} +\AddToHook{env/tabularx/after} {\UseSocket{tagsupport/tblhmode/end}} +\AddToHook{env/longtable/before}{\UseSocket{tagsupport/tblvmode/begin}} +\AddToHook{env/longtable/after} {\UseSocket{tagsupport/tblvmode/end}} +% \end{macrocode} +% +% The \env{array} environment is math. So we disable table tagging for now. +% \begin{macrocode} +\AddToHook{env/array/begin} {\__tag_tbl_disable:} +% \end{macrocode} +% +% +% \subsection{Interfaces to tagging} +% +% \subsubsection{Tagging helper commands} +% +% \begin{macro}{\@@_set_colspan:n} +% This commands takes a number, checks if is larger than one, +% checks if the colspan attribute exists (we can't predefine an +% arbitrary number), and updates \cs{l_@@_cellattribute_tl}. +% \begin{macrocode} +\tag_if_active:T + { \cs_generate_variant:Nn \__tag_attr_new_entry:nn {ee} } +\cs_new_protected:Npn \@@_set_colspan:n #1 + { + \tag_if_active:T + { + \int_compare:nNnT {#1}>{1} + { + \prop_get:NeNF \g__tag_attr_entries_prop + {colspan-\int_eval:n{#1}} + \l_@@_tmpa_tl + { + \__tag_attr_new_entry:ee + {colspan-\int_eval:n{#1}} + {/O /Table /ColSpan~\int_eval:n{#1}} + } + \tl_set:Ne \l_@@_cellattribute_tl + {colspan-\int_eval:n{#1}} + } + } + } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Disabling/enabling} +% +% For now we have only the option true/false but this will probably be extended +% to allow different setups like first row header etc. + +% \begin{macro}{\__tag_tbl_disable:} +% +% \begin{macrocode} +\cs_new_protected:Npn \__tag_tbl_disable: + { + \AssignSocketPlug{tagsupport/tblcell/begin}{noop} + \AssignSocketPlug{tagsupport/tblcell/end}{noop} + \AssignSocketPlug{tagsupport/tblrow/begin}{noop} + \AssignSocketPlug{tagsupport/tblrow/end}{noop} + \AssignSocketPlug{tagsupport/tbl/init}{noop} + \AssignSocketPlug{tagsupport/tbl/finalize}{noop} + \AssignSocketPlug{tagsupport/tbl/finalize/longtable}{noop} + \AssignSocketPlug{tagsupport/tblhmode/begin}{noop} + \AssignSocketPlug{tagsupport/tblhmode/end}{noop} + \AssignSocketPlug{tagsupport/tblvmode/begin}{noop} + \AssignSocketPlug{tagsupport/tblvmode/end}{noop} + } +% \end{macrocode} +% \end{macro} + + +% \begin{macro}{\__tag_tbl_enable:} +% +% \begin{macrocode} +\cs_new_protected:Npn \__tag_tbl_enable: + { + \AssignSocketPlug{tagsupport/tblcell/begin}{TD} + \AssignSocketPlug{tagsupport/tblcell/end}{TD} + \AssignSocketPlug{tagsupport/tblrow/begin}{TR} + \AssignSocketPlug{tagsupport/tblrow/end}{TR} + \AssignSocketPlug{tagsupport/tbl/init}{Table} + \AssignSocketPlug{tagsupport/tbl/finalize}{Table} + \AssignSocketPlug{tagsupport/tbl/finalize/longtable}{Table} + \AssignSocketPlug{tagsupport/tblhmode/begin}{Table} + \AssignSocketPlug{tagsupport/tblhmode/end}{Table} + \AssignSocketPlug{tagsupport/tblvmode/begin}{Table} + \AssignSocketPlug{tagsupport/tblvmode/end}{Table} + } +% \end{macrocode} +% \end{macro} + +% \begin{macrocode} +% TODO decide about key name +\keys_define:nn { __tag / setup } + { + table-tagging .choices:nn = { true, on } + { \__tag_tbl_enable: }, + table-tagging .choices:nn = { false, off } + { \__tag_tbl_disable: }, + table-tagging .default:n = true, + table-tagging .initial:n = true + } +% \end{macrocode} +% +% Table tagging should be disabled in the head and foot. +% \begin{macrocode} +\AddToHook{begindocument} + { + \cs_if_exist:NT \@kernel@before@head + { + \tl_put_right:Nn \@kernel@before@head {\__tag_tbl_disable:} + \tl_put_right:Nn \@kernel@before@foot {\__tag_tbl_disable:} + } + } +% \end{macrocode} +% +% \subsubsection{Header support} +% +% Accessible table must have header cells declaring the meaning of the +% data in a row or column. To allow a data cell to find it header cell(s) +% a number of things must be done: +% \begin{itemize} +% \item every cell meant as a header should use the tag \texttt{TH}. +% +% \item header cells should have a \texttt{Scope} attribute with the +% value \texttt{Column}, \texttt{Row} or \texttt{Both}. This is not +% needed in the first row or column of a table. +% +% \item For more complex cases both \texttt{TD} and \texttt{TH} cell +% can contain a \texttt{Headers} attribute, that is an array of +% \texttt{ID}s of \texttt{TH} cell. +% \end{itemize} +% +% For now we support only header rows. +% +% At first we define attributes for the three standard cases: +% We delay to begin document +% as we can't know if tagpdf is already loaded. +% \begin{macrocode} +\AddToHook{begindocument} + { + \tag_if_active:T + { + \tagpdfsetup + { + newattribute = + {TH-col}{/O /Table /Scope /Column}, + newattribute = + {TH-row}{/O /Table /Scope /Row}, + newattribute = + {TH-both}{/O /Table /Scope /Both}, + } +% \end{macrocode} +% +% And we put all three into the class map (perhaps the next tagpdf +% should do that directly with newattribute): +% +% \begin{macrocode} + \seq_gput_left:Ne\g__tag_attr_class_used_seq + {\pdf_name_from_unicode_e:n{TH-col}} + \seq_gput_left:Ne\g__tag_attr_class_used_seq + {\pdf_name_from_unicode_e:n{TH-row}} + \seq_gput_left:Ne\g__tag_attr_class_used_seq + {\pdf_name_from_unicode_e:n{TH-both}} + } + } + +% \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{macrocode} +\clist_new:N \l_@@_header_rows_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: + { + \clist_map_inline:Nn \l_@@_header_rows_clist + { + \clist_set:Ne\l_@@_tmpa_clist + { + \seq_item:Nn \g_@@_struct_cells_seq {##1} + } + \clist_map_inline:Nn \l_@@_tmpa_clist + { +% \end{macrocode} +% We can have negative numbers in the list from the multicolumn. +% \begin{macrocode} + \prop_if_exist:cT { g__tag_struct_####1_prop } + { + \@@_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. +% \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}} + } + } + } + } +% \end{macrocode} +% \end{macro} +% +% And some key support: +% \begin{macrocode} +% TODO decide about key name +\keys_define:nn { __tag / setup } + { + table-header-rows .clist_set:N = \l_@@_header_rows_clist + } +% \end{macrocode} +% +% \subsection{Changes to \pkg{array} commands} +% +% +% +% \begin{macro}{\@@_show_curr_cell_data:} +% Show the row/column index and span count for current table cell +% for debugging. +% \begin{macrocode} +\cs_new_protected:Npn \@@_show_curr_cell_data: { + \typeout { ==>~ current~cell~data:~ + \int_use:N \g_@@_row_int , + \int_use:N \g_@@_col_int , + \g_@@_span_tl + } +} +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{\insert@column} +% \cs{insert@column} is defined in \pkg{array}, here only the two +% sockets are inserted. +% \begin{macrocode} +\def\insert@column{% + \@@_show_curr_cell_data: + \UseSocket{tagsupport/tblcell/begin}% + \the@toks \the \@tempcnta + \ignorespaces \@sharp \unskip + \the@toks \the \count@ \relax + \UseSocket{tagsupport/tblcell/end}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@classz} +% \begin{macrocode} +\def\@classz{\@classx + \@tempcnta \count@ + \prepnext@tok + \@addtopreamble{\ifcase \@chnum + \hfil + \hskip1sp% + \d@llarbegin + \insert@column + \d@llarend \do@row@strut \hfil \or + \hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \hfil \or + \hfil\hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \or + \setbox\ar@mcellbox\vbox + \@startpbox{\@nextchar} + \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox} + \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox} + \insert@column \@endpbox + \ar@align@mcell + \do@row@strut \or + \vtop \@startpbox{\@nextchar} + \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox} + \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox} + \insert@column \@endpbox\do@row@strut \or + \vbox \@startpbox{\@nextchar} + \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox} + \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox} + \insert@column \@endpbox\do@row@strut + \fi}\prepnext@tok} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@array,\@@@@array} +% We modificate the \cs{@array} from \pkg{array}. +% \begin{macrocode} +\def\@array[#1]#2{% + \@tempdima \ht \strutbox + \advance \@tempdima by\extrarowheight + \setbox \@arstrutbox \hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% +% \end{macrocode} +% The total number of table columns of the current table is +% determined in \cs{@@_determine_table_cols:} but this is called in +% a group, so local settings do not survive. Thus, to save away the +% outer value of \cs{g_@@_table_cols_tl} we do it before the group. +% \begin{macrocode} + \tl_set_eq:NN \l_@@_saved_table_cols_tl \g_@@_table_cols_tl +% \end{macrocode} +% +% \begin{macrocode} + \begingroup + \@mkpream{#2} +% \end{macrocode} +% Next call has to happen immediately after \cs{@mkpream} because +% it uses implementation details from that. +% \begin{macrocode} + \@@_determine_table_cols: +% \end{macrocode} +% +% \begin{macrocode} + \xdef\@preamble{% + \noexpand +% \end{macrocode} +% \cs{ialign} in the original definition is replaced by +% \cs{ar@ialign} defined below. +% \begin{macrocode} + \ar@ialign + \@halignto + \bgroup \@arstrut +% \end{macrocode} +% A socket is inserted +% \begin{macrocode} + \UseSocket{tagsupport/tblrow/begin}% +% \end{macrocode} +% At the start of the preamble for the first column we set +% \cs{g_@@_col_int} to \texttt{1} as we are no longer "at" but "in" +% the first column. This is done in \cs{@@_init_cell_data:}. In +% later columns this data is updated via \cs{@@_update_cell_data:}. +% \begin{macrocode} + \@@_init_cell_data: + \@preamble + \tabskip \z@ \cr}% + \endgroup + \@arrayleft +% \end{macrocode} +% Another socket for tagging. TODO: what about \cs{arrayleft}? +% \begin{macrocode} + \UseSocket{tagsupport/tbl/init} + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi + \bgroup + \let \@sharp ##\let \protect \relax + \lineskip \z@ + \baselineskip \z@ + \m@th + \let\\\@arraycr \let\tabularnewline\\\let\par\@empty +%\show\@preamble + \@preamble} +% \end{macrocode} +% Finally, also set \cs{@@@@array} to the new definition: +% \begin{macrocode} +\let\@@@@array\@array +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@@_init_cell_data:} +% +% \begin{macrocode} +\cs_new_protected:Npn \@@_init_cell_data: { + \int_gset:Nn \g_@@_col_int {1} + \tl_gset:Nn \g_@@_span_tl {1} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_update_cell_data:} +% Updating cell data in columns after the first means we have to +% increment the \cs{g_@@_col_int} by the span count of the previous +% cell (in case it was a \cs{multicolumn} and then reset the +% \cs{g_@@_span_tl} to one (as the default). +% \begin{macrocode} +\cs_new_protected:Npn \@@_update_cell_data: { + \int_gadd:Nn \g_@@_col_int { \g_@@_span_tl } + \tl_gset:Nn \g_@@_span_tl {1} +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\@@_determine_table_cols:} +% Current implementation of \cs{@mkpream} uses the scratch counter +% \cs{count@} to keep track of the number of toks registers it needs +% (2 per column), but this can't be used as it counts also +% insertings made with \verb+!{}+ and \verb+@{}+. +% So similar as does longtable for \cs{LT@cols} we count the +% numbers of ambersands instead. +% \begin{macrocode} +\cs_new:Npn \@@_determine_table_cols: { + \seq_set_split:NnV\l_@@_tmpa_seq {&}\@preamble + \tl_gset:Ne \g_@@_table_cols_tl { \seq_count:N \l_@@_tmpa_seq } + \typeout{ ==>~ Table~ has~ \g_@@_table_cols_tl \space columns } +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@arraycr} +% Add code that figures out if the current table row is incomplete +% (not enough \verb=&=s). It can then do extra actions, such as +% inserting missing cell tags. +% \begin{macrocode} +\protected\def\@arraycr{ + \relax + \@@_store_missing_cells:n{@arraycr} + % + \iffalse{\fi\ifnum 0=`}\fi + \@ifstar \@xarraycr \@xarraycr} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\@@_store_missing_cells:n, +% \__tag_tbl_add_missing_cells:n} +% The storing and use of the number of missing cells +% must happen at different places as the testing happens at +% the end of the last cell of a row, but +% still inside that cell, so we use two commands. The second is used in +% the endrow socket. +% \begin{macrocode} +\cs_new:Npn \@@_store_missing_cells:n #1 { + \int_compare:nNnT \g_@@_col_int > 0 + { + \int_gset:Nn \g_@@_missing_cells_int + { + \g_@@_table_cols_tl + - \g_@@_col_int + - \g_@@_span_tl + + 1 + } + \int_compare:nNnT \g_@@_missing_cells_int < 0 \ERROR % should not happen + \typeout{==>~ + (#1)~ + This~ row~ needs~ + \int_use:N \g_@@_missing_cells_int \space + additional~ cell(s) + } + } +} +% \end{macrocode} +% +% \begin{macrocode} +\cs_new:Npn \__tag_tbl_add_missing_cells:n #1 + { +% \end{macrocode} +% The TD-socket messages are issued after the message about the end-row socket, +% but the structure is ok, so better issue a message for now to avoid confusion: +% \begin{macrocode} + \int_compare:nNnT {#1}>{0} + { + \typeout{==>~ + ~Inserting~\int_eval:n{#1}~additional~cell(s)~into~previous~row:} + } + \int_step_inline:nn { #1 } + { + \UseSocket{tagsupport/tblcell/begin} + \UseSocket{tagsupport/tblcell/end} + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\endarray} +% If tables are nested into another then it is necessary to +% restore information about the cell the inner table started +% in. Otherwise, \cs{g_@@_row_int}, \cs{g_@@_col_int}, and +% \cs{g_@@_span_tl} reflect the status in the outer table as they +% are globally manipulated. We restore in all cases even if we are +% not in a nesting situation as that makes the code simpler (and +% probably faster). +% +% \cs{endtabular} and \cs{endtabular*} inherit from \cs{endarray} +% so we only need to change that. \texttt{tabularx} is handled +% below. +% \begin{macrocode} +\def\endarray{ + \@@_store_missing_cells:n{endarray} + \crcr \egroup + \UseSocket{tagsupport/tbl/finalize} + \int_gset:Nn \g_@@_col_int { \l_@@_saved_col_tl } + \int_gset:Nn \g_@@_row_int { \l_@@_saved_row_tl } + \tl_gset_eq:NN \g_@@_span_tl \l_@@_saved_span_tl + \tl_gset_eq:NN \g_@@_table_cols_tl \l_@@_saved_table_cols_tl + \tl_gset_eq:NN \g_@@_struct_table_tl \l_@@_saved_struct_table_tl + \seq_gset_eq:NN \g_@@_struct_rows_seq \l_@@_saved_struct_rows_seq + \seq_gset_eq:NN \g_@@_struct_cells_seq\l_@@_saved_struct_cells_seq + \seq_gset_eq:NN \g_@@_struct_cur_seq \l_@@_saved_struct_cur_seq + \typeout{==>~ restored~cell~data:~ + \int_use:N \g_@@_row_int, + \int_use:N \g_@@_col_int, + \l_@@_saved_span_tl \space + ( + \int_compare:nNnTF \g_@@_table_cols_tl = 0 + { outer~ level } + { max:~ \g_@@_table_cols_tl } + ) + } + \egroup + \@arrayright \gdef\@preamble{}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@addamp} +% If we are after the first column we have to insert a \verb=&= and +% also update the cell data. +% \begin{macrocode} +\def\@addamp { + \if@firstamp + \@firstampfalse + \else + \edef\@preamble{\@preamble & + \@@_update_cell_data: + } + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{ +% \g_@@_col_int, +% \g_@@_row_int, +% \g_@@_span_tl, +% \g_@@_table_cols_tl} +% \cs{g_@@_row_int} holds the current row number in the table. The value +% \texttt{0} means we haven't yet processed the table preamble. It +% is incremented by every \cs{cr} including the one ending the +% table preamble. +% +% \cs{g_@@_col_int} holds the current column number. The value +% \texttt{0} means we have not yet started the table or just finished a table row +% (with \verb=\\= typically); any other positive value means we +% are currently typesetting a cell in that column in some row +% (denoted by the \cs{g_@@_row_int}. +% +% In a \cs{multicolumn} it holds the column number of the first +% spanned column and \cs{g_@@_span_tl} the info how many cells are +% spanned. +% +% \cs{g_@@_span_tl} is normally \texttt{1} except in a +% \cs{multicolumn} cell. +% \begin{macrocode} +\int_new:N \g_@@_col_int +\int_new:N \g_@@_row_int +\tl_new:N \g_@@_span_tl +\tl_new:N \g_@@_table_cols_tl + +\tl_gset:Nn \g_@@_span_tl {1} +\tl_gset:Nn \g_@@_table_cols_tl {0} % indicates outer level +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\l_@@_saved_col_tl,\l_@@_saved_row_tl, +% \l_@@_saved_span_tl,\l_@@_saved_table_cols_tl} +% +% Saving the outer values if we are nesting tables is necessary (as +% the above variables are globally altered. For this we use always +% token lists because they don't change and we do not need to blow +% additional integer registers. +% \begin{macrocode} +\tl_new:N \l_@@_saved_col_tl +\tl_new:N \l_@@_saved_row_tl +\tl_new:N \l_@@_saved_span_tl +\tl_new:N \l_@@_saved_table_cols_tl + +\tl_set:Nn \l_@@_saved_col_tl{0} +\tl_set:Nn \l_@@_saved_row_tl{0} +\tl_set:Nn \l_@@_saved_span_tl{1} +\tl_set:Nn \l_@@_saved_table_cols_tl{0} % indicates outer level +% \end{macrocode} +% \end{macro} +% +% \begin{macro} +% { +% \g_@@_struct_table_tl, \l_@@_saved_struct_table_tl, +% \g_@@_struct_rows_seq,\l_@@_saved_struct_rows_seq, +% \g_@@_struct_cells_seq,\l_@@_saved_struct_cells_seq, +% \g_@@_struct_cur_seq,\l_@@_saved_struct_cur_seq +% } +% We need to store the structure numbers for the fine tuning in the +% finalize socket. For now we use a rather simple system: A +% sequence that hold the numbers for the row structures, and one +% that holds comma lists for the cells. +% +% \cs{g_@@_struct_table_tl} will hold the structure number of the +% table, \cs{g_@@_struct_rows_seq} will hold at index i the +% structure number of row i, \cs{g_@@_struct_cells_seq} will hold +% at index i a comma list of the cell structure numbers of row i. +% \cs{g_@@_struct_cur_seq} is used as a temporary store for the +% cell structures of the current row. We need also local version +% to store and restore the values. +% +% \begin{macrocode} +\tl_new:N \g_@@_struct_table_tl +\tl_new:N \l_@@_saved_struct_table_tl +\seq_new:N \g_@@_struct_rows_seq +\seq_new:N \l_@@_saved_struct_rows_seq +\seq_new:N \g_@@_struct_cells_seq +\seq_new:N \l_@@_saved_struct_cells_seq +\seq_new:N \g_@@_struct_cur_seq +\seq_new:N \l_@@_saved_struct_cur_seq +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ar@ialign} +% A new command that replaces \cs{ialign} above. \cs{everycr} is +% also applied to the \cs{cr} ending the preamble so we have to +% program around that. +% \begin{macrocode} +\def\ar@ialign{% +% \end{macrocode} +% Before starting a table we locally stored the information related +% to the current cell (if any) so that we can restore it once the +% table is finished. +% \begin{macrocode} + \tl_set:No \l_@@_saved_col_tl {\int_use:N \g_@@_col_int } + \tl_set:No \l_@@_saved_row_tl {\int_use:N \g_@@_row_int } + \tl_set_eq:NN \l_@@_saved_span_tl \g_@@_span_tl + \tl_set_eq:NN \l_@@_saved_struct_table_tl \g_@@_struct_table_tl + \seq_set_eq:NN \l_@@_saved_struct_rows_seq \g_@@_struct_rows_seq + \seq_set_eq:NN \l_@@_saved_struct_cells_seq \g_@@_struct_cells_seq + \seq_set_eq:NN \l_@@_saved_struct_cur_seq \g_@@_struct_cur_seq +% + \typeout{==>~ saved~cell~data:~ + \l_@@_saved_row_tl, + \l_@@_saved_col_tl, + \l_@@_saved_span_tl \space + ( + \int_compare:nNnTF \l_@@_saved_table_cols_tl = 0 + { outer~ level } + { max:~ \l_@@_saved_table_cols_tl } + ) + } +% \end{macrocode} +% These are the initial values when starting a table: +% \begin{macrocode} + \int_gzero:N \g_@@_row_int + \int_gzero:N \g_@@_col_int + \tl_gset:Nn \g_@@_span_tl {1} + \seq_gclear:N\g_@@_struct_rows_seq + \seq_gclear:N\g_@@_struct_cells_seq + \seq_gclear:N\g_@@_struct_cur_seq +% \end{macrocode} +% +% \begin{macrocode} + \everycr{% + \noalign{% +% \end{macrocode} +% We use \cs{g_@@_col_int} equal zero to indicate that we are just +% after a TR (or at the very beginning of the table). Using the row +% count is not so good as longtable may split the table in chunks. +% \begin{macrocode} + \int_compare:nNnT \g_@@_col_int > 0 + { \UseSocket{tagsupport/tblrow/end} } + \int_gincr:N \g_@@_row_int % this row about to start + \int_gzero:N \g_@@_col_int % we are before first col + }% + }% + \tabskip\z@skip\halign} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\multicolumn} +% +% \cs{multicolumn} is also defined in \pkg{array}. The redefinition +% has to solve two problems: it must handle the row begin if it is +% used there, and it must save the numbers of cells it spans so +% that we can add a suitable ColSpan attribute.\footnote{FMi: This can +% now perhaps cleaned up somewhat} +% \begin{macrocode} +\long\def\multicolumn#1#2#3{% + % alternative: determine first col with vmode test ... + % \ifvmode + % \multispan{#1}\typeout{A==> vmode}% + % \else + % \multispan{#1}\typeout{A==> not vmode} + % \fi + % but this makes the \crcr handling really complicated which would + % then need to become something like + % \ifvmode \expandafter \@gobble + % \else \expandafter \@iden \fi {\cr\noalign{do something}}% + % so not used. + % Instead: + \multispan{#1}\begingroup +% \end{macrocode} +% Insert rowbegin socket only if this multicolumn +% replaces the preamble of the first column. In that case we have +% to set \cs{g_@@_col_int} to 1 since this is no longer done in the +% preamble for the cell. +% \begin{macrocode} + \int_compare:nNnTF \g_@@_col_int = 0 + { + \UseSocket{tagsupport/tblrow/begin} + \int_gset:Nn \g_@@_col_int {1} + } +% \end{macrocode} +% If we are in a later column we use \cs{g_@@_span_tl} from the +% previous column to update. +% \begin{macrocode} + { + \int_gadd:Nn \g_@@_col_int { \g_@@_span_tl } + } +% \end{macrocode} +% Then we set the span value so that it can be use in the next column. +% \begin{macrocode} + \tl_gset:Nn \g_@@_span_tl {#1} +% \end{macrocode} +% +% \begin{macrocode} + \def\@addamp{\if@firstamp\@firstampfalse \else + \@preamerr 5\fi}% + \@mkpream{#2}\@addtopreamble\@empty + \endgroup +% \end{macrocode} +% Now we update the colspan attribute. This needs setting after +% the group as it is hidden inside the plug in \cs{insert@column}. +% \begin{macrocode} + \@@_set_colspan:n {#1} +% \end{macrocode} +% \begin{macrocode} + \def\@sharp{#3}% + \@arstrut \@preamble + \null + \ignorespaces} +% \end{macrocode} +% \end{macro} +% +% \subsection{longtable} +% +% Longtable is complicated. When at the begin the \cs{endhead}, +% \cs{endfirsthead}, \cs{endfoot} and \cs{endlastfoot} are used to +% setup head and foot they create each a structure subtree with one or +% more rows. From this structures we want to keep at most two (head +% and foot) and move the foot to the end of the table. When the head +% and foot boxes are (re)inserted on following pages we want to mark +% them up as artifact with the exception of the head at the begin and +% the foot box at the end. +% +% TODO: When a line is killed the structure subtree is there already +% too and must be removed. +% +% Hyperref patches longtable. This must be disabled and replace with +% genuine code +% \begin{macrocode} +\let\@kernel@refstepcounter\refstepcounter +\def\hyper@nopatch@longtable{} +% \end{macrocode} +% \begin{macrocode} +\def\@@_patch_LT@array[#1]#2{% +% \end{macrocode} +% \cs{LT@array} is executed in a group, so we can disable para-tagging here. +% \begin{macrocode} + \UseSocket{tagsupport/tbl/init}% + \@kernel@refstepcounter{table}\stepcounter{LT@tables}% +% \end{macrocode} +% 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} + \int_gzero:N \g_@@_row_int + \seq_gclear:N\g_@@_struct_rows_seq + \seq_gclear:N\g_@@_struct_cells_seq + \seq_gclear:N\g_@@_struct_cur_seq + \seq_gclear:N\g_@@_LT@firsthead_rows_seq + \seq_gclear:N\g_@@_LT@head_rows_seq + \seq_gclear:N\g_@@_LT@lastfoot_rows_seq + \seq_gclear:N\g_@@_LT@foot_rows_seq + \if l#1% + \LTleft\z@ \LTright\fill + \else\if r#1% + \LTleft\fill \LTright\z@ + \else\if c#1% + \LTleft\fill \LTright\fill + \fi\fi\fi + \let\LT@mcol\multicolumn + \let\LT@@@@tabarray\@tabarray + \let\LT@@@@hl\hline + \def\@tabarray{% + \let\hline\LT@@@@hl + \LT@@@@tabarray}% + \let\\\LT@tabularcr + \let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \ifx\extrarowheight\@undefined + \let\@acol\@tabacol + \let\@classz\@tabclassz \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@@@startpbox\@startpbox + \let\@@@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr + \else + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \fi + \setbox\@arstrutbox\hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \let\@sharp##\let\protect\relax + \begingroup + \@mkpream{#2}% + \@@_determine_table_cols: + \xdef\LT@bchunk{% +% \end{macrocode} +% At the start of a chunk we set \cs{g_@@_col_int} to zero to make +% sure that we aren't generating /TR with the \cs{cr} ending the +% chunk preamble. +% \begin{macrocode} + \int_gzero:N \g_@@_col_int + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@\setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft \noexpand\halign to\hsize\bgroup + \tabskip\z@ \@arstrut +% \end{macrocode} +% Insert the socket and the setting of the conditional +% \begin{macrocode} + \UseSocket{tagsupport/tblrow/begin}% + \@@_init_cell_data: +% \end{macrocode} +% \begin{macrocode} + \@preamble \tabskip\LTright \cr}% + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th\let\par\@empty +% \end{macrocode} +% Socket and conditional +% \begin{macrocode} + \everycr{% + \noalign{% +% \end{macrocode} +% In \pkg{longtable} we have a bunch of extra \cs{cr}s that are +% executed whenever a chunk ends. In that case they should not +% increment the main row counter, sigh. +% \begin{macrocode} + \typeout{--longtable-->~chunk~row:~ \the\LT@rows \space + row:~ \the\g_@@_row_int \space + column:~ \the\g_@@_col_int + } + \int_compare:nNnT \g_@@_col_int > 0 + { + \UseSocket{tagsupport/tblrow/end} + } +% \end{macrocode} +% This prevents any of the additional \cs{cr}s at the end of the +% chunk to add another /TR. Then once we really start a new chunk +% it gets incremented so\ldots +% \begin{macrocode} + \int_gzero:N \g_@@_col_int % before first col +% \end{macrocode} +% And for the same reason such \cs{cr}s should not increment the +% main row counter (but it has to be incremented after the preamble +% of a chunk), so here we test against \cs{LT@rows} which is +% \cs{LTchunksize} at the end of a chunk. +% \begin{macrocode} + \int_compare:nNnT \LT@rows < \LTchunksize + { \int_gincr:N \g_@@_row_int } % this row about to start + }% + }% +% \end{macrocode} +% \begin{macrocode} + \lineskip\z@\baselineskip\z@ + \LT@bchunk} +% \end{macrocode} +% The end code most stop to insert the endrow too. +% \begin{macrocode} +\def\@@_patch_endlongtable{% + \@@_store_missing_cells:n{endlongtable} + \crcr + \noalign{% + \UseSocket{tagsupport/tbl/finalize/longtable} + \int_gzero:N \g_@@_row_int % this prevents considering the next + % \crcr as another row end. + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}}% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \if@filesw + {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}}}% + \fi + \ifx\LT@save@row\LT@@@@save@row + \else + \LT@warn{Column~\@width s~have~changed\MessageBreak + in~table~\thetable}% + \LT@final@warn + \fi + \endgraf\penalty -\LT@end@pen + \ifvoid\LT@foot\else + \global\advance\vsize\ht\LT@foot + \global\advance\@colroom\ht\LT@foot + \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@ + \fi + \endgroup + \global\@mparbottom\z@ + \endgraf\penalty\z@\addvspace\LTpost + \ifvoid\footins\else\insert\footins{}\fi} +% \end{macrocode} +% +% +% +% \begin{macro}{\@@_patch_LT@t@bularcr} +% +% \begin{macrocode} +\def\@@_patch_LT@t@bularcr{% + \global\advance\LT@rows\@ne + \ifnum\LT@rows=\LTchunksize +% \end{macrocode} +% At the end of the chunk \verb=\\= is doing something special and +% so we loose \cs{@@_store_missing_cells:n}. Below is about the +% right place to add it do this code branch. +% \begin{macrocode} + \@@_store_missing_cells:n{echunk} + \gdef\LT@setprevdepth{% + \prevdepth\z@ + \global\let\LT@setprevdepth\relax}% + \expandafter\LT@xtabularcr + \else + \ifnum0=`{}\fi + \expandafter\LT@LL@FM@cr + \fi} + +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\@@_patch_LT@end@hd@ft} +% 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. +% \begin{macrocode} +\def\@@_patch_LT@end@hd@ft#1{% +% \end{macrocode} +% To handle missing columns in the header we need this: +% \begin{macrocode} + \__tbl_store_missing_cells:n{head/foot} + \int_step_inline:nn + { \LT@rows + 1 } + { + \seq_gput_left:ce + {g_@@_\cs_to_str:N #1 _rows_seq } + { \int_eval:n {\g_@@_row_int + 1 - ##1 } } + } +% \end{macrocode} +% We also have to set the chunk rows to its max value before +% calling \cs{LTechunk} so that we don't get extra increments of +% the main row counter due to \cs{everycr}. +% \begin{macrocode} + \int_gset:Nn \LT@rows { \LTchunksize } + \LT@echunk + \ifx\LT@start\endgraf + \LT@err + {Longtable head or foot not at start of table}% + {Increase LTchunksize}% + \fi + \setbox#1\box\z@ + \LT@get@widths + \LT@bchunk} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\@@_patch_LT@start} +% \begin{macrocode} +\def\@@_patch_LT@start{% + \let\LT@start\endgraf + \endgraf\penalty\z@\vskip\LTpre\endgraf + \ifdim \pagetotal<\pagegoal \else + \dimen@=\pageshrink + \advance \dimen@ 1sp % + \kern\dimen@\penalty 9999\endgraf \kern-\dimen@ + \fi + \dimen@\pagetotal + \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \ht\LT@foot + \edef\LT@reset@vfuzz{\vfuzz\the\vfuzz\vbadness\the\vbadness\relax}% + \vfuzz\maxdimen + \vbadness\@M + \setbox\tw@\copy\z@ + \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox + \setbox\tw@\vbox{\unvbox\tw@}% + \LT@reset@vfuzz + \advance\dimen@ \ht + \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@\dp + \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@ -\pagegoal + \ifdim \dimen@>\z@ + \vfil\break + \else + \ifdim\pageshrink>\z@\pageshrink\z@\fi + \fi + \global\@colroom\@colht + \ifvoid\LT@foot\else + \global\advance\vsize-\ht\LT@foot + \global\advance\@colroom-\ht\LT@foot + \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ + \maxdepth\z@ + \fi + \MakeLinkTarget{table} + \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak +% \end{macrocode} +% Avoid that following uses of the box add content: +% \begin{macrocode} + \tagmcbegin{artifact} + \tag_mc_reset_box:N\LT@head + \tagmcend + \output{\LT@output}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@@_patch_LT@output} +% We must also avoid that the reuse of the foot box leads to +% duplicated content: +% \begin{macrocode} +\def\@@_patch_LT@output{% + \ifnum\outputpenalty <-\@Mi + \ifnum\outputpenalty > -\LT@end@pen + \LT@err{floats and marginpars not allowed in a longtable}\@ehc + \else + \setbox\z@\vbox{\unvbox\@cclv}% + \ifdim \ht\LT@lastfoot>\ht\LT@foot + \dimen@\pagegoal + \advance\dimen@\ht\LT@foot + \advance\dimen@-\ht\LT@lastfoot + \ifdim\dimen@<\ht\z@ + \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% + \@makecol + \@outputpage + \global\vsize\@colroom + \setbox\z@\vbox{\box\LT@head}% + \fi + \fi + \unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi +% \end{macrocode} +% Reset attribute of foot box: +% \begin{macrocode} + \tagmcbegin{artifact} + \tag_mc_reset_box:N \LT@foot + \tagmcend + \fi + \else + \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% +% \end{macrocode} +% Reset attribute of foot box: +% \begin{macrocode} + \tagmcbegin{artifact} + \tag_mc_reset_box:N \LT@foot + \tagmcend + \@makecol + \@outputpage + \global\vsize\@colroom + \copy\LT@head\nobreak + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_patch_\LT@makecaption} +% This patch is quite similar to the one for LaTeX's \cs{@makecaption} +% we also have to change the parbox sockets. +% \begin{macrocode} +\def\@@_patch_LT@makecaption#1#2#3{% + \LT@mcol\LT@cols c{% + % test can go after merge + \str_if_exist:cT { l__socket_tagsupport/parbox/before_plug_str } + { + \AssignSocketPlug{tagsupport/parbox/before}{noop} + \AssignSocketPlug{tagsupport/parbox/after}{noop} + } + \hbox to\z@{\hss\parbox[t]\LTcapwidth{% + \reset@font + \tag_stop:n{caption} + \sbox\@tempboxa{#1{#2:~}#3}% + \tag_start:n{caption} + \ifdim\wd\@tempboxa>\hsize + #1{#2:~}#3% + \else + \hbox to\hsize{\hfil#1{#2:~}#3\hfil}% + \fi + \endgraf\vskip\baselineskip}% + \hss}}} +% \end{macrocode} +% \end{macro} +% +% +% +% Overwrite the longtable definition. That will probably break somewhere as +% they are various package which patch too. +% \begin{macrocode} +\AddToHook{package/longtable/after} + { + \seq_new:N \g_@@_LT@firsthead_rows_seq + \seq_new:N \g_@@_LT@head_rows_seq + \seq_new:N \g_@@_LT@lastfoot_rows_seq + \seq_new:N \g_@@_LT@foot_rows_seq + \cs_set_eq:NN \LT@array\@@_patch_LT@array + \cs_set_eq:NN \endlongtable\@@_patch_endlongtable + \cs_set_eq:NN \LT@start\@@_patch_LT@start + \cs_set_eq:NN \LT@output\@@_patch_LT@output + \cs_set_eq:NN \LT@t@bularcr\@@_patch_LT@t@bularcr + \cs_set_eq:NN \LT@end@hd@ft\@@_patch_LT@end@hd@ft + \cs_set_eq:NN \LT@makecaption\@@_patch_LT@makecaption + } +% \end{macrocode} + + + + + +% \subsection{tabularx} +% +% In tabularx we mainly need to ensure that no tagging is done during +% the trial. +% +% \begin{macrocode} +\def\@@_patch_TX@endtabularx{% + \expandafter\expandafter\expandafter + \TX@find@endtabularxa\csname end\TX@\endcsname + \endtabularx\TX@\endtabularx\TX@find@endtabularxa + \expandafter\TX@newcol\expandafter{\tabularxcolumn{\TX@col@width}}% + \let\verb\TX@verb + \def\@elt##1{\global\value{##1}\the\value{##1}\relax}% + \edef\TX@ckpt{\cl@@@@ckpt}% + \let\@elt\relax + \TX@old@table\maxdimen + \TX@col@width\TX@target + \global\TX@cols\@ne + \TX@typeout@ + {\@spaces Table Width\@spaces Column Width\@spaces X Columns}% +% \end{macrocode} +% Here we stop tagging: +% \begin{macrocode} + \tag_stop:n{tabularx} + \TX@trial{\def\NC@rewrite@X{% + \global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}% + \loop + \TX@arith + \ifTX@ + \TX@trial{}% + \repeat +% \end{macrocode} +% And now we restart it again. +% \begin{macrocode} + \tag_start:n{tabularx} + {\let\@footnotetext\TX@ftntext\let\@xfootnotenext\TX@xftntext + \csname tabular*\expandafter\endcsname\expandafter\TX@target + \the\toks@ + \csname endtabular*\endcsname}% + \global\TX@ftn\expandafter{\expandafter}\the\TX@ftn + \ifnum0=`{\fi}% + \expandafter\expandafter\expandafter + \TX@find@endtabularxbb + \expandafter\end\expandafter{\TX@}% + \endtabularx\TX@\endtabularx\TX@find@endtabularxb +} + +\AddToHook{package/tabularx/after} + {\cs_set_eq:NN \TX@endtabularx\@@_patch_TX@endtabularx } +% \end{macrocode} +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% +% \begin{macrocode} +%<*latex-lab> +\ProvidesFile{table-latex-lab-testphase.ltx} + [\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper table] +\RequirePackage{latex-lab-testphase-table} +%</latex-lab> +% \end{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-kernel-changes.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-kernel-changes.dtx index 632315a7317..81c9edfe4dc 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-kernel-changes.dtx +++ b/Master/texmf-dist/source/latex-dev/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{2023-07-20} -\def\ltlabkernelversion{0.85a} +\def\ltlabkerneldate{2023-10-16} +\def\ltlabkernelversion{0.85b} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -66,6 +66,7 @@ [\ltlabkerneldate\space v\ltlabkernelversion\space General kernel and class changes] % \end{macrocode} +% % \subsection{Providing the counter representation \cs{theHxx} generally} % [kernel?] % @@ -151,8 +152,32 @@ \def\toclevel@subparagraph{5} \def\toclevel@figure{1} \def\toclevel@table{1} +% \end{macrocode} +% +%\subsection{Storing the relation between target names and structure numbers} +% To be able to add a /Ref key to structures the tagging makes use of target names +% and stores the relationship in a property. We add a hook to \cs{MakeLinkTarget} to +% catch as much as possible, see also tagging issue \#20. This should work also +% without hyperref. The property is defined in tagpdf-base, so the code would +% work also without tagging but we add a test anyway, this is probably faster. +% \begin{macrocode} +\ExplSyntaxOn +\AddToHookWithArguments{cmd/MakeLinkTarget/after} + { + \tag_if_active:T + { + \tl_if_blank:VF \@currentHref + { + \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} + } + } + } +\ExplSyntaxOff +% \end{macrocode} +% \begin{macrocode} %</kernelchange> % \end{macrocode} +% % \subsection{load kernel changes} % \begin{macrocode} %<*package> diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc.dtx index 81f6676a804..6def505e113 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc.dtx +++ b/Master/texmf-dist/source/latex-dev/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-07-20} -\def\ltlabtocversion{0.85a} +\def\ltlabtocdate{2023-10-16} +\def\ltlabtocversion{0.85b} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -54,12 +54,42 @@ { Code related to the tagging of toc-like lists} %</header> % \end{macrocode} -% +% \begin{documentation} % \section{Introduction} % % The followings contains various functions related to the tagging of the -% table of contents and similar list. The functions will at some time -% be moved inside the tagpdf code. +% table of contents and similar list. +% +% The structure of tocs consist of nested TOC and TOCI structures. +% The code uses the first argument of the \cs{contentsline} command to detect the +% level and to decided if a structure should be closed. The structure that +% should be used in \texttt{/Ref} key to link to the heading is detected from the +% target name in the fourth argument -- because of this with this code such a target +% name is created and stored also if hyperref is not loaded. +% +% \subsection{Manual toc additions} +% As the \texttt{/Ref} key relies on the target name, +% manual \cs{addcontentsline} commands must ensure that they reference the right +% structure. If an unnumbered heading command is used before this is normally the case, +% so the following should work fine: +% +% \begin{verbatim} +% \chapter*{Unnumbered} +% \addcontentsline{toc}{chapter}{Unnumbered} +% \end{verbatim} +% +% If there is no heading command a target name must be created manually \emph{inside the +% right structure} with \cs{MakeLinkTarget}: +% +% \begin{verbatim} +% \noindent % start e.g. P-structure +% \MakeLinkTarget*{unnumbered}% target inside the P-structure +% Unnumbered +% \addcontentsline{toc}{chapter}{Unnumbered} +% \end{verbatim} +% +% \end{documentation} +% \begin{implementation} % \begin{macrocode} %<*package> %<@@=tag> @@ -78,33 +108,28 @@ % This variable records for (some or all, not clear yet) % destination names the related structure number to allow % to reference them in a Ref. The key is the destination. -% Moved into tagpdf! +% Defined by tagpdf. % \end{variable} % -% We use \cs{refstepcounter} to store the relation between +% \cs{refstepcounter} doesn't use \cs{MakeLinkTarget} (yet) so +% we have to patch it too to store the relation between % destination names/\cs{@currentHref} and structure numbers % -% TODO: the functions should be moved into tagpdf so that one -% doesn't has to test if the prop exists or not. +% The property is set up in tagpdf-test so that one +% doesn't has to check if the prop exists or not. % \begin{macrocode} \AddToHook{cmd/refstepcounter/after} { \tl_if_blank:VF \@currentHref { - \prop_if_exist:NT \g_@@_struct_dest_num_prop - { - \prop_gput:Nxx \g_@@_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } + \prop_gput:Nee \g_@@_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} } } \AddToHook{cmd/H@refstepcounter/after} { \tl_if_blank:VF \@currentHref { - \prop_if_exist:NT \g_@@_struct_dest_num_prop - { - \prop_gput:Nxx \g_@@_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } + \prop_gput:Nee \g_@@_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} } } % \end{macrocode} @@ -375,3 +400,4 @@ %</latex-lab> % \end{macrocode} +% \end{implementation} diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab.ins b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab.ins index a4aeb7289d6..548f18a6fa7 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab.ins +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab.ins @@ -152,6 +152,11 @@ where one can also log issues in case there are any. \generate{\file{firstaid-latex-lab-testphase.ltx}{\from{latex-lab-firstaid.dtx}{latex-lab}}} \generate{\file{latex-lab-testphase-firstaid.sty}{\from{latex-lab-firstaid.dtx}{package}}} +%table +\generate{\file{table-latex-lab-testphase.ltx}{\from{latex-lab-table.dtx}{latex-lab}}} +\generate{\file{latex-lab-testphase-table.sty}{\from{latex-lab-table.dtx}{package}}} + + % stop docstrip adding \endinput \preamble \endpreamble diff --git a/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx b/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx index b94a85d26d9..518b70761d9 100644 --- a/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx @@ -25,7 +25,7 @@ % %<package>\NeedsTeXFormat{LaTeX2e} %<package>\ProvidesPackage{afterpage} -%<package> [2014/10/28 v1.08 After-Page Package (DPC)] +%<package> [2023/07/04 v1.08 After-Page Package (DPC)] % %<*driver> \documentclass{ltxdoc} @@ -199,7 +199,7 @@ \global\setbox\@ne\lastbox}% % \end{macrocode} % If the text that is saved in |\AP@partial| had footnotes, we'd -% better grab them as well otherwise they may come out on a page +% better grab them as well, otherwise they may come out on a page % with the `afterpage' text, before the page that has the % footnote mark! (Added at v1.08.) % \begin{macrocode} @@ -218,7 +218,7 @@ % \end{macrocode} % % Restore the |\everydisplay| register. |\ignorespaces| prevents a space -% or newline after |$$| creating rogue a indentation or paragraph. +% or newline after |$$| creating a rogue indentation or paragraph. % \begin{macrocode} \def\AP@ed{\everydisplay\expandafter{\the\toks@}\ignorespaces} % \end{macrocode} @@ -264,7 +264,7 @@ % `afterpage' commands, so just add the new commands to the end of the % list. Otherwise save the commands in |\AP@|. (within a local group), % and switch the output routine. (The new output routine just calls the -% old one if it is invoked by a \LaTeX{} float. +% old one if it is invoked by a \LaTeX{} float.) % \begin{macrocode} \long\def\afterpage#1{% \ifx\AP@\relax @@ -291,7 +291,7 @@ \global\output\expandafter{\the\AP@output}% \AP@clearpage % \end{macrocode} -% At this point (since v1.08) Need to clear |\AP@| \emph{before} +% At this point (since v1.08) need to clear |\AP@| \emph{before} % using its expansion, as otherwise hit an infinite loop. Sigh. % \begin{macrocode} \global\expandafter\let\expandafter\AP@\expandafter\relax @@ -350,7 +350,7 @@ % \end{macrocode} % Subtract the new height of |#1| from |\skip@|, and add back on % |\splittopskip|, so |\skip@| is now the height of the first row of -% |#1| This may still be 0pt if (eg) a mark or whatsit is between the +% |#1|. This may still be 0pt if (eg) a mark or whatsit is between the % top glue and the first box. Save (this height${}-{}$|\splittopskip|) % in |\skip\tw@|. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/tools/array.dtx b/Master/texmf-dist/source/latex-dev/tools/array.dtx index 72e2f095e94..6e4e34ea260 100644 --- a/Master/texmf-dist/source/latex-dev/tools/array.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/array.dtx @@ -33,7 +33,7 @@ %<+package>\DeclareCurrentRelease{}{2020-10-01} %<+package> %<+package>\ProvidesPackage{array} -%<+package> [2022/09/04 v2.5g Tabular extension package (FMi)] +%<+package> [2023/10/16 v2.5g Tabular extension package (FMi)] % % \fi % @@ -2272,7 +2272,7 @@ % insert the row strut now as it isn't inside the template (as that % got =\omit=ted). % \changes{v2.4h}{2018/04/30}{Fixing issue 42} - % \begin{macrocode} +% \begin{macrocode} \ifnum\@multicnt >\z@ \do@row@strut \fi \cr} \let\do@row@strut\relax diff --git a/Master/texmf-dist/source/latex-dev/tools/bm.dtx b/Master/texmf-dist/source/latex-dev/tools/bm.dtx index 51ae53f041a..a608c6aeb58 100644 --- a/Master/texmf-dist/source/latex-dev/tools/bm.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/bm.dtx @@ -36,7 +36,7 @@ %<driver>\ProvidesFile{bm.drv} % \fi % \ProvidesFile{bm.dtx} - [2022/01/05 v1.2f Bold Symbol Support (DPC/FMi)] + [2023/07/08 v1.2f Bold Symbol Support (DPC/FMi)] % % \iffalse %<*driver> @@ -97,7 +97,7 @@ % % If there is a `heavy' math version defined (usually accessed by a % user-command |\heavymath|) then a similar command |\hm| -% is defined which access these `ultra bold' fonts. Currently this is +% is defined which accesses these `ultra bold' fonts. Currently this is % probably only useful with the `mathtime plus' font collection. % Definitions of commands that use these fonts may be made by % specifying the optional argument `heavy' to |\DeclareBoldMathCommand|. @@ -140,7 +140,7 @@ % your font set. % % \section{Features} -% In most cases this package should work in a fairly self explanatory +% In most cases this package should work in a fairly self-explanatory % way, but there are some things that might not be obvious. % % \subsection{Interaction with Math Alphabet Commands} @@ -209,7 +209,7 @@ % Normally if a command takes arguments the full command, including % any arguments, should be included in |\bm|. % -% So |\bm{\overbrace{abc}}| (producing \smash{$\bm{\overbrace{abc}}$}) +% So |\bm{\overbrace{abc}}| (producing \smash{$\bm{\overbrace{abc}}$}), % not % |\bm{\overbrace}{abc}|. If you do not include all the arguments you % will typically get the error message:\\ @@ -245,7 +245,7 @@ % allocations. % % If no bold font appears to be available for a particular symbol, -% |\bm| will use `poor man's bold' that is, overprinting the same +% |\bm| will use `poor man's bold', which will overprint the same % character in slightly offset % positions to give an appearance of boldness. % @@ -255,8 +255,8 @@ % font set there are suitable fonts for bold and heavy math setting, % and so |\bm| and |\hm| work well. Similarly in the basic Lucida % New Math font set there are no bold math fonts, so |\bm| will -% use `poor man's bold. However if the Lucida Expert set is used, -% Then |\bm| will detect, and use the bold math fonts that are +% use `poor man's bold'. However, if the Lucida Expert set is used, +% then |\bm| will detect, and use, the bold math fonts that are % available. % % As discussed above, one may set |\bmmax| higher or lower than its @@ -310,7 +310,7 @@ % ``poor man's bold''. That is, over-printing the character with slight offsets. % Since version 1.2e, the package now warns if a font is set up to use this over-printing and % the package option |nopbm| is available which prevents its use in which case |\bm| will -% use the non-bold for characters from the affected font, +% use the non-bold for characters from the affected font. % % \MaybeStop{} % @@ -339,7 +339,7 @@ % % \changes{v1.2e}{2021/04/25} % {Package options gh/71} -% Options to use or not use poor mans bold (over-printing) +% Options to use or not use poor man's bold (over-printing) % and level of warning messages. % \begin{macrocode} %<*package> @@ -399,7 +399,7 @@ % code, which is temporarily defined to |\bm|, to save wasting a csname. % Similarly |\bm@pmb|\ldots\ (which will be defined later) are used % as scratch macros. -% (This csname saving no longer used, setup command is |\bm@setup| not |\bm|). +% (This csname saving no longer used, setup command is |\bm@setup|, not |\bm|.) % % The general plan. Run through the fonts allocated to the normal math % version. Ignore \meta{math alphabet} allocations\footnote{For now?} @@ -505,11 +505,11 @@ \ifx\bm@pmb@\@firstofone\else, using \string\pmb\fi}% \else % \end{macrocode} -% Else make a new name by adjoining |#1| to the name of the symbol font +% Else make a new name by adjoining |#1| to the name of the symbol font, % eg, |\symboldsymbols| to match |\symsymbols|. If that font has already % been allocated, or if |\@tempcnta| is positive so we can allocate a % new slot for this font, then the table will be -% set with the offset between the two fonts. otherwise set the offset to +% set with the offset between the two fonts. Otherwise set the offset to % zero (so |\boldmath| will be used to access the font). % \begin{macrocode} \edef\@tempa{sym#1\expandafter\@gobblefour\string##1}% @@ -673,8 +673,8 @@ \fi % \end{macrocode} % -% If there is no bold math version, It is very easy to set up -% the table, no need to use all the tricky code above. +% If there is no bold math version, it is very easy to set up +% the table since there is no need to use all the tricky code above. % Also, at the end of the package redefine the internal macro % that |\bm| uses to call |\boldmath|, to use poor man's bold % instead. @@ -711,7 +711,7 @@ % % \begin{macro}{\hmmax} % -% Same for heavy (but default to three this time (enough for mathtime +% Same for heavy, but default to three this time (enough for mathtime % plus, as no heavy operators font). % \begin{macrocode} \ifx\hmmax\@undefined @@ -777,7 +777,7 @@ \let\protect\@empty \let\@typeset@protect\@empty % \end{macrocode} -% Set up either bold or heavy +% Set up either bold or heavy. % \begin{macrocode} \def\bm@mathchoice{\bm@m@thchoice#1}% \def\bm@group{\bm@gr@up#1}% @@ -848,9 +848,9 @@ \let\next@\copy \global\let\bm@first\@empty % \end{macrocode} -% For AMS version of |\sqrt|: don't expand just wrap in brace group -% so that it can be made bold in a safe but slow way. Do the same for -% internal accent command +% For AMS version of |\sqrt|: don't expand, just wrap it in a brace +% group so that it can be made bold in a safe but slow way. Do the same +% for internal accent command. % \changes{v1.1b}{2003/10/05}{AMS \cs{sqrt} not working} % % \changes{v1.1c}{2004/02/26}{\cs{accentV} made safe (pr/3625)} @@ -886,7 +886,7 @@ % |\mv@bold| or |\mv@heavy| and we execute that after redefining % |\install@mathalphabet| and |\getanddefine@fonts| suitably. % The definitions are reverted back to their original the moment -% the scanning is done +% the scanning is done. % \changes{v1.0h}{2002/11/22}{Get math alphabets right (pr/3476)} % \begin{macrocode} \let\install@mathalphabet\def @@ -972,7 +972,7 @@ % |\bm| is empty within the definition, so that either\\ % |\bmdefine\balpha{\bm\alpha}| or |\bmdefine\balpha{\alpha}| \\ % may be used. (The former just for compatibility with the original -% version for plain \TeX). +% version for plain \TeX.) % \begin{macrocode} \def\bmdefine{\DeclareBoldMathCommand[bold]} % \end{macrocode} @@ -1092,8 +1092,8 @@ % \begin{macro}{\bm@gr@up} % \changes{v1.0c}{1997/10/09} % {Extra brace around argument for \cs{over}} -% If faced with a group, -% If we are in math mode, stick it in a |\boldsymbol| like construct +% If faced with a group +% when we are in math mode, put it in a |\boldsymbol|-like construct % and then recurse on |\bm@expand|. % Otherwise just use |\bfseries\boldmath|. % The actual test is deferred till `run time'. @@ -1131,7 +1131,7 @@ % Other things just copy straight over to the command being built. % (Anything inside a |\mathop| or similar will end up being made bold % as the |\mathop| will be copied over, but its argument will be made -% bold by the group code above. +% bold by the group code above.) % \begin{macrocode} \def\bm@test@token#1{% \let\bm@next\@empty @@ -1139,7 +1139,7 @@ % % Stop here. Note that it is vital that the terminating token % is non-expandable and defined, rather than the usual \LaTeX\ -% terminators |\@nil| or |\@@|. (Worse still would be a `quark' +% terminators |\@nil| and |\@@|. (Worse still would be a `quark' % like |docstrip|'s |\qStop|.) % \begin{macrocode} \ifx#1\@@end @@ -1166,7 +1166,7 @@ \afterassignment\bm@radical\count@ % \end{macrocode} % -% Need to trap spaces otherwise digits will get turned to bold +% Need to trap spaces, otherwise digits will get turned to bold % mathchars. % \changes{v1.1a}{2003/09/01}{Forgotten to check for \cs{hskip} (pr/3572)} % \begin{macrocode} @@ -1451,7 +1451,7 @@ % \begin{macro}{\bm@pmb@} % \changes{v0.10}{1997/01/04} % {Macro added} -% |\pmb| variant. (See \TeX{}Book, or AMS \textsf{amsbsy} package). +% |\pmb| variant. (See \TeX{}book, or AMS \textsf{amsbsy} package.) % This one takes a bit more care to use smaller offsets in subscripts. % \begin{macrocode} \ifx\bm@pmb@\@firstofone\else @@ -1544,7 +1544,7 @@ \def\bm@mathaccent{% \bm@changefam{}% % \end{macrocode} -% The next four lines were added a v1.0e. Without them |\bm{\hat{A}}| +% The next four lines were added in v1.0e. Without them |\bm{\hat{A}}| % makes the accent bold using |\bm| but the group |{A}| is made bold % via a |\mathchoice| construction as for any other group, as |\bm| % does not attempt to parse inside brace groups. While that produces @@ -1674,9 +1674,10 @@ % \begin{macro}{\bm@changefam} % \changes{v0.10}{1997/01/04} % {Rewrite for new \cs{bm@table} system} -% Pull out one specified hex digit and passes -% it to |\bm@modify| to change. argument is empty normally but |000| to -% access the second math group in a delimiter code. +% Pull out one specified hex digit and pass +% it to |\bm@modify| to change. Its one argument is normally empty, +% but it will be |000| when necessary to access the second math group +% in a delimiter code. % \begin{macrocode} \def\bm@changefam#1{% \@tempcnta\count@ diff --git a/Master/texmf-dist/source/latex-dev/tools/calc.dtx b/Master/texmf-dist/source/latex-dev/tools/calc.dtx index c243eed8d32..2c4cecbf038 100644 --- a/Master/texmf-dist/source/latex-dev/tools/calc.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/calc.dtx @@ -40,7 +40,7 @@ %<driver> \ProvidesFile{calc.drv} % \fi % \ProvidesFile{calc.dtx} - [2017/05/25 v4.3 Infix arithmetic (KKT,FJ)] + [2023/07/08 v4.3 Infix arithmetic (KKT,FJ)] % % \iffalse %<*driver> @@ -102,7 +102,7 @@ % Arithmetic in \TeX\ is done using low-level operations such as % |\advance| and |\multiply|. This may be acceptable when developing % a macro package, but it is not an acceptable interface for the -% end-user. +% end user. % % This package introduces proper infix notation arithmetic which is % much more familiar to most people. The infix notation is more @@ -271,7 +271,7 @@ % or at the end of the expression being evaluated. % % When \TeX\ performs arithmetic on integers, any fractional part of -% the results are discarded. For example, +% the result is discarded. For example, %\begin{verbatim} % \setcounter{x}{7/2} % \setcounter{y}{3*\real{1.6}} @@ -318,7 +318,7 @@ % \setlength{\parindent}{% % \minof{3pt}{\parskip}*\real{1.5}*\maxof{2*\real{1.6}}{2-1}} %\end{verbatim} -% will assign $\min(13.5\textrm{pt},4.5\cs{parskip})$ to \cs{parindent} +% will assign $\min(13.5\textrm{pt},4.5\cs{parskip})$ to \cs{parindent}. % % % @@ -453,7 +453,7 @@ % or a parenthesized expression~$(E')$. % % Since the \TeX\ engine can only execute arithmetic operations in a -% machine-code like manner, we have to find a way to translate the +% machine-code-like manner, we have to find a way to translate the % infix notation into this `instruction set'. % % Our goal is to design a translation scheme that translates~$X$ (an @@ -565,9 +565,9 @@ % When an \<integer factor> is expected, we must change $A$ and~$B$ to % refer to integer type registers. We can accomplish this by % including instructions to change the type of $A$ and~$B$ to integer -% type as part of the replacement code for~`$*$; if we append such +% type as part of the replacement code for~`$*$'; if we append such % instructions to the replacement code described above, we also ensure -% that the type-change is local (provided that the type-changing +% that the type change is local (provided that the type-changing % instructions only have local effect). However, note that the % instance of~$A$ referred to in $\savecode{B\lassign B*A}$ is the % integer instance of~$A$. @@ -933,7 +933,7 @@ % \begin{macro}{\calc@addAtoB} % \begin{macro}{\calc@subtractAfromB} % The replacement code for the binary operators `\texttt{+}' and -% `\texttt{-}' follow a common pattern; the only difference is the +% `\texttt{-}' follows a common pattern; the only difference is the % token that is stored away by |\aftergroup|. After this replacement % code, control is transferred to |\calc@pre@scan|. % \begin{macrocode} @@ -1063,7 +1063,7 @@ % \begin{macro}{\calc@ratio@multiply} % \begin{macro}{\calc@ratio@divide} % When |\calc@post@scan| encounters a |\ratio| control sequence, it hands -% control to one of the macros |\calc@ratio@multiply| or |\calc@ratio@divide|, +% control to one of the macros |\calc@ratio@multiply| and |\calc@ratio@divide|, % depending on the preceding character. Those macros both forward the % control to the macro |\calc@ratio@evaluate|, which performs two steps: (1) it % calculates the ratio, which is saved in the global macro token @@ -1109,7 +1109,7 @@ % Here we calculate the ratio. First, we check for negative numerator % and/or denominator; note that \TeX\ interprets two minus signs the % same as a plus sign. Then, we calculate the integer part. -% The minus sign(s), the integer part, and a decimal point, form the +% The minus sign(s), the integer part, and a decimal point form the % initial expansion of the |\calc@the@ratio| macro. % \begin{macrocode} \gdef\calc@the@ratio{}% @@ -1305,8 +1305,8 @@ % {Use \cs{PackageError} for error messages (DPC)} % \changes{v4.0e}{1997/11/11} % {typo fixed} -% If |\calc@post@scan| reads a character that is not one of `\texttt{+}', -% `\texttt{-}', `\texttt{*}', `\texttt{/}', or `\texttt{)}', an error +% If |\calc@post@scan| reads a character that is neither `\texttt{+}', +% `\texttt{-}', `\texttt{*}', `\texttt{/}', nor `\texttt{)}', an error % has occurred, and this is reported to the user. Violations in the % syntax of \<numeric>s will be detected and reported by \TeX. % \changes{v4.1a}{1998/06/07} @@ -1327,7 +1327,7 @@ % \changes{v4.2}{2005/08/06} % {Added macro} % The kernel macro \cs{@settodim} is changed so that it runs through a list -% containing \cs{ht}, \cs{wd}, and \cs{dp} and than advance the length +% containing \cs{ht}, \cs{wd}, and \cs{dp} and then advances the length % one step at a time. We just have to use a scratch register in case the % user decides to put in a \cs{global} prefix on the length register. % A search on the internet confirmed that some people do that kind of thing. diff --git a/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx b/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx index cfb7b4d33e8..c8ddaf4ce6b 100644 --- a/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx @@ -31,7 +31,7 @@ %<driver>\ProvidesFile{dcolumn.drv} % \fi % \ProvidesFile{dcolumn.dtx} - [2014/10/28 v1.06 decimal alignment package (DPC)] + [2023/07/08 v1.06 decimal alignment package (DPC)] % % \iffalse %<*driver> @@ -117,7 +117,7 @@ % % \noindent"\newcolumntype{,}{D{,}{,}{2}}" % -% {\tt ,} specifies takes a column of entries with at most two decimal +% {\tt ,} specifies a column of entries with at most two decimal % places after a~$,$. % % \newcolumntype{d}[1]{D{.}{\cdot}{#1}} @@ -138,7 +138,7 @@ % \end{center} % % Note that the first column, which had a negative \meta{decimal places} -% argument is wider than the second column, so that the decimal point +% argument, is wider than the second column, so that the decimal point % appears in the middle of the column. % Also note that this package deals correctly with entries with no % decimal part, no integer part, and blank entries. @@ -200,7 +200,7 @@ %<*package> % \end{macrocode} % -% First we load {\tt array.sty} if it not already loaded. +% First we load {\tt array.sty} if it is not already loaded. % \begin{macrocode} \RequirePackage{array} % \end{macrocode} @@ -243,10 +243,10 @@ % \begin{macro}{\DC@x} % \changes{v1.03}{1996/02/28}{Macro added} % If "\count@" is negative, centre on the decimal point. If it is -% positive either "#1" will be empty in which case bad out decimal +% positive either "#1" will be empty in which case pad out decimal % part to the number of digits specified by "\count@" or (new feature % in v1.03) it is none empty in which case "\count@" contains the -% number of digits to the left of the point, and "#1" contains a junk +% number of digits to the left of the point and "#1" contains a junk % token (probably ".") followed by the number of digits to the right % of the point. In either of these latter cases, "\DC@right" is used. % \begin{macrocode} @@ -261,7 +261,7 @@ % \end{macro} % % \begin{macro}{\DC@centre} -% If centering on the decimal point, just need to box up the two halves. +% If centering on the decimal point, just need to box up the two halves: % \begin{macrocode} \def\DC@centre#1#2#3{% \let\DC@end\DC@endcentre @@ -293,16 +293,16 @@ \ifx\relax#3\relax % \end{macrocode} % If "#3" is empty, add "\hfill" to right align the column, and -% Just set "\DC@rl" to begin a group, so nothing fancy is done with +% just set "\DC@rl" to begin a group, so that nothing fancy is done with % the whole number part. % \begin{macrocode} \hfill \let\DC@rl\bgroup \else % \end{macrocode} -% Otherwise set "\DC@rl" so that the whole number part is put in a +% Otherwise set "\DC@rl" so that the whole number part is put in a % box "\count@" times as wide as a digit. -% In order to share code with the other branch, then move "#3" (the +% In order to share code with the other branch, move "#3" (the % number of decimal places) into "\count@" throwing away the `.' from % the user syntax. % \changes{v1.04}{1996/09/23}{Add \cs{hfill} so integer part @@ -318,7 +318,7 @@ % \end{macrocode} % Box 2 contains the decimal part, set to "\dimen@" which is % calculated below to be "\count@" times the width of a digit, plus -% the with of the `decimal point'. +% the width of the `decimal point'. % \begin{macrocode} \uppercase{\def~}{$\egroup\setbox\tw@\hbox to\dimen@\bgroup${#2}}% \setbox\z@\hbox{$1$}\dimen@ii\wd\z@ diff --git a/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx b/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx index 49179cfa067..2818a73a09b 100644 --- a/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx @@ -31,7 +31,7 @@ %<driver> \ProvidesFile{enumerate.drv} % \fi % \ProvidesFile{enumerate.dtx} - [2015/07/23 v3.00 enumerate extensions (DPC)] + [2023/07/04 v3.00 enumerate extensions (DPC)] % % \iffalse %<*driver> @@ -66,7 +66,7 @@ % This package gives the enumerate environment an optional argument % which determines the style in which the counter is printed. % -% An occurrence of one of the tokens |A a I i| or |1| produces the value +% An occurrence of one of the tokens |A a I i 1| produces the value % of the counter printed with (respectively) |\Alph \alph \Roman \roman| % or |\arabic|. % @@ -233,7 +233,7 @@ % % To enable a new counter type based on a letter, you just need % to add a new |\ifx| clause by analogy with the code above. -% So for example to make |*| trigger footnote symbol counting. +% So for example to make |*| trigger footnote symbol counting, % a package should do the following. % % Initialise the hook, in case the package is loaded before @@ -255,7 +255,7 @@ % in this way. % % At this point we just need initialise the hook, taking care not -% to over write any definitions another package may already have added. +% to overwrite any definitions another package may already have added. % \begin{macrocode} \providecommand\@enhook{} % \end{macrocode} @@ -276,7 +276,7 @@ % \end{macro} % % \begin{macro}{\@@enum@} -% Handle the optional argument.. +% Handle the optional argument. % \begin{macrocode} \def\@@enum@[#1]{% % \end{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx b/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx index 00e98c3f773..663fa304a94 100644 --- a/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx @@ -26,7 +26,7 @@ %% Copyright (C) 1989-2004 Frank Mittelbach, all rights reserved. %<+package>\NeedsTeXFormat{LaTeX2e}[1995/06/01] %<+package>\ProvidesPackage{ftnright} -%<+package> [2014/10/28 v1.1f footnote layout package (FMi)] +%<+package> [2023/07/08 v1.1f footnote layout package (FMi)] % % \fi %% @@ -171,7 +171,7 @@ % % I also upgraded the documentation to conform to the \LaTeXe{} % terminology, e.g., this is a package since document classes will not -% know about it. However it is very likely that i have missed some +% know about it. However it is very likely that I have missed some % necessary corrections. % % \section{Introduction} @@ -220,7 +220,7 @@ % % The result of this effort is presented in this paper and the reader % can judge for himself whether it was successful or -% not.\footnote{Please note, that this option only changed the +% not.\footnote{Please note that this option changed only the % placement of footnotes. Since this article also makes use of the % {\tt doc} package \cite{bk:GMS94}, that assigns tiny numbers to % code lines sprinkled throughout the text, the resulting design is @@ -235,7 +235,7 @@ % footnote separator rule which is used in most publications prepared % with \TeX{}.\footnote{People who prefer the rule can add it by % redefining the command {\tt\bslash footnoterule} -% \cite[p.~156]{book:LLa86}. Please, note, that this command should +% \cite[p.~156]{book:LLa86}. Please note that this command should % occupy no space, so that a negative space should be used to % compensate for the width of the rule used.} Furthermore, I decided % to place the footnote markers\footnote{\label{thisftn}The tiny @@ -572,7 +572,7 @@ % are only partly typeset on the preceding page are not resolved. % They are held over until \LaTeX{} starts a page (or column) % containing text besides floats again. For our current layout, -% this would mean, that if \LaTeX{} decided to make the right +% this would mean that if \LaTeX{} decided to make the right % column of a page a float column, footnotes from the left column % would appear on a later page. A real cure for this problem would % be to rewrite two-thirds of \LaTeX{}'s output routine, so I am @@ -615,8 +615,8 @@ % footnotes from the left column. So we have to change the output % routine at least in the part that contributes floats to the next % column. The macro involved is called |\@startcolumn|. The first -% thing we do is to check and see whether any deferred floats -% exists. +% thing we do is to check and see whether there are any deferred +% floats. % \begin{macrocode} \def\@startcolumn{% \ifx\@deferlist\@empty @@ -764,7 +764,7 @@ % and output the footnotes on a separate page in an % emergency.\footnote{Otherwise, the footnotes are held over for % ever, preventing \TeX{} from finishing the document successfully. -% Instead, \TeX{} will produce infinity many empty pages at the end +% Instead, \TeX{} will produce infinitely many empty pages at the end % of the document, trying in vain to output the held over % footnotes. This problem was found by Rainer Sch\"opf when we % prepared the paper for the Cork conference.} @@ -790,7 +790,7 @@ % moment we simply detect it here, perhaps some better scheme can be % implemented. One way to avoid this is to allow more than |\textheight| of % footnotes in |\preparefootins|. However, that isn't such a good idea -% either as that means that a footnote from column one, might end up +% either since it means that a footnote from column one might end up % completely on a later page. % \changes{v1.1f}{2010/02/25}{Check for split footnotes (pr/4099)} % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx b/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx index 295b678fd86..2314db1c70c 100644 --- a/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx @@ -25,7 +25,7 @@ % %<package>\NeedsTeXFormat{LaTeX2e} %<package>\ProvidesPackage{indentfirst} -%<package> [1995/11/23 v1.03 Indent first paragraph (DPC)] +%<package> [2023/07/02 v1.03 Indent first paragraph (DPC)] % %<*driver> \documentclass{ltxdoc} @@ -52,7 +52,7 @@ % \changes{v1.03}{1995/11/23}{Typo fixes in documentation} % % \begin{abstract} -% Make the first line of all sections etc., be indented by the usual +% Make the first line of all sections etc. be indented by the usual % paragraph indentation. This should work with all the standard document % classes. % \end{abstract} diff --git a/Master/texmf-dist/source/latex-dev/tools/layout.dtx b/Master/texmf-dist/source/latex-dev/tools/layout.dtx index fffa6d8e189..2798bd4f60d 100644 --- a/Master/texmf-dist/source/latex-dev/tools/layout.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/layout.dtx @@ -30,7 +30,7 @@ %<+package>\ProvidesPackage{layout} %<+driver>\ProvidesFile{layout.drv} %\ProvidesFile{layout.dtx} - [2021-03-10 v1.2e Show layout parameters] + [2023-08-20 v1.2e Show layout parameters] % % A short driver is provided that can be extracted if necessary by % the \textsf{DocStrip} program provided with \LaTeXe. @@ -409,7 +409,7 @@ % % \begin{macro}{\cnt@paperwidth} % \begin{macro}{\cnt@paperheight} -% The dimensions of the paper +% The dimensions of the paper, % \begin{macrocode} \newcount\cnt@paperwidth \newcount\cnt@paperheight @@ -514,7 +514,7 @@ \newcount\ref@hoffset \newcount\ref@voffset % \end{macrocode} -% The |\hoffset| and |\voffset| values are added to the default +% the |\hoffset| and |\voffset| values are added to the default % offset of one inch. % \begin{macrocode} \ref@hoffset=\cnt@hoffset \advance\cnt@hoffset by \oneinch @@ -531,7 +531,7 @@ % \end{macro} % % \begin{macro}{\ref@head} -% and the text areas, running heads, +% And the text areas, running heads, % \begin{macrocode} \newcount\ref@head % \end{macrocode} @@ -566,7 +566,7 @@ % \end{macro} % % The following are a number of scratch registers, used in the -% positioning of the various pices of the picture. +% positioning of the various pieces of the picture. % \begin{macrocode} \newcount\Interval \newcount\ExtraYPos @@ -639,7 +639,7 @@ \ifodd\count\z@ % \end{macrocode} % -% Here we deal with an odd page in the twosided case. +% Here we deal with an odd page in the two-sided case. % % \begin{macrocode} \typeout{Two-sided document style, odd page.} @@ -667,7 +667,7 @@ \else % \end{macrocode} % -% Here we deal with an even page in the twosided case. +% Here we deal with an even page in the two-sided case. % % \begin{macrocode} \typeout{Two-sided document style, even page.} @@ -696,7 +696,7 @@ \else % \end{macrocode} % -% Finally we the case for single sided printing. +% Finally we deal with the case for single-sided printing. % % \changes{v1.1}{1994/02/23}{Added check for reversemargin} % \begin{macrocode} @@ -718,7 +718,7 @@ % % % Now we begin the picture environment; dividing all the lengths by -% two is done by setting |\unitlength| to \texttt{0.5pt} +% two is done by setting |\unitlength| to \texttt{0.5pt}. % \begin{macrocode} \setlength{\unitlength}{.5pt} \begin{picture}(\cnt@paperwidth,\cnt@paperheight) @@ -790,7 +790,7 @@ \InsideHArrow\cnt@textwidth % \end{macrocode} % -% Now the |\textheight| +% Now the |\textheight|. % \begin{macrocode} \SetToHalf\PositionY\cnt@textheight \advance\PositionY by \ref@body @@ -812,7 +812,7 @@ % \end{macrocode} % % -% The |\hoffset|, +% The |\hoffset|. % \changes{v1.2}{1998/04/13}{\cs{PositionY} for label 1 is % fixed at 50} % \begin{macrocode} @@ -840,12 +840,12 @@ \Identify{3} % \end{macrocode} % -% the |\marginparwidth|, +% The |\marginparwidth|. % \begin{macrocode} \SetToQuart\PositionY\cnt@textheight \advance\PositionY by \ref@body % \end{macrocode} -% This arrow has to be bit below the one for the |\oddsidemargin| +% This arrow has to be a bit below the one for the |\oddsidemargin| % or\\ |\evensidemargin|. % \begin{macrocode} \advance\PositionY by 30 @@ -856,14 +856,14 @@ % \end{macrocode} % % -% The |\marginparsep|, this depends on single or double sided +% The |\marginparsep|, this depends on single- or double-sided % printing. % \begin{macrocode} \advance\PositionY by 30 \if@twoside % \end{macrocode} % -% Twosided mode, reversemargin; +% Two-sided mode, reversemargin: % \changes{v1.1b}{1994/03/23}{\cs{OutSideHArrow} should be % \cs{OutsideHArrow}} % \changes{v1.2}{1998/04/13}{Added check for reversemargin} @@ -878,7 +878,7 @@ \fi \else % \end{macrocode} -% Not reversemargin; +% Not reversemargin: % \begin{macrocode} \ifodd\count\z@ \OutsideHArrow\ref@marginpar\cnt@marginparsep{20} @@ -891,7 +891,7 @@ \else % \end{macrocode} % -% Single sided mode. +% Single-sided mode. % \changes{v1.2}{1998/04/13}{Added check for reversemargin} % \begin{macrocode} \if@reversemargin @@ -911,7 +911,7 @@ \Identify{9} % \end{macrocode} % -% Identify the |\footskip|. The arrow will be located on $1/8$th of +% Identify the |\footskip|. The arrow will be located on $1/8$ of % the |\textwidth|. % \changes{v1.2}{1998/04/13}{The \cs{PositionY} of the label 11 is % changed to the upper side of the arrows} @@ -942,7 +942,7 @@ % % Identify |\topmargin|, |\headheight| and |\headsep|. % -% The arrows will be located on $1/8$th of the |\textwidth|, with +% The arrows will be located on $1/8$ of the |\textwidth|, with % intervals of the same size, stored in |\Interval|. % \begin{macrocode} \Interval = \cnt@textwidth @@ -983,7 +983,7 @@ \Identify{5} \advance\PositionX by \Interval % \end{macrocode} -% and finally the |\headsep| +% and finally the |\headsep|. % \changes{v1.2}{1998/04/13}{The \cs{PositionY} of the label 6 is % fixed} % \begin{macrocode} @@ -1006,7 +1006,7 @@ % % Below the picture we put a table to show the actual values of the % parameters. Note that fractional points are truncated, i.e., -% \texttt{72.27pt} is displayed as \texttt{72pt} +% \texttt{72.27pt} is displayed as \texttt{72pt}. % % The table is typeset inside a box with a depth of 0 to always % keep it on the same page as the picture. diff --git a/Master/texmf-dist/source/latex-dev/tools/longtable.dtx b/Master/texmf-dist/source/latex-dev/tools/longtable.dtx index 332a95d224e..2a61ab0c87e 100644 --- a/Master/texmf-dist/source/latex-dev/tools/longtable.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/longtable.dtx @@ -37,7 +37,7 @@ %<driver> \ProvidesFile{longtable.drv} % \fi % \ProvidesFile{longtable.dtx} - [2021-09-01 v4.17 Multi-page Table package (DPC)] + [2023-11-01 v4.19 Multi-page Table package (DPC)] % % \iffalse %<*driver> @@ -54,7 +54,7 @@ % has version number \fileversion, last % revised \filedate.}} % \author{David Carlisle\thanks{The new algorithm for aligning `chunks' -% of a table used in version 4 of this package was devised coded +% of a table used in version 4 of this package was devised, coded % and documented by David Kastrup.}} % \date{\filedate} % @@ -317,7 +317,7 @@ % ".aux" file, so that it can line up the different chunks. % Prior to version~4 of this package, this information was not used % unless a "\setlongtables" command was issued, however, now the -% information is always used, using a new algorithm\footnote{Due to +% information is always used, via a new algorithm,\footnote{Due to % David Kastrup.} and so "\setlongtables" is no longer needed. It is % defined (but does nothing) for the benefit of old documents that % use it. @@ -396,7 +396,7 @@ % are modified in a compatible manner. % % You may use the "\label" command so that you can cross reference -% \env{longtable}s with "\ref". Note however, that the "\label" command +% \env{longtable}s with "\ref". Note, however, that the "\label" command % should not be used in a heading that may appear more than once. Place % it either in the \env{firsthead}, or in the body of the table. It % should not be the \emph{first} command in any entry. @@ -493,7 +493,7 @@ % always converged in three passes as described above, but in examples % such as the ones in Tables \ref{pass1}--\ref{pass4}, the final % widths were not optimal as the width of column~2, which is -% determined by a "\multicolumn" entry was not known when the final +% determined by a "\multicolumn" entry, was not known when the final % width for column~3 was fixed, due to the fact that \emph{both} % "\multicolumn" commands were switched from `draft' mode to `normal' % mode at the same time. @@ -511,7 +511,7 @@ % many overlapping "\multicolumn" entries, all being wider than the % natural widths of the columns they span, and all occurring in % different chunks. In the typical case the algorithm will converge -% after three or four passes, and, the benefits of not needing to edit +% after three or four passes, and the benefits of not needing to edit % the document before the final run to add "\setlongtables", and the % better choice of final column widths in the case of multiple % "\multicolumn" entries will hopefully more than pay for the extra @@ -576,7 +576,7 @@ % \item The mechanism for adding the head and foot of the table has been % completely rewritten. With this new mechanism, \env{longtable} does % not need to issue a "\clearpage" at the start of the table, and so the -% table may start half way down a page. Also the "\endlastfoot" command +% table may start half way down a page. Also the "\endlastfoot" command, % which could not safely be implemented under the old scheme, has been % added. % \item \env{longtable} now issues an error if started in the scope of @@ -673,7 +673,7 @@ % "\endhead"& % Specifies rows to appear at the top of every page.\\ % "\endfirsthead"& -% Specifies rows to appear at the top the first page.\\ +% Specifies rows to appear at the top of the first page.\\ % "\endfoot"& % Specifies rows to appear at the bottom of every page.\\ % "\endlastfoot"& @@ -885,7 +885,7 @@ % \begin{macro}{\LTchunksize} % \changes{v4.14}{2020/02/07} % {Increase default chunksize from 20 to 200} -% Chunk size (The number of rows taken per "\halign"). Default 200. +% Chunk size (the number of rows taken per "\halign"). Default 200. % \begin{macrocode} \newcount\LTchunksize \LTchunksize=200 % \end{macrocode} @@ -1189,12 +1189,12 @@ % \changes{v4.05}{1996/11/12} % {\cs{LT@setprevdepth} added} % The following line was added in v4.05. -% In order to get the "\penalties" to work at chunk boundaries -% Need to take more care about where and when "\lineskip" glue +% In order to get the "\penalties" to work at chunk boundaries, +% we need to take more care about where and when "\lineskip" glue % is added. The following does nothing at top of table, and in % header chunks, but in normal body chunks it sets "\prevdepth" % (to 0pt, but any value would do) so that "\lineskip" glue will -% be added. the important thing to note is that the glue will be +% be added. The important thing to note is that the glue will be % added \emph{after} any vertical material coming from "\noalign". % \begin{macrocode} \LT@setprevdepth @@ -1257,7 +1257,7 @@ % \end{macrocode} % \changes{v4.14}{2020/02/07} % {Guard against shrink glue on current page tools/3396 and github 183} -% This next block was suggested by Lars Hellström in pr tools/3396 +% This next block was suggested by Lars Hellström in pr tools/3396. % He documents it as: % % The original problem occurs because TeX has not yet found an awfully bad @@ -1325,7 +1325,7 @@ % \changes{v4.14}{2020/02/07} % {Guard against shrink glue on current page see github 183} % The LT output routine does not handle shrink on the page, which can cause -% The first page to be over-long, so forget it is there. +% the first page to be over-long, so forget it is there. % \begin{macrocode} \ifdim\pageshrink>\z@\pageshrink\z@\fi \fi @@ -1551,7 +1551,7 @@ % Increment the counter, and do \env{tabular}'s "\\" or finish the % chunk.\\ The "\expandafter" trick was added in Version~3. % Set the "\prevdepth" at the start of a new chunk. (Done here -% so not set in header chunks). +% so not set in header chunks.) % \begin{macrocode} \global\advance\LT@rows\@ne \ifnum\LT@rows=\LTchunksize @@ -2206,12 +2206,16 @@ \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}% % \begin{macrocode} \color@begingroup \let\@footnotetext\LT@p@ftntext \setlength\hsize{#1}% \@arrayparboxrestore - \vrule \@height \ht\@arstrutbox \@width \z@} + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% + } % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx b/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx index 97ec542b662..aa707fe550a 100644 --- a/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx @@ -20,7 +20,7 @@ %<driver> \ProvidesFile{shellesc.drv} % \fi % \ProvidesFile{shellesc.dtx} - [2023/04/15 v1.0d unified shell escape interface for LaTeX] + [2023/07/08 v1.0d unified shell escape interface for LaTeX] % % \iffalse %<*driver> @@ -50,7 +50,7 @@ % \section{Introduction} % % -% For many years web2c based \TeX\ implementations have used the syntax +% For many years web2c-based \TeX\ implementations have used the syntax % of the \verb|\write| command to access system commands by using a % special stream 18 (streams above 15 can not be allocated to files in % classical \TeX\ so stream 18 would otherwise just print to the @@ -59,9 +59,9 @@ % This is a useful extension that did not break the strict rules on % extensions in classical \TeX. This package provides a simple % macro level interface hiding the \verb|write18| implementation -% so a command to remove a file on a unix-like system could be +% so a command to remove a file on a Unix-like system could be % specified using \verb|\ShellEscape{rm file.txt}| (or \verb|del| in -% windows). Note that by default system access is not allowed and +% Windows). Note that by default system access is not allowed and % \LaTeX\ will typically need to be called with the \verb|--shell-escape| % command line option. % @@ -77,7 +77,7 @@ % \verb|\ShellEscape| in fact corresponds to \verb|\immediate\write18| % (or \verb|\directlua|). Very rarely you may need to delay a system % command until the current page is output (when page numbers are -% known) for this classically you could use \verb|\write18| (or +% known), for this you could classically use \verb|\write18| (or % (\verb|\latelua|). This package provides \verb|\DelayedShellEscape| % as a common syntax for this use. % @@ -92,7 +92,7 @@ % \verb|\immediate| will work as normal when writing to file streams % or the terminal but the special case of stream 18 which is defined to % use \verb|os.execute| always uses \verb|\directlua| (so corresponds -% to \verb|\immediate\write18|. In the rare situations that you need +% to \verb|\immediate\write18|). In the rare situations that you need % non-immediate \verb|\write18| in a document being ported to current % Lua\TeX, you will need to change to use the % \verb|\DelayedShellEscape| command. @@ -118,7 +118,7 @@ % % \begin{macro}{\ShellEscapeStatus} % \changes{v1.0a}{2019/10/13}{Command Introduced} -% Integer value with meanings 0 (shell escape disabled), 1 (shell escape allowed), 2 (Restricted shell escape). +% Integer value with meanings 0 (shell escape disabled), 1 (shell escape allowed), 2 (restricted shell escape). % % \begin{macrocode} \chardef\ShellEscapeStatus @@ -215,8 +215,8 @@ if status == nil then % % \subsection{The write18 package interface} % -% In web2c based engines other than Lua\TeX, |\write18| may be used -% directly. The same was true in older LuaTeX, but from version 0.85 +% In web2c-based engines other than Lua\TeX, |\write18| may be used +% directly. The same was true in older Lua\TeX, but from version 0.85 % onwards that is not available. % % The above |shellesc| package interface is recommended for new code, diff --git a/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx b/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx index 98410041569..c90b3863e1a 100644 --- a/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx @@ -39,7 +39,7 @@ %<driver> \ProvidesFile{showkeys.drv} % \fi % \ProvidesFile{showkeys.dtx} - [2023/05/11 v3.19 Show cite and label keys (DPC, MH)] + [2023/07/08 v3.19 Show cite and label keys (DPC, MH)] % % \iffalse %<*driver> @@ -112,13 +112,13 @@ % print its key argument (usually in the margin). % % If you find the printed keys distracting, but don't want to use the -% above options to stop them altogether you may use: +% above options to stop them altogether, you may use: % \begin{description} % \item[color] Print the keys in a distinguishing colour. The default % value is a light grey. % \end{description} % The colours may be changed by redefining the following two colours -% after the package is loaded. +% after the package is loaded: % |refkey| (also used for |\cite|) and % |labelkey| (also used for |\bibitem|). % The defaults are: @@ -131,7 +131,7 @@ % % The package accepts two further options. % \begin{description} -% \item[final] to suporess the action of this package, for `final' +% \item[final] to suppress the action of this package, for `final' % versions. % \item[draft] the normal behaviour of this package. % \end{description} @@ -437,7 +437,7 @@ % change |\prevdepth| as that would affect vertical spacing in the % document. (The box itself should not cause any difference in break % points as there is a node there anyway coming from the |\write| to -% the aux file. +% the aux file.) % \begin{macrocode} \dimen@\prevdepth \nointerlineskip @@ -451,8 +451,8 @@ % In inner vertical mode, attach the label to the right of the % immediately preceding box, if it is a box before the current point. % Otherwise just put it in a box of zero dimensions, with no interline -% skip. (This may slightly move the surrounding text (but perhaps not -% now that |\prevdepth| is restored.) +% skip. This may slightly move the surrounding text (but perhaps not +% now that |\prevdepth| is restored). % \changes{v3.00}{1994/09/07} % {Back up over a previous skip because of the new % \cs{belowcaptionskip}} @@ -502,7 +502,7 @@ \fi \else % \end{macrocode} -% If we are in an numbered equation-style environment, do nothing as the +% If we are in a numbered equation-style environment, do nothing as the % code to print the number will also print the label, otherwise just % stick the label at the current point, in a box of zero dimensions. % \changes{v3.02}{1995/03/17} @@ -650,7 +650,7 @@ % The following environments print an equation number, so |\label| % should not print its argument at the point where it appears. % Note this will fail to show the label if you are in an |eqnarray| -% environment, and use |\label| together with |\nonumber| This might +% environment, and use |\label| together with |\nonumber|. This might % just about make sense if you are going to use |\pageref|, but that is % too bad\ldots % \begin{macrocode} @@ -665,7 +665,7 @@ % \changes{v3.09}{1996/08/30} % {Fix eqnarray AMS incompatibility. tools/2252} % When the AMS packages are loaded |showkeys| assumes environments -% work `The AMS way' However |eqnarray| (unlike |equation|) is not +% work `The AMS way'. However, |eqnarray| (unlike |equation|) is not % redefined, so here we need to remove some of the AMS hacks. % \begin{macrocode} \toks@\expandafter{\eqnarray} diff --git a/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx b/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx index 177d92f12fd..6d59ca4c228 100644 --- a/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx @@ -31,7 +31,7 @@ %<driver> \ProvidesFile{tabularx.drv} % \fi % \ProvidesFile{tabularx.dtx} - [2020/01/15 v2.11c `tabularx' package (DPC)] + [2023/07/08 v2.11c `tabularx' package (DPC)] % \iffalse %<*driver> \documentclass{ltxdoc} @@ -164,7 +164,7 @@ % \item The body of the {\ttfamily tabularx} environment is in fact the % argument to a command, and so certain constructions which are not % allowed in command arguments (like "\verb") may not be used.\footnote -% {Since Version 1.02, {\ttfamily\bslash verb and \ttfamily\bslash +% {Since Version 1.02, {\ttfamily\bslash verb} and {\ttfamily\bslash % verb*} may be used, but they may treat spaces incorrectly, and the % argument can not contain an unmatched {\ttfamily\char`\{} or % {\ttfamily\char`\}}, or a {\ttfamily\char`\%} character.} @@ -207,7 +207,7 @@ % % \DescribeMacro{\newcolumntype} % These preamble specifications may of course be saved using the -% command, "\newcolumntype", defined in {\ttfamily array.sty}. Thus we +% command "\newcolumntype" defined in {\ttfamily array.sty}. Thus we % may say\\ % "\newcolumntype{Y}{>{\small\raggedright\arraybackslash}X}"\\ % and then use {\ttfamily Y} in the {\ttfamily tabularx} preamble @@ -314,7 +314,7 @@ % \footnote{This adds an extra level of grouping, % which is not really needed. Instead, I could use \box0\ here, and % \box2\ below, however the code here would then have to be moved after -% the first line, because of the footnote to page 386 of the \TeX{}Book, +% the first line, because of the footnote to page 386 of the \TeX{}book, % and I do not think I should be writing code that is so obscure as to % be documented in a footnote in an appendix called ``Dirty Tricks''!} % @@ -331,9 +331,9 @@ %\newenvironment{foo}{\tabularx{XX}}{\endtabularx} %\end{verbatim} % The scanner now looks for the end of the current environment ("foo" in -% this example.) There are some restrictions on this usage, the -% principal one being that "\endtabularx" must not be inside any "{ }" pairs -% ao that the code before "\endtabularx" may be extracted and added to the table body +% this example). There are some restrictions on this usage, the +% principal one being that "\endtabularx" must not be inside any "{ }" pairs, +% so that the code before "\endtabularx" may be extracted and added to the table body % (prior to version 2.09 "\endtabularx" had to be % the \emph{first} token of the `end code' of the environment). % \begin{macrocode} @@ -396,7 +396,7 @@ % \changes{v2.09}{2014/04/22}{macro added} % \changes{v2.10}{2014/05/13}{macro modified to test for missing \cs{endtabularx}} % \changes{v2.11}{2016/01/03}{Fix to previous change to guard against empty arg 2. (Ulrike Fischer)} -% split up the end code, and extract the part that lives in the table body. +% Split up the end code, and extract the part that lives in the table body. % \begin{macrocode} \long\def\TX@find@endtabularxa #1\endtabularx#2\endtabularx#3\TX@find@endtabularxa{% @@ -408,7 +408,7 @@ % \begin{macro}{\TX@find@endtabularxb} % \changes{v2.09}{2014/04/22}{macro added} % \changes{v2.10}{2014/05/13}{macro modified to test for missing \cs{endtabularx}} -% split up the end code, and extract the part that lives outside the table body. +% Split up the end code, and extract the part that lives outside the table body. % \begin{macrocode} \long\def\TX@find@endtabularxb #1\endtabularx#2\endtabularx#3\TX@find@endtabularxb{% @@ -502,7 +502,7 @@ \TX@col@width\TX@target \global\TX@cols\@ne % \end{macrocode} -% Typeout some headings (unless this is disabled). +% Type out some headings (unless this is disabled). % \begin{macrocode} \TX@typeout@ {\@spaces Table Width\@spaces Column Width\@spaces X Columns}% @@ -514,7 +514,7 @@ \global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}% % \end{macrocode} % Repeatedly decrease column width until table is the correct width, -% or stops shrinking, or the columns become two narrow. +% or stops shrinking, or the columns become too narrow. % If there are no multicolumn entries, this will only take one attempt. % \begin{macrocode} \loop @@ -601,7 +601,7 @@ \ifdim\dimen@<\TX@delta % \end{macrocode} % If this amount is less than "\TX@delta", stop. ("\TX@delta" -% should be non-zero otherwise we may miss the target due to rounding +% should be non-zero, otherwise we may miss the target due to rounding % error.) % \begin{macrocode} \TX@typeout@{Reached target.}% @@ -621,7 +621,7 @@ \ifdim \dimen@ >\z@ % \end{macrocode} % If the new width would be too narrow, abort the loop. At the moment -% too narrow, means less than 0\,pt! +% too narrow means less than 0\,pt! % % Prior to v2.03, if the loop was aborted here, the X columns were left % with the width of the previous run, but this may make the table far @@ -715,7 +715,7 @@ \expandafter\let\expandafter\endtabularx\csname endtabular*\endcsname % \end{macrocode} % Added at v1.05: disable "\write"s during a trial run. This trick is -% from the \TeX{}Book.\footnote{Actually the \TeX{}Book trick does +% from the \TeX{}book.\footnote{Actually the \TeX{}book trick does % not work correctly, so changed for v2.05.} % \changes{v2.05}{1997/09/18} % {New \cs{write} trick. tools/2607} @@ -789,7 +789,7 @@ % \end{macro} % % \begin{macro}{\TX@typeout} -% The default is to be to be quiet +% The default is to be quiet. % \begin{macrocode} \let\TX@typeout\@gobble \let\TX@typeout@\@gobble @@ -830,7 +830,7 @@ % tabularx}, but that did not stop people using it! This usually put % \LaTeX\ into an irrecoverable error position, with error messages that % did not mention the cause of the error. The `poor man's "\verb"' (and -% "\verb*") defined here is based on page 382 of the \TeX{}Book. As +% "\verb*") defined here is based on page 382 of the \TeX{}book. As % explained there, doing verbatim this way means that spaces are not % treated correctly, and so "\verb*" may well be useless, however I % consider this section of code to be error-recovery, rather than a real @@ -882,10 +882,10 @@ % does not consist of a single "{ }" group. \TeX\ would strip the outer % braces from such a group. The `"!"' will be removed later. % -% Originally I followed Knuth, and had "\def\@tempa{##1}", however this +% Originally I followed Knuth, and had "\def\@tempa{##1}", however, this % did not allow "#" to appear in the argument. So in v1.04, I changed -% this to use a token register, and "\edef". This allows "#" appear, -% but makes each one appear twice!, so later we loop through, replacing +% this to use a token register, and "\edef". This allows "#" to appear +% but makes each one appear twice, so later we loop through, replacing % "##" by "#". % \begin{macrocode} \def\TX@vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}% diff --git a/Master/texmf-dist/source/latex-dev/tools/theorem.dtx b/Master/texmf-dist/source/latex-dev/tools/theorem.dtx index 58476db07ee..e3a8e90b8c2 100644 --- a/Master/texmf-dist/source/latex-dev/tools/theorem.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/theorem.dtx @@ -24,7 +24,7 @@ %% % % -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} % % \ProvidesFile{theorem.dtx}[\FMithmInfo] %\iffalse % this is a METACOMMENT ! @@ -100,7 +100,7 @@ % % \begin{abstract} % The macros described in this paper yield an extension of the -% \LaTeX{} theorem mechanism. It is designed is to satisfy the +% \LaTeX{} theorem mechanism. It is designed to satisfy the % different requirements of various journals. Thus, the % layout of the ``theorems'' can be manipulated by determining a % ``style''. This article describes not only the use, but @@ -226,7 +226,7 @@ % |\theorempreskipamount| and |\theorempostskipamount| define, % respectively, the spacing before and after such an environment. % These parameters apply for all theorem sets and can be manipulated -% with the ordinary length macros. They are rubber lengths, +% with the ordinary length macros. They are rubber lengths % (`\textsf{skips}'), and therefore can contain \texttt{plus} and % \texttt{minus} parts. % @@ -385,7 +385,7 @@ % \section{Definition of the Macros} % % If the file has been loaded before, we abort immediately. If not the -% package announces itself (this is actually done at the very top if +% package announces itself (this is actually done at the very top of % the file---the way it is done isn't good style so don't copy it). % \changes{v2.0e}{89/07/19}{Spaces removed from `typeout'.} % \changes{v2.2b}{95/11/19}{Announce moved to top of file} @@ -546,8 +546,8 @@ % ``non-Big-versions'', we have to avoid offering too many unused % definitions. Therefore we define these styles in separate files % that can be loaded on demand. Thus the commands themselves only -% load these files. We use |\@input@| a \LaTeXe{} internal command -% that ensures that the file will be listed with |\listfiles| +% load these files. We use |\@input@|, a \LaTeXe{} internal command +% that ensures that the file will be listed with |\listfiles|. % \changes{v2.2a}{94/02/02}{Use `@input@ to load theorem layout files} % \begin{macrocode} \gdef\th@plain{\@input@{thp.sty}} diff --git a/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx b/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx index 0085f166ea1..832f80ef3a0 100644 --- a/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx @@ -48,14 +48,14 @@ \pagestyle{myheadings} \title{A New Implementation of \LaTeX{}'s \\ \texttt{verbatim} - and \texttt{verbatim*} Environments.} + and \texttt{verbatim*} Environments} \author{Rainer Sch\"opf\\ \and Bernd Raichle\\ \and Chris Rowley} -\date{2022/07/02} +\date{2023/07/08} \begin{document} \markboth{Verbatim style option}{Verbatim style option} \MaintainedByLaTeXTeam{tools} @@ -434,7 +434,7 @@ % % A further possibility is to define a variant of the |verbatim| % environment that boxes and centers the whole verbatim text. -% Note that the boxed text should be less than a page otherwise you +% Note that the boxed text should be less than a page, otherwise you % have to change this example. % %\begin{verbatim} @@ -706,7 +706,7 @@ % necessary for correct vertical spacing if \texttt{verbatim} % is nested inside \texttt{quote}.} % The following extra vertical space is for compatibility with the -% \LaTeX kernel: otherwise, using the |verbatim| package changes +% \LaTeX{} kernel: otherwise, using the |verbatim| package changes % the vertical spacing of a |verbatim| environment nested within a % |quote| environment. % \begin{macrocode} @@ -790,18 +790,18 @@ \def\@noitemerr{\@warning{No verbatim text}}% % \end{macrocode} % Now we call |\obeylines| to make the end of line character -% active, +% active. % \begin{macrocode} \obeylines % \end{macrocode} -% change the category code of all special characters, +% The category code of all special characters is changed, % to $12$ (other). % \changes{v1.5i}{1996/06/04}{Moved \cs{verbatim@font} after % \cs{dospecials}.} % \begin{macrocode} \let\do\@makeother \dospecials % \end{macrocode} -% and switch to the font to be used. +% We switch to the font to be used. % \begin{macrocode} \verbatim@font % \end{macrocode} @@ -1391,7 +1391,7 @@ % (This token list was inserted after the current macro % by |\verbatim@@@|.) % Since we are still in an |\edef| we protect it -% by means of|\noexpand|. +% by means of |\noexpand|. % \begin{macrocode} \noexpand\verbatim@rescan{\@currenvir}}% % \end{macrocode} @@ -1493,7 +1493,7 @@ \else % \end{macrocode} % At this point we pass the name of the file to |\@addtofilelist| -% so that its appears in the output of a |\listfiles| +% so that it appears in the output of a |\listfiles| % command. % \changes{v1.5j}{1996/09/25}{Add \cs{@addtofilelist} and % \cs{ProvidesFile} so that the name of the file @@ -1579,9 +1579,9 @@ % the contents of |\@filef@und|, we need to save it by expanding it % first. The use of |\@swaptwoargs| makes it so that the % \emph{expansion} of |\@filef@und| gets to be the second argument -% of |\verbatim@readfile|. +% of |\verbatim@readfile|. % \changes{v1.5t}{2020-07-06}{Expand \cs{@filef@und} before the call -% of \cs{@verbatim} (gh/222)}m +% of \cs{@verbatim} (gh/222)} % \begin{macrocode} \def\verbatim@input#1#2{% \IfFileExists {#2}{% @@ -1606,7 +1606,7 @@ % \end{macro} % % -% \subsection{Getting verbatim text into arguments.} +% \subsection{Getting verbatim text into arguments} % % One way of achieving this is to define a macro (command) whose % expansion is the required verbatim text. This command can then be diff --git a/Master/texmf-dist/source/latex-dev/tools/xr.dtx b/Master/texmf-dist/source/latex-dev/tools/xr.dtx index 0dd5f3ad95f..be48f5a01b2 100644 --- a/Master/texmf-dist/source/latex-dev/tools/xr.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/xr.dtx @@ -25,7 +25,7 @@ % %<package>\NeedsTeXFormat{LaTeX2e} %<package>\ProvidesPackage{xr} -%<package> [2020-05-10 v5.06 eXternal References (DPC)] +%<package> [2023-07-04 v5.06 eXternal References (DPC)] % %<*driver> \documentclass{ltxdoc} @@ -74,7 +74,7 @@ % 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. 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 diff --git a/Master/texmf-dist/tex/latex-dev/base/docstrip.tex b/Master/texmf-dist/tex/latex-dev/base/docstrip.tex index fa6dbc7cc18..0cafcd2c109 100644 --- a/Master/texmf-dist/tex/latex-dev/base/docstrip.tex +++ b/Master/texmf-dist/tex/latex-dev/base/docstrip.tex @@ -46,7 +46,7 @@ \def\filename{docstrip.dtx} \def\fileversion{v2.6b} \def\filedate{2022-09-03} -\def\docdate {2022-09-03} +\def\docdate {2023-10-10} %% %% The docstrip program for use with TeX. %% Copyright (C) 1989-1991 Frank Mittelbach diff --git a/Master/texmf-dist/tex/latex-dev/base/latex.ltx b/Master/texmf-dist/tex/latex-dev/base/latex.ltx index 54b3e969575..fe599414688 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latex.ltx +++ b/Master/texmf-dist/tex/latex-dev/base/latex.ltx @@ -707,8 +707,8 @@ %%% From File: ltvers.dtx \def\fmtname{LaTeX2e} \edef\fmtversion - {2023-11-01} -\def\patch@level{-1} + {2024-06-01} +\def\patch@level{0} \edef\development@branch@name{develop \the\year-\the\month-\the\day} \iffalse \def\reserved@a#1/#2/#3\@nil{% @@ -1179,6 +1179,7 @@ \msg_new:nnn { kernel } { unknown-arg-expansion } { Unknown~arg~expansion~"#1" } \ExplSyntaxOff +\def\IfExplAtLeastTF{\@ifl@t@r\ExplLoaderFileDate} %%% From File: ltdefns.dtx \def\two@digits#1{\ifnum#1<10 0\fi\number#1} \protected\long\def\typeout#1{\begingroup @@ -4539,7 +4540,7 @@ %%% From File: lthooks.dtx \def\lthooksversion{v1.1f} -\def\lthooksdate{2023/08/11} +\def\lthooksdate{2023/10/02} \ExplSyntaxOn \bool_new:N \g__hook_debug_bool \cs_new_eq:NN \__hook_debug:n \use_none:n @@ -7611,7 +7612,12 @@ Type H <return> for immediate help.}% \DeclareRobustCommand{\nobreakspace}{% \leavevmode\nobreak\ } \catcode `\~=13 -\def~{\nobreakspace{}} +\protected\edef~{% + \noexpand\ifincsname\noexpand\expandafter\string~% + \noexpand\else + \noexpand\expandafter\noexpand\nobreakspace + \noexpand\fi +} \expandafter\let\expandafter\@xobeysp\csname nobreakspace \endcsname \let\@xobeytab\@xobeysp \def\@{\spacefactor\@m{}}% @@ -11944,8 +11950,8 @@ Type H <return> for immediate help.}% {\IfBooleanTF{#1}{\@kernel@sRef}{\@kernel@Ref}} \def\@currentlabel{} %% File: ltproperties.dtx -\def\ltpropertiesversion{1.0b} -\def\ltpropertiesdate{2023-09-13} +\def\ltpropertiesversion{1.0c} +\def\ltpropertiesdate{2023-10-15} @@ -11963,7 +11969,7 @@ Type H <return> for immediate help.}% } \cs_new_protected:Npn \property_gset:nnnn #1#2#3#4 { - \__property_gset:xnnn { \tl_to_str:n {#1} } + \__property_gset:ennn { \tl_to_str:n {#1} } {#2} {#3} {#4} } \cs_new_protected:Npn \__property_gset:nnnn #1#2#3#4 @@ -11981,20 +11987,22 @@ Type H <return> for immediate help.}% } { \msg_error:nnnn { property } { unknown-setpoint } {#1} {#2} } } -\cs_generate_variant:Nn \__property_gset:nnnn {xnnn} +\cs_generate_variant:Nn \__property_gset:nnnn {ennn} \cs_new_protected:Npn \NewProperty #1#2#3#4 { - \exp_args:Nx \property_new:nnnn {#1}{#2}{#3}{#4} + \protected@edef\reserved@a{#1} + \exp_args:No \property_new:nnnn {\reserved@a} {#2}{#3}{#4} } \cs_new_protected:Npn \SetProperty #1#2#3#4 { - \exp_args:Nx \property_gset:nnnn {#1}{#2}{#3}{#4} + \protected@edef\reserved@a{#1} + \exp_args:No \property_gset:nnnn {\reserved@a} {#2}{#3}{#4} } \cs_new_protected:Npn \property_record:nN #1#2 { \property_record:nV {#1} #2 } \cs_new_protected:Npn \property_record:nn #1#2 - { \__property_record:xn { \tl_to_str:n {#1} } {#2} } -\cs_generate_variant:Nn \property_record:nn { nV , xx } + { \__property_record:en { \tl_to_str:n {#1} } {#2} } +\cs_generate_variant:Nn \property_record:nn { nV , ee, oo } \cs_new_protected:Npn \__property_record:nn #1#2 { \legacy_if:nT { @filesw } @@ -12007,7 +12015,7 @@ Type H <return> for immediate help.}% } } } -\cs_generate_variant:Nn \__property_record:nn { x } +\cs_generate_variant:Nn \__property_record:nn { e } \cs_new:Npn \__property_record_value:n #1 { \__property_record_value_aux:e { \tl_to_str:n {#1} } } \cs_new:Npn \__property_record_value_aux:n #1 @@ -12028,7 +12036,9 @@ Type H <return> for immediate help.}% \NewDocumentCommand\RecordProperties { m m } { \@bsphack - \property_record:xx {#1}{#2} + \protected@edef\reserved@a{#1} + \protected@edef\reserved@b{#2} + \property_record:oo {\reserved@a}{\reserved@b} \@esphack } \flag_new:n { l__property_ref_flag } @@ -12167,16 +12177,19 @@ Type H <return> for immediate help.}% \@latex@warning { Reference~`#1'~on~page~\thepage\space undefined }% } } -\cs_generate_variant:Nn \property_ref_undefined_warn:nn {xx} -\cs_set_eq:NN \RefUndefinedWarn \property_ref_undefined_warn:xx +\cs_generate_variant:Nn \property_ref_undefined_warn:nn {ee} +\cs_set_eq:NN \RefUndefinedWarn \property_ref_undefined_warn:ee \property_new:nnnn { abspage } { shipout } { 0 } { \int_use:N \g_shipout_readonly_int } \property_new:nnnn { page } { shipout } { 0 } { \thepage } \property_new:nnnn { pagenum } { shipout } { 0 } { \the \value { page } } -\property_new:nnnn { currentlabel } { now } { ?? } { \@currentlabel } +\property_new:nnnn { label } { now } { ?? } { \@currentlabel } \property_new:nnnn { title } { now } { \exp_not:n { \textbf { ?? } } } { \@currentlabelname } \property_new:nnnn { target } { now } { } { \@currentHref } +\newcommand\@currentHpage{} +\property_new:nnnn { pagetarget } { shipout } { } { \@currentHpage } + \property_new:nnnn { counter } { now } { } { \@currentcounter } \property_new:nnnn { xpos } { shipout } { 0} { \int_use:N \tex_lastxpos:D } \property_new:nnnn { ypos } { shipout } { 0} { \int_use:N \tex_lastypos:D } @@ -13028,7 +13041,13 @@ Type H <return> for immediate help.}% \long\def\@imakebox[#1][#2]#3{% \@begin@tempboxa\hbox{#3}% \setlength\@tempdima{#1}% support calc - \hb@xt@\@tempdima{\csname bm@#2\endcsname}% + \hb@xt@\@tempdima{% + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #2}% + \else + \csname bm@#2\endcsname + \fi}% \@end@tempboxa} \def\@makepicbox(#1,#2){% \@ifnextchar[{\@imakepicbox(#1,#2)}{\@imakepicbox(#1,#2)[]}} @@ -13119,7 +13138,14 @@ Type H <return> for immediate help.}% \@begin@tempboxa\hbox{#3}% \setlength\@tempdima{#1}% \setbox\@tempboxa\hb@xt@\@tempdima - {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}% + {\kern\fboxsep + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #2}% + \else + \csname bm@#2\endcsname + \fi + \kern\fboxsep}% \@frameb@x{\kern-\fboxrule}% \@end@tempboxa} \def\@frameb@x#1{% @@ -13175,7 +13201,12 @@ Type H <return> for immediate help.}% \else\@pboxswtrue $\vcenter \fi\fi\fi \@parboxto{\let\hss\vss\let\unhbox\unvbox - \csname bm@#3\endcsname}% + \expandafter\ifx\csname bm@#3\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #3}% + \else + \csname bm@#3\endcsname + \fi}% \if@pboxsw \m@th$\fi \@end@tempboxa} \def\@arrayparboxrestore{% diff --git a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty index c8776b66f93..a0a76e124ac 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty +++ b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty @@ -292,7 +292,7 @@ } %%% From File: ltvers.dtx \edef\latexreleaseversion - {2023-11-01} + {2024-06-01} \newif\if@includeinrelease \@includeinreleasefalse \def\IncludeInRelease#1{% @@ -1413,6 +1413,15 @@ of this package available from CTAN} \let\UseName\@undefined \let\ExpandArgs\@undefined \EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\IfExplAtLeastTF}{Test for expl3 date}% +\def\IfExplAtLeastTF{\@ifl@t@r\ExplLoaderFileDate} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\IfExplAtLeastTF}{Test for expl3 date}% + +\def\IfExplAtLeastTF{\@ifl@t@r\ExplLoaderFileDate} +\EndIncludeInRelease %%% From File: ltdefns.dtx \IncludeInRelease{2020/10/01}% {\typeout}{Allow "par" in \typeout}% @@ -4801,7 +4810,7 @@ of this package available from CTAN} %%% From File: lthooks.dtx \def\lthooksversion{v1.1f} -\def\lthooksdate{2023/08/11} +\def\lthooksdate{2023/10/02} \ExplSyntaxOn \NewModuleRelease{2020/10/01}{lthooks} {The~hook~management~system} @@ -9031,6 +9040,19 @@ of this package available from CTAN} \fi} \EndIncludeInRelease \IncludeInRelease{2023/11/01}% + {\tilde}{Protected tilde}% +\protected\edef~{% + \noexpand\ifincsname\noexpand\expandafter\string~% + \noexpand\else + \noexpand\expandafter\noexpand\nobreakspace + \noexpand\fi +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\tilde}{Protected tilde}% +\def~{\nobreakspace{}} +\EndIncludeInRelease +\IncludeInRelease{2023/11/01}% {\@xobeytab}{Obeyed tabs}% \let\@xobeytab\@xobeysp \EndIncludeInRelease @@ -13239,8 +13261,8 @@ of this package available from CTAN} \EndIncludeInRelease %% File: ltproperties.dtx -\def\ltpropertiesversion{1.0b} -\def\ltpropertiesdate{2023-09-13} +\def\ltpropertiesversion{1.0c} +\def\ltpropertiesdate{2023-10-15} @@ -13260,7 +13282,7 @@ of this package available from CTAN} } \cs_new_protected:Npn \property_gset:nnnn #1#2#3#4 { - \__property_gset:xnnn { \tl_to_str:n {#1} } + \__property_gset:ennn { \tl_to_str:n {#1} } {#2} {#3} {#4} } \cs_new_protected:Npn \__property_gset:nnnn #1#2#3#4 @@ -13278,20 +13300,22 @@ of this package available from CTAN} } { \msg_error:nnnn { property } { unknown-setpoint } {#1} {#2} } } -\cs_generate_variant:Nn \__property_gset:nnnn {xnnn} +\cs_generate_variant:Nn \__property_gset:nnnn {ennn} \cs_new_protected:Npn \NewProperty #1#2#3#4 { - \exp_args:Nx \property_new:nnnn {#1}{#2}{#3}{#4} + \protected@edef\reserved@a{#1} + \exp_args:No \property_new:nnnn {\reserved@a} {#2}{#3}{#4} } \cs_new_protected:Npn \SetProperty #1#2#3#4 { - \exp_args:Nx \property_gset:nnnn {#1}{#2}{#3}{#4} + \protected@edef\reserved@a{#1} + \exp_args:No \property_gset:nnnn {\reserved@a} {#2}{#3}{#4} } \cs_new_protected:Npn \property_record:nN #1#2 { \property_record:nV {#1} #2 } \cs_new_protected:Npn \property_record:nn #1#2 - { \__property_record:xn { \tl_to_str:n {#1} } {#2} } -\cs_generate_variant:Nn \property_record:nn { nV , xx } + { \__property_record:en { \tl_to_str:n {#1} } {#2} } +\cs_generate_variant:Nn \property_record:nn { nV , ee, oo } \cs_new_protected:Npn \__property_record:nn #1#2 { \legacy_if:nT { @filesw } @@ -13304,7 +13328,7 @@ of this package available from CTAN} } } } -\cs_generate_variant:Nn \__property_record:nn { x } +\cs_generate_variant:Nn \__property_record:nn { e } \cs_new:Npn \__property_record_value:n #1 { \__property_record_value_aux:e { \tl_to_str:n {#1} } } \cs_new:Npn \__property_record_value_aux:n #1 @@ -13325,7 +13349,9 @@ of this package available from CTAN} \NewDocumentCommand\RecordProperties { m m } { \@bsphack - \property_record:xx {#1}{#2} + \protected@edef\reserved@a{#1} + \protected@edef\reserved@b{#2} + \property_record:oo {\reserved@a}{\reserved@b} \@esphack } \flag_new:n { l__property_ref_flag } @@ -13464,16 +13490,19 @@ of this package available from CTAN} \@latex@warning { Reference~`#1'~on~page~\thepage\space undefined }% } } -\cs_generate_variant:Nn \property_ref_undefined_warn:nn {xx} -\cs_set_eq:NN \RefUndefinedWarn \property_ref_undefined_warn:xx +\cs_generate_variant:Nn \property_ref_undefined_warn:nn {ee} +\cs_set_eq:NN \RefUndefinedWarn \property_ref_undefined_warn:ee \property_new:nnnn { abspage } { shipout } { 0 } { \int_use:N \g_shipout_readonly_int } \property_new:nnnn { page } { shipout } { 0 } { \thepage } \property_new:nnnn { pagenum } { shipout } { 0 } { \the \value { page } } -\property_new:nnnn { currentlabel } { now } { ?? } { \@currentlabel } +\property_new:nnnn { label } { now } { ?? } { \@currentlabel } \property_new:nnnn { title } { now } { \exp_not:n { \textbf { ?? } } } { \@currentlabelname } \property_new:nnnn { target } { now } { } { \@currentHref } +\newcommand\@currentHpage{} +\property_new:nnnn { pagetarget } { shipout } { } { \@currentHpage } + \property_new:nnnn { counter } { now } { } { \@currentcounter } \property_new:nnnn { xpos } { shipout } { 0} { \int_use:N \tex_lastxpos:D } \property_new:nnnn { ypos } { shipout } { 0} { \int_use:N \tex_lastypos:D } @@ -14315,6 +14344,28 @@ of this package available from CTAN} {\@ifnextchar[\@makebox\mbox}}% \expandafter\let\csname makebox \endcsname\@undefined \EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\@imakebox}{Unknown alignment warning}% +\long\def\@imakebox[#1][#2]#3{% + \@begin@tempboxa\hbox{#3}% + \setlength\@tempdima{#1}% support calc + \hb@xt@\@tempdima{% + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #2}% + \else + \csname bm@#2\endcsname + \fi}% + \@end@tempboxa} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@imakebox}{Unknown alignment warning}% +\long\def\@imakebox[#1][#2]#3{% + \@begin@tempboxa\hbox{#3}% + \setlength\@tempdima{#1}% support calc + \hb@xt@\@tempdima{\csname bm@#2\endcsname}% + \@end@tempboxa} +\EndIncludeInRelease \IncludeInRelease{2020/10/01}% {\@imakepicbox}{default units}% \long\def\@imakepicbox(#1,#2)[#3]#4{% @@ -14399,6 +14450,35 @@ of this package available from CTAN} \@framepicbox{\@ifnextchar[\@framebox\fbox}}% \expandafter\let\csname framebox \endcsname\@undefined \EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\@iframebox}{Unknown alignment warning}% +\long\def\@iframebox[#1][#2]#3{% + \leavevmode + \@begin@tempboxa\hbox{#3}% + \setlength\@tempdima{#1}% + \setbox\@tempboxa\hb@xt@\@tempdima + {\kern\fboxsep + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #2}% + \else + \csname bm@#2\endcsname + \fi + \kern\fboxsep}% + \@frameb@x{\kern-\fboxrule}% + \@end@tempboxa} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@iframebox}{Unknown alignment warning}% +\long\def\@iframebox[#1][#2]#3{% + \leavevmode + \@begin@tempboxa\hbox{#3}% + \setlength\@tempdima{#1}% + \setbox\@tempboxa\hb@xt@\@tempdima + {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}% + \@frameb@x{\kern-\fboxrule}% + \@end@tempboxa} +\EndIncludeInRelease \IncludeInRelease{2015/01/01}% {\parbox}{Make \parbox robust}% \DeclareRobustCommand\parbox{% @@ -14414,6 +14494,53 @@ of this package available from CTAN} {\@iiiparbox c\relax[s]}}% \expandafter\let\csname parbox \endcsname\@undefined \EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\@iiiparbox}{Unknown alignment warning}% +\long\def\@iiiparbox#1#2[#3]#4#5{% + \leavevmode + \@pboxswfalse + \setlength\@tempdima{#4}% + \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}% + \ifx\relax#2\else + \setlength\@tempdimb{#2}% + \edef\@parboxto{to\the\@tempdimb}% + \fi + \if#1b\vbox + \else\if #1t\vtop + \else\ifmmode\vcenter + \else\@pboxswtrue $\vcenter + \fi\fi\fi + \@parboxto{\let\hss\vss\let\unhbox\unvbox + \expandafter\ifx\csname bm@#3\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #3}% + \else + \csname bm@#3\endcsname + \fi}% + \if@pboxsw \m@th$\fi + \@end@tempboxa} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@iiiparbox}{Unknown alignment warning}% +\long\def\@iiiparbox#1#2[#3]#4#5{% + \leavevmode + \@pboxswfalse + \setlength\@tempdima{#4}% + \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}% + \ifx\relax#2\else + \setlength\@tempdimb{#2}% + \edef\@parboxto{to\the\@tempdimb}% + \fi + \if#1b\vbox + \else\if #1t\vtop + \else\ifmmode\vcenter + \else\@pboxswtrue $\vcenter + \fi\fi\fi + \@parboxto{\let\hss\vss\let\unhbox\unvbox + \csname bm@#3\endcsname}% + \if@pboxsw \m@th$\fi + \@end@tempboxa} +\EndIncludeInRelease \IncludeInRelease{2017-04-15}% {\normallineskiplimit} {reset \lineskiplimit}% diff --git a/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls b/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls index f0f1479cac5..5f731af7ae8 100644 --- a/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls +++ b/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls @@ -30,7 +30,7 @@ \seq_if_empty:NF \g__codedoc_nested_names_seq { % This is a crude change: we grab the first name - \__codedoc_get_hyper_target:xN + \__codedoc_get_hyper_target:eN { \seq_item:Nn \g__codedoc_nested_names_seq { 1 } } \l__codedoc_tmpa_tl % ... and check if it has a reference diff --git a/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx b/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx index 4cfc1c4d1f8..d782bcd647e 100644 --- a/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx +++ b/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx @@ -34,8 +34,8 @@ %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. -\def\LaTeXFirstAidDate{2023/07/18} -\def\LaTeXFirstAidVersion{v1.1a} +\def\LaTeXFirstAidDate{2023/09/20} +\def\LaTeXFirstAidVersion{v1.1b} \ProvidesFile{latex2e-first-aid-for-external-files.ltx} [\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space LaTeX kernel fixes to external files and packages] @@ -167,6 +167,8 @@ \ngermanTeX }% } +\AddToHook{file/underscore.sty/after}[firstaid]{% + \FirstAidNeededT{underscore}{sty}{2006/09/13}{\RequirePackage{underscore-ltx}}} \endinput %% %% End of file `latex2e-first-aid-for-external-files.ltx'. diff --git a/Master/texmf-dist/tex/latex-dev/firstaid/underscore-ltx.sty b/Master/texmf-dist/tex/latex-dev/firstaid/underscore-ltx.sty new file mode 100644 index 00000000000..3a0df981742 --- /dev/null +++ b/Master/texmf-dist/tex/latex-dev/firstaid/underscore-ltx.sty @@ -0,0 +1,56 @@ +%% +%% This is file `underscore-ltx.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex2e-first-aid-for-external-files.dtx (with options: `underscore-ltx') +%% +%% 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) 2020-2023 +%% The LaTeX Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file was generated from file(s) of the Standard LaTeX `First Aid 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 +%% `First Aid Bundle'. You may however distribute the LaTeX `First Aid Bundle' +%% without such generated files. +%% +%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2023 +%% +%% The LaTeX Project and any individual authors listed elsewhere +%% in this file. +\ProvidesPackage{underscore-ltx}[2023/09/20 LaTeX firstaid to make underscore protected ] +\begingroup + \catcode`\_=\active + \protected\gdef _{% + \ifincsname % + \string_% + \else + \ifx\protect\@typeset@protect + \ifmmode \sb \else \BreakableUnderscore \fi + \else + \ifx\protect\@unexpandable@protect \noexpand_% + \else \protect_% + \fi\fi + \fi + } + \global\let\ActiveUnderscore=_ +\endgroup +\endinput +%% +%% End of file `underscore-ltx.sty'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx index 858853ed3f6..b8d2878c302 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx @@ -33,8 +33,8 @@ %% %% %% File: latex-lab-graphic.dtx (C) Copyright 2022-2023 LaTeX Project -\def\ltlabgraphicdate{2023-07-20} -\def\ltlabgraphicversion{0.80a} +\def\ltlabgraphicdate{2023-10-13} +\def\ltlabgraphicversion{0.80b} \ProvidesFile{graphic-latex-lab-testphase.ltx} [\ltlabgraphicdate\space v\ltlabgraphicversion\space latex-lab wrapper graphic] diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx index c7615b453b9..38876d0c908 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx @@ -58,8 +58,6 @@ \bool_set_true:N \l__fnote_autodetect_bool \tl_new:N \l__fnote_currentstruct_tl \tl_set:Nn \l__fnote_currentstruct_tl {1} -\cs_generate_variant:Nn \ref_value:nn { Vn } -\cs_generate_variant:Nn \prop_gput:Nnn {cxn} \cs_generate_variant:Nn \hook_gput_code:nnn{nne} \cs_generate_variant:Nn \tag_struct_use:n {e} \cs_new_protected:Npn \fnote_step_fnmark:nn #1#2 { @@ -371,14 +369,14 @@ \bool_set_false:N \l_fnote_link_bool } } -\ref_attribute_gset:nnnn {fnote/struct}{1}{now}{\l__fnote_currentstruct_tl} -\cs_new_protected:Npn \__fnote_label_hook:n #1 {} -\AddToHookWithArguments{label}{ \__fnote_label_hook:n{#1}} +\property_new:nnnn {fnote/struct}{now}{1}{\l__fnote_currentstruct_tl} +\cs_new_protected:Npn \__fnote_label_hook:e #1 {} +\AddToHookWithArguments{label}{ \__fnote_label_hook:e{#1}} \AddToHook{fntext/begin} { - \cs_set_protected:Npn \__fnote_label_hook:n #1 + \cs_set_protected:Npn \__fnote_label_hook:e #1 { - \ref_label:nn {#1} {fnote/struct} + \property_record:ee {__fnote/#1} {fnote/struct} } } \cs_new_protected:Npn \fnote_class_new:nn #1 #2 % #1 name, #2 options @@ -389,7 +387,7 @@ \fnote_class_new:nn {default}{} \cs_new_protected:Npn \fnote_mark_gput:nn #1 #2 % #1 the representation of the mark, #2 type { - \prop_gput:cxn { g__fnote_currentmarks_ #2 _prop } + \prop_gput:cen { g__fnote_currentmarks_ #2 _prop } { \tag_get:n{struct_num} } { #1 } } @@ -416,16 +414,16 @@ \bool_if:NTF \l__fnote_autodetect_bool { \fnote_mark_gput:oo {\@thefnmark}{\l_fnote_type_tl} - \tl_set:Nx \l__fnote_linktarget_tl {footnote*.\tag_get:n{struct_num}} + \tl_set:Ne \l__fnote_linktarget_tl {footnote*.\tag_get:n{struct_num}} } { \hook_gput_code:nne {tagpdf/finish/before} {tagpdf/footnote} { \exp_not:N\fnote_gput_refs:ee { \tag_get:n{struct_num} } - { \ref_value:Vn\l__fnote_currentlabel_tl {fnote/struct} } + { \property_ref:ee{ __fnote/\l__fnote_currentlabel_tl } {fnote/struct} } } - \tl_set:Nx \l__fnote_linktarget_tl {footnote*.\ref_value:Vn\l__fnote_currentlabel_tl {fnote/struct}} + \tl_set:Ne \l__fnote_linktarget_tl {footnote*.\property_ref:ee {__fnote/\l__fnote_currentlabel_tl} {fnote/struct}} } \tag_mc_begin:n{tag=Lbl} % @@ -470,7 +468,7 @@ { \tag_struct_begin:n { tag=footnote,parent=\l__fnote_dflt_struct_tl } } - \tl_set:Nx \l__fnote_currentstruct_tl { \tag_get:n{struct_num} } + \tl_set:Ne \l__fnote_currentstruct_tl { \tag_get:n{struct_num} } \tag_struct_begin:n { tag=footnotelabel }\tag_struct_end: \bool_if:NTF \l__fnote_autodetect_bool { diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty index 14294ee125a..f2c99285c91 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty @@ -34,8 +34,8 @@ %% %% %% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2023 LaTeX Project -\def\ltlabkerneldate{2023-07-20} -\def\ltlabkernelversion{0.85a} +\def\ltlabkerneldate{2023-10-16} +\def\ltlabkernelversion{0.85b} \ProvidesPackage{latex-lab-kernel-changes} [\ltlabkerneldate\space v\ltlabkernelversion\space General kernel and class changes] @@ -77,9 +77,21 @@ \def\toclevel@subparagraph{5} \def\toclevel@figure{1} \def\toclevel@table{1} +\ExplSyntaxOn +\AddToHookWithArguments{cmd/MakeLinkTarget/after} + { + \tag_if_active:T + { + \tl_if_blank:VF \@currentHref + { + \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} + } + } + } +\ExplSyntaxOff %% File: latex-lab-sec.dtx (C) Copyright 2022-2023 LaTeX Project -\def\ltlabsecdate{2023-07-20} -\def\ltlabsecversion{0.84a} +\def\ltlabsecdate{2023-10-16} +\def\ltlabsecversion{0.84b} \ifdefined\directlua \ifnum\outputmode > 0 \pdfvariable gentounicode =1 diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx index 1b96a15a65f..1ced324bb10 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx @@ -83,7 +83,6 @@ \tagmcbegin{} % restart P-chunk (whatsits in pdftex) } } - } } @@ -299,7 +298,6 @@ { $ } } { - \bool_set_true:N \l__math_collected_bool \__math_grab_inline:w } } % \( diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty index b8c4bdb6989..19aed304798 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty @@ -33,18 +33,15 @@ %% %% %% File: latex-lab-graphic.dtx (C) Copyright 2022-2023 LaTeX Project -\def\ltlabgraphicdate{2023-07-20} -\def\ltlabgraphicversion{0.80a} +\def\ltlabgraphicdate{2023-10-13} +\def\ltlabgraphicversion{0.80b} \ProvidesExplPackage {latex-lab-testphase-graphic} {\ltlabgraphicdate} {\ltlabgraphicversion} {Code related to the tagging of graphics} \RequirePackage{l3opacity} -\ref_attribute_gset:nnnn{xpos}{0}{shipout}{\int_use:N\tex_lastxpos:D} -\ref_attribute_gset:nnnn{ypos}{0}{shipout}{\int_use:N\tex_lastypos:D} - \cs_new_protected:Npn\__tag_graphic_savepos:n #1 { \tex_savepos:D - \ref_label:nn{#1}{xpos,ypos,abspage} + \property_record:nn{#1}{xpos,ypos,abspage} \tex_savepos:D } \cs_generate_variant:Nn \__tag_graphic_savepos:n {e} @@ -107,8 +104,8 @@ { \tl_if_empty:NT\l__tag_graphic_alt_tl { - \msg_warning:nnx{tag}{alt-text-missing}{\l__tag_graphic_alt_dflt_tl} - \tl_set:Nx\l__tag_graphic_alt_tl {\l__tag_graphic_alt_dflt_tl} + \msg_warning:nne{tag}{alt-text-missing}{\l__tag_graphic_alt_dflt_tl} + \tl_set:Ne\l__tag_graphic_alt_tl {\l__tag_graphic_alt_dflt_tl} } \tag_struct_begin:n { @@ -198,7 +195,7 @@ } \AddToHook{package/graphicx/after}[latex-lab] { - \define@key{Gin}{alt} {\tl_set:Nx\l__tag_graphic_alt_tl{\text_purify:n{#1}}} + \define@key{Gin}{alt} {\tl_set:Ne\l__tag_graphic_alt_tl{\text_purify:n{#1}}} \define@key{Gin}{artifact}[] { \bool_set_true:N \l__tag_graphic_artifact_bool @@ -206,7 +203,7 @@ } \define@key{Gin}{actualtext} { - \tl_set:Nx\l__tag_graphic_actual_tl{\text_purify:n{#1}} + \tl_set:Ne\l__tag_graphic_actual_tl{\text_purify:n{#1}} \bool_set_false:N \l__tag_graphic_BBox_bool } \define@key{Gin}{correct-BBox} @@ -233,7 +230,7 @@ \keys_define:nn{tag/picture} { ,alt .code:n = - {\tl_set:Nx\l__tag_graphic_alt_tl{\text_purify:n{#1}}} + {\tl_set:Ne\l__tag_graphic_alt_tl{\text_purify:n{#1}}} ,artifact .code:n = { \bool_set_true:N \l__tag_graphic_artifact_bool @@ -241,7 +238,7 @@ } ,actualtext .code:n = { - \tl_set:Nx\l__tag_graphic_actual_tl{\text_purify:n{#1}} + \tl_set:Ne\l__tag_graphic_actual_tl{\text_purify:n{#1}} \bool_set_false:N \l__tag_graphic_BBox_bool } ,correct-BBox .code:n = @@ -286,7 +283,12 @@ } \cs_new_protected:Npn \__tag_graphic_get_scale: { - \fp_set:Nn \l__tag_graphic_scale_fp { \Gin@scalex } + \fp_set:Nn \l__tag_graphic_scale_fp + { + \str_if_eq:eeTF {\Gin@scalex} { ! } + { \Gin@scaley } + { \Gin@scalex } + } } \cs_new_protected:Npn \__tag_graphic_applyangle:nnnn #1#2#3#4 %lx,ly,ux,uy { @@ -327,7 +329,7 @@ (\l__tag_graphic_uy_fp-\l__tag_graphic_ly_fp-\l__tag_graphic_trim_ly_fp) * (-\l__tag_graphic_sin_fp) } - \tl_gset:Nx\g__tag_graphic_lx_tl + \tl_gset:Ne\g__tag_graphic_lx_tl { \fp_eval:n { @@ -342,7 +344,7 @@ +\l__tag_graphic_trim_lx_fp } } - \tl_gset:Nx\g__tag_graphic_ux_tl + \tl_gset:Ne\g__tag_graphic_ux_tl { \fp_eval:n { @@ -383,7 +385,7 @@ (\l__tag_graphic_uy_fp-\l__tag_graphic_ly_fp-\l__tag_graphic_trim_ly_fp) * \l__tag_graphic_cos_fp } - \tl_gset:Nx\g__tag_graphic_ly_tl + \tl_gset:Ne\g__tag_graphic_ly_tl { \fp_eval:n { @@ -397,7 +399,7 @@ + \l__tag_graphic_ly_fp + \l__tag_graphic_trim_ly_fp } } - \tl_gset:Nx\g__tag_graphic_uy_tl + \tl_gset:Ne\g__tag_graphic_uy_tl { \fp_eval:n { @@ -418,7 +420,7 @@ { \bool_if:NT\l__tag_graphic_bboxcorr_bool { - \tl_set:Nx #1 + \tl_set:Ne #1 { \fp_eval:n { @@ -427,7 +429,7 @@ \dim_to_decimal_in_bp:n {\seq_item:Nn \l__tag_graphic_bboxcorr_seq {1} } } } - \tl_set:Nx #2 + \tl_set:Ne #2 { \fp_eval:n { @@ -436,7 +438,7 @@ \dim_to_decimal_in_bp:n {\seq_item:Nn \l__tag_graphic_bboxcorr_seq {2} } } } - \tl_set:Nx #3 + \tl_set:Ne #3 { \fp_eval:n { @@ -445,7 +447,7 @@ \dim_to_decimal_in_bp:n {\seq_item:Nn \l__tag_graphic_bboxcorr_seq {3} } } } - \tl_set:Nx #4 + \tl_set:Ne #4 { \fp_eval:n { @@ -465,22 +467,22 @@ {\l__tag_graphic_BBox_bool} } { - \fp_set:Nn \l__tag_graphic_scale_fp { \Gin@scalex } + \__tag_graphic_get_scale: \__tag_graphic_get_trim: \int_gincr:N\g__tag_graphic_int - \tl_set:Nx\l__tag_graphic_currentlabel_tl {__tag_graphic_\int_use:N \g__tag_graphic_int} + \tl_set:Ne\l__tag_graphic_currentlabel_tl {__tag_graphic_\int_use:N \g__tag_graphic_int} \__tag_graphic_savepos:e { \l__tag_graphic_currentlabel_tl } - \tl_gset:Nx\g__tag_graphic_lx_tl + \tl_gset:Ne\g__tag_graphic_lx_tl { \dim_to_decimal_in_bp:n - { \__tag_ref_value:enn {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp } + { \property_ref:een {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp } } - \tl_gset:Nx\g__tag_graphic_ly_tl + \tl_gset:Ne\g__tag_graphic_ly_tl { \dim_to_decimal_in_bp:n - { \__tag_ref_value:enn {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp } + { \property_ref:een {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp } } - \tl_gset:Nx\g__tag_graphic_ux_tl + \tl_gset:Ne\g__tag_graphic_ux_tl { \fp_eval:n { @@ -489,7 +491,7 @@ \dim_to_decimal_in_bp:n { \Gin@req@width } } } - \tl_gset:Nx\g__tag_graphic_uy_tl + \tl_gset:Ne\g__tag_graphic_uy_tl { \fp_eval:n { @@ -500,7 +502,7 @@ } \legacy_if:nF {Gin@clip} { - \tl_gset:Nx\g__tag_graphic_ux_tl + \tl_gset:Ne\g__tag_graphic_ux_tl { \fp_eval:n { @@ -509,7 +511,7 @@ \l__tag_graphic_trim_ux_fp } } - \tl_gset:Nx\g__tag_graphic_lx_tl + \tl_gset:Ne\g__tag_graphic_lx_tl { \fp_eval:n { @@ -518,7 +520,7 @@ \l__tag_graphic_trim_lx_fp } } - \tl_gset:Nx\g__tag_graphic_uy_tl + \tl_gset:Ne\g__tag_graphic_uy_tl { \fp_eval:n { @@ -527,7 +529,7 @@ \l__tag_graphic_trim_uy_fp } } - \tl_gset:Nx\g__tag_graphic_ly_tl + \tl_gset:Ne\g__tag_graphic_ly_tl { \fp_eval:n { @@ -583,26 +585,26 @@ } { \int_gincr:N\g__tag_graphic_int - \tl_set:Nx\l__tag_graphic_currentlabel_tl {__tag_graphic_\int_use:N \g__tag_graphic_int} + \tl_set:Ne\l__tag_graphic_currentlabel_tl {__tag_graphic_\int_use:N \g__tag_graphic_int} \__tag_graphic_savepos:e { \l__tag_graphic_currentlabel_tl } - \tl_gset:Nx \g__tag_graphic_lx_tl + \tl_gset:Ne \g__tag_graphic_lx_tl { \dim_to_decimal_in_bp:n - { \__tag_ref_value:enn {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp } + { \property_ref:een {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp } } - \tl_gset:Nx \g__tag_graphic_ly_tl + \tl_gset:Ne \g__tag_graphic_ly_tl { \dim_to_decimal_in_bp:n - { \__tag_ref_value:enn {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp - \dp\@picbox } + { \property_ref:een {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp - \dp\@picbox } } - \tl_gset:Nx \g__tag_graphic_ux_tl + \tl_gset:Ne \g__tag_graphic_ux_tl { \dim_to_decimal_in_bp:n { \g__tag_graphic_lx_tl bp + \wd\@picbox } } - \tl_gset:Nx \g__tag_graphic_uy_tl + \tl_gset:Ne \g__tag_graphic_uy_tl { \dim_to_decimal_in_bp:n { @@ -675,7 +677,7 @@ \int_compare:nNnT {\g_shipout_readonly_int} = - {\__tag_ref_value:enn{__tag_graphic_#6}{abspage}{0}} + {\property_ref:een{__tag_graphic_#6}{abspage}{0}} { \put (#1 bp,\dim_eval:n{-\paperheight + \dim_eval:n{#2 bp}}) diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty index 7bed296b11b..1f8c5eb5b42 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty @@ -33,8 +33,8 @@ %% %% %% File: latex-lab-minipage.dtx (C) Copyright 2023 LaTeX Project -\def\ltlabminipagedate{2023-08-20} -\def\ltlabminipageversion{0.81b} +\def\ltlabminipagedate{2023-10-30} +\def\ltlabminipageversion{0.81c} \ProvidesExplPackage {latex-lab-testphase-minipage} {\ltlabminipagedate} {\ltlabminipageversion} {Code related to the tagging of minipages and parboxes} @@ -43,24 +43,24 @@ \def\@kernel@init@minipage{} \def\@kernel@init@parbox{} -\def\@kernel@before@minipage{} -\def\@kernel@after@minipage{} -\def\@kernel@before@parbox{} -\def\@kernel@after@parbox{} +\socket_new:nn {tagsupport/minipage/before}{0} +\socket_new:nn {tagsupport/minipage/after} {0} +\socket_new:nn {tagsupport/parbox/before} {0} +\socket_new:nn {tagsupport/parbox/after}{0} \def\@iiiminipage#1#2[#3]#4{% \@kernel@init@minipage \leavevmode \@pboxswfalse \setlength\@tempdima{#4}% \def\@mpargs{{#1}{#2}[#3]{#4}}% - \@kernel@before@minipage% new + \socket_use:n{tagsupport/minipage/before}% new \setbox\@tempboxa\vbox\bgroup \color@begingroup \hsize\@tempdima \textwidth\hsize \columnwidth\hsize \@parboxrestore \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@ - \AssignSocketPlug{fntext/process}{mp}% + \socket_assign_plug:nn{fntext/process}{mp}% \let\@listdepth\@mplistdepth \@mplistdepth\z@ \@minipagerestore \@setminipage} @@ -79,14 +79,14 @@ \tag_stop:n{minipage} \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}% \tag_start:n{minipage} - \@kernel@after@minipage%new end ... + \socket_use:n{tagsupport/minipage/after} %new end ... } \long\def\@iiiparbox#1#2[#3]#4#5{% \@kernel@init@parbox \leavevmode \@pboxswfalse \setlength\@tempdima{#4}% - \@kernel@before@parbox% new + \socket_use:n{tagsupport/parbox/before} \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}% \ifx\relax#2\else \setlength\@tempdimb{#2}% @@ -101,20 +101,27 @@ \csname bm@#3\endcsname}% \if@pboxsw \m@th$\fi \@end@tempboxa% - \@kernel@after@parbox%new end + \socket_use:n{tagsupport/parbox/after} } \tl_new:N \l__ltboxes_tag_tl \tl_set:Nn \l__ltboxes_tag_tl {Div} -\cs_set_protected:Npn\@kernel@before@minipage +\socket_new_plug:nnn{tagsupport/minipage/before}{tag/dflt} { \tag_mc_end_push:\tag_struct_end: - \tag_struct_begin:n{tag=\l__ltboxes_tag_tl}} -\cs_set_protected:Npn\@kernel@after@minipage + \tag_struct_begin:n{tag=\l__ltboxes_tag_tl} + } +\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{}} -\cs_set_protected:Npn\@kernel@before@parbox + +\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}} -\cs_set_protected:Npn\@kernel@after@parbox + +\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{}} +\socket_assign_plug:nn{tagsupport/minipage/before}{tag/dflt} +\socket_assign_plug:nn{tagsupport/minipage/after} {tag/dflt} +\socket_assign_plug:nn{tagsupport/parbox/before} {tag/dflt} +\socket_assign_plug:nn{tagsupport/parbox/after} {tag/dflt} \endinput %% diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty index 7ff5295cce7..9e98894969c 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty @@ -33,8 +33,8 @@ %% %% %% File: latex-lab-sec.dtx (C) Copyright 2022-2023 LaTeX Project -\def\ltlabsecdate{2023-07-20} -\def\ltlabsecversion{0.84a} +\def\ltlabsecdate{2023-10-16} +\def\ltlabsecversion{0.84b} \ProvidesExplPackage {latex-lab-testphase-sec} {\ltlabsecdate} {\ltlabsecversion} {Code related to the tagging of sectioning commands} \RequirePackage{latex-lab-kernel-changes} @@ -215,11 +215,6 @@ } { \MakeLinkTarget[chapter]{} - %todo public function for this update! - \tl_if_blank:VF \@currentHref - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } } \IfBooleanTF {#1} @@ -258,10 +253,6 @@ } { \MakeLinkTarget[part]{} - \tl_if_blank:VF \@currentHref - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } } \IfBooleanTF {#1} @@ -273,18 +264,14 @@ } \def\hyper@nopatch@sectioning{} \cs_new_protected:Npn \@hyp@section@target@nnn #1 #2 #3 %#1 optarg #2 name/counter, #3 indent - { - \makebox[0pt][l] + { + \makebox[0pt][l] { \skip_set:Nn \@tempskipa {#3} \dim_compare:nNnF {\@tempskipa}<{0pt}{\kern-\@tempskipa} \MakeLinkTarget#1{#2} } - \tl_if_blank:VF \@currentHref - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } - } + } \def\@startsection#1#2#3#4#5#6{% \if@noskipsec \leavevmode \fi \par diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty new file mode 100644 index 00000000000..e6c89d16715 --- /dev/null +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty @@ -0,0 +1,977 @@ +%% +%% This is file `latex-lab-testphase-table.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-table.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright 2021-2023 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab 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 +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-table.dtx (C) Copyright 2023 LaTeX Project +\def\ltlabtbldate{2023-10-30} +\def\ltlabtblversion{0.85d} +\ProvidesExplPackage {latex-lab-testphase-table} {\ltlabtbldate} {\ltlabtblversion} + {Code related to the tagging of tables} +\RequirePackage{array} +\tl_new:N \l__tbl_celltag_tl +\tl_set:Nn \l__tbl_celltag_tl {TD} +\tl_new:N \l__tbl_rowtag_tl +\tl_set:Nn \l__tbl_rowtag_tl {TR} +\tl_new:N \l__tbl_cellattribute_tl +\tl_set:Nn \l__tbl_cellattribute_tl {} +\tl_new:N \l__tbl_rowattribute_tl +\tl_set:Nn \l__tbl_rowattribute_tl {} +\int_new:N \g__tbl_missing_cells_int +\clist_new:N \l__tbl_tmpa_clist +\seq_new:N \l__tbl_tmpa_seq +\tl_new:N \l__tbl_tmpa_tl +\NewSocket{tagsupport/tblcell/begin}{0} +\NewSocket{tagsupport/tblcell/end}{0} +\NewSocket{tagsupport/tblrow/begin}{0} +\NewSocket{tagsupport/tblrow/end}{0} +\NewSocket{tagsupport/tbl/init}{0} +\NewSocket{tagsupport/tbl/finalize}{0} +\NewSocket{tagsupport/tbl/finalize/longtable}{0} +\NewSocket{tagsupport/tblhmode/begin}{0} +\NewSocket{tagsupport/tblhmode/end}{0} +\NewSocket{tagsupport/tblvmode/begin}{0} +\NewSocket{tagsupport/tblvmode/end}{0} +\NewSocketPlug{tagsupport/tblcell/begin}{TD} + { + \tag_struct_begin:n + { + tag =\l__tbl_celltag_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 } + { + \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} } + } + \tag_mc_begin:n{} + } +\NewSocketPlug{tagsupport/tblcell/end}{TD} + { + \tag_mc_end: + \tag_struct_end: + } +\NewSocketPlug{tagsupport/tblcell/begin}{TDpbox} + { + \tag_struct_begin:n + { + tag =\l__tbl_celltag_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 } + { + \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} + } +\NewSocketPlug{tagsupport/tblcell/end}{TDpbox} + { + \tag_struct_end: + } +\NewSocketPlug{tagsupport/tblrow/begin}{TR} + { + \seq_gclear:N \g__tbl_struct_cur_seq + \tag_struct_begin:n + { + tag =\l__tbl_rowtag_tl, + attribute-class=\l__tbl_rowattribute_tl + } + \seq_gput_right:Ne \g__tbl_struct_rows_seq { \tag_get:n {struct_num} } + } +\NewSocketPlug{tagsupport/tblrow/end}{TR} + { + \__tag_tbl_add_missing_cells:n { \g__tbl_missing_cells_int } + \seq_gput_right:Ne \g__tbl_struct_cells_seq + { + \seq_use:Nn \g__tbl_struct_cur_seq {,} + } + \int_compare:nNnTF { \g__tbl_row_int } = { \seq_count:N\g__tbl_struct_cells_seq } + { + \typeout + {==>~ + stucture~stored~for~row~\int_use:N\g__tbl_row_int :~ + \seq_use:Nn \g__tbl_struct_cur_seq {,} + } + } + { \ERROR } % should not happen ... + \tag_struct_end: + } +\NewSocketPlug{tagsupport/tbl/init}{Table} + { + \tag_if_active:T + { + \bool_set_false:N \l__tag_para_bool + } + } +\NewSocketPlug{tagsupport/tbl/finalize}{Table} + { + \__tbl_set_header_rows: + } +\NewSocketPlug{tagsupport/tbl/finalize/longtable}{Table} + { + \bool_lazy_and:nnTF + { \seq_if_empty_p:N \g__tbl_LT@head_rows_seq } + { \seq_if_empty_p:N \g__tbl_LT@firsthead_rows_seq } + { \__tbl_set_header_rows: } + { + \seq_if_empty:NTF \g__tbl_LT@firsthead_rows_seq + { + \clist_set:Ne \l__tbl_header_rows_clist + {\seq_use:Nn \g__tbl_LT@head_rows_seq {,}} + \__tbl_set_header_rows: + } + { + \clist_set:Ne \l__tbl_header_rows_clist + { \seq_use:Nn \g__tbl_LT@firsthead_rows_seq {,} } + \__tbl_set_header_rows: + \pdf_version_compare:NnTF < {2.0} + { + \seq_map_inline:Nn \g__tbl_LT@head_rows_seq + { + \seq_gset_item:cnn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + { ##1 } + {} + \tl_set:Ne \l__tbl_tmpa_tl + { \seq_item:Nn\g__tbl_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l__tbl_tmpa_tl _prop } + { + %\prop_gremove:cn {g__tag_struct_ \l__tbl_tmpa_tl _prop} {P} + } + } + } + { + \seq_map_inline:Nn \g__tbl_LT@head_rows_seq + { + \tl_set:Ne \l__tbl_tmpa_tl + { \seq_item:Nn\g__tbl_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l__tbl_tmpa_tl _prop } + { + \__tbl_struct_prop_gput:Vnn \l__tbl_tmpa_tl {S}{/Artifact} + } + } + } + } + } + \bool_lazy_and:nnF + { \seq_if_empty_p:N \g__tbl_LT@foot_rows_seq } + { \seq_if_empty_p:N \g__tbl_LT@lastfoot_rows_seq } + { + \seq_if_empty:NTF \g__tbl_LT@lastfoot_rows_seq + { + \seq_map_inline:Nn \g__tbl_LT@foot_rows_seq + { + \tl_set:Ne \l__tbl_tmpa_tl + { + \seq_item:cn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + {##1} + } + \seq_gset_item:cnn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + { ##1 } + {} + \seq_gput_right:cV + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + \l__tbl_tmpa_tl + } + } + { + \seq_map_inline:Nn \g__tbl_LT@lastfoot_rows_seq + { + \tl_set:Ne \l__tbl_tmpa_tl + { + \seq_item:cn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + {##1} + } + \seq_gset_item:cnn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + { ##1 } + {} + \seq_gput_right:cV + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + \l__tbl_tmpa_tl + } + \pdf_version_compare:NnTF < {2.0} + { + \seq_map_inline:Nn \g__tbl_LT@foot_rows_seq + { + \seq_gset_item:cnn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + { ##1 } + {} + \tl_set:Ne \l__tbl_tmpa_tl + { \seq_item:Nn\g__tbl_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l__tbl_tmpa_tl _prop } + { + %\prop_gremove:cn {g__tag_struct_ \l__tbl_tmpa_tl _prop} {P} + } + } + } + { + \seq_map_inline:Nn \g__tbl_LT@foot_rows_seq + { + \tl_set:Ne \l__tbl_tmpa_tl + { \seq_item:Nn\g__tbl_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l__tbl_tmpa_tl _prop } + { + \__tbl_struct_prop_gput:Vnn \l__tbl_tmpa_tl {S}{/Artifact} + } + } + } + } + } + } +\NewSocketPlug{tagsupport/tblhmode/begin}{Table} + { + \mode_leave_vertical: + \tag_mc_end_push: + \bool_lazy_and:nnT + { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool } + { \tag_struct_end:n { text } } + \tag_struct_begin:n {tag=Table} + \tl_gset:Ne \g__tbl_struct_table_tl { \tag_get:n {struct_num} } + } +\NewSocketPlug{tagsupport/tblhmode/end}{Table} + { + \tag_struct_end: + \bool_lazy_and:nnT + { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool } + { \tag_struct_begin:n { tag=\l__tag_para_tag_tl } } + \tag_mc_begin_pop:n{} + } +\NewSocketPlug{tagsupport/tblvmode/begin}{Table} + { + \tag_struct_begin:n {tag=Table} + \tl_gset:Ne \g__tbl_struct_table_tl { \tag_get:n {struct_num} } + } +\NewSocketPlug{tagsupport/tblvmode/end}{Table} + { + \tag_struct_end: + \par + } +\AddToHook{env/tabular/before} {\UseSocket{tagsupport/tblhmode/begin}} +\AddToHook{env/tabular/after} {\UseSocket{tagsupport/tblhmode/end}} +\AddToHook{env/tabular*/before} {\UseSocket{tagsupport/tblhmode/begin}} +\AddToHook{env/tabular*/after} {\UseSocket{tagsupport/tblhmode/end}} +\AddToHook{env/tabularx/before} {\UseSocket{tagsupport/tblhmode/begin}} +\AddToHook{env/tabularx/after} {\UseSocket{tagsupport/tblhmode/end}} +\AddToHook{env/longtable/before}{\UseSocket{tagsupport/tblvmode/begin}} +\AddToHook{env/longtable/after} {\UseSocket{tagsupport/tblvmode/end}} +\AddToHook{env/array/begin} {\__tag_tbl_disable:} +\tag_if_active:T + { \cs_generate_variant:Nn \__tag_attr_new_entry:nn {ee} } +\cs_new_protected:Npn \__tbl_set_colspan:n #1 + { + \tag_if_active:T + { + \int_compare:nNnT {#1}>{1} + { + \prop_get:NeNF \g__tag_attr_entries_prop + {colspan-\int_eval:n{#1}} + \l__tbl_tmpa_tl + { + \__tag_attr_new_entry:ee + {colspan-\int_eval:n{#1}} + {/O /Table /ColSpan~\int_eval:n{#1}} + } + \tl_set:Ne \l__tbl_cellattribute_tl + {colspan-\int_eval:n{#1}} + } + } + } + +\cs_new_protected:Npn \__tag_tbl_disable: + { + \AssignSocketPlug{tagsupport/tblcell/begin}{noop} + \AssignSocketPlug{tagsupport/tblcell/end}{noop} + \AssignSocketPlug{tagsupport/tblrow/begin}{noop} + \AssignSocketPlug{tagsupport/tblrow/end}{noop} + \AssignSocketPlug{tagsupport/tbl/init}{noop} + \AssignSocketPlug{tagsupport/tbl/finalize}{noop} + \AssignSocketPlug{tagsupport/tbl/finalize/longtable}{noop} + \AssignSocketPlug{tagsupport/tblhmode/begin}{noop} + \AssignSocketPlug{tagsupport/tblhmode/end}{noop} + \AssignSocketPlug{tagsupport/tblvmode/begin}{noop} + \AssignSocketPlug{tagsupport/tblvmode/end}{noop} + } + +\cs_new_protected:Npn \__tag_tbl_enable: + { + \AssignSocketPlug{tagsupport/tblcell/begin}{TD} + \AssignSocketPlug{tagsupport/tblcell/end}{TD} + \AssignSocketPlug{tagsupport/tblrow/begin}{TR} + \AssignSocketPlug{tagsupport/tblrow/end}{TR} + \AssignSocketPlug{tagsupport/tbl/init}{Table} + \AssignSocketPlug{tagsupport/tbl/finalize}{Table} + \AssignSocketPlug{tagsupport/tbl/finalize/longtable}{Table} + \AssignSocketPlug{tagsupport/tblhmode/begin}{Table} + \AssignSocketPlug{tagsupport/tblhmode/end}{Table} + \AssignSocketPlug{tagsupport/tblvmode/begin}{Table} + \AssignSocketPlug{tagsupport/tblvmode/end}{Table} + } + +\keys_define:nn { __tag / setup } + { + table-tagging .choices:nn = { true, on } + { \__tag_tbl_enable: }, + table-tagging .choices:nn = { false, off } + { \__tag_tbl_disable: }, + table-tagging .default:n = true, + table-tagging .initial:n = true + } +\AddToHook{begindocument} + { + \cs_if_exist:NT \@kernel@before@head + { + \tl_put_right:Nn \@kernel@before@head {\__tag_tbl_disable:} + \tl_put_right:Nn \@kernel@before@foot {\__tag_tbl_disable:} + } + } +\AddToHook{begindocument} + { + \tag_if_active:T + { + \tagpdfsetup + { + newattribute = + {TH-col}{/O /Table /Scope /Column}, + newattribute = + {TH-row}{/O /Table /Scope /Row}, + newattribute = + {TH-both}{/O /Table /Scope /Both}, + } + \seq_gput_left:Ne\g__tag_attr_class_used_seq + {\pdf_name_from_unicode_e:n{TH-col}} + \seq_gput_left:Ne\g__tag_attr_class_used_seq + {\pdf_name_from_unicode_e:n{TH-row}} + \seq_gput_left:Ne\g__tag_attr_class_used_seq + {\pdf_name_from_unicode_e:n{TH-both}} + } + } + +\clist_new:N \l__tbl_header_rows_clist +\cs_if_free:NTF \__tag_struct_prop_gput:nnn + { + \cs_new_protected:Npn \__tbl_struct_prop_gput:nnn #1#2#3 + { \prop_gput:cnn { g__tag_struct_#1_prop }{#2}{#3} } + } + { \cs_new_protected:Npn \__tbl_struct_prop_gput:nnn #1#2#3 + { \__tag_struct_prop_gput:nnn {#1}{#2}{#3} } + } +\cs_generate_variant:Nn \__tbl_struct_prop_gput:nnn {nne,Vnn} +\cs_new_protected:Npn \__tbl_set_header_rows: + { + \clist_map_inline:Nn \l__tbl_header_rows_clist + { + \clist_set:Ne\l__tbl_tmpa_clist + { + \seq_item:Nn \g__tbl_struct_cells_seq {##1} + } + \clist_map_inline:Nn \l__tbl_tmpa_clist + { + \prop_if_exist:cT { g__tag_struct_####1_prop } + { + \__tbl_struct_prop_gput:nnn{ ####1 }{S}{/TH} + \prop_get:cnNTF + { g__tag_struct_####1_prop } + { C } + \l__tbl_tmpa_tl + {\__tbl_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l__tbl_tmpa_tl]} } + {\__tbl_struct_prop_gput:nnn{ ####1 }{C}{/TH-col}} + } + } + } + } +\keys_define:nn { __tag / setup } + { + table-header-rows .clist_set:N = \l__tbl_header_rows_clist + } +\cs_new_protected:Npn \__tbl_show_curr_cell_data: { + \typeout { ==>~ current~cell~data:~ + \int_use:N \g__tbl_row_int , + \int_use:N \g__tbl_col_int , + \g__tbl_span_tl + } +} +\def\insert@column{% + \__tbl_show_curr_cell_data: + \UseSocket{tagsupport/tblcell/begin}% + \the@toks \the \@tempcnta + \ignorespaces \@sharp \unskip + \the@toks \the \count@ \relax + \UseSocket{tagsupport/tblcell/end}% +} +\def\@classz{\@classx + \@tempcnta \count@ + \prepnext@tok + \@addtopreamble{\ifcase \@chnum + \hfil + \hskip1sp% + \d@llarbegin + \insert@column + \d@llarend \do@row@strut \hfil \or + \hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \hfil \or + \hfil\hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \or + \setbox\ar@mcellbox\vbox + \@startpbox{\@nextchar} + \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox} + \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox} + \insert@column \@endpbox + \ar@align@mcell + \do@row@strut \or + \vtop \@startpbox{\@nextchar} + \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox} + \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox} + \insert@column \@endpbox\do@row@strut \or + \vbox \@startpbox{\@nextchar} + \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox} + \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox} + \insert@column \@endpbox\do@row@strut + \fi}\prepnext@tok} +\def\@array[#1]#2{% + \@tempdima \ht \strutbox + \advance \@tempdima by\extrarowheight + \setbox \@arstrutbox \hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \tl_set_eq:NN \l__tbl_saved_table_cols_tl \g__tbl_table_cols_tl + \begingroup + \@mkpream{#2} + \__tbl_determine_table_cols: + \xdef\@preamble{% + \noexpand + \ar@ialign + \@halignto + \bgroup \@arstrut + \UseSocket{tagsupport/tblrow/begin}% + \__tbl_init_cell_data: + \@preamble + \tabskip \z@ \cr}% + \endgroup + \@arrayleft + \UseSocket{tagsupport/tbl/init} + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi + \bgroup + \let \@sharp ##\let \protect \relax + \lineskip \z@ + \baselineskip \z@ + \m@th + \let\\\@arraycr \let\tabularnewline\\\let\par\@empty + \@preamble} +\let\@@array\@array +\cs_new_protected:Npn \__tbl_init_cell_data: { + \int_gset:Nn \g__tbl_col_int {1} + \tl_gset:Nn \g__tbl_span_tl {1} +} +\cs_new_protected:Npn \__tbl_update_cell_data: { + \int_gadd:Nn \g__tbl_col_int { \g__tbl_span_tl } + \tl_gset:Nn \g__tbl_span_tl {1} +} +\cs_new:Npn \__tbl_determine_table_cols: { + \seq_set_split:NnV\l__tbl_tmpa_seq {&}\@preamble + \tl_gset:Ne \g__tbl_table_cols_tl { \seq_count:N \l__tbl_tmpa_seq } + \typeout{ ==>~ Table~ has~ \g__tbl_table_cols_tl \space columns } +} +\protected\def\@arraycr{ + \relax + \__tbl_store_missing_cells:n{@arraycr} + % + \iffalse{\fi\ifnum 0=`}\fi + \@ifstar \@xarraycr \@xarraycr} +\cs_new:Npn \__tbl_store_missing_cells:n #1 { + \int_compare:nNnT \g__tbl_col_int > 0 + { + \int_gset:Nn \g__tbl_missing_cells_int + { + \g__tbl_table_cols_tl + - \g__tbl_col_int + - \g__tbl_span_tl + + 1 + } + \int_compare:nNnT \g__tbl_missing_cells_int < 0 \ERROR % should not happen + \typeout{==>~ + (#1)~ + This~ row~ needs~ + \int_use:N \g__tbl_missing_cells_int \space + additional~ cell(s) + } + } +} +\cs_new:Npn \__tag_tbl_add_missing_cells:n #1 + { + \int_compare:nNnT {#1}>{0} + { + \typeout{==>~ + ~Inserting~\int_eval:n{#1}~additional~cell(s)~into~previous~row:} + } + \int_step_inline:nn { #1 } + { + \UseSocket{tagsupport/tblcell/begin} + \UseSocket{tagsupport/tblcell/end} + } + } +\def\endarray{ + \__tbl_store_missing_cells:n{endarray} + \crcr \egroup + \UseSocket{tagsupport/tbl/finalize} + \int_gset:Nn \g__tbl_col_int { \l__tbl_saved_col_tl } + \int_gset:Nn \g__tbl_row_int { \l__tbl_saved_row_tl } + \tl_gset_eq:NN \g__tbl_span_tl \l__tbl_saved_span_tl + \tl_gset_eq:NN \g__tbl_table_cols_tl \l__tbl_saved_table_cols_tl + \tl_gset_eq:NN \g__tbl_struct_table_tl \l__tbl_saved_struct_table_tl + \seq_gset_eq:NN \g__tbl_struct_rows_seq \l__tbl_saved_struct_rows_seq + \seq_gset_eq:NN \g__tbl_struct_cells_seq\l__tbl_saved_struct_cells_seq + \seq_gset_eq:NN \g__tbl_struct_cur_seq \l__tbl_saved_struct_cur_seq + \typeout{==>~ restored~cell~data:~ + \int_use:N \g__tbl_row_int, + \int_use:N \g__tbl_col_int, + \l__tbl_saved_span_tl \space + ( + \int_compare:nNnTF \g__tbl_table_cols_tl = 0 + { outer~ level } + { max:~ \g__tbl_table_cols_tl } + ) + } + \egroup + \@arrayright \gdef\@preamble{}% +} +\def\@addamp { + \if@firstamp + \@firstampfalse + \else + \edef\@preamble{\@preamble & + \__tbl_update_cell_data: + } + \fi +} +\int_new:N \g__tbl_col_int +\int_new:N \g__tbl_row_int +\tl_new:N \g__tbl_span_tl +\tl_new:N \g__tbl_table_cols_tl + +\tl_gset:Nn \g__tbl_span_tl {1} +\tl_gset:Nn \g__tbl_table_cols_tl {0} % indicates outer level +\tl_new:N \l__tbl_saved_col_tl +\tl_new:N \l__tbl_saved_row_tl +\tl_new:N \l__tbl_saved_span_tl +\tl_new:N \l__tbl_saved_table_cols_tl + +\tl_set:Nn \l__tbl_saved_col_tl{0} +\tl_set:Nn \l__tbl_saved_row_tl{0} +\tl_set:Nn \l__tbl_saved_span_tl{1} +\tl_set:Nn \l__tbl_saved_table_cols_tl{0} % indicates outer level +\tl_new:N \g__tbl_struct_table_tl +\tl_new:N \l__tbl_saved_struct_table_tl +\seq_new:N \g__tbl_struct_rows_seq +\seq_new:N \l__tbl_saved_struct_rows_seq +\seq_new:N \g__tbl_struct_cells_seq +\seq_new:N \l__tbl_saved_struct_cells_seq +\seq_new:N \g__tbl_struct_cur_seq +\seq_new:N \l__tbl_saved_struct_cur_seq +\def\ar@ialign{% + \tl_set:No \l__tbl_saved_col_tl {\int_use:N \g__tbl_col_int } + \tl_set:No \l__tbl_saved_row_tl {\int_use:N \g__tbl_row_int } + \tl_set_eq:NN \l__tbl_saved_span_tl \g__tbl_span_tl + \tl_set_eq:NN \l__tbl_saved_struct_table_tl \g__tbl_struct_table_tl + \seq_set_eq:NN \l__tbl_saved_struct_rows_seq \g__tbl_struct_rows_seq + \seq_set_eq:NN \l__tbl_saved_struct_cells_seq \g__tbl_struct_cells_seq + \seq_set_eq:NN \l__tbl_saved_struct_cur_seq \g__tbl_struct_cur_seq + \typeout{==>~ saved~cell~data:~ + \l__tbl_saved_row_tl, + \l__tbl_saved_col_tl, + \l__tbl_saved_span_tl \space + ( + \int_compare:nNnTF \l__tbl_saved_table_cols_tl = 0 + { outer~ level } + { max:~ \l__tbl_saved_table_cols_tl } + ) + } + \int_gzero:N \g__tbl_row_int + \int_gzero:N \g__tbl_col_int + \tl_gset:Nn \g__tbl_span_tl {1} + \seq_gclear:N\g__tbl_struct_rows_seq + \seq_gclear:N\g__tbl_struct_cells_seq + \seq_gclear:N\g__tbl_struct_cur_seq + \everycr{% + \noalign{% + \int_compare:nNnT \g__tbl_col_int > 0 + { \UseSocket{tagsupport/tblrow/end} } + \int_gincr:N \g__tbl_row_int % this row about to start + \int_gzero:N \g__tbl_col_int % we are before first col + }% + }% + \tabskip\z@skip\halign} +\long\def\multicolumn#1#2#3{% + % alternative: determine first col with vmode test ... + % \ifvmode + % \multispan{#1}\typeout{A==> vmode}% + % \else + % \multispan{#1}\typeout{A==> not vmode} + % \fi + % but this makes the \crcr handling really complicated which would + % then need to become something like + % \ifvmode \expandafter \@gobble + % \else \expandafter \@iden \fi {\cr\noalign{do something}}% + % so not used. + % Instead: + \multispan{#1}\begingroup + \int_compare:nNnTF \g__tbl_col_int = 0 + { + \UseSocket{tagsupport/tblrow/begin} + \int_gset:Nn \g__tbl_col_int {1} + } + { + \int_gadd:Nn \g__tbl_col_int { \g__tbl_span_tl } + } + \tl_gset:Nn \g__tbl_span_tl {#1} + \def\@addamp{\if@firstamp\@firstampfalse \else + \@preamerr 5\fi}% + \@mkpream{#2}\@addtopreamble\@empty + \endgroup + \__tbl_set_colspan:n {#1} + \def\@sharp{#3}% + \@arstrut \@preamble + \null + \ignorespaces} +\let\@kernel@refstepcounter\refstepcounter +\def\hyper@nopatch@longtable{} +\def\__tbl_patch_LT@array[#1]#2{% + \UseSocket{tagsupport/tbl/init}% + \@kernel@refstepcounter{table}\stepcounter{LT@tables}% + \tl_gset:Ne \@currentHref {table.\cs_if_exist_use:N\theHtable} + \int_gzero:N \g__tbl_row_int + \seq_gclear:N\g__tbl_struct_rows_seq + \seq_gclear:N\g__tbl_struct_cells_seq + \seq_gclear:N\g__tbl_struct_cur_seq + \seq_gclear:N\g__tbl_LT@firsthead_rows_seq + \seq_gclear:N\g__tbl_LT@head_rows_seq + \seq_gclear:N\g__tbl_LT@lastfoot_rows_seq + \seq_gclear:N\g__tbl_LT@foot_rows_seq + \if l#1% + \LTleft\z@ \LTright\fill + \else\if r#1% + \LTleft\fill \LTright\z@ + \else\if c#1% + \LTleft\fill \LTright\fill + \fi\fi\fi + \let\LT@mcol\multicolumn + \let\LT@@tabarray\@tabarray + \let\LT@@hl\hline + \def\@tabarray{% + \let\hline\LT@@hl + \LT@@tabarray}% + \let\\\LT@tabularcr + \let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \ifx\extrarowheight\@undefined + \let\@acol\@tabacol + \let\@classz\@tabclassz \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr + \else + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \fi + \setbox\@arstrutbox\hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \let\@sharp##\let\protect\relax + \begingroup + \@mkpream{#2}% + \__tbl_determine_table_cols: + \xdef\LT@bchunk{% + \int_gzero:N \g__tbl_col_int + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@\setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft \noexpand\halign to\hsize\bgroup + \tabskip\z@ \@arstrut + \UseSocket{tagsupport/tblrow/begin}% + \__tbl_init_cell_data: + \@preamble \tabskip\LTright \cr}% + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th\let\par\@empty + \everycr{% + \noalign{% + \typeout{--longtable-->~chunk~row:~ \the\LT@rows \space + row:~ \the\g__tbl_row_int \space + column:~ \the\g__tbl_col_int + } + \int_compare:nNnT \g__tbl_col_int > 0 + { + \UseSocket{tagsupport/tblrow/end} + } + \int_gzero:N \g__tbl_col_int % before first col + \int_compare:nNnT \LT@rows < \LTchunksize + { \int_gincr:N \g__tbl_row_int } % this row about to start + }% + }% + \lineskip\z@\baselineskip\z@ + \LT@bchunk} +\def\__tbl_patch_endlongtable{% + \__tbl_store_missing_cells:n{endlongtable} + \crcr + \noalign{% + \UseSocket{tagsupport/tbl/finalize/longtable} + \int_gzero:N \g__tbl_row_int % this prevents considering the next + % \crcr as another row end. + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}}% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \if@filesw + {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}}}% + \fi + \ifx\LT@save@row\LT@@save@row + \else + \LT@warn{Column~\@width s~have~changed\MessageBreak + in~table~\thetable}% + \LT@final@warn + \fi + \endgraf\penalty -\LT@end@pen + \ifvoid\LT@foot\else + \global\advance\vsize\ht\LT@foot + \global\advance\@colroom\ht\LT@foot + \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@ + \fi + \endgroup + \global\@mparbottom\z@ + \endgraf\penalty\z@\addvspace\LTpost + \ifvoid\footins\else\insert\footins{}\fi} +\def\__tbl_patch_LT@t@bularcr{% + \global\advance\LT@rows\@ne + \ifnum\LT@rows=\LTchunksize + \__tbl_store_missing_cells:n{echunk} + \gdef\LT@setprevdepth{% + \prevdepth\z@ + \global\let\LT@setprevdepth\relax}% + \expandafter\LT@xtabularcr + \else + \ifnum0=`{}\fi + \expandafter\LT@LL@FM@cr + \fi} + +\def\__tbl_patch_LT@end@hd@ft#1{% + \__tbl_store_missing_cells:n{head/foot} + \int_step_inline:nn + { \LT@rows + 1 } + { + \seq_gput_left:ce + {g__tbl_\cs_to_str:N #1 _rows_seq } + { \int_eval:n {\g__tbl_row_int + 1 - ##1 } } + } + \int_gset:Nn \LT@rows { \LTchunksize } + \LT@echunk + \ifx\LT@start\endgraf + \LT@err + {Longtable head or foot not at start of table}% + {Increase LTchunksize}% + \fi + \setbox#1\box\z@ + \LT@get@widths + \LT@bchunk} + +\def\__tbl_patch_LT@start{% + \let\LT@start\endgraf + \endgraf\penalty\z@\vskip\LTpre\endgraf + \ifdim \pagetotal<\pagegoal \else + \dimen@=\pageshrink + \advance \dimen@ 1sp % + \kern\dimen@\penalty 9999\endgraf \kern-\dimen@ + \fi + \dimen@\pagetotal + \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \ht\LT@foot + \edef\LT@reset@vfuzz{\vfuzz\the\vfuzz\vbadness\the\vbadness\relax}% + \vfuzz\maxdimen + \vbadness\@M + \setbox\tw@\copy\z@ + \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox + \setbox\tw@\vbox{\unvbox\tw@}% + \LT@reset@vfuzz + \advance\dimen@ \ht + \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@\dp + \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@ -\pagegoal + \ifdim \dimen@>\z@ + \vfil\break + \else + \ifdim\pageshrink>\z@\pageshrink\z@\fi + \fi + \global\@colroom\@colht + \ifvoid\LT@foot\else + \global\advance\vsize-\ht\LT@foot + \global\advance\@colroom-\ht\LT@foot + \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ + \maxdepth\z@ + \fi + \MakeLinkTarget{table} + \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak + \tagmcbegin{artifact} + \tag_mc_reset_box:N\LT@head + \tagmcend + \output{\LT@output}} +\def\__tbl_patch_LT@output{% + \ifnum\outputpenalty <-\@Mi + \ifnum\outputpenalty > -\LT@end@pen + \LT@err{floats and marginpars not allowed in a longtable}\@ehc + \else + \setbox\z@\vbox{\unvbox\@cclv}% + \ifdim \ht\LT@lastfoot>\ht\LT@foot + \dimen@\pagegoal + \advance\dimen@\ht\LT@foot + \advance\dimen@-\ht\LT@lastfoot + \ifdim\dimen@<\ht\z@ + \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% + \@makecol + \@outputpage + \global\vsize\@colroom + \setbox\z@\vbox{\box\LT@head}% + \fi + \fi + \unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi + \tagmcbegin{artifact} + \tag_mc_reset_box:N \LT@foot + \tagmcend + \fi + \else + \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% + \tagmcbegin{artifact} + \tag_mc_reset_box:N \LT@foot + \tagmcend + \@makecol + \@outputpage + \global\vsize\@colroom + \copy\LT@head\nobreak + \fi} +\def\__tbl_patch_LT@makecaption#1#2#3{% + \LT@mcol\LT@cols c{% + % test can go after merge + \str_if_exist:cT { l__socket_tagsupport/parbox/before_plug_str } + { + \AssignSocketPlug{tagsupport/parbox/before}{noop} + \AssignSocketPlug{tagsupport/parbox/after}{noop} + } + \hbox to\z@{\hss\parbox[t]\LTcapwidth{% + \reset@font + \tag_stop:n{caption} + \sbox\@tempboxa{#1{#2:~}#3}% + \tag_start:n{caption} + \ifdim\wd\@tempboxa>\hsize + #1{#2:~}#3% + \else + \hbox to\hsize{\hfil#1{#2:~}#3\hfil}% + \fi + \endgraf\vskip\baselineskip}% + \hss}}} +\AddToHook{package/longtable/after} + { + \seq_new:N \g__tbl_LT@firsthead_rows_seq + \seq_new:N \g__tbl_LT@head_rows_seq + \seq_new:N \g__tbl_LT@lastfoot_rows_seq + \seq_new:N \g__tbl_LT@foot_rows_seq + \cs_set_eq:NN \LT@array\__tbl_patch_LT@array + \cs_set_eq:NN \endlongtable\__tbl_patch_endlongtable + \cs_set_eq:NN \LT@start\__tbl_patch_LT@start + \cs_set_eq:NN \LT@output\__tbl_patch_LT@output + \cs_set_eq:NN \LT@t@bularcr\__tbl_patch_LT@t@bularcr + \cs_set_eq:NN \LT@end@hd@ft\__tbl_patch_LT@end@hd@ft + \cs_set_eq:NN \LT@makecaption\__tbl_patch_LT@makecaption + } + +\def\__tbl_patch_TX@endtabularx{% + \expandafter\expandafter\expandafter + \TX@find@endtabularxa\csname end\TX@\endcsname + \endtabularx\TX@\endtabularx\TX@find@endtabularxa + \expandafter\TX@newcol\expandafter{\tabularxcolumn{\TX@col@width}}% + \let\verb\TX@verb + \def\@elt##1{\global\value{##1}\the\value{##1}\relax}% + \edef\TX@ckpt{\cl@@ckpt}% + \let\@elt\relax + \TX@old@table\maxdimen + \TX@col@width\TX@target + \global\TX@cols\@ne + \TX@typeout@ + {\@spaces Table Width\@spaces Column Width\@spaces X Columns}% + \tag_stop:n{tabularx} + \TX@trial{\def\NC@rewrite@X{% + \global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}% + \loop + \TX@arith + \ifTX@ + \TX@trial{}% + \repeat + \tag_start:n{tabularx} + {\let\@footnotetext\TX@ftntext\let\@xfootnotenext\TX@xftntext + \csname tabular*\expandafter\endcsname\expandafter\TX@target + \the\toks@ + \csname endtabular*\endcsname}% + \global\TX@ftn\expandafter{\expandafter}\the\TX@ftn + \ifnum0=`{\fi}% + \expandafter\expandafter\expandafter + \TX@find@endtabularxbb + \expandafter\end\expandafter{\TX@}% + \endtabularx\TX@\endtabularx\TX@find@endtabularxb +} + +\AddToHook{package/tabularx/after} + {\cs_set_eq:NN \TX@endtabularx\__tbl_patch_TX@endtabularx } +\endinput +%% +%% End of file `latex-lab-testphase-table.sty'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty index 0411e550b9c..bf1cb9bb87f 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty @@ -36,13 +36,13 @@ %% %% %% File: latex-lab-toc.dtx (C) Copyright 2022-2023 LaTeX Project -\def\ltlabtocdate{2023-07-20} -\def\ltlabtocversion{0.85a} +\def\ltlabtocdate{2023-10-16} +\def\ltlabtocversion{0.85b} \ProvidesExplPackage {latex-lab-testphase-toc} {\ltlabtocdate} {\ltlabtocversion} { Code related to the tagging of toc-like lists} %% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2023 LaTeX Project -\def\ltlabkerneldate{2023-07-20} -\def\ltlabkernelversion{0.85a} +\def\ltlabkerneldate{2023-10-16} +\def\ltlabkernelversion{0.85b} \RequirePackage{latex-lab-kernel-changes} \def\@contentsline@cfgpoint@before#1#2#3#4{} \def\@contentsline@cfgpoint@after#1#2#3#4{} @@ -276,27 +276,21 @@ \fi} } %% File: latex-lab-toc.dtx (C) Copyright 2022-2023 LaTeX Project -\def\ltlabtocdate{2023-07-20} -\def\ltlabtocversion{0.85a} +\def\ltlabtocdate{2023-10-16} +\def\ltlabtocversion{0.85b} \tl_new:N \l__tag_toc_tmpa_tl \AddToHook{cmd/refstepcounter/after} { \tl_if_blank:VF \@currentHref { - \prop_if_exist:NT \g__tag_struct_dest_num_prop - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } + \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} } } \AddToHook{cmd/H@refstepcounter/after} { \tl_if_blank:VF \@currentHref { - \prop_if_exist:NT \g__tag_struct_dest_num_prop - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } + \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} } } \msg_new:nnn { tag } {struct-dest-unknown} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx index cf329a8e806..e309b479ed1 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx @@ -33,8 +33,8 @@ %% %% %% File: latex-lab-minipage.dtx (C) Copyright 2023 LaTeX Project -\def\ltlabminipagedate{2023-08-20} -\def\ltlabminipageversion{0.81b} +\def\ltlabminipagedate{2023-10-30} +\def\ltlabminipageversion{0.81c} \ProvidesFile{minipage-latex-lab-testphase.ltx} [\ltlabminipagedate\space v\ltlabminipageversion diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx index 131fce259d1..bf39e9949f7 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx @@ -33,8 +33,8 @@ %% %% %% File: latex-lab-sec.dtx (C) Copyright 2022-2023 LaTeX Project -\def\ltlabsecdate{2023-07-20} -\def\ltlabsecversion{0.84a} +\def\ltlabsecdate{2023-10-16} +\def\ltlabsecversion{0.84b} \ProvidesFile{sec-latex-lab-testphase.ltx} [\ltlabsecdate\space v\ltlabsecversion\space latex-lab wrapper sec] diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx new file mode 100644 index 00000000000..850f3ffa110 --- /dev/null +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx @@ -0,0 +1,43 @@ +%% +%% This is file `table-latex-lab-testphase.ltx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-table.dtx (with options: `latex-lab') +%% +%% This is a generated file. +%% +%% Copyright 2021-2023 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab 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 +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-table.dtx (C) Copyright 2023 LaTeX Project +\def\ltlabtbldate{2023-10-30} +\def\ltlabtblversion{0.85d} +\ProvidesFile{table-latex-lab-testphase.ltx} + [\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper table] +\RequirePackage{latex-lab-testphase-table} +\endinput +%% +%% End of file `table-latex-lab-testphase.ltx'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx index 8fb6ca3a450..1d7e70c5d79 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx @@ -33,8 +33,8 @@ %% %% %% File: latex-lab-toc.dtx (C) Copyright 2022-2023 LaTeX Project -\def\ltlabtocdate{2023-07-20} -\def\ltlabtocversion{0.85a} +\def\ltlabtocdate{2023-10-16} +\def\ltlabtocversion{0.85b} \ProvidesFile{toc-latex-lab-testphase.ltx} [\ltlabtocdate\space v\ltlabtocversion latex-lab wrapper toc] diff --git a/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty b/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty index 52ae067c1fa..823f3ffa25c 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty @@ -37,7 +37,7 @@ %% File: afterpage.dtx Copyright (C) 1994 1994 1995 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{afterpage} - [2014/10/28 v1.08 After-Page Package (DPC)] + [2023/07/04 v1.08 After-Page Package (DPC)] \newtoks\AP@output \global\AP@output\expandafter{\the\output} \newbox\AP@partial diff --git a/Master/texmf-dist/tex/latex-dev/tools/array.sty b/Master/texmf-dist/tex/latex-dev/tools/array.sty index ff3a57f6eaa..cd6eee6a0fc 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/array.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/array.sty @@ -46,7 +46,7 @@ \DeclareCurrentRelease{}{2020-10-01} \ProvidesPackage{array} - [2022/09/04 v2.5g Tabular extension package (FMi)] + [2023/10/16 v2.5g Tabular extension package (FMi)] %% \def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}} @@ -194,7 +194,6 @@ \def\@xargarraycr#1{\unskip\gdef\do@row@strut {\@tempdima #1\advance\@tempdima \dp\@arstrutbox \vrule \@depth\@tempdima \@width\z@\global\let\do@row@strut\relax}% - % \begin{macrocode} \ifnum\@multicnt >\z@ \do@row@strut \fi \cr} \let\do@row@strut\relax diff --git a/Master/texmf-dist/tex/latex-dev/tools/bm.sty b/Master/texmf-dist/tex/latex-dev/tools/bm.sty index 37ac28e1176..8a136bd86d5 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/bm.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/bm.sty @@ -40,7 +40,7 @@ %% Development of this package was commissioned by Y&Y Inc. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{bm} - [2022/01/05 v1.2f Bold Symbol Support (DPC/FMi)] + [2023/07/08 v1.2f Bold Symbol Support (DPC/FMi)] \DeclareOption{nopmb}{\let\bm@pmb@\@firstofone} \DeclareOption{warn}{\def\bm@info{\PackageWarningNoLine{bm}}} \DeclareOption{info}{\def\bm@info#1{\PackageInfo{bm}{#1\@gobble}}} diff --git a/Master/texmf-dist/tex/latex-dev/tools/calc.sty b/Master/texmf-dist/tex/latex-dev/tools/calc.sty index f1ecb90347f..d36e1a57ba6 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/calc.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/calc.sty @@ -47,7 +47,7 @@ %% the normal LaTeX bug report address. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{calc} - [2017/05/25 v4.3 Infix arithmetic (KKT,FJ)] + [2023/07/08 v4.3 Infix arithmetic (KKT,FJ)] \def\calc@assign@generic#1#2#3#4{\let\calc@A#1\let\calc@B#2% \calc@open(#4!% \global\calc@A\calc@B\endgroup#3\calc@B} diff --git a/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty b/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty index 78a01a5ba14..dccfaac71cb 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty @@ -38,7 +38,7 @@ %% File: dcolumn.dtx Copyright (C) 1992-1996 1999-2001 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{dcolumn} - [2014/10/28 v1.06 decimal alignment package (DPC)] + [2023/07/08 v1.06 decimal alignment package (DPC)] \RequirePackage{array} \def\DC@#1#2#3{% \uccode`\~=`#1\relax diff --git a/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty b/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty index 86220225a13..31a7b6d8d11 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty @@ -38,7 +38,7 @@ %% File: enumerate.dtx Copyright 1993 1994 1999 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{enumerate} - [2015/07/23 v3.00 enumerate extensions (DPC)] + [2023/07/04 v3.00 enumerate extensions (DPC)] \newtoks\@enLab \def\@enQmark{?} \def\@enLabel#1#2{% diff --git a/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty b/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty index d70101bae11..fbae2b7949a 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty @@ -39,7 +39,7 @@ %% Copyright (C) 1989-2004 Frank Mittelbach, all rights reserved. \NeedsTeXFormat{LaTeX2e}[1995/06/01] \ProvidesPackage{ftnright} - [2014/10/28 v1.1f footnote layout package (FMi)] + [2023/07/08 v1.1f footnote layout package (FMi)] %% %% \def\preparefootins{% diff --git a/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty b/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty index a552fdd8d67..be715f3d89b 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty @@ -38,7 +38,7 @@ %% File: indent.dtx Copyright (C) 1991-1994 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{indentfirst} - [1995/11/23 v1.03 Indent first paragraph (DPC)] + [2023/07/02 v1.03 Indent first paragraph (DPC)] \let\@afterindentfalse\@afterindenttrue \@afterindenttrue \endinput diff --git a/Master/texmf-dist/tex/latex-dev/tools/layout.sty b/Master/texmf-dist/tex/latex-dev/tools/layout.sty index a80bc79e1f3..485dd89fac4 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/layout.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/layout.sty @@ -37,7 +37,7 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{layout} - [2021-03-10 v1.2e Show layout parameters] + [2023-08-20 v1.2e Show layout parameters] \DeclareOption{dutch}{% \def\Headertext{Kopregel} \def\Bodytext{Broodtekst} diff --git a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty index 9d9ab53fda3..0da756ace51 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty @@ -43,7 +43,7 @@ \DeclareCurrentRelease{}{2020-02-07} \ProvidesPackage{longtable} - [2021-09-01 v4.17 Multi-page Table package (DPC)] + [2023-11-01 v4.19 Multi-page Table package (DPC)] \def\LT@err{\PackageError{longtable}} \def\LT@warn{\PackageWarning{longtable}} \def\LT@final@warn{% @@ -458,7 +458,10 @@ \let\@footnotetext\LT@p@ftntext \setlength\hsize{#1}% \@arrayparboxrestore - \vrule \@height \ht\@arstrutbox \@width \z@} + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% + } \def\LT@endpbox{% \@finalstrut\@arstrutbox \color@endgroup diff --git a/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty b/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty index dfea3222973..6fbd004dfed 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty @@ -49,7 +49,7 @@ \ifx\PackageWarning\undefined\def\PackageWarning#1#2{\wlog{#1: #2}}\fi \expandafter\next\fi \ProvidesPackage{shellesc} - [2023/04/15 v1.0d unified shell escape interface for LaTeX] + [2023/07/08 v1.0d unified shell escape interface for LaTeX] \chardef\shellesc@quotecat\catcode`\" \chardef\shellesc@underscorecat\catcode`\_ \@makeother\" diff --git a/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty b/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty index 236b135311b..090a8fb7875 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty @@ -46,7 +46,7 @@ \DeclareCurrentRelease{}{2022-06-01} \ProvidesPackage{showkeys} - [2023/05/11 v3.19 Show cite and label keys (DPC, MH)] + [2023/07/08 v3.19 Show cite and label keys (DPC, MH)] \DeclareOption{notref}{\let\SK@ref\@empty} \DeclareOption{notcite}{\let\SK@cite\@empty} \let\SK@refcolor\relax diff --git a/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty b/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty index a084ff17cd4..4079dc9f63e 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty @@ -37,7 +37,7 @@ %% File: tabularx.dtx Copyright (C) 1991-1999 2012 2014 2016 2017 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{tabularx} - [2020/01/15 v2.11c `tabularx' package (DPC)] + [2023/07/08 v2.11c `tabularx' package (DPC)] \DeclareOption{infoshow}{\AtEndOfPackage\tracingtabularx} \DeclareOption{debugshow}{\AtEndOfPackage\tracingtabularx} \ProcessOptions diff --git a/Master/texmf-dist/tex/latex-dev/tools/thb.sty b/Master/texmf-dist/tex/latex-dev/tools/thb.sty index 56deb3cd976..60ffb1140b8 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thb.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thb.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex-dev/tools/thc.sty b/Master/texmf-dist/tex/latex-dev/tools/thc.sty index 79d85c49184..c8ddd8b16c3 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thc.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thc.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex-dev/tools/thcb.sty b/Master/texmf-dist/tex/latex-dev/tools/thcb.sty index 39be6ed45a1..f6db2854666 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thcb.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thcb.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex-dev/tools/theorem.sty b/Master/texmf-dist/tex/latex-dev/tools/theorem.sty index 4304eff280e..5bbbe63e71a 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/theorem.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/theorem.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex-dev/tools/thm.sty b/Master/texmf-dist/tex/latex-dev/tools/thm.sty index f62e6b65c07..7c98832f830 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thm.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thm.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex-dev/tools/thmb.sty b/Master/texmf-dist/tex/latex-dev/tools/thmb.sty index 167aaafe080..47babc61d69 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thmb.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thmb.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex-dev/tools/thp.sty b/Master/texmf-dist/tex/latex-dev/tools/thp.sty index ce803310b70..951bc8fa14c 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thp.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thp.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex-dev/tools/xr.sty b/Master/texmf-dist/tex/latex-dev/tools/xr.sty index 8304f2ff866..ece5e0df2d0 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/xr.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/xr.sty @@ -38,7 +38,7 @@ %% File: xr.dtx Copyright (C) 1993-2019 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{xr} - [2020-05-10 v5.06 eXternal References (DPC)] + [2023-07-04 v5.06 eXternal References (DPC)] \def\externaldocument{\@ifnextchar[\XR@{\XR@[]}} \let\externalcitedocument\externaldocument \def\XR@[#1]#2{{% |