diff options
Diffstat (limited to 'macros/latex-dev/base')
115 files changed, 938 insertions, 157 deletions
diff --git a/macros/latex-dev/base/README.md b/macros/latex-dev/base/README.md index cb5a4a60dc..fcfee6ef01 100644 --- a/macros/latex-dev/base/README.md +++ b/macros/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/macros/latex-dev/base/alltt.pdf b/macros/latex-dev/base/alltt.pdf Binary files differindex f2368d8b8c..074d5b4de9 100644 --- a/macros/latex-dev/base/alltt.pdf +++ b/macros/latex-dev/base/alltt.pdf diff --git a/macros/latex-dev/base/cfgguide.pdf b/macros/latex-dev/base/cfgguide.pdf Binary files differindex dc422901be..16a9f23b96 100644 --- a/macros/latex-dev/base/cfgguide.pdf +++ b/macros/latex-dev/base/cfgguide.pdf diff --git a/macros/latex-dev/base/changes.txt b/macros/latex-dev/base/changes.txt index 3454f49ac6..812143d3e3 100644 --- a/macros/latex-dev/base/changes.txt +++ b/macros/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/macros/latex-dev/base/classes.pdf b/macros/latex-dev/base/classes.pdf Binary files differindex e77d02dec9..6ba6e988b6 100644 --- a/macros/latex-dev/base/classes.pdf +++ b/macros/latex-dev/base/classes.pdf diff --git a/macros/latex-dev/base/clsguide-historic.pdf b/macros/latex-dev/base/clsguide-historic.pdf Binary files differindex 9ed59b2255..c40cf8d8d7 100644 --- a/macros/latex-dev/base/clsguide-historic.pdf +++ b/macros/latex-dev/base/clsguide-historic.pdf diff --git a/macros/latex-dev/base/clsguide.pdf b/macros/latex-dev/base/clsguide.pdf Binary files differindex 04c4ea27a4..c8c14014da 100644 --- a/macros/latex-dev/base/clsguide.pdf +++ b/macros/latex-dev/base/clsguide.pdf diff --git a/macros/latex-dev/base/clsguide.tex b/macros/latex-dev/base/clsguide.tex index 7225425ec8..457f74f287 100644 --- a/macros/latex-dev/base/clsguide.tex +++ b/macros/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/macros/latex-dev/base/cmfonts.pdf b/macros/latex-dev/base/cmfonts.pdf Binary files differindex b4f8929917..fe88b5af3b 100644 --- a/macros/latex-dev/base/cmfonts.pdf +++ b/macros/latex-dev/base/cmfonts.pdf diff --git a/macros/latex-dev/base/cyrguide.pdf b/macros/latex-dev/base/cyrguide.pdf Binary files differindex 2bdb504323..5678806510 100644 --- a/macros/latex-dev/base/cyrguide.pdf +++ b/macros/latex-dev/base/cyrguide.pdf diff --git a/macros/latex-dev/base/doc-code.pdf b/macros/latex-dev/base/doc-code.pdf Binary files differindex 4ed15617dd..51e6dad9e8 100644 --- a/macros/latex-dev/base/doc-code.pdf +++ b/macros/latex-dev/base/doc-code.pdf diff --git a/macros/latex-dev/base/doc.pdf b/macros/latex-dev/base/doc.pdf Binary files differindex e31007c879..e8a184011e 100644 --- a/macros/latex-dev/base/doc.pdf +++ b/macros/latex-dev/base/doc.pdf diff --git a/macros/latex-dev/base/docstrip.dtx b/macros/latex-dev/base/docstrip.dtx index be373499e6..776d0e68d7 100644 --- a/macros/latex-dev/base/docstrip.dtx +++ b/macros/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/macros/latex-dev/base/docstrip.pdf b/macros/latex-dev/base/docstrip.pdf Binary files differindex df1404ebe5..b87f05e2e8 100644 --- a/macros/latex-dev/base/docstrip.pdf +++ b/macros/latex-dev/base/docstrip.pdf diff --git a/macros/latex-dev/base/encguide.pdf b/macros/latex-dev/base/encguide.pdf Binary files differindex aa08d7dc01..53e032c97b 100644 --- a/macros/latex-dev/base/encguide.pdf +++ b/macros/latex-dev/base/encguide.pdf diff --git a/macros/latex-dev/base/exscale.pdf b/macros/latex-dev/base/exscale.pdf Binary files differindex 546a2d0549..0c9dd72583 100644 --- a/macros/latex-dev/base/exscale.pdf +++ b/macros/latex-dev/base/exscale.pdf diff --git a/macros/latex-dev/base/fix-cm.pdf b/macros/latex-dev/base/fix-cm.pdf Binary files differindex 07a8643054..eb2306a8fe 100644 --- a/macros/latex-dev/base/fix-cm.pdf +++ b/macros/latex-dev/base/fix-cm.pdf diff --git a/macros/latex-dev/base/fntguide.pdf b/macros/latex-dev/base/fntguide.pdf Binary files differindex 1be6ca422f..a3c42f9cc3 100644 --- a/macros/latex-dev/base/fntguide.pdf +++ b/macros/latex-dev/base/fntguide.pdf diff --git a/macros/latex-dev/base/fntguide.tex b/macros/latex-dev/base/fntguide.tex index 619cc907b2..143956ecc4 100644 --- a/macros/latex-dev/base/fntguide.tex +++ b/macros/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/macros/latex-dev/base/graphpap.pdf b/macros/latex-dev/base/graphpap.pdf Binary files differindex 02c26dfdb6..d68b5190cc 100644 --- a/macros/latex-dev/base/graphpap.pdf +++ b/macros/latex-dev/base/graphpap.pdf diff --git a/macros/latex-dev/base/ifthen.pdf b/macros/latex-dev/base/ifthen.pdf Binary files differindex ff5e6a9040..b7638603ef 100644 --- a/macros/latex-dev/base/ifthen.pdf +++ b/macros/latex-dev/base/ifthen.pdf diff --git a/macros/latex-dev/base/inputenc.pdf b/macros/latex-dev/base/inputenc.pdf Binary files differindex 5b83bb0998..6e453b6080 100644 --- a/macros/latex-dev/base/inputenc.pdf +++ b/macros/latex-dev/base/inputenc.pdf diff --git a/macros/latex-dev/base/lamport-manual.pdf b/macros/latex-dev/base/lamport-manual.pdf Binary files differindex 35607608f6..704346408a 100644 --- a/macros/latex-dev/base/lamport-manual.pdf +++ b/macros/latex-dev/base/lamport-manual.pdf diff --git a/macros/latex-dev/base/latexrelease.pdf b/macros/latex-dev/base/latexrelease.pdf Binary files differindex 38f5ef20fb..a33f14a625 100644 --- a/macros/latex-dev/base/latexrelease.pdf +++ b/macros/latex-dev/base/latexrelease.pdf diff --git a/macros/latex-dev/base/latexsym.pdf b/macros/latex-dev/base/latexsym.pdf Binary files differindex 3d6f87b2f1..76b8b57254 100644 --- a/macros/latex-dev/base/latexsym.pdf +++ b/macros/latex-dev/base/latexsym.pdf diff --git a/macros/latex-dev/base/lb2.pdf b/macros/latex-dev/base/lb2.pdf Binary files differindex 4f1de0028e..1635d1217d 100644 --- a/macros/latex-dev/base/lb2.pdf +++ b/macros/latex-dev/base/lb2.pdf diff --git a/macros/latex-dev/base/letter.pdf b/macros/latex-dev/base/letter.pdf Binary files differindex d4c0361f9a..bd800591fc 100644 --- a/macros/latex-dev/base/letter.pdf +++ b/macros/latex-dev/base/letter.pdf diff --git a/macros/latex-dev/base/lgc2.pdf b/macros/latex-dev/base/lgc2.pdf Binary files differindex 01e844d127..c4cbbd166e 100644 --- a/macros/latex-dev/base/lgc2.pdf +++ b/macros/latex-dev/base/lgc2.pdf diff --git a/macros/latex-dev/base/lppl.pdf b/macros/latex-dev/base/lppl.pdf Binary files differindex 6f35bb62a5..1a7b50860d 100644 --- a/macros/latex-dev/base/lppl.pdf +++ b/macros/latex-dev/base/lppl.pdf diff --git a/macros/latex-dev/base/ltboxes.dtx b/macros/latex-dev/base/ltboxes.dtx index ff1717caa9..d84158c161 100644 --- a/macros/latex-dev/base/ltboxes.dtx +++ b/macros/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/macros/latex-dev/base/ltcmdhooks-code.pdf b/macros/latex-dev/base/ltcmdhooks-code.pdf Binary files differindex 598e09076d..a48cf808d2 100644 --- a/macros/latex-dev/base/ltcmdhooks-code.pdf +++ b/macros/latex-dev/base/ltcmdhooks-code.pdf diff --git a/macros/latex-dev/base/ltcmdhooks-doc.pdf b/macros/latex-dev/base/ltcmdhooks-doc.pdf Binary files differindex e00d1a517f..cdff7b57d7 100644 --- a/macros/latex-dev/base/ltcmdhooks-doc.pdf +++ b/macros/latex-dev/base/ltcmdhooks-doc.pdf diff --git a/macros/latex-dev/base/ltexpl.dtx b/macros/latex-dev/base/ltexpl.dtx index 92e6de52cb..4e5eba550b 100644 --- a/macros/latex-dev/base/ltexpl.dtx +++ b/macros/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/macros/latex-dev/base/ltfilehook-code.pdf b/macros/latex-dev/base/ltfilehook-code.pdf Binary files differindex 423d9c8c60..1e3965df67 100644 --- a/macros/latex-dev/base/ltfilehook-code.pdf +++ b/macros/latex-dev/base/ltfilehook-code.pdf diff --git a/macros/latex-dev/base/ltfilehook-doc.pdf b/macros/latex-dev/base/ltfilehook-doc.pdf Binary files differindex 607cc91ca1..f104a35011 100644 --- a/macros/latex-dev/base/ltfilehook-doc.pdf +++ b/macros/latex-dev/base/ltfilehook-doc.pdf diff --git a/macros/latex-dev/base/ltfssaxes.dtx b/macros/latex-dev/base/ltfssaxes.dtx index 9e68b38654..a0746bd08c 100644 --- a/macros/latex-dev/base/ltfssaxes.dtx +++ b/macros/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/macros/latex-dev/base/ltfssbas.dtx b/macros/latex-dev/base/ltfssbas.dtx index fda3d1ca4b..fa82bd73bb 100644 --- a/macros/latex-dev/base/ltfssbas.dtx +++ b/macros/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/macros/latex-dev/base/lthooks-code.pdf b/macros/latex-dev/base/lthooks-code.pdf Binary files differindex 452cc324fd..61e9f4a92a 100644 --- a/macros/latex-dev/base/lthooks-code.pdf +++ b/macros/latex-dev/base/lthooks-code.pdf diff --git a/macros/latex-dev/base/lthooks-doc.pdf b/macros/latex-dev/base/lthooks-doc.pdf Binary files differindex 379f81449c..4cd9279439 100644 --- a/macros/latex-dev/base/lthooks-doc.pdf +++ b/macros/latex-dev/base/lthooks-doc.pdf diff --git a/macros/latex-dev/base/lthooks.dtx b/macros/latex-dev/base/lthooks.dtx index e43fa4ef35..20d48730c4 100644 --- a/macros/latex-dev/base/lthooks.dtx +++ b/macros/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/macros/latex-dev/base/ltluatex.pdf b/macros/latex-dev/base/ltluatex.pdf Binary files differindex fa5dd9a06a..ca793006b1 100644 --- a/macros/latex-dev/base/ltluatex.pdf +++ b/macros/latex-dev/base/ltluatex.pdf diff --git a/macros/latex-dev/base/ltmarks-code.pdf b/macros/latex-dev/base/ltmarks-code.pdf Binary files differindex 7f53320733..655e71aa4c 100644 --- a/macros/latex-dev/base/ltmarks-code.pdf +++ b/macros/latex-dev/base/ltmarks-code.pdf diff --git a/macros/latex-dev/base/ltmarks-doc.pdf b/macros/latex-dev/base/ltmarks-doc.pdf Binary files differindex 94b2a0a762..c5ccd21606 100644 --- a/macros/latex-dev/base/ltmarks-doc.pdf +++ b/macros/latex-dev/base/ltmarks-doc.pdf diff --git a/macros/latex-dev/base/ltnews.pdf b/macros/latex-dev/base/ltnews.pdf Binary files differindex a482c44754..b6fc97ce53 100644 --- a/macros/latex-dev/base/ltnews.pdf +++ b/macros/latex-dev/base/ltnews.pdf diff --git a/macros/latex-dev/base/ltnews01.pdf b/macros/latex-dev/base/ltnews01.pdf Binary files differindex 45080cd056..a7eb8b72ac 100644 --- a/macros/latex-dev/base/ltnews01.pdf +++ b/macros/latex-dev/base/ltnews01.pdf diff --git a/macros/latex-dev/base/ltnews02.pdf b/macros/latex-dev/base/ltnews02.pdf Binary files differindex 3c92dcbb13..1560d5cfae 100644 --- a/macros/latex-dev/base/ltnews02.pdf +++ b/macros/latex-dev/base/ltnews02.pdf diff --git a/macros/latex-dev/base/ltnews03.pdf b/macros/latex-dev/base/ltnews03.pdf Binary files differindex 9c76b172f2..a33ab0d699 100644 --- a/macros/latex-dev/base/ltnews03.pdf +++ b/macros/latex-dev/base/ltnews03.pdf diff --git a/macros/latex-dev/base/ltnews04.pdf b/macros/latex-dev/base/ltnews04.pdf Binary files differindex 5fc5b7e2f2..0fe86c8d1c 100644 --- a/macros/latex-dev/base/ltnews04.pdf +++ b/macros/latex-dev/base/ltnews04.pdf diff --git a/macros/latex-dev/base/ltnews05.pdf b/macros/latex-dev/base/ltnews05.pdf Binary files differindex 82f6e2e66b..16be61db08 100644 --- a/macros/latex-dev/base/ltnews05.pdf +++ b/macros/latex-dev/base/ltnews05.pdf diff --git a/macros/latex-dev/base/ltnews06.pdf b/macros/latex-dev/base/ltnews06.pdf Binary files differindex 8686878390..62f27b9c09 100644 --- a/macros/latex-dev/base/ltnews06.pdf +++ b/macros/latex-dev/base/ltnews06.pdf diff --git a/macros/latex-dev/base/ltnews07.pdf b/macros/latex-dev/base/ltnews07.pdf Binary files differindex dbde03e3c6..41696cd5b2 100644 --- a/macros/latex-dev/base/ltnews07.pdf +++ b/macros/latex-dev/base/ltnews07.pdf diff --git a/macros/latex-dev/base/ltnews08.pdf b/macros/latex-dev/base/ltnews08.pdf Binary files differindex 6de4f5dcc2..d3824fd033 100644 --- a/macros/latex-dev/base/ltnews08.pdf +++ b/macros/latex-dev/base/ltnews08.pdf diff --git a/macros/latex-dev/base/ltnews09.pdf b/macros/latex-dev/base/ltnews09.pdf Binary files differindex 703e4fcbc1..ee50c517ad 100644 --- a/macros/latex-dev/base/ltnews09.pdf +++ b/macros/latex-dev/base/ltnews09.pdf diff --git a/macros/latex-dev/base/ltnews10.pdf b/macros/latex-dev/base/ltnews10.pdf Binary files differindex 92cf03c100..8aa002886a 100644 --- a/macros/latex-dev/base/ltnews10.pdf +++ b/macros/latex-dev/base/ltnews10.pdf diff --git a/macros/latex-dev/base/ltnews11.pdf b/macros/latex-dev/base/ltnews11.pdf Binary files differindex 7fc53570a7..799f3e69a8 100644 --- a/macros/latex-dev/base/ltnews11.pdf +++ b/macros/latex-dev/base/ltnews11.pdf diff --git a/macros/latex-dev/base/ltnews12.pdf b/macros/latex-dev/base/ltnews12.pdf Binary files differindex 7bb2af0d90..3017fe26b4 100644 --- a/macros/latex-dev/base/ltnews12.pdf +++ b/macros/latex-dev/base/ltnews12.pdf diff --git a/macros/latex-dev/base/ltnews13.pdf b/macros/latex-dev/base/ltnews13.pdf Binary files differindex 238024988f..a471304672 100644 --- a/macros/latex-dev/base/ltnews13.pdf +++ b/macros/latex-dev/base/ltnews13.pdf diff --git a/macros/latex-dev/base/ltnews14.pdf b/macros/latex-dev/base/ltnews14.pdf Binary files differindex ca1bde861a..58c7faeed3 100644 --- a/macros/latex-dev/base/ltnews14.pdf +++ b/macros/latex-dev/base/ltnews14.pdf diff --git a/macros/latex-dev/base/ltnews15.pdf b/macros/latex-dev/base/ltnews15.pdf Binary files differindex e93edf9da6..a4ccdfcf6a 100644 --- a/macros/latex-dev/base/ltnews15.pdf +++ b/macros/latex-dev/base/ltnews15.pdf diff --git a/macros/latex-dev/base/ltnews16.pdf b/macros/latex-dev/base/ltnews16.pdf Binary files differindex 58a8ae986d..6fbbe159aa 100644 --- a/macros/latex-dev/base/ltnews16.pdf +++ b/macros/latex-dev/base/ltnews16.pdf diff --git a/macros/latex-dev/base/ltnews17.pdf b/macros/latex-dev/base/ltnews17.pdf Binary files differindex 48dcad813d..fe38f79c39 100644 --- a/macros/latex-dev/base/ltnews17.pdf +++ b/macros/latex-dev/base/ltnews17.pdf diff --git a/macros/latex-dev/base/ltnews18.pdf b/macros/latex-dev/base/ltnews18.pdf Binary files differindex 3bd5213f40..404206d928 100644 --- a/macros/latex-dev/base/ltnews18.pdf +++ b/macros/latex-dev/base/ltnews18.pdf diff --git a/macros/latex-dev/base/ltnews19.pdf b/macros/latex-dev/base/ltnews19.pdf Binary files differindex f61eafeabe..3f107c4567 100644 --- a/macros/latex-dev/base/ltnews19.pdf +++ b/macros/latex-dev/base/ltnews19.pdf diff --git a/macros/latex-dev/base/ltnews20.pdf b/macros/latex-dev/base/ltnews20.pdf Binary files differindex fd2f0c7f6c..8eeacf2590 100644 --- a/macros/latex-dev/base/ltnews20.pdf +++ b/macros/latex-dev/base/ltnews20.pdf diff --git a/macros/latex-dev/base/ltnews21.pdf b/macros/latex-dev/base/ltnews21.pdf Binary files differindex 3caee8b8aa..0b70907056 100644 --- a/macros/latex-dev/base/ltnews21.pdf +++ b/macros/latex-dev/base/ltnews21.pdf diff --git a/macros/latex-dev/base/ltnews22.pdf b/macros/latex-dev/base/ltnews22.pdf Binary files differindex 463eef696d..60862afc61 100644 --- a/macros/latex-dev/base/ltnews22.pdf +++ b/macros/latex-dev/base/ltnews22.pdf diff --git a/macros/latex-dev/base/ltnews23.pdf b/macros/latex-dev/base/ltnews23.pdf Binary files differindex fb51fd8738..abf6218395 100644 --- a/macros/latex-dev/base/ltnews23.pdf +++ b/macros/latex-dev/base/ltnews23.pdf diff --git a/macros/latex-dev/base/ltnews24.pdf b/macros/latex-dev/base/ltnews24.pdf Binary files differindex e8ef825448..2a8294b46a 100644 --- a/macros/latex-dev/base/ltnews24.pdf +++ b/macros/latex-dev/base/ltnews24.pdf diff --git a/macros/latex-dev/base/ltnews25.pdf b/macros/latex-dev/base/ltnews25.pdf Binary files differindex a7171c631a..3b2fcf4928 100644 --- a/macros/latex-dev/base/ltnews25.pdf +++ b/macros/latex-dev/base/ltnews25.pdf diff --git a/macros/latex-dev/base/ltnews26.pdf b/macros/latex-dev/base/ltnews26.pdf Binary files differindex 6de2aba701..55d618bb30 100644 --- a/macros/latex-dev/base/ltnews26.pdf +++ b/macros/latex-dev/base/ltnews26.pdf diff --git a/macros/latex-dev/base/ltnews27.pdf b/macros/latex-dev/base/ltnews27.pdf Binary files differindex 2426592152..244be0a0bd 100644 --- a/macros/latex-dev/base/ltnews27.pdf +++ b/macros/latex-dev/base/ltnews27.pdf diff --git a/macros/latex-dev/base/ltnews28.pdf b/macros/latex-dev/base/ltnews28.pdf Binary files differindex 3b505c36e5..9536e57f5a 100644 --- a/macros/latex-dev/base/ltnews28.pdf +++ b/macros/latex-dev/base/ltnews28.pdf diff --git a/macros/latex-dev/base/ltnews29.pdf b/macros/latex-dev/base/ltnews29.pdf Binary files differindex b9bda4e3ad..6ac0eb8b97 100644 --- a/macros/latex-dev/base/ltnews29.pdf +++ b/macros/latex-dev/base/ltnews29.pdf diff --git a/macros/latex-dev/base/ltnews30.pdf b/macros/latex-dev/base/ltnews30.pdf Binary files differindex 6197b58162..ad5fb53b4c 100644 --- a/macros/latex-dev/base/ltnews30.pdf +++ b/macros/latex-dev/base/ltnews30.pdf diff --git a/macros/latex-dev/base/ltnews31.pdf b/macros/latex-dev/base/ltnews31.pdf Binary files differindex 1de3b0fd5b..4a6484d05b 100644 --- a/macros/latex-dev/base/ltnews31.pdf +++ b/macros/latex-dev/base/ltnews31.pdf diff --git a/macros/latex-dev/base/ltnews32.pdf b/macros/latex-dev/base/ltnews32.pdf Binary files differindex e18c5d44fd..1964d6203a 100644 --- a/macros/latex-dev/base/ltnews32.pdf +++ b/macros/latex-dev/base/ltnews32.pdf diff --git a/macros/latex-dev/base/ltnews33.pdf b/macros/latex-dev/base/ltnews33.pdf Binary files differindex 1190e8ed79..6d8f5775e9 100644 --- a/macros/latex-dev/base/ltnews33.pdf +++ b/macros/latex-dev/base/ltnews33.pdf diff --git a/macros/latex-dev/base/ltnews34.pdf b/macros/latex-dev/base/ltnews34.pdf Binary files differindex eec3c3f35b..3985ff0d5e 100644 --- a/macros/latex-dev/base/ltnews34.pdf +++ b/macros/latex-dev/base/ltnews34.pdf diff --git a/macros/latex-dev/base/ltnews35.pdf b/macros/latex-dev/base/ltnews35.pdf Binary files differindex c03ef0306b..820f6a341b 100644 --- a/macros/latex-dev/base/ltnews35.pdf +++ b/macros/latex-dev/base/ltnews35.pdf diff --git a/macros/latex-dev/base/ltnews36.pdf b/macros/latex-dev/base/ltnews36.pdf Binary files differindex 5e16afdce0..4c2d70661f 100644 --- a/macros/latex-dev/base/ltnews36.pdf +++ b/macros/latex-dev/base/ltnews36.pdf diff --git a/macros/latex-dev/base/ltnews37.pdf b/macros/latex-dev/base/ltnews37.pdf Binary files differindex 02b03b00a0..3ff2725b4d 100644 --- a/macros/latex-dev/base/ltnews37.pdf +++ b/macros/latex-dev/base/ltnews37.pdf diff --git a/macros/latex-dev/base/ltnews37.tex b/macros/latex-dev/base/ltnews37.tex index 5527975c54..3adda3ea90 100644 --- a/macros/latex-dev/base/ltnews37.tex +++ b/macros/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/macros/latex-dev/base/ltnews38.pdf b/macros/latex-dev/base/ltnews38.pdf Binary files differindex 6dfed26068..80ff1a2127 100644 --- a/macros/latex-dev/base/ltnews38.pdf +++ b/macros/latex-dev/base/ltnews38.pdf diff --git a/macros/latex-dev/base/ltnews38.tex b/macros/latex-dev/base/ltnews38.tex index 38745b9dbf..04ffe1a0ed 100644 --- a/macros/latex-dev/base/ltnews38.tex +++ b/macros/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/macros/latex-dev/base/ltpara-code.pdf b/macros/latex-dev/base/ltpara-code.pdf Binary files differindex 6836c91ff6..aa77b62b7c 100644 --- a/macros/latex-dev/base/ltpara-code.pdf +++ b/macros/latex-dev/base/ltpara-code.pdf diff --git a/macros/latex-dev/base/ltpara-doc.pdf b/macros/latex-dev/base/ltpara-doc.pdf Binary files differindex f29cf22b46..008e6a5f33 100644 --- a/macros/latex-dev/base/ltpara-doc.pdf +++ b/macros/latex-dev/base/ltpara-doc.pdf diff --git a/macros/latex-dev/base/ltplain.dtx b/macros/latex-dev/base/ltplain.dtx index 89e5017300..b41810373d 100644 --- a/macros/latex-dev/base/ltplain.dtx +++ b/macros/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/macros/latex-dev/base/ltproperties-code.pdf b/macros/latex-dev/base/ltproperties-code.pdf Binary files differindex 8176e3fdde..a0757a3b61 100644 --- a/macros/latex-dev/base/ltproperties-code.pdf +++ b/macros/latex-dev/base/ltproperties-code.pdf diff --git a/macros/latex-dev/base/ltproperties-doc.pdf b/macros/latex-dev/base/ltproperties-doc.pdf Binary files differindex 553223ecc2..8dccf572dc 100644 --- a/macros/latex-dev/base/ltproperties-doc.pdf +++ b/macros/latex-dev/base/ltproperties-doc.pdf diff --git a/macros/latex-dev/base/ltproperties.dtx b/macros/latex-dev/base/ltproperties.dtx index 71b6e2a14f..40c50cd20a 100644 --- a/macros/latex-dev/base/ltproperties.dtx +++ b/macros/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/macros/latex-dev/base/ltshipout-code.pdf b/macros/latex-dev/base/ltshipout-code.pdf Binary files differindex ff0e6d4c2b..b688db8cc5 100644 --- a/macros/latex-dev/base/ltshipout-code.pdf +++ b/macros/latex-dev/base/ltshipout-code.pdf diff --git a/macros/latex-dev/base/ltshipout-doc.pdf b/macros/latex-dev/base/ltshipout-doc.pdf Binary files differindex bf58bd09b9..9265263918 100644 --- a/macros/latex-dev/base/ltshipout-doc.pdf +++ b/macros/latex-dev/base/ltshipout-doc.pdf diff --git a/macros/latex-dev/base/ltsockets-code.pdf b/macros/latex-dev/base/ltsockets-code.pdf Binary files differindex 82ccada409..7fa60a7f54 100644 --- a/macros/latex-dev/base/ltsockets-code.pdf +++ b/macros/latex-dev/base/ltsockets-code.pdf diff --git a/macros/latex-dev/base/ltsockets-doc.pdf b/macros/latex-dev/base/ltsockets-doc.pdf Binary files differindex 0d32f64a1d..e708f04a3a 100644 --- a/macros/latex-dev/base/ltsockets-doc.pdf +++ b/macros/latex-dev/base/ltsockets-doc.pdf diff --git a/macros/latex-dev/base/ltspace.dtx b/macros/latex-dev/base/ltspace.dtx index 66841cae38..03b3445047 100644 --- a/macros/latex-dev/base/ltspace.dtx +++ b/macros/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/macros/latex-dev/base/ltvers.dtx b/macros/latex-dev/base/ltvers.dtx index 5b78c3bc5e..e169dee020 100644 --- a/macros/latex-dev/base/ltvers.dtx +++ b/macros/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/macros/latex-dev/base/ltx3info.pdf b/macros/latex-dev/base/ltx3info.pdf Binary files differindex d80998b77c..61f04c83ca 100644 --- a/macros/latex-dev/base/ltx3info.pdf +++ b/macros/latex-dev/base/ltx3info.pdf diff --git a/macros/latex-dev/base/ltxdoc.pdf b/macros/latex-dev/base/ltxdoc.pdf Binary files differindex 4acf824c6b..334349f4bb 100644 --- a/macros/latex-dev/base/ltxdoc.pdf +++ b/macros/latex-dev/base/ltxdoc.pdf diff --git a/macros/latex-dev/base/makeindx.pdf b/macros/latex-dev/base/makeindx.pdf Binary files differindex aa2de39ace..d6c1e08074 100644 --- a/macros/latex-dev/base/makeindx.pdf +++ b/macros/latex-dev/base/makeindx.pdf diff --git a/macros/latex-dev/base/modguide.pdf b/macros/latex-dev/base/modguide.pdf Binary files differindex d1f7521e0d..ff40b00fa9 100644 --- a/macros/latex-dev/base/modguide.pdf +++ b/macros/latex-dev/base/modguide.pdf diff --git a/macros/latex-dev/base/nfssfont.pdf b/macros/latex-dev/base/nfssfont.pdf Binary files differindex df53f5fa0e..c947cc02bf 100644 --- a/macros/latex-dev/base/nfssfont.pdf +++ b/macros/latex-dev/base/nfssfont.pdf diff --git a/macros/latex-dev/base/proc.pdf b/macros/latex-dev/base/proc.pdf Binary files differindex 79b95b1af0..b143f929d5 100644 --- a/macros/latex-dev/base/proc.pdf +++ b/macros/latex-dev/base/proc.pdf diff --git a/macros/latex-dev/base/slides.pdf b/macros/latex-dev/base/slides.pdf Binary files differindex 3efdda8edb..5bdcaaa9e6 100644 --- a/macros/latex-dev/base/slides.pdf +++ b/macros/latex-dev/base/slides.pdf diff --git a/macros/latex-dev/base/slifonts.pdf b/macros/latex-dev/base/slifonts.pdf Binary files differindex aec17314d4..8dc32739ff 100644 --- a/macros/latex-dev/base/slifonts.pdf +++ b/macros/latex-dev/base/slifonts.pdf diff --git a/macros/latex-dev/base/source2e.pdf b/macros/latex-dev/base/source2e.pdf Binary files differindex bb85ca131c..f39b19d128 100644 --- a/macros/latex-dev/base/source2e.pdf +++ b/macros/latex-dev/base/source2e.pdf diff --git a/macros/latex-dev/base/source2edoc.cls b/macros/latex-dev/base/source2edoc.cls index f0f1479cac..5f731af7ae 100644 --- a/macros/latex-dev/base/source2edoc.cls +++ b/macros/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/macros/latex-dev/base/syntonly.pdf b/macros/latex-dev/base/syntonly.pdf Binary files differindex c62cd393f7..3390b696f3 100644 --- a/macros/latex-dev/base/syntonly.pdf +++ b/macros/latex-dev/base/syntonly.pdf diff --git a/macros/latex-dev/base/tlc2.pdf b/macros/latex-dev/base/tlc2.pdf Binary files differindex b43f85c4a8..87fd9f964d 100644 --- a/macros/latex-dev/base/tlc2.pdf +++ b/macros/latex-dev/base/tlc2.pdf diff --git a/macros/latex-dev/base/tlc3.err b/macros/latex-dev/base/tlc3.err index 81975c34e7..d4f94705d7 100644 --- a/macros/latex-dev/base/tlc3.err +++ b/macros/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/macros/latex-dev/base/tlc3.pdf b/macros/latex-dev/base/tlc3.pdf Binary files differindex b7992b7152..24ff91e85b 100644 --- a/macros/latex-dev/base/tlc3.pdf +++ b/macros/latex-dev/base/tlc3.pdf diff --git a/macros/latex-dev/base/tulm.pdf b/macros/latex-dev/base/tulm.pdf Binary files differindex 57f1df3e27..8316f50ae8 100644 --- a/macros/latex-dev/base/tulm.pdf +++ b/macros/latex-dev/base/tulm.pdf diff --git a/macros/latex-dev/base/usrguide-historic.pdf b/macros/latex-dev/base/usrguide-historic.pdf Binary files differindex aabe4c0543..d41dee80ce 100644 --- a/macros/latex-dev/base/usrguide-historic.pdf +++ b/macros/latex-dev/base/usrguide-historic.pdf diff --git a/macros/latex-dev/base/usrguide.pdf b/macros/latex-dev/base/usrguide.pdf Binary files differindex 310c0e11ba..4ab7004018 100644 --- a/macros/latex-dev/base/usrguide.pdf +++ b/macros/latex-dev/base/usrguide.pdf diff --git a/macros/latex-dev/base/utf8ienc.pdf b/macros/latex-dev/base/utf8ienc.pdf Binary files differindex 3925b86fcb..da31897579 100644 --- a/macros/latex-dev/base/utf8ienc.pdf +++ b/macros/latex-dev/base/utf8ienc.pdf diff --git a/macros/latex-dev/base/webcomp.pdf b/macros/latex-dev/base/webcomp.pdf Binary files differindex ce28e4400f..afda6ddc4b 100644 --- a/macros/latex-dev/base/webcomp.pdf +++ b/macros/latex-dev/base/webcomp.pdf |