summaryrefslogtreecommitdiff
path: root/macros/latex-dev/base
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-06-04 03:03:30 +0000
committerNorbert Preining <norbert@preining.info>2024-06-04 03:03:30 +0000
commit90993506c261625fc3372503230dcd1c6d0b6f49 (patch)
treebb8957809f333d66b16ca7904f65065429c48624 /macros/latex-dev/base
parente83ddb0c0c40cddccb9e35b6a1f83b3a70fc2b3d (diff)
CTAN sync 202406040303
Diffstat (limited to 'macros/latex-dev/base')
-rw-r--r--macros/latex-dev/base/README.md2
-rw-r--r--macros/latex-dev/base/alltt.pdfbin223861 -> 223861 bytes
-rw-r--r--macros/latex-dev/base/cfgguide.pdfbin264168 -> 264168 bytes
-rw-r--r--macros/latex-dev/base/changes.txt89
-rw-r--r--macros/latex-dev/base/classes.pdfbin560294 -> 560294 bytes
-rw-r--r--macros/latex-dev/base/clsguide-historic.pdfbin415956 -> 415956 bytes
-rw-r--r--macros/latex-dev/base/clsguide.pdfbin490200 -> 490149 bytes
-rw-r--r--macros/latex-dev/base/clsguide.tex8
-rw-r--r--macros/latex-dev/base/cmfonts.pdfbin292600 -> 292600 bytes
-rw-r--r--macros/latex-dev/base/cyrguide.pdfbin257359 -> 257359 bytes
-rw-r--r--macros/latex-dev/base/doc-code.pdfbin1078116 -> 1078991 bytes
-rw-r--r--macros/latex-dev/base/doc.dtx8
-rw-r--r--macros/latex-dev/base/doc.pdfbin756736 -> 757937 bytes
-rw-r--r--macros/latex-dev/base/docstrip.pdfbin506341 -> 506420 bytes
-rw-r--r--macros/latex-dev/base/encguide.pdfbin1318576 -> 1318576 bytes
-rw-r--r--macros/latex-dev/base/exscale.pdfbin204708 -> 204708 bytes
-rw-r--r--macros/latex-dev/base/fix-cm.pdfbin287727 -> 287727 bytes
-rw-r--r--macros/latex-dev/base/fntguide.pdfbin522678 -> 522678 bytes
-rw-r--r--macros/latex-dev/base/graphpap.pdfbin161722 -> 161722 bytes
-rw-r--r--macros/latex-dev/base/ifthen.pdfbin222460 -> 222460 bytes
-rw-r--r--macros/latex-dev/base/inputenc.pdfbin318372 -> 318372 bytes
-rw-r--r--macros/latex-dev/base/lamport-manual.pdfbin170876 -> 170876 bytes
-rw-r--r--macros/latex-dev/base/latexrelease.pdfbin282095 -> 282095 bytes
-rw-r--r--macros/latex-dev/base/latexsym.pdfbin200759 -> 200759 bytes
-rw-r--r--macros/latex-dev/base/lb2.pdfbin253116 -> 252519 bytes
-rw-r--r--macros/latex-dev/base/letter.pdfbin337375 -> 337745 bytes
-rw-r--r--macros/latex-dev/base/lgc2.pdfbin217659 -> 217663 bytes
-rw-r--r--macros/latex-dev/base/lppl.pdfbin132370 -> 132370 bytes
-rw-r--r--macros/latex-dev/base/ltboxes.dtx37
-rw-r--r--macros/latex-dev/base/ltclass.dtx104
-rw-r--r--macros/latex-dev/base/ltcmd.dtx8
-rw-r--r--macros/latex-dev/base/ltcmdhooks-code.pdfbin753293 -> 753664 bytes
-rw-r--r--macros/latex-dev/base/ltcmdhooks-doc.pdfbin498577 -> 498681 bytes
-rw-r--r--macros/latex-dev/base/ltcmdhooks.dtx16
-rw-r--r--macros/latex-dev/base/ltdefns.dtx13
-rw-r--r--macros/latex-dev/base/ltdirchk.dtx23
-rw-r--r--macros/latex-dev/base/ltexpl.dtx16
-rw-r--r--macros/latex-dev/base/ltfilehook-code.pdfbin806388 -> 806755 bytes
-rw-r--r--macros/latex-dev/base/ltfilehook-doc.pdfbin551737 -> 552099 bytes
-rw-r--r--macros/latex-dev/base/ltfloat.dtx6
-rw-r--r--macros/latex-dev/base/lthooks-code.pdfbin1248786 -> 1248727 bytes
-rw-r--r--macros/latex-dev/base/lthooks-doc.pdfbin758584 -> 758390 bytes
-rw-r--r--macros/latex-dev/base/lthooks.dtx4
-rw-r--r--macros/latex-dev/base/ltkeys.dtx2
-rw-r--r--macros/latex-dev/base/ltluatex.pdfbin325142 -> 325142 bytes
-rw-r--r--macros/latex-dev/base/ltmarks-code.pdfbin711363 -> 717961 bytes
-rw-r--r--macros/latex-dev/base/ltmarks-doc.pdfbin574839 -> 575952 bytes
-rw-r--r--macros/latex-dev/base/ltmarks.dtx159
-rw-r--r--macros/latex-dev/base/ltmeta.dtx9
-rw-r--r--macros/latex-dev/base/ltnews.pdfbin1394343 -> 1406483 bytes
-rw-r--r--macros/latex-dev/base/ltnews.tex2
-rw-r--r--macros/latex-dev/base/ltnews01.pdfbin169553 -> 169553 bytes
-rw-r--r--macros/latex-dev/base/ltnews02.pdfbin151773 -> 151773 bytes
-rw-r--r--macros/latex-dev/base/ltnews03.pdfbin151324 -> 151324 bytes
-rw-r--r--macros/latex-dev/base/ltnews04.pdfbin152551 -> 152551 bytes
-rw-r--r--macros/latex-dev/base/ltnews05.pdfbin175211 -> 175211 bytes
-rw-r--r--macros/latex-dev/base/ltnews06.pdfbin142867 -> 142867 bytes
-rw-r--r--macros/latex-dev/base/ltnews07.pdfbin138214 -> 138214 bytes
-rw-r--r--macros/latex-dev/base/ltnews08.pdfbin155442 -> 155442 bytes
-rw-r--r--macros/latex-dev/base/ltnews09.pdfbin130028 -> 130028 bytes
-rw-r--r--macros/latex-dev/base/ltnews10.pdfbin169433 -> 169433 bytes
-rw-r--r--macros/latex-dev/base/ltnews11.pdfbin112208 -> 112208 bytes
-rw-r--r--macros/latex-dev/base/ltnews12.pdfbin156764 -> 156764 bytes
-rw-r--r--macros/latex-dev/base/ltnews13.pdfbin182483 -> 182483 bytes
-rw-r--r--macros/latex-dev/base/ltnews14.pdfbin170722 -> 170722 bytes
-rw-r--r--macros/latex-dev/base/ltnews15.pdfbin130328 -> 130328 bytes
-rw-r--r--macros/latex-dev/base/ltnews16.pdfbin138107 -> 138107 bytes
-rw-r--r--macros/latex-dev/base/ltnews17.pdfbin166269 -> 166269 bytes
-rw-r--r--macros/latex-dev/base/ltnews18.pdfbin39839 -> 39839 bytes
-rw-r--r--macros/latex-dev/base/ltnews19.pdfbin225936 -> 225936 bytes
-rw-r--r--macros/latex-dev/base/ltnews20.pdfbin318193 -> 318193 bytes
-rw-r--r--macros/latex-dev/base/ltnews21.pdfbin245228 -> 245228 bytes
-rw-r--r--macros/latex-dev/base/ltnews22.pdfbin318026 -> 318026 bytes
-rw-r--r--macros/latex-dev/base/ltnews23.pdfbin286824 -> 286824 bytes
-rw-r--r--macros/latex-dev/base/ltnews24.pdfbin265497 -> 265497 bytes
-rw-r--r--macros/latex-dev/base/ltnews25.pdfbin205100 -> 205100 bytes
-rw-r--r--macros/latex-dev/base/ltnews26.pdfbin379733 -> 379733 bytes
-rw-r--r--macros/latex-dev/base/ltnews27.pdfbin251283 -> 251283 bytes
-rw-r--r--macros/latex-dev/base/ltnews28.pdfbin376933 -> 376950 bytes
-rw-r--r--macros/latex-dev/base/ltnews28.tex4
-rw-r--r--macros/latex-dev/base/ltnews29.pdfbin455437 -> 455437 bytes
-rw-r--r--macros/latex-dev/base/ltnews30.pdfbin512240 -> 512240 bytes
-rw-r--r--macros/latex-dev/base/ltnews31.pdfbin526681 -> 526681 bytes
-rw-r--r--macros/latex-dev/base/ltnews32.pdfbin546540 -> 546540 bytes
-rw-r--r--macros/latex-dev/base/ltnews33.pdfbin522757 -> 522757 bytes
-rw-r--r--macros/latex-dev/base/ltnews34.pdfbin508345 -> 508345 bytes
-rw-r--r--macros/latex-dev/base/ltnews35.pdfbin563307 -> 563305 bytes
-rw-r--r--macros/latex-dev/base/ltnews35.tex2
-rw-r--r--macros/latex-dev/base/ltnews36.pdfbin517934 -> 517934 bytes
-rw-r--r--macros/latex-dev/base/ltnews37.pdfbin456933 -> 456933 bytes
-rw-r--r--macros/latex-dev/base/ltnews38.pdfbin523675 -> 523675 bytes
-rw-r--r--macros/latex-dev/base/ltnews39.pdfbin502104 -> 540172 bytes
-rw-r--r--macros/latex-dev/base/ltnews39.tex519
-rw-r--r--macros/latex-dev/base/ltnews40.pdfbin0 -> 222369 bytes
-rw-r--r--macros/latex-dev/base/ltnews40.tex191
-rw-r--r--macros/latex-dev/base/ltpara-code.pdfbin671774 -> 672708 bytes
-rw-r--r--macros/latex-dev/base/ltpara-doc.pdfbin559700 -> 560616 bytes
-rw-r--r--macros/latex-dev/base/ltpara.dtx13
-rw-r--r--macros/latex-dev/base/ltproperties-code.pdfbin556519 -> 557414 bytes
-rw-r--r--macros/latex-dev/base/ltproperties-doc.pdfbin431622 -> 431935 bytes
-rw-r--r--macros/latex-dev/base/ltproperties.dtx36
-rw-r--r--macros/latex-dev/base/ltshipout-code.pdfbin821264 -> 821643 bytes
-rw-r--r--macros/latex-dev/base/ltshipout-doc.pdfbin567426 -> 567794 bytes
-rw-r--r--macros/latex-dev/base/ltsockets-code.pdfbin598619 -> 599025 bytes
-rw-r--r--macros/latex-dev/base/ltsockets-doc.pdfbin481459 -> 481863 bytes
-rw-r--r--macros/latex-dev/base/lttemplates.dtx127
-rw-r--r--macros/latex-dev/base/lttextcomp.dtx15
-rw-r--r--macros/latex-dev/base/ltvers.dtx4
-rw-r--r--macros/latex-dev/base/ltx3info.pdfbin219358 -> 219358 bytes
-rw-r--r--macros/latex-dev/base/ltxdoc.pdfbin244141 -> 244141 bytes
-rw-r--r--macros/latex-dev/base/makeindx.pdfbin165816 -> 165816 bytes
-rw-r--r--macros/latex-dev/base/modguide.pdfbin257825 -> 257825 bytes
-rw-r--r--macros/latex-dev/base/nfssfont.pdfbin211314 -> 211314 bytes
-rw-r--r--macros/latex-dev/base/proc.pdfbin227065 -> 227065 bytes
-rw-r--r--macros/latex-dev/base/slides.pdfbin375493 -> 375493 bytes
-rw-r--r--macros/latex-dev/base/slifonts.pdfbin233905 -> 233905 bytes
-rw-r--r--macros/latex-dev/base/source2e.pdfbin6245204 -> 6264312 bytes
-rw-r--r--macros/latex-dev/base/syntonly.pdfbin189054 -> 189428 bytes
-rw-r--r--macros/latex-dev/base/tlc2.pdfbin291143 -> 290257 bytes
-rw-r--r--macros/latex-dev/base/tlc3.err73
-rw-r--r--macros/latex-dev/base/tlc3.pdfbin367886 -> 368933 bytes
-rw-r--r--macros/latex-dev/base/tulm.pdfbin162773 -> 162773 bytes
-rw-r--r--macros/latex-dev/base/usrguide-historic.pdfbin439393 -> 439393 bytes
-rw-r--r--macros/latex-dev/base/usrguide.pdfbin487820 -> 487553 bytes
-rw-r--r--macros/latex-dev/base/usrguide.tex4
-rw-r--r--macros/latex-dev/base/utf8ienc.pdfbin353274 -> 353557 bytes
-rw-r--r--macros/latex-dev/base/webcomp.pdfbin146197 -> 146205 bytes
127 files changed, 1080 insertions, 414 deletions
diff --git a/macros/latex-dev/base/README.md b/macros/latex-dev/base/README.md
index 528675aaa8..b3cf23d593 100644
--- a/macros/latex-dev/base/README.md
+++ b/macros/latex-dev/base/README.md
@@ -1,7 +1,7 @@
The LaTeX kernel
================
-Release 2024-06-01 pre-release 2
+Release 2024-11-01 pre-release 0
Overview
--------
diff --git a/macros/latex-dev/base/alltt.pdf b/macros/latex-dev/base/alltt.pdf
index 6bee508aa6..01ae2f4c5d 100644
--- a/macros/latex-dev/base/alltt.pdf
+++ b/macros/latex-dev/base/alltt.pdf
Binary files differ
diff --git a/macros/latex-dev/base/cfgguide.pdf b/macros/latex-dev/base/cfgguide.pdf
index 6ade9c5f60..469b4911f7 100644
--- a/macros/latex-dev/base/cfgguide.pdf
+++ b/macros/latex-dev/base/cfgguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/changes.txt b/macros/latex-dev/base/changes.txt
index 52fbd04f08..37d22f6a38 100644
--- a/macros/latex-dev/base/changes.txt
+++ b/macros/latex-dev/base/changes.txt
@@ -6,6 +6,91 @@ 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.
+================================================================================
+
+#########################
+# 2024-06-01 Release
+#########################
+
+2024-05-31 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltmarks.dtx (subsection{Allocating new mark classes}):
+ Initialize all marks with an id, use 0 when a new class is made (gh/1359)
+ (subsection{Placing and retrieving marks}):
+ Remove the id when returning the mark value (gh/1359)
+
+2024-05-30 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltmarks.dtx (subsection{Placing and retrieving marks}):
+ Use sequence marker to make all marks unique on nearby
+ regions (gh/1359)
+
+2024-05-30 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltmarks.dtx (subsection{Core \LaTeXe{} integration}):
+ Correct logic for first mark in page region if first column contains
+ no marks (gh/1359)
+
+2024-05-16 Yukai Chou <muzimuzhi@gmail.com>
+
+ * ltmarks.dtx, ltmeta.dtx, ltpara.dtx:
+ Drop temp fixing for footnotes in function and variable envs.
+ Supported by l3doc since l3kernel 2023-10-10 (latex3 gh/1266)
+
+2024-04-26 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * doc.dtx:
+ Do not error with "suspicous date" when rolling back to
+ early years of LaTeX2e (gh/1336)
+
+2024-04-24 Yukai Chou <muzimuzhi@gmail.com>
+
+* lttextcomp.dtx
+ Load the 2018 version when rolling back prior to 2018-08-11 (gh/1333)
+ Clean up \providecommand lines
+
+2024-04-22 Yukai Chou <muzimuzhi@gmail.com>
+
+ * lttextcomp.dtx (section{The \texttt{textcomp} package})
+ Drop default package option "info" which changes kernel info to
+ package info (gh/1333)
+
+2024-04-19 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltboxes.dtx (section{\LaTeX\ Box commands}):
+ Use a \hrule strut not a \vrule if already in vertical mode
+ (bug seen first with footmisc/14)
+
+2024-04-17 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltproperties.dtx:
+ Renamed \IfLabelExistTF to \IfLabelExistsTF
+ Renamed \IfPropertyExistTF to \IfPropertyExistsTF
+ Provided T and F variants for both conditionals (gh/1262)
+
+2024-04-17 Joseph Wright <Joseph.Wright@latex-project.org>
+ * ltexpl.dtx, ltdefns.dtx
+ Rename \@expl@cs@argument@spec@@N to \@expl@cs@parameter@spec@@N (gh/1014)
+ * ltexpl.dtx, ltcmd.dtx, ltcmdhooks.dtx
+ Use \cs_parameter_spec:N in place of \cs_argument_spec:N (gh/1014)
+
+2024-04-17 Joseph Wright <Joseph.Wright@latex-project.org>
+ * lttemplates.dtx
+ Use \IfInstanceExistsTF with an 's'
+
+2024-04-15 Joseph Wright <Joseph.Wright@latex-project.org>
+ * lttemplates.dtx
+ Re-factor internals
+
+2024-04-10 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltclass.dtx (section{Implementation}):
+ Provide \IfFileLoadedTF and variants (gh/1222)
+
+ Provide T and F conditionals not just TF for \IfPackageLoaded...
+ and friends (gh/1262)
2024-03-22 Yukai Chou <muzimuzhi@gmail.com>
* ltfilehook.dtx
@@ -138,10 +223,6 @@ not part of the distribution.
* ltplain.dtx (section{Plain \TeX}):
Set \tracinglostchars to 2 in \tracingnone (gh/549)
-================================================================================
-All changes above are only part of the development branch for the next release.
-================================================================================
-
#########################
# 2023-11-01 PL1 Release
#########################
diff --git a/macros/latex-dev/base/classes.pdf b/macros/latex-dev/base/classes.pdf
index 83b67d7f5e..93389a2eec 100644
--- a/macros/latex-dev/base/classes.pdf
+++ b/macros/latex-dev/base/classes.pdf
Binary files differ
diff --git a/macros/latex-dev/base/clsguide-historic.pdf b/macros/latex-dev/base/clsguide-historic.pdf
index 60b5051e6a..feb96fefd4 100644
--- a/macros/latex-dev/base/clsguide-historic.pdf
+++ b/macros/latex-dev/base/clsguide-historic.pdf
Binary files differ
diff --git a/macros/latex-dev/base/clsguide.pdf b/macros/latex-dev/base/clsguide.pdf
index 08cc5b5a17..950e2a287e 100644
--- a/macros/latex-dev/base/clsguide.pdf
+++ b/macros/latex-dev/base/clsguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/clsguide.tex b/macros/latex-dev/base/clsguide.tex
index 0e1927827f..6b9e49c4e8 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{2024-03-17}
+\date{2024-05-24}
\NewDocumentCommand\cs{m}{\texttt{\textbackslash\detokenize{#1}}}
\NewDocumentCommand\marg{m}{\arg{#1}}
@@ -347,7 +347,7 @@ out by using hooks. As a document author, you will likely be familiar with
|\AtBeginDocument|, a wrapper around the more powerful command |\AddToHook|.
The \LaTeX{} kernel provides a large number of dedicated hooks (applying in
a pre-defined location) and generic hooks (applying to arbitrary commands):
-the interface for using these is described in \texttt{lthooks} . There are
+the interface for using these is described in \texttt{lthooks}. There are
also hooks to apply to files, described in \texttt{ltfilehooks}.
\section{The structure of a class or package}
@@ -1220,7 +1220,7 @@ 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'
+share a single namespace. This means that you get a \texttt{Label `A'
multiply defined} warning with the following code:
\begin{verbatim}
\label{A}\RecordProperties{A}{abspage}
@@ -1272,7 +1272,7 @@ immediately when \cs{RecordProperties} is used but during the next
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.
+ suitable for integer operations and comparisons.
\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}.
diff --git a/macros/latex-dev/base/cmfonts.pdf b/macros/latex-dev/base/cmfonts.pdf
index 0d48147368..3dde7a6d7b 100644
--- a/macros/latex-dev/base/cmfonts.pdf
+++ b/macros/latex-dev/base/cmfonts.pdf
Binary files differ
diff --git a/macros/latex-dev/base/cyrguide.pdf b/macros/latex-dev/base/cyrguide.pdf
index 33e984bd52..201663a895 100644
--- a/macros/latex-dev/base/cyrguide.pdf
+++ b/macros/latex-dev/base/cyrguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/doc-code.pdf b/macros/latex-dev/base/doc-code.pdf
index dcf4ace4b3..4fd1fb69d9 100644
--- a/macros/latex-dev/base/doc-code.pdf
+++ b/macros/latex-dev/base/doc-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/doc.dtx b/macros/latex-dev/base/doc.dtx
index 82eb8dc5b8..946f187389 100644
--- a/macros/latex-dev/base/doc.dtx
+++ b/macros/latex-dev/base/doc.dtx
@@ -34,9 +34,9 @@
%\catcode`\<=14
%<+package|shortvrb>\NeedsTeXFormat{LaTeX2e}[1994/12/01]
%<+package>
-%<+package>\providecommand\DeclareRelease[3]{}
-%<+package>\providecommand\DeclareCurrentRelease[2]{}
-%<+package>
+% Any rollback request before 2016-02-15 we try to fullfil with the 2016 version:
+%<+package>\DeclareRelease{}{1994-06-01}
+%<+package> {doc-2016-02-15.sty}
%<+package>\DeclareRelease{v2.1g}{2016-02-15}
%<+package> {doc-2016-02-15.sty}
%<+package>\DeclareRelease{v2}{2021-06-01}
@@ -45,7 +45,7 @@
%<+package>
%<+package>\ProvidesPackage{doc}
%<+shortvrb>\ProvidesPackage{shortvrb}
-%<+package|shortvrb> [2024/02/08 v3.0o
+%<+package|shortvrb> [2024/04/26 v3.0p
%<+package|shortvrb> Standard LaTeX documentation package V3 (FMi)]
%\catcode`\<=12
%
diff --git a/macros/latex-dev/base/doc.pdf b/macros/latex-dev/base/doc.pdf
index caebfcc016..a7462db528 100644
--- a/macros/latex-dev/base/doc.pdf
+++ b/macros/latex-dev/base/doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/docstrip.pdf b/macros/latex-dev/base/docstrip.pdf
index 3a2b6c1130..fbd1598aa5 100644
--- a/macros/latex-dev/base/docstrip.pdf
+++ b/macros/latex-dev/base/docstrip.pdf
Binary files differ
diff --git a/macros/latex-dev/base/encguide.pdf b/macros/latex-dev/base/encguide.pdf
index c0703dda34..e59cc3afaf 100644
--- a/macros/latex-dev/base/encguide.pdf
+++ b/macros/latex-dev/base/encguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/exscale.pdf b/macros/latex-dev/base/exscale.pdf
index 3f8d43d81b..e61b682daa 100644
--- a/macros/latex-dev/base/exscale.pdf
+++ b/macros/latex-dev/base/exscale.pdf
Binary files differ
diff --git a/macros/latex-dev/base/fix-cm.pdf b/macros/latex-dev/base/fix-cm.pdf
index 94dad320aa..ad08353895 100644
--- a/macros/latex-dev/base/fix-cm.pdf
+++ b/macros/latex-dev/base/fix-cm.pdf
Binary files differ
diff --git a/macros/latex-dev/base/fntguide.pdf b/macros/latex-dev/base/fntguide.pdf
index 0a6e2d8a0f..45f2f0d973 100644
--- a/macros/latex-dev/base/fntguide.pdf
+++ b/macros/latex-dev/base/fntguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/graphpap.pdf b/macros/latex-dev/base/graphpap.pdf
index cdf8b6c113..0154471575 100644
--- a/macros/latex-dev/base/graphpap.pdf
+++ b/macros/latex-dev/base/graphpap.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ifthen.pdf b/macros/latex-dev/base/ifthen.pdf
index 8d9001b8e9..af14245f81 100644
--- a/macros/latex-dev/base/ifthen.pdf
+++ b/macros/latex-dev/base/ifthen.pdf
Binary files differ
diff --git a/macros/latex-dev/base/inputenc.pdf b/macros/latex-dev/base/inputenc.pdf
index a873c7cfac..56a267a85d 100644
--- a/macros/latex-dev/base/inputenc.pdf
+++ b/macros/latex-dev/base/inputenc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lamport-manual.pdf b/macros/latex-dev/base/lamport-manual.pdf
index 7e4062040b..b10eb584ef 100644
--- a/macros/latex-dev/base/lamport-manual.pdf
+++ b/macros/latex-dev/base/lamport-manual.pdf
Binary files differ
diff --git a/macros/latex-dev/base/latexrelease.pdf b/macros/latex-dev/base/latexrelease.pdf
index ac46e18d57..f6192a7808 100644
--- a/macros/latex-dev/base/latexrelease.pdf
+++ b/macros/latex-dev/base/latexrelease.pdf
Binary files differ
diff --git a/macros/latex-dev/base/latexsym.pdf b/macros/latex-dev/base/latexsym.pdf
index c50846584c..0032963460 100644
--- a/macros/latex-dev/base/latexsym.pdf
+++ b/macros/latex-dev/base/latexsym.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lb2.pdf b/macros/latex-dev/base/lb2.pdf
index 3e49e79622..033a910c5c 100644
--- a/macros/latex-dev/base/lb2.pdf
+++ b/macros/latex-dev/base/lb2.pdf
Binary files differ
diff --git a/macros/latex-dev/base/letter.pdf b/macros/latex-dev/base/letter.pdf
index c4f2404bce..0ed472993d 100644
--- a/macros/latex-dev/base/letter.pdf
+++ b/macros/latex-dev/base/letter.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lgc2.pdf b/macros/latex-dev/base/lgc2.pdf
index 9febd117bb..81fe96144f 100644
--- a/macros/latex-dev/base/lgc2.pdf
+++ b/macros/latex-dev/base/lgc2.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lppl.pdf b/macros/latex-dev/base/lppl.pdf
index 00092d1c3b..bd03f099f7 100644
--- a/macros/latex-dev/base/lppl.pdf
+++ b/macros/latex-dev/base/lppl.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltboxes.dtx b/macros/latex-dev/base/ltboxes.dtx
index a041312cc5..7e6c787ab8 100644
--- a/macros/latex-dev/base/ltboxes.dtx
+++ b/macros/latex-dev/base/ltboxes.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltboxes.dtx}
- [2024/02/08 v1.4e LaTeX Kernel (Box Commands)]
+ [2024/04/22 v1.4f LaTeX Kernel (Box Commands)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltboxes.dtx}
@@ -1011,7 +1011,7 @@
% set globally to false when they are definitely true.
%
% If anyone is unhappy with this argument then both flags should be
-% treated as in |\set@nobreak|; otherwise this command will be
+% treated as in |\@setnobreak|; otherwise this command will be
% redundant.
% \changes{v1.1a}{1996/10/24}{Added local settings of flags: dangerous!!}
% \begin{macrocode}
@@ -1487,9 +1487,40 @@
%
% The |\nobreak| was added (1995/10/31) to allow hyphenation of the
% final word of the paragraph.
+%
+% In 2024 we changed the macro to account for vertical mode. In
+% that case we use a strut produced with \cs{hrule} to avoid
+% starting a new paragraph (resulting in spurious extra line) and
+% also account for the \cs{prevdepth} of the previous line.
+% \changes{v1.4f}{2024/04/18}
+% {Use a \cs{hrule} strut not a \cs{vrule} if already in
+% vertical mode (bug seen first with footmisc/14)}
% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2024/06/01}%
+%<latexrelease> {\@finalstrut}{final strut correction}%
\def\@finalstrut#1{%
- \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1}
+ \unskip
+ \ifhmode \nobreak \vrule
+ \else
+ \ifdim \prevdepth=-\@m\p@
+ \else
+ \vskip-\prevdepth
+ \fi
+ \hrule
+ \fi
+ \@width\z@\@height\z@\@depth\dp#1}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@finalstrut}{final strut correction}%
+%<latexrelease>\def\@finalstrut#1{%
+%<latexrelease> \unskip\ifhmode\nobreak\fi
+%<latexrelease> \vrule\@width\z@\@height\z@\@depth\dp#1}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex-dev/base/ltclass.dtx b/macros/latex-dev/base/ltclass.dtx
index 1948db2c6b..35bbb8a55a 100644
--- a/macros/latex-dev/base/ltclass.dtx
+++ b/macros/latex-dev/base/ltclass.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltclass.dtx}
- [2024/03/22 v1.5j LaTeX Kernel (Class & Package Interface)]
+ [2024/04/10 v1.5k LaTeX Kernel (Class & Package Interface)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltclass.dtx}
@@ -1075,19 +1075,20 @@
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2021/11/15}%
-%<latexrelease> {\IfPackageLoadedtTF}{Test package loading}%
+%<latexrelease>\IncludeInRelease{2024/06/01}%
+%<latexrelease> {\IfPackageLoadedTF}{Test package loading}%
\let \IfPackageLoadedTF \@ifpackageloaded
\let \IfClassLoadedTF \@ifclassloaded
\let \IfPackageLoadedWithOptionsTF \@ifpackagewith
\let \IfClassLoadedWithOptionsTF \@ifclasswith
% \end{macrocode}
-% For rollback pretend it was available since the beginning of dawn.
+% For rollback/rollforward pretend everything was available since
+% the beginning of dawn.
% \begin{macrocode}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{0000/00/00}%
-%<latexrelease> {\IfPackageLoadedtTF}{Test package loading}%
+%<latexrelease> {\IfPackageLoadedTF}{Test package loading}%
%<latexrelease>
%<latexrelease>\let \IfPackageLoadedTF \@ifpackageloaded
%<latexrelease>\let \IfClassLoadedTF \@ifclassloaded
@@ -1102,6 +1103,99 @@
%
%
%
+% \begin{macro}{
+% \IfPackageLoadedT,\IfPackageLoadedF,
+% \IfPackageAtLeastT,\IfPackageAtLeastF,
+% \IfClassAtLeastT,\IfClassAtLeastF,
+% \IfFileAtLeastT,\IfFileAtLeastF,
+% \IfFormatAtLeastT,\IfFormatAtLeastF,
+% \IfPackageLoadedWithOptionsT,\IfPackageLoadedWithOptionsF,
+% \IfClassLoadedT,\IfClassLoadedF,
+% \IfClassLoadedWithOptionsF,\IfClassLoadedWithOptionTF
+% }
+% A few more conditionals for convenience
+% \changes{v1.5k}{2024/04/10}{Provide T and F conditionals not just TF
+% (gh/1262)}
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2024/06/01}%
+%<latexrelease> {\IfPackageLoadedT}{More conditionals}%
+\def\IfPackageLoadedT #1#2{\IfPackageLoadedTF{#1}{#2}{}}
+\def\IfPackageLoadedF #1{\IfPackageLoadedTF{#1}{}}
+\def\IfClassLoadedT #1#2{\IfClassLoadedTF{#1}{#2}{}}
+\def\IfClassLoadedF #1{\IfClassLoadedTF{#1}{}}
+\def\IfPackageAtLeastT#1#2#3{\IfPackageAtLeastTF{#1}{#2}{#3}{}}
+\def\IfPackageAtLeastF #1#2{\IfPackageAtLeastTF{#1}{#2}{}}
+\def\IfClassAtLeastT #1#2#3{\IfClassAtLeastTF{#1}{#2}{#3}{}}
+\def\IfClassAtLeastF #1#2{\IfClassAtLeastTF{#1}{#2}{}}
+\def\IfFileAtLeastT #1#2#3{\IfFileAtLeastTF{#1}{#2}{#3}{}}
+\def\IfFileAtLeastF #1#2{\IfFileAtLeastTF{#1}{#2}{}}
+\def\IfFormatAtLeastT #1#2{\IfFormatAtLeastTF{#1}{#2}{}}
+\def\IfFormatAtLeastF #1{\IfFormatAtLeastTF{#1}{}}
+\def\IfPackageLoadedWithOptionsT #1#2#3{\IfPackageLoadedWithOptionsTF{#1}{#2}{#3}{}}
+\def\IfPackageLoadedWithOptionsF #1#2{\IfPackageLoadedWithOptionsTF{#1}{#2}{}}
+\def\IfClassLoadedWithOptionsT #1#2#3{\IfClassLoadedWithOptionsTF{#1}{#2}{#3}{}}
+\def\IfClassLoadedWithOptionsF #1#2{\IfClassLoadedWithOptionsTF{#1}{#2}{}}
+% \end{macrocode}
+%
+% \begin{macro}{\IfFileLoadedTF,\IfFileLoadedT,\IfFileLoadedF}
+% These three commands haven't been there at all in the past.
+% \changes{v1.5k}{2024/04/10}{Provide \cs{IfFileLoadedTF} and variants
+% (gh/1222)}
+% \begin{macrocode}
+\def\IfFileLoadedTF#1{%
+ \expandafter\ifx\csname ver@#1\endcsname\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi}
+\def\IfFileLoadedT#1#2{\IfFileLoadedTF{#1}{#2}{}}
+\def\IfFileLoadedF #1{\IfFileLoadedTF{#1}{}}
+% \end{macrocode}
+% For rollback/rollforward pretend everything was available since
+% the beginning of dawn.
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\IfPackageLoadedT}{More conditionals}%
+%<latexrelease>
+%<latexrelease>\def\IfPackageLoadedT #1#2{\IfPackageLoadedTF{#1}{#2}{}}
+%<latexrelease>\def\IfPackageLoadedF #1{\IfPackageLoadedTF{#1}{}}
+%<latexrelease>\def\IfClassLoadedT #1#2{\IfClassLoadedTF{#1}{#2}{}}
+%<latexrelease>\def\IfClassLoadedF #1{\IfClassLoadedTF{#1}{}}
+%<latexrelease>\def\IfPackageAtLeastT#1#2#3{\IfPackageAtLeastTF{#1}{#2}{#3}{}}
+%<latexrelease>\def\IfPackageAtLeastF #1#2{\IfPackageAtLeastTF{#1}{#2}{}}
+%<latexrelease>\def\IfClassAtLeastT #1#2#3{\IfClassAtLeastTF{#1}{#2}{#3}{}}
+%<latexrelease>\def\IfClassAtLeastF #1#2{\IfClassAtLeastTF{#1}{#2}{}}
+%<latexrelease>\def\IfFileAtLeastT #1#2#3{\IfFileAtLeastTF{#1}{#2}{#3}{}}
+%<latexrelease>\def\IfFileAtLeastF #1#2{\IfFileAtLeastTF{#1}{#2}{}}
+%<latexrelease>\def\IfFormatAtLeastT #1#2{\IfFormatAtLeastTF{#1}{#2}{}}
+%<latexrelease>\def\IfFormatAtLeastF #1{\IfFormatAtLeastTF{#1}{}}
+%<latexrelease>\def\IfPackageLoadedWithOptionsT #1#2#3{\IfPackageLoadedWithOptionsTF{#1}{#2}{#3}{}}
+%<latexrelease>\def\IfPackageLoadedWithOptionsF #1#2{\IfPackageLoadedWithOptionsTF{#1}{#2}{}}
+%<latexrelease>\def\IfClassLoadedWithOptionsT #1#2#3{\IfClassLoadedWithOptionsTF{#1}{#2}{#3}{}}
+%<latexrelease>\def\IfClassLoadedWithOptionsF #1#2{\IfClassLoadedWithOptionsTF{#1}{#2}{}}
+%<latexrelease>
+%<latexrelease>\def\IfFileLoadedTF#1{%
+%<latexrelease> \expandafter\ifx\csname ver@#1\endcsname\relax
+%<latexrelease> \expandafter\@secondoftwo
+%<latexrelease> \else
+%<latexrelease> \expandafter\@firstoftwo
+%<latexrelease> \fi}
+%<latexrelease>\def\IfFileLoadedT#1#2{\IfFileLoadedTF{#1}{#2}{}}
+%<latexrelease>\def\IfFileLoadedF #1{\IfFileLoadedTF{#1}{}}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+%
% \begin{macro}{\ProvidesPackage}
% Checks that the current filename is correct, and defines
% |\ver@filename|.
diff --git a/macros/latex-dev/base/ltcmd.dtx b/macros/latex-dev/base/ltcmd.dtx
index f57ceeedff..69bd162e56 100644
--- a/macros/latex-dev/base/ltcmd.dtx
+++ b/macros/latex-dev/base/ltcmd.dtx
@@ -34,8 +34,8 @@
%%% From File: ltcmd.dtx
%
% \begin{macrocode}
-\def\ltcmdversion{v1.2d}
-\def\ltcmddate{2024-03-21}
+\def\ltcmdversion{v1.2e}
+\def\ltcmddate{2024-04-17}
% \end{macrocode}
%
%<*driver>
@@ -4552,6 +4552,8 @@
% \changes{v1.0l}{2022/03/18}{Fix \cs{@@_cmd_type_cases:NnnnnF}
% prematurely expanding macros (gh/795)}
% \changes{v1.2b}{2023/12/01}{Extend for optimized commands}
+% \changes{v1.2e}{2024/04/17}{Use \cs{__kernel_cs_parameter_spec:N} instead
+% of \cs{cs_argument_spec:N}/\cs{cs_parameter_spec:N}}
% \begin{macro}{\@@_cmd_if_xparse_aux:N}
%
% To determine whether the command is an \pkg{xparse} command check
@@ -4570,7 +4572,7 @@
{
\exp_args:Ne \str_case_e:nnF
{
- \exp_args:Nf \tl_if_empty:nT { \cs_argument_spec:N #1 }
+ \exp_args:Nf \tl_if_empty:nT { \__kernel_cs_parameter_spec:N #1 }
{ \exp_not:N \exp_not:n { \exp_not:e { \tl_head:N #1 } } }
}
{
diff --git a/macros/latex-dev/base/ltcmdhooks-code.pdf b/macros/latex-dev/base/ltcmdhooks-code.pdf
index 1429b2063c..a9d86f40f4 100644
--- a/macros/latex-dev/base/ltcmdhooks-code.pdf
+++ b/macros/latex-dev/base/ltcmdhooks-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltcmdhooks-doc.pdf b/macros/latex-dev/base/ltcmdhooks-doc.pdf
index cd9af57523..1f35eefe5b 100644
--- a/macros/latex-dev/base/ltcmdhooks-doc.pdf
+++ b/macros/latex-dev/base/ltcmdhooks-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltcmdhooks.dtx b/macros/latex-dev/base/ltcmdhooks.dtx
index a3c89b48a9..f8a8699d7e 100644
--- a/macros/latex-dev/base/ltcmdhooks.dtx
+++ b/macros/latex-dev/base/ltcmdhooks.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%%% From File: ltcmdhooks.dtx
+%% From File: ltcmdhooks.dtx
%% Copyright (C) 2020-2024
%% Frank Mittelbach, Phelype Oleinik, The LaTeX Project
%
@@ -20,7 +20,7 @@
%<*driver>
% \fi
\ProvidesFile{ltcmdhooks.dtx}
- [2024/03/09 v1.0i LaTeX Kernel (Command hooks)]
+ [2024/04/17 v1.0j LaTeX Kernel (Command hooks)]
% \iffalse
%
\documentclass{l3doc}
@@ -406,6 +406,8 @@
% \end{macrocode}
%
% \changes{v1.0b}{2021/05/24}{Use \cs{msg_...} instead of \cs{__kernel_msg...}}
+% \changes{v1.0j}{2024/04/17}{Use \cs{__kernel_cs_parameter_spec:N} instead
+% of \cs{cs_argument_spec:N}/\cs{cs_parameter_spec:N}}
%
% \begin{macrocode}
%<*2ekernel|latexrelease>
@@ -850,14 +852,14 @@
\@@_patch_debug:x { ++~command~can~be~patched~without~rescanning }
% \end{macrocode}
% We'll start by counting the number of arguments in the command by
-% counting the number of characters in the \cs{cs_argument_spec:N} of
+% counting the number of characters in the \cs{cs_parameter_spec:N} of
% the macro, divided by two, and subtracting one if the command has an
% optional argument (that is, an extra |[]| in its
% \meta{parameter text}).
% \begin{macrocode}
\int_set:Nn \l_@@_patch_num_args_int
{
- \exp_args:Nf \str_count:n { \cs_argument_spec:N #2 } / 2
+ \exp_args:Nf \str_count:n { \__kernel_cs_parameter_spec:N #2 } / 2
\bool_if:NT #1 { -1 }
}
% \end{macrocode}
@@ -1010,7 +1012,7 @@
%<latexrelease> \@@_patch_debug:x { ++~command~can~be~patched~without~rescanning }
%<latexrelease> \int_set:Nn \l_@@_patch_num_args_int
%<latexrelease> {
-%<latexrelease> \exp_args:Nf \str_count:n { \cs_argument_spec:N #2 } / 2
+%<latexrelease> \exp_args:Nf \str_count:n { \__kernel_cs_parameter_spec:N #2 } / 2
%<latexrelease> \bool_if:NT #1 { -1 }
%<latexrelease> }
%<latexrelease> \int_compare:nNnTF { \l_@@_patch_num_args_int } > { \c_zero_int }
@@ -1260,12 +1262,12 @@
% top-level macro with no arguments, so testing this first would
% short-circuit \tn{robust@command@act} and the top-level macros would
% be incorrectly patched. In that case, we just check if the
-% \cs{cs_argument_spec:N} is empty, and call
+% \cs{cs_parameter_spec:N} is empty, and call
% \cs{@@_patch_expand_redefine:NNnn}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_retokenize_patch:Nnn #1 #2 #3
{
- \str_if_eq:eeTF { \cs_argument_spec:N #1 } { }
+ \str_if_eq:eeTF { \__kernel_cs_parameter_spec:N #1 } { }
{ \@@_patch_expand_redefine:NNnn \c_false_bool #1 {#2} {#3} }
{
\@@_patch_debug:x { ..~command~can~only~be~patched~by~rescanning }
diff --git a/macros/latex-dev/base/ltdefns.dtx b/macros/latex-dev/base/ltdefns.dtx
index db05962505..d9ec12e75a 100644
--- a/macros/latex-dev/base/ltdefns.dtx
+++ b/macros/latex-dev/base/ltdefns.dtx
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltdefns.dtx}
- [2024/02/29 v1.5s LaTeX Kernel (definition commands)]
+ [2024/04/17 v1.5t LaTeX Kernel (definition commands)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltdefns.dtx}
@@ -91,6 +91,9 @@
% \changes{v1.4b}{2015/02/21}
% {Removed autoload support}
% \changes{v1.5l}{2020/08/21}{Integration of new hook management interface}
+% \changes{v1.5t}{2024/04/17}
+% {Rename \cs{@expl@cs@argument@spec@@N} to
+% \cs{@expl@cs@parameter@spec@@N} (gh/1014)}
%
% \section{Definitions}
%
@@ -2020,7 +2023,7 @@
\long\def\@show@newcommand@aux#1#2#3{%
\typeout{> \string#1=\@expl@cs@prefix@spec@@N#1macro:}%
#3{default \string##1=\expandafter\detokenize\@gobblethree#2.^^J%
- \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1}}
+ \@expl@cs@parameter@spec@@N#1->\@expl@cs@replacement@spec@@N#1}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2121,7 +2124,7 @@
\@show@environment@end#1}
\long\def\@show@environment@begin#1{%
\typeout{> \string\begin{\@expl@cs@to@str@@N#1}=environment:}%
- \typeout{\@expl@cs@argument@spec@@N#1->%
+ \typeout{\@expl@cs@parameter@spec@@N#1->%
\@expl@cs@replacement@spec@@N#1.^^J}}
% \end{macrocode}
% \end{macro}
@@ -2143,7 +2146,7 @@
\long\def\@show@environment@end@aux#1#2{%
\@show@tokens{\string\end{\@expl@cs@to@str@@N#2}%
\ifx\relax#1=undefined%
- \else:^^J\@expl@cs@argument@spec@@N#1->%
+ \else:^^J\@expl@cs@parameter@spec@@N#1->%
\@expl@cs@replacement@spec@@N#1%
\fi}}
% \end{macrocode}
@@ -2162,7 +2165,7 @@
% \begin{macrocode}
\def\@show@nonstop#1{%
\typeout{> \string#1=\@expl@cs@prefix@spec@@N#1macro:^^J%
- \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1.}}
+ \@expl@cs@parameter@spec@@N#1->\@expl@cs@replacement@spec@@N#1.}}
\def\@show@typeout#1{\typeout{> #1.^^J}}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex-dev/base/ltdirchk.dtx b/macros/latex-dev/base/ltdirchk.dtx
index d06f68a706..917431552b 100644
--- a/macros/latex-dev/base/ltdirchk.dtx
+++ b/macros/latex-dev/base/ltdirchk.dtx
@@ -263,6 +263,10 @@
% In current formats enable primitives with unprefixed names.
% the \textsf{latexrelease} guards allow the primitives to be
% defined with a |\luatex| prefix if older formats are specified.
+%
+% The unprefixed forms are \emph{not} undefined for improved
+% compatibility with external packages when rolling back
+% the format.
% \begin{macrocode}
%</initex>
%</dircheck>
@@ -280,25 +284,6 @@
%<latexrelease> "luatex",
%<latexrelease> tex.extraprimitives("core","omega", "aleph", "luatex")
%<latexrelease> )
-%<latexrelease> local i
-%<latexrelease> local t = { }
-%<latexrelease> for _,i in pairs(tex.extraprimitives("luatex")) do
-%<latexrelease> if not string.match(i,"^U") then
-%<latexrelease> if not string.match(i, "^luatex") then
-%<latexrelease> table.insert(t,i)
-%<latexrelease> end
-%<latexrelease> else
-%<latexrelease> if string.match(i,"^Uchar$") then
-%<latexrelease> table.insert(t,i)
-%<latexrelease> end
-%<latexrelease> end
-%<latexrelease> end
-%<latexrelease> for _,i in pairs(t) do
-%<latexrelease> tex.print(
-%<latexrelease> "\noexpand\\let\noexpand\\" .. i
-%<latexrelease> .. "\noexpand\\undefined"
-%<latexrelease> )
-%<latexrelease> end
%<latexrelease>}
%<latexrelease>\EndIncludeInRelease
%<latexrelease>\fi
diff --git a/macros/latex-dev/base/ltexpl.dtx b/macros/latex-dev/base/ltexpl.dtx
index 4aaf799e32..410235a056 100644
--- a/macros/latex-dev/base/ltexpl.dtx
+++ b/macros/latex-dev/base/ltexpl.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltexpl.dtx}
- [2023/10/13 v1.3g LaTeX Kernel (expl3-dependent code)]
+ [2024/04/17 v1.3h LaTeX Kernel (expl3-dependent code)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltexpl.dtx}
@@ -356,9 +356,19 @@
% \changes{v1.2e}{2020/08/19}
% {Add \cs{@expl@cs@\meta{thing}@spec@@N}
% for \cs{ShowCommand} (gh/373)}
+% \changes{v1.3h}{2024/04/17}
+% {Rename \cs{@expl@cs@argument@spec@@N} to
+% \cs{@expl@cs@parameter@spec@@N} (gh/1014)}
+% \changes{v1.3h}{2024/04/17}
+% {Update name of \pkg{expl3} function}
+% \changes{v1.3h}{2024/04/17}
+% {Add a kernel-level copy of \cs{cs_parameter_spec:N}}
% \begin{macrocode}
\cs_gset_eq:NN \@expl@cs@prefix@spec@@N \cs_prefix_spec:N
-\cs_gset_eq:NN \@expl@cs@argument@spec@@N \cs_argument_spec:N
+\cs_if_exist:NTF \cs_parameter_spec:N
+ { \cs_gset_eq:NN \@expl@cs@parameter@spec@@N \cs_parameter_spec:N }
+ { \cs_gset_eq:NN \@expl@cs@parameter@spec@@N \cs_argument_spec:N }
+\cs_gset_eq:NN \__kernel_cs_parameter_spec:N \@expl@cs@parameter@spec@@N
\cs_gset_eq:NN \@expl@cs@replacement@spec@@N \cs_replacement_spec:N
% \end{macrocode}
%
@@ -387,7 +397,7 @@
%<latexrelease>\let \@expl@cs@to@str@@N \@undefined
%<latexrelease>\let \@expl@str@if@eq@@nnTF \@undefined
%<latexrelease>\let \@expl@cs@prefix@spec@@N \@undefined
-%<latexrelease>\let \@expl@cs@argument@spec@@N \@undefined
+%<latexrelease>\let \@expl@cs@parameter@spec@@N \@undefined
%<latexrelease>\let \@expl@cs@replacement@spec@@N \@undefined
%<latexrelease>\let \@expl@str@map@function@@NN \@undefined
%<latexrelease>\EndIncludeInRelease
diff --git a/macros/latex-dev/base/ltfilehook-code.pdf b/macros/latex-dev/base/ltfilehook-code.pdf
index 8b4b2d52c7..9fbba5598a 100644
--- a/macros/latex-dev/base/ltfilehook-code.pdf
+++ b/macros/latex-dev/base/ltfilehook-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltfilehook-doc.pdf b/macros/latex-dev/base/ltfilehook-doc.pdf
index 5dc31034ee..de8fb50d29 100644
--- a/macros/latex-dev/base/ltfilehook-doc.pdf
+++ b/macros/latex-dev/base/ltfilehook-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltfloat.dtx b/macros/latex-dev/base/ltfloat.dtx
index a07e5e81da..ef057def0b 100644
--- a/macros/latex-dev/base/ltfloat.dtx
+++ b/macros/latex-dev/base/ltfloat.dtx
@@ -31,7 +31,7 @@
%
%<*driver>
% \fi
-\ProvidesFile{ltfloat.dtx}[2021/10/14 v1.2g LaTeX Kernel (Floats)]
+\ProvidesFile{ltfloat.dtx}[2024/04/22 v1.2g LaTeX Kernel (Floats)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltfloat.dtx}
@@ -559,7 +559,7 @@
% set globally to false when they are definitely true.
%
% If anyone is unhappy with this argument then both flags should be
-% treated as in |\set@nobreak|; otherwise this command will be
+% treated as in |\@setnobreak|; otherwise this command will be
% redundant.
% \changes{v1.1p}{1996/10/24}
% {Added local settings of flags: dangerous!!}
@@ -1061,7 +1061,7 @@
% set globally to false when they are definitely true.
%
% If anyone is unhappy with this argument then both flags should be
-% treated as in |\set@nobreak|; otherwise this command will be
+% treated as in |\@setnobreak|; otherwise this command will be
% redundant.
% \changes{v1.1p}{1996/10/24}
% {Added local settings of flags: dangerous!!}
diff --git a/macros/latex-dev/base/lthooks-code.pdf b/macros/latex-dev/base/lthooks-code.pdf
index 2dd40dd859..e1f4a204c8 100644
--- a/macros/latex-dev/base/lthooks-code.pdf
+++ b/macros/latex-dev/base/lthooks-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lthooks-doc.pdf b/macros/latex-dev/base/lthooks-doc.pdf
index 0a32eabd53..2306cfddde 100644
--- a/macros/latex-dev/base/lthooks-doc.pdf
+++ b/macros/latex-dev/base/lthooks-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lthooks.dtx b/macros/latex-dev/base/lthooks.dtx
index 7e02aa4fd5..d282ff841c 100644
--- a/macros/latex-dev/base/lthooks.dtx
+++ b/macros/latex-dev/base/lthooks.dtx
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{lthooks.dtx}
- [2024/03/09 v1.1h LaTeX Kernel (hooks)]
+ [2024/04/22 v1.1h LaTeX Kernel (hooks)]
% \iffalse
%
\documentclass{l3doc}
@@ -1549,7 +1549,7 @@
% \hook{cmd},
% \hook{env},
% \hook{file},
-% \hook{include}
+% \hook{include},
% \hook{package}, and
% \hook{class},
% and all these are available out of the box: you only have to
diff --git a/macros/latex-dev/base/ltkeys.dtx b/macros/latex-dev/base/ltkeys.dtx
index da8340ea9d..34a0ab4b47 100644
--- a/macros/latex-dev/base/ltkeys.dtx
+++ b/macros/latex-dev/base/ltkeys.dtx
@@ -100,7 +100,7 @@
% \texttt{second-name} can be given anywhere, and will save its value in
% \cs{@mypkg@other@name}.
%
-% Keys created \emph{before} the use of \cs{ProcessKeyOptions}act as
+% Keys created \emph{before} the use of \cs{ProcessKeyOptions} act as
% package options.
% \end{function}
%
diff --git a/macros/latex-dev/base/ltluatex.pdf b/macros/latex-dev/base/ltluatex.pdf
index 1a44905749..9f7e394ded 100644
--- a/macros/latex-dev/base/ltluatex.pdf
+++ b/macros/latex-dev/base/ltluatex.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltmarks-code.pdf b/macros/latex-dev/base/ltmarks-code.pdf
index 50f1b1e0f8..a62ee81b7d 100644
--- a/macros/latex-dev/base/ltmarks-code.pdf
+++ b/macros/latex-dev/base/ltmarks-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltmarks-doc.pdf b/macros/latex-dev/base/ltmarks-doc.pdf
index 7ae166d8a2..7471e90a90 100644
--- a/macros/latex-dev/base/ltmarks-doc.pdf
+++ b/macros/latex-dev/base/ltmarks-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltmarks.dtx b/macros/latex-dev/base/ltmarks.dtx
index dcfa2fcb27..a9f3bb0184 100644
--- a/macros/latex-dev/base/ltmarks.dtx
+++ b/macros/latex-dev/base/ltmarks.dtx
@@ -17,21 +17,12 @@
%<*driver>
% \fi
\ProvidesFile{ltmarks.dtx}
- [2024/02/11 v1.0e LaTeX Kernel (Marks)]
+ [2024/05/31 v1.0g LaTeX Kernel (Marks)]
% \iffalse
%
\documentclass{l3doc}
\GetFileInfo{ltmarks.dtx}
-%\usepackage{ltmarks}
-
-% Fixing footnotes in functions and variables: this should be in l3doc!
-
-\newcommand\fixfootnote[2]{\footnotemark
- \AddToHookNext{env/#1/after}{\footnotetext{#2}}}
-\AddToHook{env/function/begin}{\def\footnote{\fixfootnote{function}}}
-\AddToHook{env/variable/begin}{\def\footnote{\fixfootnote{variable}}}
-
\EnableCrossrefs
\CodelineIndex
\begin{document}
@@ -293,6 +284,11 @@
% The \meta{pos\textsubscript{\itshape i}} argument can be either
% \texttt{top}, \texttt{first}, or \texttt{last}.
%
+% Important to note is that the comparison is not with respect to
+% the textual content of the marks but whether or not they
+% originated from the same \cs{InsertMark} command (or the L3 layer
+% version \cs{mark_insert:nn}).
+%
% If you wish to compare marks across different regions or across
% different classes, you have to do it using the generic test only
% available in the L3 programming layer or do it manually, i.e.,
@@ -809,6 +805,32 @@
\tl_new:c { g_@@_last-column_top_ #1 _tl }
\tl_new:c { g_@@_last-column_first_ #1 _tl }
\tl_new:c { g_@@_last-column_last_ #1 _tl }
+% \end{macrocode}
+% All marks will have an identication at the beginning of the form
+% \cs{@@_id:n}\texttt\{\meta{number}\texttt\} and therefore the
+% initial empty values should have that too, so that data extraction
+% is going to be uniform.
+% \changes{v1.0g}{2024/05/31}{Initialize all marks with an id, use 0
+% when a new class is made (gh/1359)}
+% \begin{macrocode}
+ \tl_set:cn { g_@@_page_top_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_page_first_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_page_last_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_previous-page_top_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_previous-page_first_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_previous-page_last_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_column_top_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_column_first_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_column_last_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_previous-column_top_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_previous-column_first_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_previous-column_last_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_first-column_top_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_first-column_first_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_first-column_last_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_last-column_top_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_last-column_first_ #1 _tl }{ \@@_id:n{0} }
+ \tl_set:cn { g_@@_last-column_last_ #1 _tl }{ \@@_id:n{0} }
}
% \end{macrocode}
% \end{macro}
@@ -1408,7 +1430,18 @@
% \begin{macrocode}
\@kernel@before@insertmark
\hook_use:n { insertmark }
- \unrestored@protected@xdef \g_@@_tmp_tl {#2}
+ \unrestored@protected@xdef \g_@@_tmp_tl
+ {
+% \end{macrocode}
+% To ensure that marks are unique we insert a hidden sequence
+% marker at the beginning of the content of the mark containing the
+% sequence number of the mark.
+% \changes{v1.0f}{2024/05/30}{Use sequence marker to make all marks
+% unique on nearby regions (gh/1359)}
+% \begin{macrocode}
+ \@@_id:n{ \int_use:N\g_@@_int }
+ #2
+ }
%<*trace>
\@@_debug:n{ \iow_term:x { Marks:~ set~#1~<-~
'\tl_to_str:V \g_@@_tmp_tl' ~ \msg_line_context: } }
@@ -1421,9 +1454,11 @@
% becomes empty, but not immediately; otherwise we just put
% \cs{g_@@_tmp_tl} in.
% \begin{macrocode}
- \tl_if_empty:NTF \g_@@_tmp_tl
- { \exp_not:n { \prg_do_nothing: } }
- { \exp_not:o { \g_@@_tmp_tl } }
+% this is no longer needed with 1.0f
+% \tl_if_empty:NTF \g_@@_tmp_tl
+% { \exp_not:n { \prg_do_nothing: } }
+% { \exp_not:o { \g_@@_tmp_tl } }
+ \exp_not:o { \g_@@_tmp_tl }
}
\group_end:
% \end{macrocode}
@@ -1445,15 +1480,43 @@
% \end{macro}
%
%
+% \begin{macro}{\@@_id:n}
+% A hidden marker is placed into every mark added by
+% \cs{mark_insert:nn}. It will will not show up in the output but
+% its argument (a counter value that is incremented) makes all
+% marks unique so the test for \enquote{equal} is not fooled by two
+% different marks having the same mark text.
+% \changes{v1.0f}{2024/05/30}{Use sequence marker to make all marks
+% unique on nearby regions (gh/1359)}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_id:n #1 { }
+% \end{macrocode}
+% \end{macro}
+%
+%
% \begin{macro}[int]{\@kernel@before@insertmark}
% \begin{macro}{insertmark}
% By default \cs{label}, \cs{index}, and \cs{glossary} do nothing
% when the mark is inserted.
% \begin{macrocode}
+\int_new:N \g_@@_int
\cs_new:Npn \@kernel@before@insertmark {
\cs_set_eq:NN \label \scan_stop:
\cs_set_eq:NN \index \scan_stop:
\cs_set_eq:NN \glossary \scan_stop:
+% \end{macrocode}
+% We count each mark and use that to place a hidden marker in front
+% of the mark text. To ensure that there is no overflow (very
+% unlikely but you never know) we restart every 100000 marks. Thus,
+% if somebody puts more than that number of marks on a single page
+% you could construct a scenario in which that approach fails.
+% \changes{v1.0f}{2024/05/30}{Use sequence marker to make all marks
+% unique on nearby regions (gh/1359)}
+% \begin{macrocode}
+ \int_compare:nNnTF \g_@@_int < {99999}
+ { \int_gincr:N \g_@@_int }
+ { \int_gzero:N \g_@@_int }
+
}
% \end{macrocode}
% The public hook to augment the setup.
@@ -1473,10 +1536,20 @@
%
% If used with an unknown class or region they generate an error
% (fairly low-level because we are in an expandable context).
+%
+% Each mark starts with an id and while the id does not print it is
+% nevertheless better to remove it when returning the mark, so that
+% downstream manipulation of the data doesn't have to deal with it.
+% \changes{v1.0g}{2024/05/31}{Remove the id when returning the mark value (gh/1359)}
% \begin{macrocode}
-\cs_new:Npn \mark_use_first:nn #1#2 { \exp_not:v { g_@@_#1_first_#2_tl } }
-\cs_new:Npn \mark_use_last:nn #1#2 { \exp_not:v { g_@@_#1_last_#2_tl } }
-\cs_new:Npn \mark_use_top:nn #1#2 { \exp_not:v { g_@@_#1_top_#2_tl } }
+\cs_new:Npn \mark_use_first:nn #1#2 { \@@_use:v { g_@@_#1_first_#2_tl } }
+\cs_new:Npn \mark_use_last:nn #1#2 { \@@_use:v { g_@@_#1_last_#2_tl } }
+\cs_new:Npn \mark_use_top:nn #1#2 { \@@_use:v { g_@@_#1_top_#2_tl } }
+% \end{macrocode}
+% This is what the \cs{use_none:nn} accomplishes.
+% \begin{macrocode}
+\cs_new:Npn \@@_use:n #1 { \exp_not:o { \use_none:nn #1 } }
+\cs_generate_variant:Nn \@@_use:n { v }
% \end{macrocode}
% \end{macro}
%
@@ -1854,6 +1927,12 @@
% \begin{macrocode}
\seq_map_inline:Nn \g_@@_classes_seq
{
+% \end{macrocode}
+% The \texttt{previous-page} updates need to come before the
+% updates for \texttt{page} region because otherwise the values
+% to copy are already overwritten.
+% necessary values.
+% \begin{macrocode}
\tl_gset_eq:cc { g_@@_previous-page_top_ ##1 _tl }
{ g_@@_page_top_ ##1 _tl }
\tl_gset_eq:cc { g_@@_previous-page_first_ ##1 _tl }
@@ -1861,16 +1940,48 @@
\tl_gset_eq:cc { g_@@_previous-page_last_ ##1 _tl }
{ g_@@_page_last_ ##1 _tl }
% \end{macrocode}
-% The \texttt{page} updates need to come after the corresponding
-% updates for \texttt{previous-page} otherwise we loose the
-% necessary value.
+% To update the \texttt{top} we only have to copy what is in
+% \texttt{first-column}:
% \begin{macrocode}
\tl_gset_eq:cc { g_@@_page_top_ ##1 _tl }
{ g_@@_first-column_top_ ##1 _tl }
- \tl_gset_eq:cc { g_@@_ page_first_ ##1 _tl }
- { g_@@_first-column_first_ ##1 _tl }
- \tl_gset_eq:cc { g_@@_page_last_ ##1 _tl }
- { g_@@_last-column_last_ ##1 _tl }
+
+% \end{macrocode}
+% Updating the \texttt{first} mark for the \texttt{page} region is
+% more complicated. We first have to find out of there is any mark
+% in the first column (this can be done by comparing the \texttt{top} and
+% the \texttt{first} mark of of that region).
+% \changes{v1.0f}{2024/05/30}{Correct logic for first mark in page
+% region if first column contains no marks (gh/1359)}
+% \begin{macrocode}
+ \tl_if_eq:ccTF { g__@@_first-column_top_ ##1 _tl }
+ { g__@@_first-column_first_ ##1 _tl }
+ {
+% \end{macrocode}
+% If there is no mark in the first column we copy the first mark of
+% the last column. If that doesn't contain a mark we still get the
+% right result because the first mark is then equal to the top mark.
+% \begin{macrocode}
+ \tl_gset_eq:cc { g_@@_page_first_ ##1 _tl }
+ { g_@@_last-column_first_ ##1 _tl }
+ }
+ {
+% \end{macrocode}
+% On the other hand, if there is a mark in the first column we copy
+% over the \texttt{first} mark from that column.
+% \begin{macrocode}
+ \tl_gset_eq:cc { g_@@_page_first_ ##1 _tl }
+ { g_@@_first-column_first_ ##1 _tl }
+ }
+% \end{macrocode}
+% The logic for the \texttt{last} page mark is again simple, we can
+% just copy the value in the \texttt{last} mark of the last column.
+% If that column doesn't contain any marks, then the value in
+% \texttt{last} will be automatically the same as the \texttt{last}
+% from the first column.
+% \begin{macrocode}
+ \tl_gset_eq:cc { g_@@_page_last_ ##1 _tl }
+ { g_@@_last-column_last_ ##1 _tl }
}
}
%<*trace>
diff --git a/macros/latex-dev/base/ltmeta.dtx b/macros/latex-dev/base/ltmeta.dtx
index 1e4bdaed2c..cc3e62811d 100644
--- a/macros/latex-dev/base/ltmeta.dtx
+++ b/macros/latex-dev/base/ltmeta.dtx
@@ -16,19 +16,12 @@
%<*driver>
% \fi
\ProvidesFile{ltmeta.dtx}
- [2024/02/11 v1.0b LaTeX Kernel (Document Metadata)]
+ [2024/05/16 v1.0b LaTeX Kernel (Document Metadata)]
% \iffalse
%
\documentclass{l3doc}
\GetFileInfo{ltmeta.dtx}
-% Fixing footnotes in functions and variables: this should be in l3doc!
-
-\newcommand\fixfootnote[2]{\footnotemark
- \AddToHookNext{env/#1/after}{\footnotetext{#2}}}
-\AddToHook{env/function/begin}{\def\footnote{\fixfootnote{function}}}
-\AddToHook{env/variable/begin}{\def\footnote{\fixfootnote{variable}}}
-
\EnableCrossrefs
\CodelineIndex
\begin{document}
diff --git a/macros/latex-dev/base/ltnews.pdf b/macros/latex-dev/base/ltnews.pdf
index 0cbcc8a6ef..e18076c78f 100644
--- a/macros/latex-dev/base/ltnews.pdf
+++ b/macros/latex-dev/base/ltnews.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews.tex b/macros/latex-dev/base/ltnews.tex
index d4a6d274ae..af21aad00b 100644
--- a/macros/latex-dev/base/ltnews.tex
+++ b/macros/latex-dev/base/ltnews.tex
@@ -40,7 +40,7 @@
\ProvidesFile{ltnews.tex}%
[2022/06/10 v1.4e Master file for ltnews*.tex (LaTeX Project)]
-\providecommand*{\lastissue}{39}
+\providecommand*{\lastissue}{40}
\InputIfFileExists{ltnews-lastissue.cfg}{}{}
diff --git a/macros/latex-dev/base/ltnews01.pdf b/macros/latex-dev/base/ltnews01.pdf
index 5b14c49d10..65ed00b607 100644
--- a/macros/latex-dev/base/ltnews01.pdf
+++ b/macros/latex-dev/base/ltnews01.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews02.pdf b/macros/latex-dev/base/ltnews02.pdf
index 9151907387..45c593aabe 100644
--- a/macros/latex-dev/base/ltnews02.pdf
+++ b/macros/latex-dev/base/ltnews02.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews03.pdf b/macros/latex-dev/base/ltnews03.pdf
index ceb51fe57f..0689ef3e26 100644
--- a/macros/latex-dev/base/ltnews03.pdf
+++ b/macros/latex-dev/base/ltnews03.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews04.pdf b/macros/latex-dev/base/ltnews04.pdf
index 843ee94355..b180d548b4 100644
--- a/macros/latex-dev/base/ltnews04.pdf
+++ b/macros/latex-dev/base/ltnews04.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews05.pdf b/macros/latex-dev/base/ltnews05.pdf
index e06b1c07e1..ed369b0e5a 100644
--- a/macros/latex-dev/base/ltnews05.pdf
+++ b/macros/latex-dev/base/ltnews05.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews06.pdf b/macros/latex-dev/base/ltnews06.pdf
index ebdc860ae9..5d39aaa569 100644
--- a/macros/latex-dev/base/ltnews06.pdf
+++ b/macros/latex-dev/base/ltnews06.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews07.pdf b/macros/latex-dev/base/ltnews07.pdf
index 7f45fffff7..8f128dc094 100644
--- a/macros/latex-dev/base/ltnews07.pdf
+++ b/macros/latex-dev/base/ltnews07.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews08.pdf b/macros/latex-dev/base/ltnews08.pdf
index 9be1cdc574..55b8eb0671 100644
--- a/macros/latex-dev/base/ltnews08.pdf
+++ b/macros/latex-dev/base/ltnews08.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews09.pdf b/macros/latex-dev/base/ltnews09.pdf
index a887abd373..61d796a1a8 100644
--- a/macros/latex-dev/base/ltnews09.pdf
+++ b/macros/latex-dev/base/ltnews09.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews10.pdf b/macros/latex-dev/base/ltnews10.pdf
index 39c76574ff..b85cc6d0d9 100644
--- a/macros/latex-dev/base/ltnews10.pdf
+++ b/macros/latex-dev/base/ltnews10.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews11.pdf b/macros/latex-dev/base/ltnews11.pdf
index 96f41e1033..a5f528e22c 100644
--- a/macros/latex-dev/base/ltnews11.pdf
+++ b/macros/latex-dev/base/ltnews11.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews12.pdf b/macros/latex-dev/base/ltnews12.pdf
index 7e84f22d41..514b33b14d 100644
--- a/macros/latex-dev/base/ltnews12.pdf
+++ b/macros/latex-dev/base/ltnews12.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews13.pdf b/macros/latex-dev/base/ltnews13.pdf
index a253cbc7c9..faad5675bb 100644
--- a/macros/latex-dev/base/ltnews13.pdf
+++ b/macros/latex-dev/base/ltnews13.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews14.pdf b/macros/latex-dev/base/ltnews14.pdf
index 1d9507d396..29ff4c5219 100644
--- a/macros/latex-dev/base/ltnews14.pdf
+++ b/macros/latex-dev/base/ltnews14.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews15.pdf b/macros/latex-dev/base/ltnews15.pdf
index 8c3a9c7638..7a765b00b0 100644
--- a/macros/latex-dev/base/ltnews15.pdf
+++ b/macros/latex-dev/base/ltnews15.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews16.pdf b/macros/latex-dev/base/ltnews16.pdf
index 73126e3b26..4d9e5d379c 100644
--- a/macros/latex-dev/base/ltnews16.pdf
+++ b/macros/latex-dev/base/ltnews16.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews17.pdf b/macros/latex-dev/base/ltnews17.pdf
index 674fb17950..328da8cac7 100644
--- a/macros/latex-dev/base/ltnews17.pdf
+++ b/macros/latex-dev/base/ltnews17.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews18.pdf b/macros/latex-dev/base/ltnews18.pdf
index 00d2aae9f1..4334e6b594 100644
--- a/macros/latex-dev/base/ltnews18.pdf
+++ b/macros/latex-dev/base/ltnews18.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews19.pdf b/macros/latex-dev/base/ltnews19.pdf
index b764b6d09e..f3116ca1e8 100644
--- a/macros/latex-dev/base/ltnews19.pdf
+++ b/macros/latex-dev/base/ltnews19.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews20.pdf b/macros/latex-dev/base/ltnews20.pdf
index 40ad72b2f9..d77ae0adf6 100644
--- a/macros/latex-dev/base/ltnews20.pdf
+++ b/macros/latex-dev/base/ltnews20.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews21.pdf b/macros/latex-dev/base/ltnews21.pdf
index 88a1328927..ac4d5c1002 100644
--- a/macros/latex-dev/base/ltnews21.pdf
+++ b/macros/latex-dev/base/ltnews21.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews22.pdf b/macros/latex-dev/base/ltnews22.pdf
index a525ff66ad..0a48971438 100644
--- a/macros/latex-dev/base/ltnews22.pdf
+++ b/macros/latex-dev/base/ltnews22.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews23.pdf b/macros/latex-dev/base/ltnews23.pdf
index e249261e27..50b5456742 100644
--- a/macros/latex-dev/base/ltnews23.pdf
+++ b/macros/latex-dev/base/ltnews23.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews24.pdf b/macros/latex-dev/base/ltnews24.pdf
index 0b598eb978..8fd5afd555 100644
--- a/macros/latex-dev/base/ltnews24.pdf
+++ b/macros/latex-dev/base/ltnews24.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews25.pdf b/macros/latex-dev/base/ltnews25.pdf
index aa7a3d909d..ae6c442530 100644
--- a/macros/latex-dev/base/ltnews25.pdf
+++ b/macros/latex-dev/base/ltnews25.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews26.pdf b/macros/latex-dev/base/ltnews26.pdf
index 82e773c79f..afcffc0c99 100644
--- a/macros/latex-dev/base/ltnews26.pdf
+++ b/macros/latex-dev/base/ltnews26.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews27.pdf b/macros/latex-dev/base/ltnews27.pdf
index c9f6df0909..0022c67f20 100644
--- a/macros/latex-dev/base/ltnews27.pdf
+++ b/macros/latex-dev/base/ltnews27.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews28.pdf b/macros/latex-dev/base/ltnews28.pdf
index 6a32f26cc1..c7c9c4025d 100644
--- a/macros/latex-dev/base/ltnews28.pdf
+++ b/macros/latex-dev/base/ltnews28.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews28.tex b/macros/latex-dev/base/ltnews28.tex
index fec5c5c6c9..de4ecfa00a 100644
--- a/macros/latex-dev/base/ltnews28.tex
+++ b/macros/latex-dev/base/ltnews28.tex
@@ -126,7 +126,7 @@ happened. For example, the German word ``Gr\"o\ss e'' (height) entered on a
German keyboard could show up as ``Gr\v T\`ae'' on a different
computer using a different encoding by default.
-So in summmary the situation wasn't at all good and it was clear in
+So in summary the situation wasn't at all good and it was clear in
the early nineties that \LaTeXe{} (that was being developed to provide
a \LaTeX{} version usable across the world) had to provide a solution
to this issue.
@@ -318,7 +318,7 @@ As a result some parts of the columns did overprint each other.
The fix required a redesign of the output routines used by
\pkg{multicol} and while it ``should'' be transparent in other cases
-(and all tests in the regession test suite came out fine) there is the
+(and all tests in the regression test suite came out fine) there is the
off-chance that code that hooked into internals of \pkg{multicol}
needs adjustment.
diff --git a/macros/latex-dev/base/ltnews29.pdf b/macros/latex-dev/base/ltnews29.pdf
index da2d15bafd..203e37c6a7 100644
--- a/macros/latex-dev/base/ltnews29.pdf
+++ b/macros/latex-dev/base/ltnews29.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews30.pdf b/macros/latex-dev/base/ltnews30.pdf
index 54e32d8e22..02a9d5ee5e 100644
--- a/macros/latex-dev/base/ltnews30.pdf
+++ b/macros/latex-dev/base/ltnews30.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews31.pdf b/macros/latex-dev/base/ltnews31.pdf
index c4fe803b90..81deee6d06 100644
--- a/macros/latex-dev/base/ltnews31.pdf
+++ b/macros/latex-dev/base/ltnews31.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews32.pdf b/macros/latex-dev/base/ltnews32.pdf
index a2bb20351b..5c9901b2b2 100644
--- a/macros/latex-dev/base/ltnews32.pdf
+++ b/macros/latex-dev/base/ltnews32.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews33.pdf b/macros/latex-dev/base/ltnews33.pdf
index 126ec75937..7da39f2b16 100644
--- a/macros/latex-dev/base/ltnews33.pdf
+++ b/macros/latex-dev/base/ltnews33.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews34.pdf b/macros/latex-dev/base/ltnews34.pdf
index 7bf3d48b15..d5b5527cfb 100644
--- a/macros/latex-dev/base/ltnews34.pdf
+++ b/macros/latex-dev/base/ltnews34.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews35.pdf b/macros/latex-dev/base/ltnews35.pdf
index 35f0be31c7..60cad5580b 100644
--- a/macros/latex-dev/base/ltnews35.pdf
+++ b/macros/latex-dev/base/ltnews35.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews35.tex b/macros/latex-dev/base/ltnews35.tex
index 8f0c9d6ae3..d8c985b813 100644
--- a/macros/latex-dev/base/ltnews35.tex
+++ b/macros/latex-dev/base/ltnews35.tex
@@ -547,7 +547,7 @@ enabling \cs{obeyspaces} within a %
quote environment.
\end{quote}
Thus, if you are keen to use the plain \TeX{} trick, you need to say
-\cs{let}\cs{obeyedlines}\texttt{=}\cs{cr} now.
+\cs{let}\cs{obeyedline}\texttt{=}\cs{cr} now.
%
\githubissue{367}
diff --git a/macros/latex-dev/base/ltnews36.pdf b/macros/latex-dev/base/ltnews36.pdf
index fb7b4cc348..50ec47ce46 100644
--- a/macros/latex-dev/base/ltnews36.pdf
+++ b/macros/latex-dev/base/ltnews36.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews37.pdf b/macros/latex-dev/base/ltnews37.pdf
index e1d1be67d0..5dfdd6c370 100644
--- a/macros/latex-dev/base/ltnews37.pdf
+++ b/macros/latex-dev/base/ltnews37.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews38.pdf b/macros/latex-dev/base/ltnews38.pdf
index 2940e7cb04..ec4d95a65e 100644
--- a/macros/latex-dev/base/ltnews38.pdf
+++ b/macros/latex-dev/base/ltnews38.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews39.pdf b/macros/latex-dev/base/ltnews39.pdf
index 9303ba97ea..ff24711d45 100644
--- a/macros/latex-dev/base/ltnews39.pdf
+++ b/macros/latex-dev/base/ltnews39.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews39.tex b/macros/latex-dev/base/ltnews39.tex
index 92c835926f..3af8903515 100644
--- a/macros/latex-dev/base/ltnews39.tex
+++ b/macros/latex-dev/base/ltnews39.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright 2023
+% Copyright 2024
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -34,12 +34,12 @@
\documentclass{ltnews}
-%% Maybe needed only for Chris' inadequate system:
+%% Maybe needed only for Chris' inadequate system:
\providecommand\Dash {\unskip \textemdash}
-%% NOTE: Chris' preferred hyphens!
-%%\showhyphens{parameters}
-%% \hyphenation{because parameters parameter}
+%% NOTE: Chris' preferred hyphens!
+%% \showhyphens{parameters}
+%% \hyphenation{because}
\usepackage[T1]{fontenc}
@@ -64,6 +64,8 @@
\providecommand\MiKTeX{\hologo{MiKTeX}}
\providecommand\CTAN{\textsc{ctan}}
\providecommand\TL{\TeX\,Live}
+
+
\providecommand\githubissue[2][]{\ifhmode\unskip\fi
\quad\penalty500\strut\nobreak\hfill
\mbox{\small\slshape(%
@@ -72,7 +74,7 @@
)}%
\par\smallskip}
%% But Chris has to mostly disable \href for his TEXPAD app:
-%% \def\href #1{} % Only For Chris' deficient TeX engine
+%% \def\href #1#2{#2} % Only For Chris' deficient TeX engine
% simple solution right now (just link to the first issue if there are more)
\def\getfirstgithubissue#1 #2\relax{#1}
@@ -102,31 +104,31 @@
\let\finalpagebreak\pagebreak % for TUB (if they use it)
+\let\finalvspace\vspace % for document layout fixes
\makeatletter
% maybe not the greatest design but normally we wouldn't have subsubsections
\renewcommand{\subsubsection}{%
- \@startsection {subsubsection}{2}{0pt}{1.5ex \@plus 1ex \@minus .2ex}%
- {-1em}{\@subheadingfont\colonize}%
+ \@startsection {subsubsection}{2}{0pt}{1.5ex \@plus 1ex \@minus .2ex}%
+ {-1em}{\@subheadingfont\colonize}%
}
\providecommand\colonize[1]{#1:}
\makeatother
-\let\finalvspace\vspace % for document layout fixes
% Undo ltnews's \verbatim@font with active < and >
\makeatletter
-\def\verbatim@font{%
- \normalsize\ttfamily}
-\makeatletter
+\def\verbatim@font{\normalsize\ttfamily}
+\makeatother
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\providecommand\tubcommand[1]{}
\tubcommand{\input{tubltmac}}
\publicationmonth{June}
-\publicationyear{2024 --- DRAFT version for upcoming release}
-%\publicationyear{2024}
+%\publicationyear{2024 --- DRAFT version for upcoming release}
+\publicationyear{2024}
\publicationissue{39}
@@ -144,28 +146,46 @@
\section{Introduction}
-\emph{to write}
+The \LaTeX{} Project team remains strongly focused on producing
+automatically tagged PDF output for accessibility and reuse. At the
+beginning of 2024 the ISO PDF/UA-2 and the WTPDF (well-tagged PDF)
+standards were released and we are glad to be able to report that it
+is now possible to use \LaTeX{} to automatically produce documents
+that conform to these new standards.\footnote{At the present time we
+are still in a trial/prototype phase in which only a limited set of
+document classes and packages are supported. Over the next releases
+we expect to gradually lift these restrictions and eventually provide
+the full functionality as part of the core distribution, rather than
+through \texttt{latex-lab} modules.} A sample collection of such
+documents ranging from classical texts, such as the Bible, to recent
+technical papers submitted to arXiv.org can be found at
+\url{https://github.com/latex3/tagging-project/discussions/72}.
+
+In February Ulrike and Frank presented the current project status
+during the 5th International Workshop on \enquote{Digitization and
+ E-Inclusion in Mathematics and Science 2024} (DEIMS 2024) at Nihon
+University, Tokyo, Japan; see~\cite{39:deims}.
\section{News from the \enquote{\LaTeX{} Tagged PDF} project}
-In the previous \LaTeX{} News~\cite{39:ltnews38} we announced a first prototype
-support for tagged tabulars. Some of the necessary support code has
+In the previous \LaTeX{} News~\cite{39:ltnews38} we announced some prototype
+support for tagged tabulars. Some of the necessary code has
now been moved from \texttt{latex-lab} to the corresponding packages
(using sockets and plugs) and to the \LaTeX{} kernel (for those parts
that are also necessary for other aspects of tagging).
The kernel code specific to tagging is implemented in the file
-\texttt{lttagging.dtx}. For now it contains \cs{UseTaggingSocket}, a
+\texttt{lttagging.dtx}. For now it contains \cs{UseTaggingSocket}, a
special invocation command for sockets that are specific to
tagging. This enables us to also provide \cs{SuspendTagging} and
\cs{ResumeTagging}, i.e., a very efficient way to temporarily disable
-the whole tagging process. This is, for example, necessary, if some
+the whole tagging process. This is, for example, necessary if some
code is doing trial typesetting. In that case the trials should not
-generate tagging structures\Dash only the finally chosen version
+generate tagging structures\Dash only the finally-chosen version
should. Thus, \pkg{tabularx}, for example, stops the tagging while
doing its trials to figure out the correct column widths to use, and
-then renables tagging when the table is finally typeset.
+then re-enables tagging when the table is finally typeset.
Over time, \texttt{lttagging.dtx} will hold more general tagging code
as appropriate. For now it is only documented as part of
@@ -173,35 +193,35 @@ as appropriate. For now it is only documented as part of
for tagging, which will then also include the information currently
found in various other places, e.g., \texttt{tagpdf.pdf}.
-We also added support for a few missing commands
+We also added support for a few missing commands
described in Leslie Lamport's \emph{\LaTeX{}
-Manual}~\cite{38:Lamport}: If \texttt{phase-III} is used
+Manual}~\cite{39:Lamport}: If \texttt{phase-III} is used
the \cs{marginpar} command will be properly tagged (depending on
the PDF version) as an \texttt{Aside} or a \texttt{Note} structure.
In the standard classes \cs{maketitle} will be tagged if the additional
testphase module \texttt{title} is used.
The \texttt{math} module has been extended and now includes
-options to attach MathML files to the structures.
+options to attach MathML files to the structures.
First tests with a PDF reader and screen reader that support
-associated files looks very promising. Examples of PDF files tagged with the
-new method can be found at
-\url{https://github.com/latex3/tagging-project/discussions/56}.
+associated files look very promising. Examples of PDF files tagged with the
+new method can be found at
+\url{https://github.com/latex3/tagging-project/discussions/72}.
-At last various small bugs and problems reported at
+At last various small bugs and problems reported at
\url{https://github.com/latex3/tagging-project}
-has been fixed. Such a feedback is very valuable,
+have been fixed.
+Such feedback is very valuable,
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{Enhancements to the new mark mechanism}
-In June 2022 we introduced a new mark mechanism in
-\LaTeX{}~\cite[p.~76]{39:ltnews} that allows keeping track of multiple
-independent marks. It also properly supports top marks, something that wasn't
+In June 2022 we introduced a new mark mechanism~\cite[p.~76]{39:ltnews} that allows keeping track of multiple
+independent marks. It also properly supports top marks, something that wasn't
reliably possible with \LaTeX{} before.
There was, however, one limitation: to retrieve the marks from the
@@ -210,7 +230,7 @@ that \TeX{} would produce split marks that the mechanism could then
use. Unfortunately, \TeX{} gets very upset if it finds infinite
negative glue (e.g., from \cs{vss}) within this data. This is not
totally surprising because such glue would allow splitting off any
-amount of material as such glue would hide the size of it. \TeX{}
+amount of material as such glue would hide its size. \TeX{}
therefore responds with an error message if it find such glue while
doing a \cs{vsplit} operation (and it does so even if a later glue
item cancels the infinite glue).
@@ -228,11 +248,11 @@ that make use of its testing capabilities: the new mechanism
temporarily changes \cs{interactionmode} and, for implementation
reasons in \TeX{}, that results in extra newlines in the \texttt{.log}
file, so instead of seeing \texttt{[1] [2]} you will see each on
-separate lines. This means that test files might show difference of
+separate lines. This means that test files might show differences of
that nature, once the code is active, and must therefore be
-regenerated as necessary.} With the new code \TeX{} will neither stop
-nor show anything on the terminal. What we can't do, though, is to
-avoid that an error is written to the log file, but to make it clear
+regenerated as necessary.} With the new code \TeX{} will neither stop
+nor show anything on the terminal. What we can't do, though, is
+avoid an error being written to the log file, but to make it clear
that this error is harmless and should be ignored we have arranged the
code so that the error message, if it is issued, takes the following
format:
@@ -240,60 +260,29 @@ format:
\makeatletter
\def\verbatim@font{%
\small\ttfamily}
-\makeatletter
+\makeatother
\begin{verbatim}
! Infinite glue shrinkage found in box being split.
-<argument> Infinite shrink error above ignored !
-l. ... }
+<argument> Infinite shrink error above ignored !
+l. ... }
\end{verbatim}
Not perfect (especially the somewhat unmotivated \texttt{<argument>}),
-but you can only do so much if error messages and their texts are
+but you can only do so much when error messages and their texts are
hard-wired in the engine.
\endgroup
So why all this? There are two reasons: we do not lose marks in edge
-cases any longer and perhaps more importantly we are now also reliably
+cases any more, and perhaps more importantly we are now also reliably
able to extract marks from arbitrarily boxed data, something that
-wasn't possible at all before. This is, for example, necessary to
+wasn't possible at all before. This is necessary, for example, to
support extended marks in \env{multicols} environments or extract them
-from floats, marginpars, etc.
+from floats, marginpars, etc.\tubcommand{\looseness-1}
Details about the implementation can be found in \texttt{texdoc
ltmarks-code} or in the shorter \texttt{texdoc ltmarks-doc} (which
only describes the general concepts and the command interfaces).
-\section{New or improved commands}
-
-\subsection{\pkg{doc}: provide \cs{ProvideDocElement}}
-
-Beside \cs{NewDocElement} and \cs{RenewDocElement} we now also offer a
-\cs{ProvideDocElement} declaration that does nothing unless the doc
-element could be declared with \cs{NewDocElement}. This can be useful
-if documentation files are processed both individually as well as
-combined.
-
-
-\subsection{\pkg{doc}: better support for \pkg{upquote}}
-
-In \LaTeX{} News~37~\cite{39:ltnews37} we wrote that support for the
-\pkg{upquote} package was added to the \pkg{doc} package, but back
-then this was only done for \cs{verb}, and the \env{verbatim}
-environments. However, the bulk of code in a typical \texttt{.dtx} file is
-within \env{macrocode} or \env{macrocode*} environments which were not
-affected by adding \pkg{upquote}. We have now updated those, such that
-\pkg{upquote} alters the quote characters in these environments as
-well.
-%
-\githubissue{1230}
-
-\subsection{\pkg{ifthen}: guard against active characters in comparisons}
-The \cs{ifthenelse} command now ensures that \verb|<|, \verb|=| and
-\verb|>| are safe
-in numeric tests, even if they have been made active
-(typically by \pkg{babel} language shorthands.)
-%
-\githubissue{756}
\section{Providing \pkg{xtemplate} in the format}
@@ -302,26 +291,32 @@ into the kernel: the package \pkg{xparse}, which was integrated as \pkg{ltcmd}.
With this edition, we move another long-term development idea to stable status:
\emph{templates}.
-In this context, templates are a mechanism to abstract out various elements of a
-document (such as \enquote{sectioning}) in such a way that different
-implementations can be interchanged, and design decisions are set up efficiently
-and controllably.
+In this context, templates are a mechanism to abstract out various elements
+of a document (such as \enquote{sectioning}) in such a way that different
+implementations can be interchanged,
+%% CAR added text: --- FMi: but it is wrong
+%% variations of the document markup can be accommodated,
+and design decisions can be implemented efficiently and controllably.
In contrast to \pkg{ltcmd}, which provides a mechanism that many document
authors will exploit routinely, templates are a more specialised tool. We
anticipate that they will be used by a small number of programmers, providing
generic ideas that will then be used within document classes. Most document
-authors will therefore likely encounter templates directly only rarely.
+authors will therefore likely directly encounter templates only rarely.
We anticipate though that they will be \emph{using} templates provided
by the team or others.
+%% CAR added this paragraph: FMi: doesn't belong in ltnews
+%We shall continue to develop these generic ideas and interfaces in various ways: for example, to support the varied document markup possibilities
+%provided in \pkg{ltcmd} and elsewhere.
+
The template system requires three separate ideas
\begin{itemize}
\item Template \emph{type}: the \enquote{thing} we are using templates
for, such as \enquote{sectioning} or \enquote{enumerated-list}
\item A template: a combination of code and keys that can be used
to implement a type. Here for example we might have
- \enquote{standard-\LaTeX{}-sectioning} as a template for
+ \enquote{standard-\LaTeX{}-sectioning} as a template for
\enquote{sectioning}
\item One or more \emph{instances}: a specific use case of a template
where (some) keys are set to known values. We might for example see
@@ -331,16 +326,17 @@ The template system requires three separate ideas
As part of the move from the experimental \pkg{xtemplate} to kernel integration,
the team have revisited the commands provided. The stable set now comprises
\begin{itemize}
- \item \cs{NewTemplateType}
- \item \cs{DeclareTemplateInterface}
- \item \cs{DeclareTemplateCode}
- \item \cs{DeclareTemplateCopy}
- \item \cs{EditTemplateDefault}
- \item \cs{UseTemplate}
- \item \cs{DeclareInstance}
- \item \cs{DeclareInstanceCopy}
- \item \cs{EditInstance}
- \item \cs{UseInstance}
+\item \cs{NewTemplateType}
+\item \cs{DeclareTemplateInterface}
+\item \cs{DeclareTemplateCode}
+\item \cs{DeclareTemplateCopy}
+\item \cs{EditTemplateDefault}
+\item \cs{UseTemplate}
+\item \cs{DeclareInstance}
+\item \cs{DeclareInstanceCopy}
+\item \cs{EditInstance}
+\item \cs{UseInstance}
+\item \cs{IfInstanceExistsTF} and variants
\end{itemize}
To support existing package authors, we have released an updated version of
@@ -348,14 +344,89 @@ To support existing package authors, we have released an updated version of
existing commands provided in \pkg{xtemplate} will continue to work, but
we encourage programmers to move to the set above.
+
+\section{New or improved commands}
+
+\subsection{\pkg{doc}:\ Provide \cs{ProvideDocElement}}
+
+In addition to
+\cs{NewDocElement} and \cs{RenewDocElement} we now also offer a
+\cs{ProvideDocElement} declaration that does nothing unless the doc
+element could be declared with \cs{NewDocElement}. This can be useful
+if documentation files are processed both individually and
+combined.
+
+
+\subsection{\pkg{doc}:\ Better support for \pkg{upquote}}
+
+In \LaTeX{} News~37~\cite{39:ltnews37} we wrote that support for the
+\pkg{upquote} package was added to the \pkg{doc} package, but back
+then this was added only for \cs{verb} and the \env{verbatim}
+environments. However,
+in a typical \texttt{.dtx} file, most of the code will be in the body
+of some \env{macrocode} or \env{macrocode*} environments, and neither
+of these was affected by adding \pkg{upquote}.
+We have now updated \pkg{doc} so that
+\pkg{upquote} alters the quote characters in these environments as
+well.
+%
+\githubissue{1230}
+
+\subsection[\pkg{ifthen}:\ Allow active characters in comparisons]
+ {\pkg{ifthen}:\ Guard against active characters in comparisons}
+The \cs{ifthenelse} command now ensures that \verb|<|, \verb|=| and
+\verb|>| are safe
+in numeric tests, even if they have been made active
+(typically by \pkg{babel} language shorthands).
+%
+\githubissue{756}
+
+\subsection%[New conditionals: \cs{IfClassAtLeastT}, etc.]
+ {New conditionals:\ \cs{IfClassAtLeastT} and friends}
+
+Around 2020 we added a number of conditionals with CamelCase names, i.e.,
+%
+\cs{IfClassAtLeastTF},
+\cs{IfClassLoadedTF},
+\cs{IfClassLoadedWithOptionsFF},
+\cs{IfFormatAtLeastTF},
+\cs{IfPackageAtLeastTF},
+\cs{IfPackageLoadedTF}, and
+\cs{IfPackageLoadedWithOptionsTF}
+%
+to help arranging conditional code that depends on the release of a
+particular class, package or format. However, we only provided the
+\texttt{TF} commands and not also the \texttt{T} and \texttt{F}
+variants. This has now been changed.
+
+In 2023 we introduced \cs{IfFileAtLeastTF} but we did not also provide
+\cs{IfFileLoadedTF} at the same time. This conditional and its
+\texttt{T} and \texttt{F} variants have now also been added. Remember
+that one can only test for files that contain a \cs{ProvidesFile}
+line.
+%
+We did the same for the conditionals \cs{IfLabelExistsTF} and
+\cs{IfPropertyExistsTF}, also introduced in 2023.\footnote{By mistake they
+were initially introduced under the names \cs{IfLabelExistTF} and
+\cs{IfPropertyExistTF}; we corrected that at the same time. This is a
+breaking change, but the commands have been used so far only in
+kernel code.}
+%
+\githubissue[s]{1222 1262}
+
+
\section{Code improvements}
-\subsection{Loading packages at the top level}
-Classes and packages should only be loaded with \cs{documentclass}, \cs{usepackage},
-or class interface commands such as \cs{LoadClass} or \cs{RequirePackageWithOptions}
-at the top level, not inside a group. Previously \LaTeX\ did not check this,
+\subsection{Load packages only at the top level}
+
+Classes and packages must be loaded only by using the commands
+\cs{documentclass} and \cs{usepackage} or the class interface commands
+such as \cs{LoadClass} or \cs{RequirePackageWithOptions}; moreover,
+all of these must always be used at the top level, and not inside a
+group of any type (for example, within an environment).
+Previously \LaTeX\ did not check this,
which would often lead to low level errors later on if package declarations
-were reverted as a group ended.
+were reverted when a group ended.
\LaTeX\ now checks the group level and an error is thrown
if the class or package is loaded in a group.
%
@@ -374,8 +445,8 @@ corrected.
\subsection{Improve \pkg{fontenc} error message}
-If the \pkg{fontenc} is asked to load a font encoding for which it
-doesn't find a suitable \texttt{.def} file it generates an error
+If the \pkg{fontenc} package is asked to load a font encoding for which it
+doesn't find a suitable \texttt{.def} file then it generates an error
message indicating that the encoding name might be misspelled. That
is, of course, one of the possible causes, but another one is that the
installation is missing a necessary support package, e.g., that no
@@ -403,8 +474,8 @@ The \cs{listfiles} command provides useful information when finding issues
related to variation in package versions. However, this has to date relied on
the information in the \cs{ProvidesPackage} line, or similar: that can be
misleading if for example a file has been edited locally. We have now extended
-\cs{listfiles} to take an optional argument which will then include the MD5
-hash of each file (and the size of each file) in the \texttt{.log}. Thus for
+\cs{listfiles} to take an optional argument which can include the MD5
+hash and size of each file in the \texttt{.log}. Thus for
example you can use
\begin{verbatim}
\listfiles[hashes,sizes]
@@ -416,7 +487,7 @@ the standard release information.
\subsection{Optimize creation of simple document commands}
-Creating document commands using \cs{NewDocumentCommand}, etc., provides a very
+Creating document commands using declarations such as \cs{NewDocumentCommand}, etc., provides a very
flexible way of grabbing arguments. When the document command only takes simple
mandatory arguments, this has to-date added an overhead that could be avoided.
We have now refined the internal code path such that \enquote{simple} document
@@ -427,16 +498,17 @@ the direct equivalent to \cs{newcommand} is \cs{NewExpandableDocumentCommand}.
%
\githubissue{1189}
-\subsection{Handling of end-of-lines in \cs{NewDocumentCommand} \texttt{+v} arguments}
+\subsection{\texorpdfstring{\raggedright}{}Handling of end-of-lines in \texttt{+v} arguments of \cs{NewDocumentCommand} and friends}
-The \texttt{+v} argument type provided by \cs{NewDocumentCommand}, etc., allows
+The \texttt{+v} argument type provided by declarations such as \cs{NewDocumentCommand}, etc., allows
grabbing of multiple lines of text in a verbatim-like argument. Almost always,
the result of this grabbing will be used in a typesetting context. Previously,
the end-of-line characters were stored literally as category code~12
(\enquote{other}) \verb|^^M| tokens. However, these are difficult to work with
in general. We have now revised this behavior, such that end-of-line characters
are converted to the \cs{obeyedline} command when parsed by \texttt{+v}-type
-arguments. This may require adjustment in the source of some documents, but the
+arguments.
+This change may require adjustments to the source of some documents, but the
enhanced ability of users and programmers to exploit the \texttt{+v}-type
argument means we believe it is necessary.
@@ -448,26 +520,31 @@ directly into the kernel and in this way removed the need to load the
\cs{texteuro} available.
There is, however, a big problem with this \texttt{TS1} symbol
-encoding: only very few fonts can provide every glyph that is supposed
+encoding: only very few fonts provide every glyph that is supposed
to be part of \texttt{TS1}. This means that changing font families
might result in certain symbols becoming unavailable. This can be a
-major disaster if, for example, the \cs{texteuro} (\texteuro) or the
-\cs{textohm} (\textohm) are no longer printed in your document, just
-because you altered your text font family.
+major disaster if, for example,
+the symbol \cs{texteuro} (\texteuro) or \cs{textohm} (\textohm)
+no longer gets printed in your document, just because you altered the
+text font family.
-To mitigate this problem, we also introduced in 2020 the declaration
+To mitigate this problem, in 2020 we also introduced the declaration
\cs{DeclareEncodingSubset}. This declaration is supposed to be used in
font definition files for the \texttt{TS1} encoding to specify which
subset (we have defined 10 common ones) a specific font implements. If
such a declaration is used then missing symbols are automatically
-taking from a fallback font. While this is not perfect, it is the best
-you can do other than painstrickenly checking that your document only
-uses glyphs that the font supports and if necessary switch to a
-different font or avoid the missing symbols. See also the discussion
-in \cite{39:ltnews33}.
+taken from a fallback font.
+
+%% CAR -- this paragraph maybe needs more substantial rewording ??
+While this is not perfect, it is the best
+you can do other than painstakingly checking that your document
+%% CAR: was "painstrickenly" -- should be a word, but!!
+uses only glyphs that the font supports
+and, if necessary, switching to a different font or avoiding the
+missing symbols. See also the discussion in \cite{39:ltnews33}.
To jumpstart the process we also added declarations to the \LaTeX{}
-kernel for most of the fonts found in \TeX{}Live at the time\Dash with
+kernel for most of the fonts found in \TL{} at the time\Dash with
the assumption that such declarations would over time be superseded by
declarations in the \texttt{.fd} files. Unfortunately, this hasn't
happened yet (or not often) and so many of the initial declarations
@@ -475,16 +552,16 @@ went stale: several fonts got new glyphs added to them (so their
sub-encoding should have been changed but didn't); others (mainly due
to license issues) changed the family name and thus our declarations
became useless and the renamed fonts (now without a declaration) ended
-up in the default sub-encoding which offers only few glyphs; yet
-others such as CharisSIL (which triggered the GitHub issue) were
+up in the default sub-encoding that offers only a few glyphs;
+yet others such as CharisSIL (which triggered the GitHub issue) were
simply not around at the time.
-We have therefore, again attempted to provide the (currently) correct
+We have, therefore, again attempted to provide the (currently) correct
declarations, but it is obvious that this is not a workable
process. As we do not maintain the fonts we do not have the
information that something has changed, and to regularly check the
ever growing font support bundles is simply not possible. It is
-therefore very important that maintainers of font packages do not only
+therefore very important that maintainers of font packages not only
provide \texttt{.fd} files but also add such a declaration to every
\texttt{TS1...fd} font definition file that they distribute.
@@ -492,6 +569,7 @@ To simplify this process, we now provide a simple \LaTeX{} file
(\texttt{checkencodingsubset.tex}) for determining the correct (safe)
sub-encoding. If run, it asks for a font family and then outputs its
findings, for example, for \texttt{AlgolRevived-TLF} you will get:
+\tubcommand{\begin{small}}
\begin{verbatim}
-----------------------------------------
Testing font family AlgolRevived-TLF
@@ -520,6 +598,7 @@ TS1 encoding subset for AlgolRevived-TLF (ok)
Use sub-encoding 9
-----------------------------------------
\end{verbatim}
+\tubcommand{\end{small}\noindent}%
This output is meant for human consumption, e.g., you see which glyphs
are missing and why a certain sub-encoding is suggested, but it is not
that hard to use it in a script and extract the suggested sub-encoding
@@ -536,47 +615,126 @@ TS1 encoding subset for ppl (bad)
Use sub-encoding 0 (not 5)
-----------------------------------------
\end{verbatim}
-i.e., all glyphs are provided, while in reality more than twenty are
-missing and sub-encoding 5 as declared in the kernel is correct.
+thus it claims that
+all glyphs are provided, while in reality more than twenty are missing
+and sub-encoding 5, as declared in the kernel, is in fact correct.
%
\githubissue{1257}
+
+\subsection{Behavior when loading \pkg{textcomp} without options}
+
+When incorporating the \pkg{textcomp} package into the \LaTeX{} kernel, in
+the February 2020 release~\cite{39:ltnews31}, the default type of its package messages was changed from package info (\texttt{Package textcomp Info})
+to \LaTeX{} kernel info (\texttt{LaTeX Info}). But if \pkg{textcomp}
+was loaded without options, the message type got restored to package info.
+This restoration has now been canceled.
+
+Note that loading \pkg{textcomp} with one of the options \option{error},
+\option{warn}, or \option{info} still changes the message
+type to an error, warning, or info message from the \pkg{textcomp} package.
+%
+\githubissue{1333}
+
+
+\subsection{Rollback improvements}
+
+When requesting a rollback of the \LaTeX{} kernel and/or packages,
+several packages produced the error \enquote{Suspicious rollback date}
+because their rollback section contained only data about recent
+releases even if the package, such as \pkg{array}, was available since
+the first release of \LaTeXe{} in 1994. We now suppress this error and
+load the first release that is still part of the distribution (and
+hope for the best). This change was implemented for the packages
+\pkg{amsmath},
+\pkg{array},
+\pkg{doc},
+\pkg{graphics},
+\pkg{longtable},
+\pkg{multicol},
+\pkg{showkeys},
+\pkg{textcomp}, and
+\pkg{varioref}.
+%
+\githubissue{1333}
+
+
+
\section{Documentation improvements}
\subsection{Further updates to the guides}
We reported about the updated versions of \texttt{usrguide} and
-\texttt{clsguide} in \LaTeX{} News~37~\cite{39:ltnews37}. We have now
+\texttt{clsguide} in \LaTeX{} News~37~\cite{39:ltnews37}. We have now
revised \texttt{fntguide} as well to reflect the changes and macros
-added to the kernel over the last years of development. Note that the
+added to the kernel over the last years of development. Note that the
file name hasn't changed and there is no \texttt{fntguide-historic}.
\section{Bug fixes}
-\subsection{Fix inconsistent expansion on package option list}
+\subsection{Fix inconsistent expansion of the package option list}
-\LaTeX{} applies one-step expansion to raw option list of packages and
-classes so constructions like
+\LaTeX{} applies one-step expansion to the raw option list of packages
+and classes, so that constructions such as
\begin{verbatim}
\def\myoptions{opt1,opt2}
\usepackage[\myoptions]{foo}
\end{verbatim}
-are supported. But when a package declares its options with the new
-key/value approach~\cite{39:ltnews35} and was loaded a second time,
-its raw option list was not expanded and an error might be raised.
+are supported.
+%% CAR Rewritten sentence:
+But if a package declares its options using the new
+key/value approach~\cite{39:ltnews35} and it gets loaded a second time,
+then its raw option list will not be expanded and so an error might be raised.
This has now been corrected.
%
\githubissue{1298}
+\subsection{Fix logic for first mark (page region)}
+
+In the new mark mechanism introduced in June 2022~\cite{39:ltnews35} the result of
+\cs{FirstMark} on a two-column page was incorrect if the first column
+contained no marks. In that case it should have returned the first
+mark of the second column but didn't.
+This has now been corrected.
+
+Documents using \cs{leftmark} are not affected, because that command is still
+using the old mechanism for now.
+%
+\githubissue{1359}
+
+
+\subsection{Struts at the end of footnotes or \texttt{p} columns}
+
+To produce consistent spacing in footnotes and tabular
+\texttt{p}-cells \LaTeX{} adds a strut at the beginning and end of
+the content.
+%% CAR Rewritten sentences:
+%% It assumed, however, that the footnote or tabular cell ended in
+%% horizontal mode and until now added the struts unconditionally. As a
+%% result, with vertical material at the end of the material this strut
+%% started a new paragraph consisting of a single line with just the
+%% strut inside.
+This assumed, however, that the content of the footnote or tabular cell ended in
+horizontal mode and so, until now, these struts were unconditionally added;
+as a result, if this content ended with vertical material then this strut
+started a new paragraph consisting of a single line with just the
+strut in it. This has finally been corrected and now the placement
+logic for the strut changes when vertical mode is detected.
+
+\emph{(First seen in a bug report for \pkg{footmisc} in combination with
+\pkg{bigfoot})}
+
+
+
\section{Changes to packages in the \pkg{amsmath} category}
-\subsection{\pkg{amsmath}: correct equation tag placement}
+\subsection{\pkg{amsmath}:\ Correct equation tag placement}
If there is not enough space to place an equation tag on the same line
-as the equation \pkg{amsmath} calculates a suitable offset and then
+as the equation then \pkg{amsmath} calculates a suitable offset and it
places the tag above (or below) the equation. In the case of the
\env{gather} environment this offset was not reset at the end, with
-the result that it applied to a following environment as well
+the result that it also got applied to any following environment,
resulting in incorrect spacing in certain situations. This has now
been corrected.
%
@@ -586,43 +744,52 @@ been corrected.
%\section{Changes to packages in the \pkg{graphics} category}
-
-
\section{Changes to packages in the \pkg{tools} category}
+\subsection{\pkg{array}, \pkg{longtable}, \pkg{tabularx}:\ Support tagging}
-\subsection{\pkg{array}, \pkg{longtable}, \pkg{tabularx}: support tagging}
+%% CAR Rewritten sentences
+These three packages have been extended so they can now, on request,
+produce tagged tabular. This is done by adding a number of sockets (see
+\cite{39:ltnews38}) that, by default, do nothing; but when tagged PDF
+is requested they get equipped with appropriate plugs.
-The three packages are now extended to enable producing tagged tabulars upon
-request. This is done by adding a number of sockets (see
-\cite{39:ltnews38}) that, by default, do nothing, but are equipped
-with appropriate plugs if tagged PDF is requested.
+In the previous \LaTeX{} release this was handled in \texttt{latex-lab}, by
+patching the packages when tagging was requested.
-In the previous \LaTeX{} release this was handled in
-\texttt{latex-lab} patching the packages when tagging was requested.
+\subsection{\pkg{array}:\ No \cs{unskip} in math cells}
+Math cells in the standard \env{array} environment of the kernel are
+not subject to space removal at the right end of the cell, i.e., explicit
+spaces from \cs{hspace} or \verb*|\ |, etc.\ are honored
+(normal spaces are automatically ignored in math). In the \pkg{array}
+package all spaces got removed by calling \cs{unskip} unconditionally,
+regardless of the type of cell.
+This difference in behavior has now been removed by correcting the processing of
+math cells in \pkg{array}.
+%
+\githubissue{1323}
-\subsection{\pkg{verbatim}: \cs{verb} showed visible spaces}
+\subsection{\pkg{verbatim}:\ \cs{verb} showed visible spaces}
A recent change in the kernel was not reflected in the \pkg{verbatim}
-package with the result that \cs{verb} showed visible spaces
+package, with the result that \cs{verb} showed visible spaces
(\verb*/ /) after the package was loaded. This has already been corrected
-in a hotfix for release 2023-11.
+in a hotfix for the November 2023 release.
%
\githubissue{1160}
-\subsection{\pkg{verbatim}: Support tabs in \cs{verbatiminput*}}
+\subsection{\pkg{verbatim}:\ Support tabs in \cs{verbatiminput*}}
-Mimicking the kernel update (November, 2023) that allowed \cs{verb*}
-to mark tabs as spaces, the \pkg{verbatim} package has been updated
-such that \cs{verbatiminput*} marks tabs as spaces as well.
-%
+Mimicking the November 2023 kernel update that allowed \cs{verb*}
+to mark tabs as spaces, the \pkg{verbatim} package
+has now been updated so that \cs{verbatiminput*} also marks tabs as spaces.
\githubissue{1245}
-\subsection{\pkg{multicol}: \cs{columnbreak} interferes with mark mechanism}
+\subsection{\pkg{multicol}:\ \cs{columnbreak} interferes with mark mechanism}
The \pkg{multicol} package has to keep track of marks (from
\cs{markright} or \cs{markboth}) as part of its output routine code
@@ -638,20 +805,33 @@ mechanism\Dash see the discussion at the beginning of the newsletter.
%
\githubissue{1130}
-\subsection{\pkg{showkeys}: Allow \cs{newline} in \pkg{amsthm} to work}
+\subsection{\pkg{showkeys}:\ Allow \cs{newline} in \pkg{amsthm} to work}
%
Previously \pkg{showkeys} added an extra box layer which disabled the \cs{newline}
of \pkg{amsthm} theorem styles. This extra box has now been avoided.
%
\githubissue{1123}
-
+\subsection{\pkg{xr}:\ Support links and properties}
+%
+The \pkg{xr} package implements a system for eXternal References.
+The \pkg{xr-hyper} package (in the \pkg{hyperref} bundle)
+extended this to also support links to external documents.
+%% CAR: Rewritten sentences:
+Using last year's extension of the \cs{label} command, which unified
+the label syntax of \LaTeX{} and \pkg{hyperref},
+it became possible to merge the two packages and thus make
+\pkg{xr-hyper} obsolete.
+With this change it is also possible to refer to properties
+that are stored in external documents using \cs{RecordProperties}.
+%
+\githubissue{1180}
\section{Changes to files in the \pkg{cyrillic} category}
\subsection{Correct definition of \cs{k}}
-Ages ago, the encoding specific definitions for various accent
+Ages ago, the encoding-specific definitions for various accent
commands were changed to guard against altering some parameter values
non-locally by mistake. For some reason the definition for \cs{k} in
the Cyrillic encodings \texttt{T2A}, \texttt{T2B}, and \texttt{T2C}
@@ -660,26 +840,23 @@ didn't get this treatment. This oversight has now been corrected.
\githubissue{1148}
-
-\begin{thebibliography}{9}
+\begin{thebibliography}{9}\frenchspacing
%\fontsize{9.3}{11.3}\selectfont
-%\bibitem{39: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{39: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{39:ltnews} \LaTeX{} Project Team.
\emph{\LaTeXe{} news 1--39}. June, 2024.
\url{https://latex-project.org/news/latex2e-news/ltnews.pdf}
-%
-%
+
\bibitem{39:ltnews31} \LaTeX{} Project Team.
\emph{\LaTeXe{} news 31}. February, 2020.
\url{https://latex-project.org/news/latex2e-news/ltnews31.pdf}
@@ -697,13 +874,19 @@ didn't get this treatment. This oversight has now been corrected.
\url{https://latex-project.org/news/latex2e-news/ltnews37.pdf}
\bibitem{39:ltnews38} \LaTeX{} Project Team.
- \emph{\LaTeXe{} news 38}. November 2023.\\
+ \emph{\LaTeXe{} news 38}. November 2023.
\url{https://latex-project.org/news/latex2e-news/ltnews38.pdf}
-%\bibitem{39:blueprint} Frank Mittelbach and Chris Rowley.
+\bibitem{39:deims} Frank Mittelbach and Ulrike Fischer.
+ \emph{Enhancing \LaTeX{} to automatically produce
+ tagged and accessible PDF}. \textsl{TUGboat} 45:1, 2024.
+ \url{https://latex-project.org/publications/indexbyyear/2024/}
+
+ %\bibitem{39: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}
\end{document}
+
diff --git a/macros/latex-dev/base/ltnews40.pdf b/macros/latex-dev/base/ltnews40.pdf
new file mode 100644
index 0000000000..48c6e59c36
--- /dev/null
+++ b/macros/latex-dev/base/ltnews40.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews40.tex b/macros/latex-dev/base/ltnews40.tex
new file mode 100644
index 0000000000..26866c66f9
--- /dev/null
+++ b/macros/latex-dev/base/ltnews40.tex
@@ -0,0 +1,191 @@
+% \iffalse meta-comment
+%
+% Copyright 2024
+% The LaTeX Project and any individual authors listed elsewhere
+% in this file.
+%
+% This file is part of the LaTeX base system.
+% -——————————————
+%
+% 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 2008 or later.
+%
+% This file has the LPPL maintenance status "maintained".
+%
+% The list of all files belonging to the LaTeX base distribution is
+% given in the file `manifest.txt'. See also `legal.txt' for additional
+% information.
+%
+% The list of derived (unpacked) files belonging to the distribution
+% and covered by LPPL is defined by the unpacking scripts (with
+% extension .ins) which are part of the distribution.
+%
+% \fi
+% Filename: ltnews40.tex
+%
+% This is issue 40 of LaTeX News.
+
+\NeedsTeXFormat{LaTeX2e}[2020-02-02]
+
+\documentclass{ltnews}
+
+%% Maybe needed only for Chris' inadequate system:
+\providecommand\Dash {\unskip \textemdash}
+
+%% NOTE: Chris' preferred hyphens!
+%% \showhyphens{parameters}
+%% \hyphenation{because}
+
+\usepackage[T1]{fontenc}
+
+\usepackage{lmodern,url,hologo}
+
+\usepackage{csquotes}
+\usepackage{multicol}
+\usepackage{color}
+
+\providecommand\hook[1]{\texttt{#1}}
+
+\providecommand\meta[1]{$\langle$\textrm{\itshape#1}$\rangle$}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\Arg[1]{\texttt\{\meta{#1}\texttt\}}
+
+
+\providecommand\eTeX{\hologo{eTeX}}
+\providecommand\XeTeX{\hologo{XeTeX}}
+\providecommand\LuaTeX{\hologo{LuaTeX}}
+\providecommand\pdfTeX{\hologo{pdfTeX}}
+\providecommand\MiKTeX{\hologo{MiKTeX}}
+\providecommand\CTAN{\textsc{ctan}}
+\providecommand\TL{\TeX\,Live}
+
+
+\providecommand\githubissue[2][]{\ifhmode\unskip\fi
+ \quad\penalty500\strut\nobreak\hfill
+ \mbox{\small\slshape(%
+ \href{https://github.com/latex3/latex2e/issues/\getfirstgithubissue#2 \relax}%
+ {github issue#1 #2}%
+ )}%
+ \par\smallskip}
+%% But Chris has to mostly disable \href for his TEXPAD app:
+%% \def\href #1#2{#2} % Only For Chris' deficient TeX engine
+
+% simple solution right now (just link to the first issue if there are more)
+\def\getfirstgithubissue#1 #2\relax{#1}
+
+\providecommand\sxissue[1]{\ifhmode\unskip
+ \else
+ % githubissue preceding
+ \vskip-\smallskipamount
+ \vskip-\parskip
+ \fi
+ \quad\penalty500\strut\nobreak\hfill
+ \mbox{\small\slshape(\url{https://tex.stackexchange.com/#1})}\par}
+
+\providecommand\gnatsissue[2]{\ifhmode\unskip\fi
+ \quad\penalty500\strut\nobreak\hfill
+ \mbox{\small\slshape(%
+ \href{https://www.latex-project.org/cgi-bin/ltxbugs2html?pr=#1\%2F\getfirstgithubissue#2 \relax}%
+ {gnats issue #1/#2}%
+ )}%
+ \par}
+
+\let\cls\pkg
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\acro[1]{\textsc{#1}}
+
+\vbadness=1400 % accept slightly empty columns
+
+
+\let\finalpagebreak\pagebreak % for TUB (if they use it)
+\let\finalvspace\vspace % for document layout fixes
+
+\makeatletter
+% maybe not the greatest design but normally we wouldn't have subsubsections
+\renewcommand{\subsubsection}{%
+ \@startsection {subsubsection}{2}{0pt}{1.5ex \@plus 1ex \@minus .2ex}%
+ {-1em}{\@subheadingfont\colonize}%
+}
+\providecommand\colonize[1]{#1:}
+\makeatother
+
+
+% Undo ltnews's \verbatim@font with active < and >
+\makeatletter
+\def\verbatim@font{\normalsize\ttfamily}
+\makeatother
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\providecommand\tubcommand[1]{}
+\tubcommand{\input{tubltmac}}
+
+\publicationmonth{November}
+\publicationyear{2024 --- DRAFT version for upcoming release}
+
+\publicationissue{40}
+
+\begin{document}
+
+\maketitle
+{\hyphenpenalty=10000 \exhyphenpenalty=10000 \spaceskip=3.33pt \hbadness=10000
+\tableofcontents}
+
+\setlength\rightskip{0pt plus 3em}
+
+\medskip
+
+\section{Introduction}
+
+% To write
+
+\section{New or improved commands}
+
+\section{Code improvements}
+
+\section{Bug fixes}
+
+%\subsection{A fix}
+
+%% Some text
+%
+%%\githubissue{XXXX}
+
+%\section{Changes to packages in the \pkg{amsmath} category}
+
+%\section{Changes to packages in the \pkg{graphics} category}
+
+%\section{Changes to packages in the \pkg{tools} category}
+
+%\section{Changes to files in the \pkg{cyrillic} category}
+
+\begin{thebibliography}{9}\frenchspacing
+
+%\fontsize{9.3}{11.3}\selectfont
+
+\bibitem{40: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{40:ltnews} \LaTeX{} Project Team.
+ \emph{\LaTeXe{} news 1--39}. June, 2024.
+ \url{https://latex-project.org/news/latex2e-news/ltnews.pdf}
+
+\bibitem{40:ltnews39} \LaTeX{} Project Team.
+ \emph{\LaTeXe{} news 39}. June 2024.
+ \url{https://latex-project.org/news/latex2e-news/ltnews39.pdf}
+
+\end{thebibliography}
+
+\end{document}
+
diff --git a/macros/latex-dev/base/ltpara-code.pdf b/macros/latex-dev/base/ltpara-code.pdf
index 4c47bd85e4..f11f733478 100644
--- a/macros/latex-dev/base/ltpara-code.pdf
+++ b/macros/latex-dev/base/ltpara-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltpara-doc.pdf b/macros/latex-dev/base/ltpara-doc.pdf
index 7dc5eab3f5..f855e12756 100644
--- a/macros/latex-dev/base/ltpara-doc.pdf
+++ b/macros/latex-dev/base/ltpara-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltpara.dtx b/macros/latex-dev/base/ltpara.dtx
index e9741ff935..f102d68e0d 100644
--- a/macros/latex-dev/base/ltpara.dtx
+++ b/macros/latex-dev/base/ltpara.dtx
@@ -17,21 +17,12 @@
%<*driver>
% \fi
\ProvidesFile{ltpara.dtx}
- [2024/02/11 v1.0m LaTeX Kernel (paragraph hooks)]
+ [2024/05/16 v1.0m LaTeX Kernel (paragraph hooks)]
% \iffalse
%
\documentclass{l3doc}
\GetFileInfo{ltpara.dtx}
-%\usepackage{ltpara}
-
-% Fixing footnotes in functions and variables: this should be in l3doc!
-
-\newcommand\fixfootnote[2]{\footnotemark
- \AddToHookNext{env/#1/after}{\footnotetext{#2}}}
-\AddToHook{env/function/begin}{\def\footnote{\fixfootnote{function}}}
-\AddToHook{env/variable/begin}{\def\footnote{\fixfootnote{variable}}}
-
\EnableCrossrefs
\CodelineIndex
\begin{document}
@@ -1265,7 +1256,7 @@
% redo the \cs{everypar} setting from the kernel, otherwise that
% gets lost (as it happens before that file is loaded).
% \begin{macrocode}
-\everypar{\@nodocument} %% To get an error if text appears before the
+\everypar{\@nodocument} %% To get an error if text appears before the \document
% \end{macrocode}
%
%
diff --git a/macros/latex-dev/base/ltproperties-code.pdf b/macros/latex-dev/base/ltproperties-code.pdf
index 056f6e328d..5fb85d3346 100644
--- a/macros/latex-dev/base/ltproperties-code.pdf
+++ b/macros/latex-dev/base/ltproperties-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltproperties-doc.pdf b/macros/latex-dev/base/ltproperties-doc.pdf
index 16e7530e2e..2d08c177ba 100644
--- a/macros/latex-dev/base/ltproperties-doc.pdf
+++ b/macros/latex-dev/base/ltproperties-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltproperties.dtx b/macros/latex-dev/base/ltproperties.dtx
index 4a5fa78b5f..0fd8f22e0e 100644
--- a/macros/latex-dev/base/ltproperties.dtx
+++ b/macros/latex-dev/base/ltproperties.dtx
@@ -2,7 +2,7 @@
%
% File: ltproperties.dtx
%
-% Copyright (C) 2021-2023 The LaTeX Project
+% Copyright (C) 2023-2024 The 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
@@ -30,7 +30,7 @@
%<*driver>
% \fi
\ProvidesFile{ltproperties.dtx}
- [2024/02/11 v1.0d LaTeX Kernel (Properties)]
+ [2024/04/17 v1.0e LaTeX Kernel (Properties)]
% \iffalse
%
\documentclass[full]{l3doc}
@@ -274,7 +274,7 @@
% \cs{property_if_exist_p:n} \Arg{property}
% \cs{property_if_exist:nTF} \Arg{property} \Arg{true code} \Arg{false code}
% \end{syntax}
-% \LaTeXe{}-interface: \cs{IfPropertyExistTF}.\\
+% \LaTeXe{}-interface: \cs{IfPropertyExistsTF}.\\
% Tests if the \meta{property} has been declared.
% \end{function}
%
@@ -283,7 +283,7 @@
% \cs{property_if_recorded_p:n} \Arg{label}
% \cs{property_if_recorded:nTF} \Arg{label} \Arg{true code} \Arg{false code}
% \end{syntax}
-% \LaTeXe{}-interface: \cs{IfLabelExistTF}\\
+% \LaTeXe{}-interface: \cs{IfLabelExistsTF}\\
% Tests if the \meta{label} is known. This is also true if the label has been
% set with the standard \cs{label} command.
% \end{function}
@@ -348,16 +348,16 @@
% If \Arg{property} has not been declared an error is issued.
% \end{function}
%
-% \begin{function}{\IfPropertyExistTF}
+% \begin{function}{\IfPropertyExistsTF,\IfPropertyExistsT,\IfPropertyExistsF}
% \begin{syntax}
-% \cs{IfPropertyExistTF} \Arg{property} \Arg{true code} \Arg{false code}
+% \cs{IfPropertyExistsTF} \Arg{property} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{property} has been declared.
% \end{function}
%
-% \begin{function}{\IfLabelExistTF}
+% \begin{function}{\IfLabelExistsTF,\IfLabelExistsT,\IfLabelExistsF}
% \begin{syntax}
-% \cs{IfLabelExistTF} \Arg{label} \Arg{true code} \Arg{false code}
+% \cs{IfLabelExistsTF} \Arg{label} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{label} has been recorded. This is also true if a label
% has been set with the standard \cs{label} command.
@@ -746,9 +746,13 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\IfPropertyExistTF}
+% \begin{macro}{\IfPropertyExistsTF,\IfPropertyExistsT,\IfPropertyExistsF}
+% \changes{v1.0e}{2024-04-17}{Renamed \cs{IfPropertyExistTF} to
+% \cs{IfPropertyExistsTF} (gh/1262)}
% \begin{macrocode}
-\cs_new_eq:NN \IfPropertyExistTF \property_if_exist:eTF
+\cs_new_eq:NN \IfPropertyExistsTF \property_if_exist:eTF
+\cs_new:Npn \IfPropertyExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
+\cs_new:Npn \IfPropertyExistsF #1 {\property_if_exist:eTF {#1}{} }
% \end{macrocode}
% \end{macro}
%
@@ -771,9 +775,13 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\IfLabelExistTF}
+% \begin{macro}{\IfLabelExistsTF,\IfLabelExistsT,\IfLabelExistsF}
+% \changes{v1.0e}{2024-04-17}{Renamed \cs{IfLabelExistTF} to
+% \cs{IfLabelExistsTF} (gh/1262)}
% \begin{macrocode}
-\cs_new_eq:NN \IfLabelExistTF \property_if_recorded:eTF
+\cs_new_eq:NN \IfLabelExistsTF \property_if_recorded:eTF
+\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
+\cs_new:Npn \IfLabelExistsF #1 {\property_if_exist:eTF {#1}{} }
% \end{macrocode}
% \end{macro}
%
@@ -947,8 +955,8 @@
%<latexrelease>\let \RefProperty \@undefined
%<latexrelease>\let \RefUndefinedWarn \@undefined
%<latexrelease>
-%<latexrelease>\let \IfPropertyExistTF \@undefined
-%<latexrelease>\let \IfLabelExistTF \@undefined
+%<latexrelease>\let \IfPropertyExistsTF \@undefined
+%<latexrelease>\let \IfLabelExistsTF \@undefined
%<latexrelease>\let \IfPropertyRecordedTF \@undefined
%<latexrelease>
%<latexrelease>\let\new@label@record \@undefined
diff --git a/macros/latex-dev/base/ltshipout-code.pdf b/macros/latex-dev/base/ltshipout-code.pdf
index 9c7fe80c98..265d6d2f78 100644
--- a/macros/latex-dev/base/ltshipout-code.pdf
+++ b/macros/latex-dev/base/ltshipout-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltshipout-doc.pdf b/macros/latex-dev/base/ltshipout-doc.pdf
index 142fa00cb7..0045526a94 100644
--- a/macros/latex-dev/base/ltshipout-doc.pdf
+++ b/macros/latex-dev/base/ltshipout-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltsockets-code.pdf b/macros/latex-dev/base/ltsockets-code.pdf
index 8c920d6715..08f3e24eda 100644
--- a/macros/latex-dev/base/ltsockets-code.pdf
+++ b/macros/latex-dev/base/ltsockets-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltsockets-doc.pdf b/macros/latex-dev/base/ltsockets-doc.pdf
index c3d42ecbaf..975b377868 100644
--- a/macros/latex-dev/base/ltsockets-doc.pdf
+++ b/macros/latex-dev/base/ltsockets-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lttemplates.dtx b/macros/latex-dev/base/lttemplates.dtx
index d27c232fe0..7192359e72 100644
--- a/macros/latex-dev/base/lttemplates.dtx
+++ b/macros/latex-dev/base/lttemplates.dtx
@@ -36,7 +36,7 @@
%<*driver>
% \fi
\ProvidesFile{lttemplates.dtx}
- [2024-02-15 v1.0b LaTeX Kernel (Prototype document functions)]
+ [2024-04-17 v1.0c LaTeX Kernel (Prototype document functions)]
% \iffalse
\documentclass{l3doc}
\GetFileInfo{lttemplates.dtx}
@@ -225,7 +225,9 @@
% value, which will be used in by the template if the \meta{key} is
% not set explicitly. The \meta{default} should be of the correct
% form to be accepted by the \meta{key type} of the \meta{key}: this
-% is not checked by the code.
+% is not checked by the code. Expressions for numerical values are
+% evaluated when the template is used, thus for example values given
+% in terms of |em| or |ex| will be set respecting the prevailing font.
% \end{function}
%
% \begin{table}
@@ -318,7 +320,7 @@
% \toprule
% \multicolumn{1}{l}{Key-type} & Description of binding \\
% \midrule
-% boolean & Boolean variable, \emph{e.g}.~\cs{l_tmpa_bool} \\
+% \ & Boolean variable, \emph{e.g}.~\cs{l_tmpa_bool} \\
% choice
% & List of choice implementations
% (see Section~\ref{sec:choices-key}) \\
@@ -469,9 +471,9 @@
% the general idea of fixing some settings.
% \end{function}
%
-% \begin{function}{\IfInstanceExistT, \IfInstanceExistF, \IfInstanceExistTF}
+% \begin{function}{\IfInstanceExistsT, \IfInstanceExisstF, \IfInstanceExistsTF}
% \begin{syntax}
-% \cs{IfInstanceExistTF} \Arg{type} \Arg{instance} \Arg{true code} \Arg{false code}
+% \cs{IfInstanceExistsTF} \Arg{type} \Arg{instance} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the named \meta{instance} of a \meta{type} exists, and
% then inserts the appropriate code into the input stream.
@@ -1913,7 +1915,8 @@
{ \@@_find_global: }
}
\tl_set:Nn \l_@@_key_name_tl {#1}
- \use:c { @@_assign_ \l_@@_keytype_tl : }
+ \cs_if_exist_use:cF { @@_assign_ \l_@@_keytype_tl : }
+ { \@@_assign_variable: }
}
{ \msg_error:nnn { template } { unknown-attribute } {#1} }
}
@@ -2096,103 +2099,20 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_assign_integer:}
-% \begin{macro}{\@@_assign_length:}
-% \begin{macro}{\@@_assign_muskip:}
-% \begin{macro}{\@@_assign_real:}
-% \begin{macro}{\@@_assign_skip:}
-% All of the calculated assignments use the same underlying code, with
-% only the low-level assignment function changing.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_assign_integer:
- {
- \bool_if:NTF \l_@@_global_bool
- { \@@_assign_variable:N \int_gset:Nn }
- { \@@_assign_variable:N \int_set:Nn }
- }
-\cs_new_protected:Npn \@@_assign_length:
- {
- \bool_if:NTF \l_@@_global_bool
- { \@@_assign_variable:N \dim_gset:Nn }
- { \@@_assign_variable:N \dim_set:Nn }
-}
-\cs_new_protected:Npn \@@_assign_muskip:
- {
- \bool_if:NTF \l_@@_global_bool
- { \@@_assign_variable:N \muskip_gset:Nn }
- { \@@_assign_variable:N \muskip_set:Nn }
- }
-\cs_new_protected:Npn \@@_assign_real:
- {
- \bool_if:NTF \l_@@_global_bool
- { \@@_assign_variable:N \fp_gset:Nn }
- { \@@_assign_variable:N \fp_set:Nn }
- }
-\cs_new_protected:Npn \@@_assign_skip:
- {
- \bool_if:NTF \l_@@_global_bool
- { \@@_assign_variable:N \skip_gset:Nn }
- { \@@_assign_variable:N \skip_set:Nn }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_assign_tokenlist:}
-% \begin{macro}{\@@_assign_tokenlist_aux:NN}
-% Life would be easy here if it were not for \cs{KeyValue}. To deal
-% correctly with that, we need to allow for the recovery a stored value
-% at point of use.
+% \begin{macro}{\@@_assign_variable:}
+% \begin{macro}{\@@_assign_variable:N, \@@_assign_variable:c}
+% A general-purpose function for all of the other assignments.
+% As long as the value is not coming from another variable, the stored
+% value is simply transferred for output.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_assign_tokenlist:
- {
- \bool_if:NTF \l_@@_global_bool
- { \@@_assign_tokenlist_aux:NN \tl_gset:NV \tl_gset:Nn }
- { \@@_assign_tokenlist_aux:NN \tl_set:NV \tl_set:Nn }
- }
-\cs_new_protected:Npn \@@_assign_tokenlist_aux:NN #1#2
+\cs_new_protected:Npn \@@_assign_variable:
{
- \@@_if_key_value:VTF \l_@@_value_tl
- {
- \@@_key_to_value:
- \tl_put_right:Ne \l_@@_assignments_tl
- {
- #1 \exp_not:V \l_@@_var_tl
- { \exp_not:V \l_@@_value_tl }
- }
- }
+ \@@_assign_variable:c
{
- \tl_put_right:Ne \l_@@_assignments_tl
- {
- #2 \exp_not:V \l_@@_var_tl
- { \exp_not:V \l_@@_value_tl }
- }
+ \@@_map_var_type: _
+ \bool_if:NT \l_@@_global_bool { g } set:Nn
}
}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_assign_commalist:}
-% Very similar for commas lists, so some code is shared.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_assign_commalist:
- {
- \bool_if:NTF \l_@@_global_bool
- { \@@_assign_tokenlist_aux:NN \clist_gset:NV \clist_gset:Nn }
- { \@@_assign_tokenlist_aux:NN \clist_set:NV \clist_set:Nn }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_assign_variable:N}
-% A general-purpose function for all of the numerical assignments.
-% As long as the value is not coming from another variable, the stored
-% value is simply transferred for output.
-% \begin{macrocode}
\cs_new_protected:Npn \@@_assign_variable:N #1
{
\@@_if_key_value:VT \l_@@_value_tl
@@ -2203,8 +2123,10 @@
{ \exp_not:V \l_@@_value_tl }
}
}
+\cs_generate_variant:Nn \@@_assign_variable:N { c }
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@@_key_to_value:}
% \begin{macro}{\@@_key_to_value_auxi:w}
@@ -2653,15 +2575,16 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\IfInstanceExistT, \IfInstanceExistF, \IfInstanceExistTF}
+% \begin{macro}{\IfInstanceExistsT, \IfInstanceExistsF, \IfInstanceExistsTF}
% \changes{2024-02-15}{v1.0b}{New macros}
+% \changes{2024-04-17}{v1.0c}{Use plural names}
% More direct translation.
% \begin{macrocode}
-\cs_new:Npn \IfInstanceExistTF #1#2
+\cs_new:Npn \IfInstanceExistsTF #1#2
{ \@@_if_instance_exist:nnTF {#1} {#2} }
-\cs_new:Npn \IfInstanceExistT #1#2
+\cs_new:Npn \IfInstanceExistsT #1#2
{ \@@_if_instance_exist:nnT {#1} {#2} }
-\cs_new:Npn \IfInstanceExistF #1#2
+\cs_new:Npn \IfInstanceExistsF #1#2
{ \@@_if_instance_exist:nnF {#1} {#2} }
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex-dev/base/lttextcomp.dtx b/macros/latex-dev/base/lttextcomp.dtx
index c67bac00dd..7f247747d6 100644
--- a/macros/latex-dev/base/lttextcomp.dtx
+++ b/macros/latex-dev/base/lttextcomp.dtx
@@ -37,7 +37,7 @@
%
%
\ProvidesFile{lttextcomp.dtx}
- [2024/02/08 v1.1a LaTeX Kernel (text companion symbols)]
+ [2024/04/24 v1.1c LaTeX Kernel (text companion symbols)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -1525,16 +1525,19 @@
% \section{The \texttt{textcomp} package}
%
%
+% For any rollback request before 2018-08-11 we make an attempt by
+% loading the 2018 version.
+% \changes{v2.1b}{2024/04/24}
+% {Load the 2018 version when rolling back prior to 2018-08-11
+% (gh/1333)}
% \begin{macrocode}
%<*TS1sty>
-\providecommand\DeclareRelease[3]{}
-\providecommand\DeclareCurrentRelease[2]{}
-
+\DeclareRelease{}{1997-12-01}{textcomp-2018-08-11.sty}
\DeclareRelease{}{2018-08-11}{textcomp-2018-08-11.sty}
\DeclareCurrentRelease{}{2020-02-02}
\ProvidesPackage{textcomp}
- [2020/02/02 v2.0n Standard LaTeX package]
+ [2024/04/24 v2.1b Standard LaTeX package]
% \end{macrocode}
%
% A precaution in case this is used without rebuilding the format.
@@ -1590,8 +1593,8 @@
}
% \end{macrocode}
%
+% \changes{v2.1a}{2024/04/22}{Drop default option \texttt{info} (gh/1333)}
% \begin{macrocode}
-\ExecuteOptions{info}
\ProcessOptions\relax
% \end{macrocode}
%
diff --git a/macros/latex-dev/base/ltvers.dtx b/macros/latex-dev/base/ltvers.dtx
index be7011a537..0b8b6f753d 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>
- {2024-06-01}
+ {2024-11-01}
%</2ekernel|latexrelease>
%<*2ekernel>
-\def\patch@level{-2}
+\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
index 6e419ab172..53ce247aa8 100644
--- a/macros/latex-dev/base/ltx3info.pdf
+++ b/macros/latex-dev/base/ltx3info.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltxdoc.pdf b/macros/latex-dev/base/ltxdoc.pdf
index 0a1ddb4a7f..f31adfccc9 100644
--- a/macros/latex-dev/base/ltxdoc.pdf
+++ b/macros/latex-dev/base/ltxdoc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/makeindx.pdf b/macros/latex-dev/base/makeindx.pdf
index 18ca3f9247..3dccd9a100 100644
--- a/macros/latex-dev/base/makeindx.pdf
+++ b/macros/latex-dev/base/makeindx.pdf
Binary files differ
diff --git a/macros/latex-dev/base/modguide.pdf b/macros/latex-dev/base/modguide.pdf
index 2069363ee3..6bea7dcfd1 100644
--- a/macros/latex-dev/base/modguide.pdf
+++ b/macros/latex-dev/base/modguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/nfssfont.pdf b/macros/latex-dev/base/nfssfont.pdf
index 8b45e7770c..c3ca6acee9 100644
--- a/macros/latex-dev/base/nfssfont.pdf
+++ b/macros/latex-dev/base/nfssfont.pdf
Binary files differ
diff --git a/macros/latex-dev/base/proc.pdf b/macros/latex-dev/base/proc.pdf
index 5973decadb..3aa73db0e0 100644
--- a/macros/latex-dev/base/proc.pdf
+++ b/macros/latex-dev/base/proc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/slides.pdf b/macros/latex-dev/base/slides.pdf
index 767e52d533..7875db3d94 100644
--- a/macros/latex-dev/base/slides.pdf
+++ b/macros/latex-dev/base/slides.pdf
Binary files differ
diff --git a/macros/latex-dev/base/slifonts.pdf b/macros/latex-dev/base/slifonts.pdf
index 972afa5d75..bef7a9463b 100644
--- a/macros/latex-dev/base/slifonts.pdf
+++ b/macros/latex-dev/base/slifonts.pdf
Binary files differ
diff --git a/macros/latex-dev/base/source2e.pdf b/macros/latex-dev/base/source2e.pdf
index 0db61ba189..813d69e25d 100644
--- a/macros/latex-dev/base/source2e.pdf
+++ b/macros/latex-dev/base/source2e.pdf
Binary files differ
diff --git a/macros/latex-dev/base/syntonly.pdf b/macros/latex-dev/base/syntonly.pdf
index 41ff62b0de..1d0ada9ccb 100644
--- a/macros/latex-dev/base/syntonly.pdf
+++ b/macros/latex-dev/base/syntonly.pdf
Binary files differ
diff --git a/macros/latex-dev/base/tlc2.pdf b/macros/latex-dev/base/tlc2.pdf
index ca468e2797..39c7d14f8a 100644
--- a/macros/latex-dev/base/tlc2.pdf
+++ b/macros/latex-dev/base/tlc2.pdf
Binary files differ
diff --git a/macros/latex-dev/base/tlc3.err b/macros/latex-dev/base/tlc3.err
index 7c2c732568..6700a6b962 100644
--- a/macros/latex-dev/base/tlc3.err
+++ b/macros/latex-dev/base/tlc3.err
@@ -1,4 +1,4 @@
-\newcommand\erratafiledate{2024/03/17} % needs / and not -
+\newcommand\erratafiledate{2024/05/31} % needs / and not -
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% To produce a printed version of this errata file run this file through
@@ -320,6 +320,9 @@
\let\u\underline % needs resetting after hyperref
+\usepackage{hologo}
+\providecommand\XeTeX{\hologo{XeTeX}}
+
\begin{document}
@@ -397,7 +400,7 @@ Good luck!
\begin{center}
\begin{tabular}{clr}
Contest period ends & Winner \\[4pt]
-2024/03 & Bernd Burkhardt & 52 suggestions\\
+2024/03 & Bernd Burghardt & 52 suggestions\\
\end{tabular}
\end{center}
@@ -591,6 +594,13 @@ the index is always fully regenerated for new printings.
English. Personally, I prefer the version with accent (as does Don
Knuth) so it is deliberate and will not change.
+
+\CHAPTER{Preface}
+
+\erroronpage{I-xlii}{para 1, l.3}{FMi}{2024/04/01}{s}
+\u{the designer} of the Lato fonts \> \u{a co-designer} of the Lato fonts
+
+
\CHAPTER{Chapter 1 --- Introduction}
\erroronpage{I-5}{para 4, l.4}{kb}{2023/04/04}{s}
@@ -656,7 +666,7 @@ Use
\newcommand\sample[1]{\textnormal{\noindent #1:}
The limit is \qty{30}{\kmh} not $\qty{50}{\kmh}$.\par}}
\end{verbatim}
-so that both text and math usage of \verb=\pty= are compared in the example.
+so that both text and math usage of \verb=\qty= are compared in the example.
\erroronpage{I-182}{para 4}{BeB}{2024/03/17}{s}
@@ -707,6 +717,14 @@ is not shown.}
\u{\cs{right}} \> \u{\cs{rightmark}}
+\erroronpage{I-393}{Documentation of \rlap{\cs{IfMarksEqualTF}}}{FMi}{2024/05/31}{s}
+
+Add paragraph:
+Note that two retrieved mark values are only considered equal if they
+originated from the same \cs{InsertMark} command — it is not enough
+that they contain the same data, as that may be conincidental.
+
+
\CHAPTER{Chapter 6 --- Tabular Material}
@@ -722,6 +740,12 @@ text can be interpreted as a value, a somewhat ``random'' number and
the rest is dropped. For example, \texttt{31 December 2022} would
result in ``31.00'', which is probably not desired.
+\erroronpage{I-491}{exa 6-7-22, Booklet 114}{EOl}{2024/05/13}{s}
+ Change: remove `0,00' in `actual' column for item `loss'. (This
+is not really an error, but it looks better---and is consistent with the
+`actual' item of `profit' for Booklet 113.)
+
+
\erroronpage{I-494}{para -2, l.3}{MRu}{2024/03/16}{s}
Use plural: The allowed key\u{s} are \ldots
@@ -729,10 +753,14 @@ Use plural: The allowed key\u{s} are \ldots
\CHAPTER{Chapter 7 --- Mastering Floats}
-\erroronpage{I-520}{paragraph 4, l.3}{EOl}{2023/09/09}{s}
+\erroronpage{I-520}{para 4, l.3}{EOl}{2023/09/09}{s}
Change:
For \u{a} example \> For example
+\erroronpage{I-612}{para -2, l.1}{EOl}{2024/05/13}{s}
+Change: up \u{do} several \> up to several
+
+
\CHAPTER{Chapter 8 --- Graphics Generation and Manipulation}
\erroronpage{I-619}{para -2, l.2}{FMi}{2023/05/30}{s}
@@ -749,6 +777,9 @@ start from full red, i.e., \> \verb*/left color=red/ instead.
\erroronpage{I-644}{syntaxbox for \cs{foreach}}{BeB}{2023/07/14}{s}
superfluous ``in'': \ldots\{\textsl{commands}\} \u{in} \> \ldots\{\textsl{commands}\}
+\erroronpage{I-645}{para 3, l.4}{EOl}{2024/05/13}{s}
+Correct hyphenation: stan-dalone \> stand-alone
+
\CHAPTER{Chapter 9 --- Font Selection and Encodings}
@@ -767,9 +798,28 @@ Missing space: Theproblem \> The problem
\erroronpage{I-708}{listing}{FMi}{2023/05/14}{s}
Situation is the same in the 2023 distributions; listing output updated.
+\erroronpage{I-726}{para 4, l.5}{MRu}{2024/04/07}{s}
+Add word: more than hundred \> more than \u{one} hundred
+
\erroronpage{I-759}{l.1}{BeB}{2023/08/20}{s}
in the range of 0000 to \u{00FF} \> in the range of 0000 to \u{007F}
+\erroronpage{I-797}{exa 9-6-3}{BYu/FMi}{2024/04/08}{s}
+
+This example may fail with \XeTeX{} because of a deficiency in
+older versions of \pkg{fontspec}. With versions prior 2.9e one has to
+use the \texttt{Extension} key and omit the extension on the other
+lines:
+\begin{verbatim}
+\setmainfont{Alegreya}[
+ Extension = .otf,
+ UprightFont = *-Medium,
+ ItalicFont = *-MediumItalic,
+ BoldFont = *-ExtraBold,
+ BoldItalicFont = *-ExtraBoldItalic
+]
+\end{verbatim}
+
\CHAPTER{Chapter 10 --- Text and Symbol Fonts}
@@ -786,7 +836,7 @@ then this structure is repeated \u{for the related font families} as often as ne
\erroronpage{II-24}{para 3, l. -2}{BeB}{2023/08/13}{s}
-There is no slanted shape in Grande Mono: \\
+There is no slanted shape in Grande Mono (so it should be in blue): \\
\u{\textsl{naïve}} \> \u{\textsl{\bl naïve}}
@@ -795,8 +845,8 @@ Open Type font is available: \\
\u{— no Open Type —} \> \u{Lucida Handwriting OT}
\erroronpage{II-25}{para -2, l.-2}{BeB}{2023/08/13}{s}
-There are no italic blackletters: \\
-\textit{phœnix's official rôle}\> \textit{\bl phœnix's official rôle}
+There are no italic blackletters (so it should be in blue): \\
+\textit{phœnix's official rôle} \> \textit{\bl phœnix's official rôle}
\erroronpage{II-28}{table 10.14, l. 3}{BeB}{2023/08/13}{s}
Inconsistent order: sl, l \> l, sl
@@ -827,6 +877,8 @@ bold) or in some families for \textttu{ub} (ultra bold).}
\erroronpage{II-40}{table 10.24}{FMi}{2023/08/15}{s}
In table note: \textit{Unfortunately, \u{\texttt{sco}}} \> \textit{Unfortunately, \u{\textttu{sco}}}
+\erroronpage{II-42}{para 3, l.4}{MRu}{2024/04/12}{s}
+rudimentary \> rudimentarily
\erroronpage{II-50}{font sample Cambria}{FMi}{2023/08/14}{s}
@@ -840,7 +892,7 @@ Because of problems with the font names, the Cambria family currently requires a
BoldItalicFont = cambriaz.ttf}
\end{verbatim}
Without it, the bold fonts are not correctly set up, which is why
-\textbf{almost anything} is not in bold and \textbf{Fields} is not typeset in
+\textbf{almost anything} was not in bold and \textbf{Fields} was not typeset in
bold small caps in the sample even though Cambria supports these typefaces.
@@ -1387,7 +1439,6 @@ Replace for consistency with section 1.4: \u{command definition} \> \u{code} \\
\erroronpage{II-633}{para 2}{BeB/FMi}{2023/08/31}{s}
Add at the end: A maximum of nine ``argument'' letters is supported.
-
\erroronpage{II-657}{par -2, l. -2}{BeB}{2024/03/17}{s}
a few that \> a few \u{commands} that
@@ -1395,6 +1446,9 @@ a few that \> a few \u{commands} that
\erroronpage{II-658}{first item in the list}{BeB}{2024/03/17}{s}
square root $\sqrt{x}$ \> square root \texttt{sqrt} $x$
+\erroronpage{II-663}{A-3-7}{MRu}{2024/05/01}{}
+In the code, text should read either ``This is the content'' or ``These are the contents''.
+
\erroronpage{II-682}{para -2, l .3}{FMi}{2023/04/28}{s}
\texttt{Harf\u{b}uzz} \> \texttt{Harf\u{B}uzz}
@@ -1441,6 +1495,7 @@ 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{BYu}{Boshi Yuan}
\contributor{CAR}{Chris Rowley}
\contributor{DC}{Davide Campagnari}
\contributor{DFl}{Daniel Flipo}
diff --git a/macros/latex-dev/base/tlc3.pdf b/macros/latex-dev/base/tlc3.pdf
index 5b9f0237a8..a273599c31 100644
--- a/macros/latex-dev/base/tlc3.pdf
+++ b/macros/latex-dev/base/tlc3.pdf
Binary files differ
diff --git a/macros/latex-dev/base/tulm.pdf b/macros/latex-dev/base/tulm.pdf
index 283b4eedad..c063759aae 100644
--- a/macros/latex-dev/base/tulm.pdf
+++ b/macros/latex-dev/base/tulm.pdf
Binary files differ
diff --git a/macros/latex-dev/base/usrguide-historic.pdf b/macros/latex-dev/base/usrguide-historic.pdf
index 1013a34434..16be1a5fd2 100644
--- a/macros/latex-dev/base/usrguide-historic.pdf
+++ b/macros/latex-dev/base/usrguide-historic.pdf
Binary files differ
diff --git a/macros/latex-dev/base/usrguide.pdf b/macros/latex-dev/base/usrguide.pdf
index a447d9547b..a687809478 100644
--- a/macros/latex-dev/base/usrguide.pdf
+++ b/macros/latex-dev/base/usrguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/usrguide.tex b/macros/latex-dev/base/usrguide.tex
index cf0a01e836..2b9e959627 100644
--- a/macros/latex-dev/base/usrguide.tex
+++ b/macros/latex-dev/base/usrguide.tex
@@ -43,7 +43,7 @@
\texttt{usrguide.tex} for full details.}%
}
-\date{2024-03-17}
+\date{2024-05-24}
\NewDocumentCommand\cs{m}{\texttt{\textbackslash\detokenize{#1}}}
\NewDocumentCommand\marg{m}{\arg{#1}}
@@ -646,7 +646,7 @@ take account of the possibility that the \meta{token} has been made active
(category code~$13$) and will split at such tokens.
Spaces are trimmed at each end of each item parsed. Exactly one set
of braces will be stripped if an entire item is surrounded by them,
-i.e.~the following inputs and outputs result (each separte item as
+i.e.~the following inputs and outputs result (each separate item as
a brace group).
\begin{verbatim}
a ==> {a}
diff --git a/macros/latex-dev/base/utf8ienc.pdf b/macros/latex-dev/base/utf8ienc.pdf
index bfa803c7da..6795d02fcc 100644
--- a/macros/latex-dev/base/utf8ienc.pdf
+++ b/macros/latex-dev/base/utf8ienc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/webcomp.pdf b/macros/latex-dev/base/webcomp.pdf
index b1b6d41562..45e772afe0 100644
--- a/macros/latex-dev/base/webcomp.pdf
+++ b/macros/latex-dev/base/webcomp.pdf
Binary files differ