summaryrefslogtreecommitdiff
path: root/macros/latex-dev/base
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-12-04 03:01:36 +0000
committerNorbert Preining <norbert@preining.info>2022-12-04 03:01:36 +0000
commitb153d9b098596910fb2be9311f13c4415233c2a2 (patch)
treef0f44c9b4caa5756e6957885e8691c0268920a56 /macros/latex-dev/base
parent34896a353fe22e8ac88ef0b4e39f4fa878e2b0b6 (diff)
CTAN sync 202212040301
Diffstat (limited to 'macros/latex-dev/base')
-rw-r--r--macros/latex-dev/base/README.md2
-rw-r--r--macros/latex-dev/base/alltt.pdfbin223831 -> 223831 bytes
-rw-r--r--macros/latex-dev/base/cfgguide.pdfbin264112 -> 264112 bytes
-rw-r--r--macros/latex-dev/base/changes.txt77
-rw-r--r--macros/latex-dev/base/classes.pdfbin560611 -> 560326 bytes
-rw-r--r--macros/latex-dev/base/clsguide.pdfbin414419 -> 414419 bytes
-rw-r--r--macros/latex-dev/base/cmfonts.pdfbin292160 -> 292160 bytes
-rw-r--r--macros/latex-dev/base/cyrguide.pdfbin257314 -> 257314 bytes
-rw-r--r--macros/latex-dev/base/doc-code.pdfbin1077527 -> 1075110 bytes
-rw-r--r--macros/latex-dev/base/doc.dtx244
-rw-r--r--macros/latex-dev/base/doc.pdfbin755064 -> 755547 bytes
-rw-r--r--macros/latex-dev/base/docstrip.pdfbin504553 -> 504178 bytes
-rw-r--r--macros/latex-dev/base/encguide.pdfbin1318126 -> 1318126 bytes
-rw-r--r--macros/latex-dev/base/exscale.pdfbin204711 -> 204711 bytes
-rw-r--r--macros/latex-dev/base/fix-cm.pdfbin287733 -> 287733 bytes
-rw-r--r--macros/latex-dev/base/fntguide.pdfbin517838 -> 517838 bytes
-rw-r--r--macros/latex-dev/base/graphpap.pdfbin161713 -> 161713 bytes
-rw-r--r--macros/latex-dev/base/ifthen.pdfbin221211 -> 221211 bytes
-rw-r--r--macros/latex-dev/base/inputenc.pdfbin318204 -> 318204 bytes
-rw-r--r--macros/latex-dev/base/lamport-manual.pdfbin170878 -> 170878 bytes
-rw-r--r--macros/latex-dev/base/latexrelease.dtx11
-rw-r--r--macros/latex-dev/base/latexrelease.pdfbin281906 -> 282115 bytes
-rw-r--r--macros/latex-dev/base/latexsym.pdfbin200760 -> 200760 bytes
-rw-r--r--macros/latex-dev/base/lb2.pdfbin252140 -> 252140 bytes
-rw-r--r--macros/latex-dev/base/letter.pdfbin337630 -> 337430 bytes
-rw-r--r--macros/latex-dev/base/lgc2.pdfbin215684 -> 215684 bytes
-rw-r--r--macros/latex-dev/base/lppl.pdfbin132382 -> 132382 bytes
-rw-r--r--macros/latex-dev/base/ltclass.dtx23
-rw-r--r--macros/latex-dev/base/ltcmd.dtx46
-rw-r--r--macros/latex-dev/base/ltcmdhooks-code.pdfbin719104 -> 719408 bytes
-rw-r--r--macros/latex-dev/base/ltcmdhooks-doc.pdfbin478606 -> 478686 bytes
-rw-r--r--macros/latex-dev/base/ltdefns.dtx226
-rw-r--r--macros/latex-dev/base/ltfilehook-code.pdfbin803024 -> 803060 bytes
-rw-r--r--macros/latex-dev/base/ltfilehook-doc.pdfbin547895 -> 547926 bytes
-rw-r--r--macros/latex-dev/base/ltfinal.dtx34
-rw-r--r--macros/latex-dev/base/lthooks-code.pdfbin1091409 -> 1091429 bytes
-rw-r--r--macros/latex-dev/base/lthooks-doc.pdfbin701468 -> 701473 bytes
-rw-r--r--macros/latex-dev/base/ltluatex.pdfbin325457 -> 324910 bytes
-rw-r--r--macros/latex-dev/base/ltmarks-code.pdfbin715524 -> 715658 bytes
-rw-r--r--macros/latex-dev/base/ltmarks-doc.pdfbin585896 -> 586024 bytes
-rw-r--r--macros/latex-dev/base/ltmiscen.dtx10
-rw-r--r--macros/latex-dev/base/ltnews.pdfbin1243036 -> 1255282 bytes
-rw-r--r--macros/latex-dev/base/ltnews.tex2
-rw-r--r--macros/latex-dev/base/ltnews01.pdfbin161518 -> 161518 bytes
-rw-r--r--macros/latex-dev/base/ltnews02.pdfbin159792 -> 159792 bytes
-rw-r--r--macros/latex-dev/base/ltnews03.pdfbin159332 -> 159332 bytes
-rw-r--r--macros/latex-dev/base/ltnews04.pdfbin152525 -> 152525 bytes
-rw-r--r--macros/latex-dev/base/ltnews05.pdfbin174494 -> 174494 bytes
-rw-r--r--macros/latex-dev/base/ltnews06.pdfbin142849 -> 142849 bytes
-rw-r--r--macros/latex-dev/base/ltnews07.pdfbin137811 -> 137811 bytes
-rw-r--r--macros/latex-dev/base/ltnews08.pdfbin155053 -> 155053 bytes
-rw-r--r--macros/latex-dev/base/ltnews09.pdfbin129570 -> 129570 bytes
-rw-r--r--macros/latex-dev/base/ltnews10.pdfbin169416 -> 169416 bytes
-rw-r--r--macros/latex-dev/base/ltnews11.pdfbin111948 -> 111948 bytes
-rw-r--r--macros/latex-dev/base/ltnews12.pdfbin156551 -> 156551 bytes
-rw-r--r--macros/latex-dev/base/ltnews13.pdfbin182225 -> 182225 bytes
-rw-r--r--macros/latex-dev/base/ltnews14.pdfbin170473 -> 170473 bytes
-rw-r--r--macros/latex-dev/base/ltnews15.pdfbin130309 -> 130309 bytes
-rw-r--r--macros/latex-dev/base/ltnews16.pdfbin138073 -> 138073 bytes
-rw-r--r--macros/latex-dev/base/ltnews17.pdfbin166228 -> 166228 bytes
-rw-r--r--macros/latex-dev/base/ltnews18.pdfbin38033 -> 38033 bytes
-rw-r--r--macros/latex-dev/base/ltnews19.pdfbin230028 -> 230028 bytes
-rw-r--r--macros/latex-dev/base/ltnews20.pdfbin318548 -> 318548 bytes
-rw-r--r--macros/latex-dev/base/ltnews21.pdfbin244867 -> 244867 bytes
-rw-r--r--macros/latex-dev/base/ltnews22.pdfbin317773 -> 317773 bytes
-rw-r--r--macros/latex-dev/base/ltnews23.pdfbin286591 -> 286591 bytes
-rw-r--r--macros/latex-dev/base/ltnews24.pdfbin265279 -> 265279 bytes
-rw-r--r--macros/latex-dev/base/ltnews25.pdfbin204935 -> 204935 bytes
-rw-r--r--macros/latex-dev/base/ltnews26.pdfbin379462 -> 379462 bytes
-rw-r--r--macros/latex-dev/base/ltnews27.pdfbin250592 -> 250592 bytes
-rw-r--r--macros/latex-dev/base/ltnews28.pdfbin376643 -> 376643 bytes
-rw-r--r--macros/latex-dev/base/ltnews29.pdfbin455107 -> 455107 bytes
-rw-r--r--macros/latex-dev/base/ltnews30.pdfbin511909 -> 511909 bytes
-rw-r--r--macros/latex-dev/base/ltnews31.pdfbin526323 -> 526323 bytes
-rw-r--r--macros/latex-dev/base/ltnews32.pdfbin546160 -> 546160 bytes
-rw-r--r--macros/latex-dev/base/ltnews33.pdfbin522412 -> 522412 bytes
-rw-r--r--macros/latex-dev/base/ltnews34.pdfbin508044 -> 508044 bytes
-rw-r--r--macros/latex-dev/base/ltnews35.pdfbin563089 -> 563089 bytes
-rw-r--r--macros/latex-dev/base/ltnews36.pdfbin517577 -> 517565 bytes
-rw-r--r--macros/latex-dev/base/ltnews36.tex9
-rw-r--r--macros/latex-dev/base/ltnews37.pdfbin0 -> 408962 bytes
-rw-r--r--macros/latex-dev/base/ltnews37.tex378
-rw-r--r--macros/latex-dev/base/ltpara-code.pdfbin667097 -> 667129 bytes
-rw-r--r--macros/latex-dev/base/ltpara-doc.pdfbin559976 -> 560008 bytes
-rw-r--r--macros/latex-dev/base/ltshipout-code.pdfbin818741 -> 820928 bytes
-rw-r--r--macros/latex-dev/base/ltshipout-doc.pdfbin563518 -> 565931 bytes
-rw-r--r--macros/latex-dev/base/ltshipout.dtx51
-rw-r--r--macros/latex-dev/base/ltspace.dtx16
-rw-r--r--macros/latex-dev/base/ltvers.dtx31
-rw-r--r--macros/latex-dev/base/ltx3info.pdfbin219349 -> 219349 bytes
-rw-r--r--macros/latex-dev/base/ltxdoc.dtx11
-rw-r--r--macros/latex-dev/base/ltxdoc.pdfbin242645 -> 243286 bytes
-rw-r--r--macros/latex-dev/base/makeindx.pdfbin165821 -> 165821 bytes
-rw-r--r--macros/latex-dev/base/modguide.pdfbin257804 -> 257804 bytes
-rw-r--r--macros/latex-dev/base/nfssfont.pdfbin211180 -> 211180 bytes
-rw-r--r--macros/latex-dev/base/proc.pdfbin227059 -> 227059 bytes
-rw-r--r--macros/latex-dev/base/slides.pdfbin375518 -> 375518 bytes
-rw-r--r--macros/latex-dev/base/slifonts.pdfbin234191 -> 234191 bytes
-rw-r--r--macros/latex-dev/base/source2e.pdfbin5769593 -> 5789493 bytes
-rw-r--r--macros/latex-dev/base/syntonly.pdfbin189704 -> 189819 bytes
-rw-r--r--macros/latex-dev/base/tlc2.pdfbin290615 -> 290615 bytes
-rw-r--r--macros/latex-dev/base/tulm.pdfbin162772 -> 162772 bytes
-rw-r--r--macros/latex-dev/base/usrguide-historic.pdfbin438515 -> 438515 bytes
-rw-r--r--macros/latex-dev/base/usrguide.pdfbin473980 -> 474808 bytes
-rw-r--r--macros/latex-dev/base/usrguide.tex25
-rw-r--r--macros/latex-dev/base/utf8ienc.pdfbin353237 -> 353428 bytes
-rw-r--r--macros/latex-dev/base/webcomp.pdfbin146198 -> 146198 bytes
107 files changed, 1008 insertions, 188 deletions
diff --git a/macros/latex-dev/base/README.md b/macros/latex-dev/base/README.md
index 8fb5e8e894..343bb1b759 100644
--- a/macros/latex-dev/base/README.md
+++ b/macros/latex-dev/base/README.md
@@ -1,7 +1,7 @@
The LaTeX kernel
================
-Release 2023-05-01 pre-release 0
+Release 2023-06-01 pre-release 1
Overview
--------
diff --git a/macros/latex-dev/base/alltt.pdf b/macros/latex-dev/base/alltt.pdf
index 35b709a563..e8d8da01e4 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 3a048a4bfc..d574da1576 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 0ae9b55c03..468b66433b 100644
--- a/macros/latex-dev/base/changes.txt
+++ b/macros/latex-dev/base/changes.txt
@@ -8,7 +8,82 @@ are not part of the distribution.
================================================================================
All changes above are only part of the development branch for the next release.
-================================================================================
+================================================================================
+
+
+2022-11-24 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltdefns.dtx (subsubsection{Copying robust commands}):
+ Added \NewEnvironmentCopy, \RenewEnvironmentCopy, and \DeclareEnvironmentCopy (gh/963)
+ Also added \ShowEnvironment.
+
+2022-11-16 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltclass.dtx:
+ Introduce key 'nowarn' on filecontents (gh/958)
+ Do not show "current dir" in message (gh/917)
+
+2022-11-14 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * latexrelease.dtx (subsection{Ignoring \texttt{\string_new} errors when rolling back}):
+ Silence \cs{NewMarkClass} in rollback (gh/955)
+
+2022-11-13 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * doc.dtx:
+ Redefinitions of \verb removed as no longer needed (gh/953)
+
+ Redefinitions of \@verbatim changed to match the kernel
+ definition (gh/953)
+
+2022-11-08 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltshipout.dtx:
+ Add a shipout hook to be executed just before we
+ actually do the shipout (gh/920)
+
+2022-11-07 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltvers.dtx (section{Version Identification}):
+ Store release data in \LaTeXReleaseInfo for reuse at the end of
+ the .log file (gh/944)
+
+ * ltmiscen.dtx (subsection{Environments}): Add to a hook in
+ \end{document} to (re)display the LaTeX release information (gh/944)
+
+2022-11-03 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * doc.dtx: correctly handle \<space> and allow it to be excluded
+ from the index (gh/943)
+
+================================================================================
+All changes above are only part of the development branch for the next release.
+================================================================================
+
+#########################
+# 2022-11-01 PL1 Release
+#########################
+
+2022-11-28 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltspace.dtx (subsection{Horizontal space (and breaks)}):
+ We use a private register instead of a group with \hspace in case it
+ starts the paragraph.
+ Otherwise \everypar and friends will be executed inside a group (gh/967)
+
+2022-11-28 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltxdoc.dtx:
+ Revert using \detokenize in \cs (gh/962)
+ Eventually we will need to sync with the code in l3doc but for now
+ we stay with the simpler definition from doc.sty.
+
+
+2022-11-30 Joseph Wright <Joseph.Wright@latex-project.org>
+
+ * ltfinal.dtx:
+ Set \oe and \OE equal in case changing to allow detection
+ by babel
#########################
# 2022-11-01 Release
diff --git a/macros/latex-dev/base/classes.pdf b/macros/latex-dev/base/classes.pdf
index 0f3e7a5cce..30f8f4f5c0 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.pdf b/macros/latex-dev/base/clsguide.pdf
index f164e9b482..709334dd02 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/cmfonts.pdf b/macros/latex-dev/base/cmfonts.pdf
index 9293df614a..255f6af9ad 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 ad43e0b7f1..eb8b6a1618 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 5da305cde9..5d573b35df 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 d137038d63..a2c95694ae 100644
--- a/macros/latex-dev/base/doc.dtx
+++ b/macros/latex-dev/base/doc.dtx
@@ -45,7 +45,7 @@
%<+package>
%<+package>\ProvidesPackage{doc}
%<+shortvrb>\ProvidesPackage{shortvrb}
-%<+package|shortvrb> [2022/07/03 v3.0k
+%<+package|shortvrb> [2022/11/13 v3.0m
%<+package|shortvrb> Standard LaTeX documentation package V3 (FMi)]
%\catcode`\<=12
%
@@ -82,6 +82,8 @@
% \changes{v1.9a}{1993/12/02}{Upgrade for LaTeX2e}
% \changes{v1.9d}{1993/12/20}{Protected changes entry.}
% \changes{v1.0p}{1994/05/21}{Use new error commands}
+% \changes{v3.0m}{2022/11/13}{Redefinitions of \cs{verb} removed as
+% no longer needed (gh/953)}
%
%
% \hyphenation{make-index}
@@ -1208,7 +1210,7 @@
% not to exceed this limit when describing the change. The actual
% entry consists of the \meta{version}, the |\actualchar|, the current
% macro name, a colon, the |\levelchar|, and, finally, the \meta{text}.
-% The result is a glossaryentry for the \meta{version}, with the name of
+% The result is a glossary entry for the \meta{version}, with the name of
% the current macro as subitem. Outside the |macro| environment, the
% text |\generalname| is used instead of the macro name. When
% referring to macros in change descriptions it is conventional to use
@@ -1216,6 +1218,13 @@
% and using up valuable characters in the entry with old \prg{makeindex}
% versions.
%
+% Note that in the history listing, the entry is shown with the page number
+% that corresponds to its place in the source, e.g., general changes put at the
+% very beginning of the file will show up with page number ``1'', change entries
+% placed elsewhere might have different numbers (not necessarily always
+% very useful unless you are careful).
+%
+%
% \changes{v1.7a}{1992/02/26}{Description of \cs{RecordChanges} etc.
% added
% to interface section.} \DescribeInterfaceMacro\RecordChanges To cause the
@@ -1824,8 +1833,8 @@
% July 1989.
% \bibitem{art:docstrip} \textsc{Frank Mittelbach, Denys Duchier and
% Johannes Braams}.
-% \newblock \texttt{docstrip.dtx} (to appear).
-% \newblock The file is part of the DOC package.
+% \newblock \texttt{docstrip.dtx}.
+% \newblock The file is part of core \LaTeX{}.
% \bibitem{book:Raspe} \textsc{R. E. Raspe} (*1737, \dag 1797).
% \newblock Baron Münchhausens narrative of his marvelous
% travels and campaigns in Russia.
@@ -2686,12 +2695,16 @@
% first lines are copied literally from \texttt{latex.tex}.
% \changes{v1.7i}{1992/07/12}{Added \cs{@@par} to clear possible
% \cs{parshape}.}
+% \changes{v3.0m}{2022/11/13}{Redefinitions of \cs{@verbatim} changed
+% to match the kernel definition (gh/953)}
% \begin{macrocode}
-\def\@verbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
- \leftskip\@totalleftmargin\rightskip\z@
- \parindent\z@\parfillskip\@flushglue\parskip\z@
- \@@par
- \@tempswafalse
+\def\@verbatim{\trivlist \item\relax
+ \if@minipage\else\vskip\parskip\fi
+ \leftskip\@totalleftmargin\rightskip\z@
+ \parindent\z@\parfillskip\@flushglue\parskip\z@
+ \language\l@nohyphenation
+ \@@par
+ \@tempswafalse
% \end{macrocode}
% |\@verbatim| sets |^^M|, the end of line character, to
% be equal to |\par|. This control sequence is redefined
@@ -2699,8 +2712,13 @@
% \changes{v1.7c}{1992/03/24}{Added \cs{interlinepenalty} to
% \cs{par} from verbatim.sty}
% \begin{macrocode}
- \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par
- \penalty\interlinepenalty
+ \def\par{%
+ \if@tempswa
+ \leavevmode \null \@@par\penalty\interlinepenalty
+ \else
+ \@tempswatrue
+ \ifhmode\@@par\penalty\interlinepenalty\fi
+ \fi
% \end{macrocode}
% We add a control sequence |\check@percent| to the definition
% of |\par| whose task it is to check for a percent character.
@@ -2713,9 +2731,10 @@
% \changes{v1.8b}{1993/09/21}{Changed to conform to new LaTeX verbatim,
% which handles more ligatures.}
% \begin{macrocode}
- \obeylines
- \let\do\do@noligs \verbatim@nolig@list
- \let\do\@makeother \dospecials}
+ \let\do\@makeother \dospecials
+ \obeylines \verbatim@font \@noligs
+ \everypar \expandafter{\the\everypar \unpenalty}%
+}
% \end{macrocode}
% \end{macro}
%
@@ -2744,83 +2763,12 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{imacro}{\verb}
-% \changes{v1.7a}{1992/02/27}{Now warns about newlines (from
-% newdoc with `@noligs added).}
-% \changes{v1.8b}{1993/09/21}{Changed to conform to new LaTeX \cs{verb}}
-% We re-define |\verb| to check for newlines in its argument since a
-% missing delimiter is difficult to detect in \DOC{} source.
-% The code is the same as in \texttt{latex.tex} of September 19, 1993.
-% Perhaps there should be a font-changing
-% hook rather than just using |\ttfamily|, but if so it probably should be
-% different from |\MacroFont| since that normally includes |\small|
-% and would look wrong inline.
-% \changes{v1.7a}{1992/02/28}{Added math mode check (from verbatim.sty)}
-% \begin{macrocode}
-\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
- \bgroup \let\do\do@noligs \verbatim@nolig@list
- \ttfamily \verb@eol@error \let\do\@makeother \dospecials
- \@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
-% \end{macrocode}
-% \end{imacro}
-%
-% \begin{macro}{\verb@balance@group}
-% \begin{macro}{\verb@egroup}
-% \begin{macro}{\verb@eol@error}
-% \changes{v1.8b}{1993/09/21}{Renamed \cs{verb@err} to
-% \cs{verb@eol@error}, as in new LaTeX verbatim.}
-% \begin{macrocode}
-\let\verb@balance@group\@empty
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\verb@egroup{\global\let\verb@balance@group\@empty\egroup}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\begingroup
- \obeylines%
- \gdef\verb@eol@error{\obeylines%
- \def^^M{\verb@egroup\@latex@error{%
- \noexpand\verb command ended by end of line}\@ehc}}%
-\endgroup
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@sverb}
-% \changes{v1.7a}{1992/02/27}{Added for \cs{verb} change.}
-% \changes{v1.7a}{1992/02/28}{Now same as in verbatim.sty.}
-% \changes{v1.8b}{1993/09/21}{Changed to conform to new LaTeX verbatim,
-% which has better error trapping.}
-% See \cite{art:verbatim} for commentary.
-% \changes{v2.1j}{2019/11/03}{Use the kernel definition, no change needed (gh/205)}
-% \begin{macrocode}
-%\def\@sverb#1{%
-% \catcode`#1\active \lccode`\~`#1%
-% \gdef\verb@balance@group{\verb@egroup
-% \@latex@error{Illegal use of \noexpand\verb command}\@ehc}%
-% \aftergroup\verb@balance@group
-% \lowercase{\let~\verb@egroup}}
-% \end{macrocode}
-% \end{macro}
-%
%
-% \begin{macro}{\verbatim@nolig@list}
-% \begin{macro}{\do@noligs}
-% These macros replace the old |\@noligs| mechanism by an
-% extensible version to allow more ligatures to be added.
-% \begin{macrocode}
-\def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
-\def\do@noligs#1{%
- \catcode`#1\active
- \begingroup
- \lccode`\~=`#1\relax
- \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% In the early versions of the package it also redefined \cs{verb}
+% because that didn't include the useful test for \enquote{newline} in
+% the verbatim text. This is nowadays part of \LaTeX{} so we do not
+% redefine it any longer (the original code is still kept in the file
+% after \cs{endinput} to keep the long history intact).
%
% \begin{tcounter}{\macro@cnt}
% \label{page:macro} The \env{macro} environment is implemented as
@@ -3147,9 +3095,6 @@
%
% \begin{macro}{\short@macro}
%
-% \fmi{this needs cleaning up too, the results in the index are
-% currently wrong for cases like `\cs{ }' and the like.}
-%
% \changes{v1.5c}{1989/04/27}{Corrected bad bug by putting the
% scan@allowedfalse macro before printing
% the argument.}
@@ -3164,17 +3109,14 @@
% done by the |\ifnot@excluded| macro which assumes that the
% macro name is saved in |\macro@namepart|. The character
% mustn't be stored with a special category code or exclusion from
-% the index won't work, so we employ the case-changing trick used
-% elsewhere. Since the argument might be an active character,
-% |\string| is used to normalize it.
+% the index won't work, so we we use \cs{string} to normalize it
+% the same way it is done in \cs{DoNotIndex}, i.e. everything ends up catcode 12
+% except for the space character.
% \changes{v2.0e}{1998/12/28}{Correctly use the case-changing trick.}
+% \changes{v3.0l}{2022/11/03}{No longer using the case-changing trick.}
% \begin{macrocode}
-\begingroup
-\catcode`\&=12
-\gdef\short@macro#1{\begingroup
- \uccode`\&=\expandafter`\string#1%
- \uppercase{\def\x{\def\macro@namepart{&}}}%
- \expandafter\endgroup\x
+\def\short@macro#1{%
+ \edef\macro@namepart{\string#1}%
% \end{macrocode}
% Any indexing is then delegated to
% |\maybe@index@short@macro|. Depending on the actual character seen,
@@ -3197,7 +3139,6 @@
% cross-referencing is globally disabled.
% \begin{macrocode}
\scan@allowedtrue }
-\endgroup
% \end{macrocode}
% \end{macro}
%
@@ -3441,7 +3382,6 @@
\def \ShowIndexingState {
\__doc_trace:x{Show~ doc~ indexing~ state:}
\seq_show:N \l__doc_donotindex_seq
-% \tl_analysis_show:N\l__doc_donotindex_seq
\prop_show:N \g__doc_idxtype_prop
}
% \end{macrocode}
@@ -3637,10 +3577,12 @@
% \begin{macro}{\maybe@index@short@macro}
% \begin{macro}{\__doc_maybe_index_short:o}
% Single character macros are handled similarly but there the
-% indexing is done by \cs{SpecialShortIndex}.
+% indexing is done by \cs{SpecialShortIndex} and it is simpler
+% because we know that the argument contains a string token not letters.
+% \changes{v3.0l}{2022/11/03}{We know the argument expands to a single string token}
% \begin{macrocode}
\cs_new:Npn \__doc_maybe_index_short:o #1 {
- \exp_args:Nf \__doc_maybe_index_aux:nN { \tl_to_str:o {#1} }
+ \exp_args:No \__doc_maybe_index_aux:nN #1
\SpecialShortIndex
}
\cs_set_eq:NN \maybe@index@short@macro \__doc_maybe_index_short:o
@@ -3715,7 +3657,12 @@
{\cs_to_str:N \^^M } {\def\reserved@a{ \string \space \actualchar }
\def\reserved@b { \space }
\let\reserved@c \@empty }
- { } {\def\reserved@a{ \string \space \actualchar }
+% \end{macrocode}
+% With the fix for
+% \verb*=\ = we now have to look for a real space to handle that command sequence.
+% \changes{v3.0l}{2022/11/03}{look for the right token}
+% \begin{macrocode}
+ { ~ } {\def\reserved@a{ \string \space \actualchar }
\def\reserved@b { \space }
\let\reserved@c \@empty }
{\c_left_brace_str} { \def\reserved@a{ \bgroup \actualchar }
@@ -6256,6 +6203,89 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+% \section{Code no longer used}
+%
+% \begin{imacro}{\verb}
+% \changes{v1.7a}{1992/02/27}{Now warns about newlines (from
+% newdoc with `@noligs added).}
+% \changes{v1.8b}{1993/09/21}{Changed to conform to new LaTeX \cs{verb}}
+% We re-define |\verb| to check for newlines in its argument since a
+% missing delimiter is difficult to detect in \DOC{} source.
+% The code is the same as in \texttt{latex.tex} of September 19, 1993.
+% Perhaps there should be a font-changing
+% hook rather than just using |\ttfamily|, but if so it probably should be
+% different from |\MacroFont| since that normally includes |\small|
+% and would look wrong inline.
+% \changes{v1.7a}{1992/02/28}{Added math mode check (from verbatim.sty)}
+% \begin{macrocode}
+%\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
+% \bgroup \let\do\do@noligs \verbatim@nolig@list
+% \ttfamily \verb@eol@error \let\do\@makeother \dospecials
+% \@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
+% \end{macrocode}
+% \end{imacro}
+%
+% \begin{macro}{\verb@balance@group}
+% \begin{macro}{\verb@egroup}
+% \begin{macro}{\verb@eol@error}
+% \changes{v1.8b}{1993/09/21}{Renamed \cs{verb@err} to
+% \cs{verb@eol@error}, as in new LaTeX verbatim.}
+% \begin{macrocode}
+%\let\verb@balance@group\@empty
+% \end{macrocode}
+%
+% \begin{macrocode}
+%\def\verb@egroup{\global\let\verb@balance@group\@empty\egroup}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%\begingroup
+% \obeylines%
+% \gdef\verb@eol@error{\obeylines%
+% \def^^M{\verb@egroup\@latex@error{%
+% \noexpand\verb command ended by end of line}\@ehc}}%
+%\endgroup
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@sverb}
+% \changes{v1.7a}{1992/02/27}{Added for \cs{verb} change.}
+% \changes{v1.7a}{1992/02/28}{Now same as in verbatim.sty.}
+% \changes{v1.8b}{1993/09/21}{Changed to conform to new LaTeX verbatim,
+% which has better error trapping.}
+% See \cite{art:verbatim} for commentary.
+% \changes{v2.1j}{2019/11/03}{Use the kernel definition, no change needed (gh/205)}
+% \begin{macrocode}
+%\def\@sverb#1{%
+% \catcode`#1\active \lccode`\~`#1%
+% \gdef\verb@balance@group{\verb@egroup
+% \@latex@error{Illegal use of \noexpand\verb command}\@ehc}%
+% \aftergroup\verb@balance@group
+% \lowercase{\let~\verb@egroup}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\verbatim@nolig@list}
+% \begin{macro}{\do@noligs}
+% These macros replace the old |\@noligs| mechanism by an
+% extensible version to allow more ligatures to be added.
+% \begin{macrocode}
+%\def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
+%\def\do@noligs#1{%
+% \catcode`#1\active
+% \begingroup
+% \lccode`\~`#1\relax
+% \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
^^A Needed for emacs
^^A
diff --git a/macros/latex-dev/base/doc.pdf b/macros/latex-dev/base/doc.pdf
index ba56cfe561..cce65ca48d 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 f3ef8b3fc3..661da9efd5 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 255563550b..07fc3f5113 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 38a778e1b6..a5f1195be7 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 90892c6caa..0f14974f3a 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 d0644e8279..b2e74d07e7 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 bc70a0cf14..3f3b067639 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 35f52dca6e..1702b8105b 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 90f5aac0cb..dce32355a2 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 f18b52c99e..e0895befef 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.dtx b/macros/latex-dev/base/latexrelease.dtx
index 294007553d..132a2548e4 100644
--- a/macros/latex-dev/base/latexrelease.dtx
+++ b/macros/latex-dev/base/latexrelease.dtx
@@ -40,7 +40,7 @@
%<*latexrelease>
% \fi
% \ProvidesFile{latexrelease.dtx}
- [2022/02/28 v1.0o LaTeX release emulation and tests
+ [2022/11/14 v1.0p LaTeX release emulation and tests
(including releases up to \latexreleaseversion)]
% \iffalse
%</latexrelease>
@@ -746,8 +746,12 @@ of this package available from CTAN}
%
% Finally, redirect the error thrown by \cs{NewHook} to nowhere so it
% can be safely reused (the hook isn't redeclared if it already exists).
+% The same happens for \cs{NewMarkClass}.
+% \changes{v1.0p}{2022/11/14}
+% {Silence \cs{NewMarkClass} in rollback (gh/955)}
% \begin{macrocode}
\msg_redirect_name:nnn { hooks } { exists } { none }
+\msg_redirect_name:nnn { mark } { class-already-defined }{ none }
% \end{macrocode}
%
% Now a one-off for |ltcmd.dtx|: we need to make \cs{NewDocumentCommand}
@@ -799,9 +803,12 @@ of this package available from CTAN}
\tl_clear:N \l_@@_restores_tl
% \end{macrocode}
%
-% And restore the hook error message.
+% And restore the silenced error messages.
+% \changes{v1.0p}{2022/11/14}
+% {Unsilence \cs{NewMarkClass} error message after rollback (gh/955)}
% \begin{macrocode}
\msg_redirect_name:nnn { hooks } { exists } { }
+\msg_redirect_name:nnn { mark } { class-already-defined } { }
% \end{macrocode}
%
% \begin{macrocode}
diff --git a/macros/latex-dev/base/latexrelease.pdf b/macros/latex-dev/base/latexrelease.pdf
index 35b2875861..a0111a19a8 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 0abf36f12f..b9d8779f70 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 394252b206..0c85e7c769 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 08b5b52d86..46adfcc798 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 bc13c55acb..c60439b2de 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 1240d11e78..ecb66844e2 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/ltclass.dtx b/macros/latex-dev/base/ltclass.dtx
index a525b6f573..63c42f6cd0 100644
--- a/macros/latex-dev/base/ltclass.dtx
+++ b/macros/latex-dev/base/ltclass.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltclass.dtx}
- [2022/10/22 v1.5e LaTeX Kernel (Class & Package Interface)]
+ [2022/11/16 v1.5f LaTeX Kernel (Class & Package Interface)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltclass.dtx}
@@ -2813,6 +2813,7 @@
% unknown option.
% \changes{v1.3h}{2020/01/28}{Allow spaces in option string and display
% only unknown options not the whole option list (gh/256)}
+% \changes{v1.5f}{2022/11/16}{Introduce key 'nowarn' on filecontents (gh/958)}
% \begin{macrocode}
\def\filec@ntents@opt[#1]{%
\edef\@fortmp{\zap@space#1 \@empty}%
@@ -2821,7 +2822,7 @@
\csname filec@ntents@\reserved@a\endcsname
\else
\@latex@error{Unknown filecontents option \reserved@a}%
- {Valid options are force (or overwrite), nosearch, noheader}%
+ {Valid options are force (or overwrite), nosearch, noheader, nowarn}%
\fi}%
\filec@ntents
}
@@ -2849,6 +2850,18 @@
\let\filec@ntents@checkdir\@empty
\def\filec@ntents@where{exists on the system}
% \end{macrocode}
+% Option \texttt{nowarn} does not show any warning on the terminal
+% but still writes it to the \texttt{.log}.
+% \changes{v1.5f}{2022/11/16}{Introduce key 'nowarn' on filecontents (gh/958)}
+% \begin{macrocode}
+\def\filec@ntents@nowarn{%
+ \let\filec@ntents@warning\@latex@note@no@line
+}
+% \end{macrocode}
+% By default we show terminal warnings.
+% \begin{macrocode}
+\let\filec@ntents@warning\@latex@warning@no@line
+% \end{macrocode}
%
% \begin{macrocode}
\begingroup%
@@ -2925,6 +2938,8 @@
% on the terminal.
% \changes{v1.3g}{2020/01/27}{Fix typo in error message}
% \changes{v1.3j}{2020/02/20}{Fix missing quotes around file name (gh/284)}
+% \changes{v1.5f}{2022/11/16}{Introduce key 'nowarn' on filecontents (gh/958)}
+% \changes{v1.5f}{2022/11/16}{Do not show "current dir" in message (gh/917)}
% \begin{macrocode}
\ch@ck7\reserved@c\write\relax%
\if@filesw% % Foul ... trying to overwrite \jobname!
@@ -2932,8 +2947,8 @@
write to the file you are reading from!\MessageBreak%
Data is written to screen instead.}%
\else%
- \@latex@warning@no@line%
- {Writing or overwriting file `\@currdir\@curr@file'}%
+ \filec@ntents@warning%
+ {Writing or overwriting file `\@curr@file'}%
\immediate\openout\reserved@c\q@curr@file\relax%
\fi%
\fi%
diff --git a/macros/latex-dev/base/ltcmd.dtx b/macros/latex-dev/base/ltcmd.dtx
index 14d6756f5c..30a1908c47 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.1a}
-\def\ltcmddate{2022-08-16}
+\def\ltcmdversion{v1.1b}
+\def\ltcmddate{2022-11-29}
% \end{macrocode}
%
%<*driver>
@@ -2401,21 +2401,28 @@
% \@@_show_command:NnNNwN,
% \@@_show_expandable:N,
% \@@_show_expandable:NnNNNNnN,
-% \@@_show_command_aux:nNNn,
+% \@@_show_command_aux:NnNNn,
% \@@_show_environment:N,
+% \@@_show:x,
% }
% These commands just expand the command once to reveal its innards,
% then pass the type of command, the control sequence, the signature,
-% and the code macro to \cs{@@_show_command_aux:nNNn}.
+% and the code macro to \cs{@@_show_command_aux:NnNNn}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_show_command:N #1
{ \exp_after:wN \@@_show_command:NnNNwN #1 \q_@@ #1 }
\cs_new_protected:Npn \@@_show_command:NnNNwN #1 #2 #3 #4 #5 \q_@@ #6
- { \@@_show_command_aux:nNNn { document~command } #6 #4 {#2} }
+ {
+ \@@_show_command_aux:NnNNn \tl_show:x
+ { document~command } #6 #4 {#2}
+ }
\cs_new_protected:Npn \@@_show_expandable:N #1
{ \exp_after:wN \@@_show_expandable:NnNNNNnN #1 #1 }
\cs_new_protected:Npn \@@_show_expandable:NnNNNNnN #1 #2 #3 #4 #5 #6 #7 #8
- { \@@_show_command_aux:nNNn { expandable~document~command } #8 #5 {#2} }
+ {
+ \@@_show_command_aux:NnNNn \tl_show:x
+ { expandable~document~command } #8 #5 {#2}
+ }
% \end{macrocode}
%
% Now just print everything in the required format. The auxiliary
@@ -2423,27 +2430,31 @@
% \cs{l_@@_tmpa_tl}, so we ust use that here:
% \changes{v1.0j}{2021/13/31}
% {Make \cs{ShowCommand} stop for interaction}
+% \changes{v1.1b}{2022/11/30}
+% {Don't stop for the \cs{begin} part of an environment}
% \begin{macrocode}
-\cs_new_protected:Npn \@@_show_command_aux:nNNn #1 #2 #3 #4
+\cs_new_protected:Npn \@@_show_command_aux:NnNNn #1 #2 #3 #4 #5
{
- \@@_split_signature:n {#4}
- \tl_show:x
+ \@@_split_signature:n {#5}
+ #1
{
- \token_to_str:N #2 = #1: \iow_newline:
+ \token_to_str:N #3 = #2: \iow_newline:
\tl_use:N \l_@@_tmpa_tl
- -> \cs_replacement_spec:N #3
+ -> \cs_replacement_spec:N #4
}
}
% \end{macrocode}
%
% We can reuse most of the above to show an environment, except that
% we need to ensure that the proper \cs[no-index]{environment~\ldots}
-% are passed to \cs{@@_show_command_aux:nNNn}. Additionally, when
+% are passed to \cs{@@_show_command_aux:NnNNn}. Additionally, when
% |\ShowCommand\foo| is used (if |foo| is an environment), we show
% |\endfoo| as well, and when |\ShowCommand\endfoo| is used, change
% that to |\ShowCommand\foo| and do the same.
% \changes{v1.0j}{2021/13/31}
% {Make \cs{ShowCommand} stop for interaction}
+% \changes{v1.1b}{2022/11/30}
+% {Don't stop for the \cs{begin} part of an environment}
% \begin{macrocode}
\cs_new_protected:Npn \@@_show_environment:N #1
{
@@ -2459,12 +2470,14 @@
{
\use:x
{
- \@@_show_command_aux:nNNn { document~environment }
+ \@@_show_command_aux:NnNNn \@@_show:x { document~environment }
{ \exp_not:N \begin {#3} }
\exp_not:c { environment~ #3 ~ code }
{#2}
}
}
+\cs_new_protected:Npn \@@_show:x #1
+ { \iow_term:x { > ~ #1 . \iow_newline: } }
\cs_new_protected:Npn \@@_show_environment_end:N #1
{
\exp_args:NNx \@@_check_end:Nn \l_@@_tmpa_tl { \cs_to_str:N #1 }
@@ -2473,10 +2486,15 @@
% \end{macrocode}
%
% And, of course, add \cs{__kernel_cmd_if_xparse:NTF} and
-% \cs{@@_show:N} to \cs{@showcommandlisthook}:
+% \cs{@@_show:N} to \cs{@showcommandlisthook} and to
+% \cs{@showenvironmentlisthook} (\cs{@@_show:N} takes care of the
+% environment case as well, so both entries are identical):
+% \changes{v1.1b}{2022-11-29}{Add \cs{@showenvironmentlisthook}}
% \begin{macrocode}
\tl_gput_right:Nn \@showcommandlisthook
{ { \__kernel_cmd_if_xparse:NTF \@@_show:N } }
+\tl_gput_right:Nn \@showenvironmentlisthook
+ { { \__kernel_cmd_if_xparse:NTF \@@_show:N } }
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex-dev/base/ltcmdhooks-code.pdf b/macros/latex-dev/base/ltcmdhooks-code.pdf
index 654c4f6a2d..b324da26c9 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 a036d2e748..42222eb416 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/ltdefns.dtx b/macros/latex-dev/base/ltdefns.dtx
index bd820e7cf2..c604bd9620 100644
--- a/macros/latex-dev/base/ltdefns.dtx
+++ b/macros/latex-dev/base/ltdefns.dtx
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltdefns.dtx}
- [2022/05/22 v1.5r LaTeX Kernel (definition commands)]
+ [2022/11/24 v1.5s LaTeX Kernel (definition commands)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltdefns.dtx}
@@ -784,7 +784,9 @@
% not take arguments. (but may contain |\par|s)
%
% Make sure that an attempt to define a `graf' or `group' environment
-% fails.
+% fails by temporarily letting the undefined \verb=\...= (begin code) to
+% the definition of \verb=\end...= and as a result we get an error if that
+% has a definition.
% \begin{macrocode}
\long\def\@newenv#1#2#3#4{%
\@ifundefined{#1}%
@@ -1641,6 +1643,7 @@
% \end{macrocode}
%
% \begin{macro}{\declare@commandcopy}
+% \begin{macro}{\declare@commandcopy@do}
% Start by checking if the command is already defined. The proper action is
% taken by each specific command above. If all's good, then
% \cs{robust@command@act} is called with the proper arguments as described
@@ -1650,11 +1653,14 @@
\long\def\declare@commandcopy#1#2#3#4{%
\edef\reserved@a{\@expl@cs@to@str@@N#3}%
\@ifundefined\reserved@a{#1}{#2}%
- {\robust@command@act
- \@declarecommandcopylisthook#4%
- \declare@commandcopy@let{#3#4}}}
+ {\declare@commandcopy@do{#3}{#4}}}
+\long\def\declare@commandcopy@do#1#2{%
+ \robust@command@act
+ \@declarecommandcopylisthook#2%
+ \declare@commandcopy@let{#1#2}}
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@declarecommandcopylisthook}
% The initial definition of \cs{@declarecommandcopylisthook} contains the
@@ -1694,6 +1700,64 @@
% \end{macro}
%
%
+% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2023-06-01}{\DeclareEnvironmentCopy}
+%<latexrelease> {Add \NewEnvironmentCopy, \RenewEnvironmentCopy, and \DeclareEnvironmentCopy}%
+%<*2ekernel|latexrelease>
+% \end{macrocode}
+%
+% \begin{macro}{\NewEnvironmentCopy}
+% \begin{macro}{\RenewEnvironmentCopy}
+% \begin{macro}{\DeclareEnvironmentCopy}
+% If \verb=\#1= or \verb=\end#1= already exist one gets an error
+% message talking about the problematical command (not the
+% environment).
+% The remainder of the \LaTeX{} run is probably badly
+% broken and it is unlikely that continuing it gives
+% reasonable results.
+% \changes{v1.5s}{2022/11/24}{Add \cs{NewEnvironmentCopy},
+% \cs{RenewEnvironmentCopy}, and \cs{DeclareEnvironmentCopy} (gh/963)}
+% \begin{macrocode}
+\def\NewEnvironmentCopy{%
+ \declare@environmentcopy
+ {\@firstofone}%
+ {\@firstoftwo\@notdefinable}}
+\def\RenewEnvironmentCopy{%
+ \declare@environmentcopy
+ {\@latex@error{Environment \reserved@a\space undefined}\@ehc
+ \@firstofone}%
+ {\@firstofone}}
+\def\DeclareEnvironmentCopy{%
+ \declare@environmentcopy
+ {\@firstofone}%
+ {\@firstofone}}
+\long\def\declare@environmentcopy#1#2#3#4{%
+ \edef\reserved@a{\@ifundefined{#3}{end#3}{#3}}%
+ \@ifundefined\reserved@a
+ {\def\reserved@a{#3}#1}%
+ {\def\reserved@a{#3}#2}%
+ {\ExpandArgs{cc}\declare@commandcopy@do{#3}{#4}%
+ \ExpandArgs{cc}\declare@commandcopy@do{end#3}{end#4}}}
+% \end{macrocode}
+%
+% Now the rollback code.
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000-00-00}{\DeclareEnvironmentCopy}
+%<latexrelease> {Undefine \NewEnvironmentCopy, \RenewEnvironmentCopy, and \DeclareEnvironmentCopy}%
+%<latexrelease>\let\NewEnvironmentCopy\@undefined
+%<latexrelease>\let\RenewEnvironmentCopy\@undefined
+%<latexrelease>\let\DeclareEnvironmentCopy\@undefined
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
% \subsubsection{Showing robust commands}
%
% \begin{macro}{\ShowCommand}
@@ -1747,7 +1811,6 @@
% \end{macrocode}
% \end{macro}
%
-%
% \begin{macrocode}
%</2ekernel>
%<latexrelease>\IncludeInRelease{2020-10-01}{\@if@DeclareRobustCommand}
@@ -1836,6 +1899,7 @@
%
% \begin{macro}{\@show@DeclareRobustCommand}
% \begin{macro}{\show@kernel@robust@command}
+% \begin{macro}{\@show@macro}
% Showing the command is pretty simple. This command prints the top-level
% expansion as \TeX's \cs{show} would, but with |robust macro:| rather than
% just |macro:|, then a blank line and then \cs{show} the inner command.
@@ -1863,12 +1927,14 @@
\robust@command@chk@safe#1%
{\@if@newcommand#1%
{\@show@newcommand}%
- {\show}}%
- {\show}%
+ {\@show@macro}}%
+ {\@show@macro}%
#1}
+\let\@show@macro\show
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \end{macro}
%
@@ -1931,7 +1997,7 @@
\typeout{->\@expl@cs@replacement@spec@@N#1.^^J}%
\expandafter\@show@newcommand@aux
\csname\@backslashchar\@expl@cs@to@str@@N#1\expandafter\endcsname
- \expandafter{#1}}
+ \expandafter{#1}\@show@tokens}
% \end{macrocode}
%
% For a macro defined with, say, |\newcommand\foo[1][opt]{bar}|, it will
@@ -1946,20 +2012,28 @@
% \end{verbatim}
% If the command was defined with \cs{DeclareRobustCommand}, then another pair
% of lines show the top-level expansion \verb*|\protect \foo |.
-%
-% The extra gymnastics with \cs{showtokens} ensures that \cs{showtokens}
-% itself, and the internals of this macro aren't showed in the context lines.
% \begin{macrocode}
-\long\def\@show@newcommand@aux#1#2{%
+\long\def\@show@newcommand@aux#1#2#3{%
\typeout{> \string#1=\@expl@cs@prefix@spec@@N#1macro:}%
- \edef\reserved@a{%
- default \string##1=\expandafter\detokenize\@gobblethree#2.^^J%
- \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1}%
- \showtokens\expandafter\expandafter\expandafter{\expandafter\reserved@a}}
+ #3{default \string##1=\expandafter\detokenize\@gobblethree#2.^^J%
+ \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1}}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@show@tokens}
+% This macro prints the contents of the token list (macro) |#1| using
+% \cs{showtokens}. The \cs{expandafter} gymnastics ensures that
+% \cs{showtokens} itself, and the internals of this macro aren't
+% showed in the context lines.
+% \begin{macrocode}
+\long\def\@show@tokens#1{%
+ \edef\reserved@a{#1}%
+ \showtokens\expandafter
+ \expandafter\expandafter{\expandafter\reserved@a}}
+% \end{macrocode}
+% \end{macro}
+%
% Now the rollback code.
% \begin{macrocode}
%</2ekernel|latexrelease>
@@ -1985,6 +2059,124 @@
% \end{macro}
%
%
+% \subsubsection{Showing environments}
+%
+% \begin{macro}{\ShowEnvironment}
+% \changes{v1.5s}{2022/11/24}{Added \cs{ShowEnvironment}}
+%
+% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2023-06-01}{\ShowEnvironment}
+%<latexrelease> {Add \ShowEnvironment}%
+%<*2ekernel|latexrelease>
+% \end{macrocode}
+%
+% \cs{ShowEnvironment} is quite similar to \cs{ShowCommand}. We will
+% pass the environment \meta{env} around as the macro
+% \cs[no-index]{env}, because \cs{robust@command@act} expects a single
+% token.
+% \begin{macrocode}
+\def\ShowEnvironment#1{%
+ \expandafter\@show@environment\csname #1\endcsname}
+\long\def\@show@environment#1{%
+ \robust@command@act
+ \@showenvironmentlisthook#1%
+ \@show@normalenv#1}
+% \end{macrocode}
+%
+% \begin{macro}{\@showenvironmentlisthook}
+% This is similar to \cs{@showcommandlisthook}, but uses the dedicated
+% versions for environments.
+% \begin{macrocode}
+\def\@showenvironmentlisthook{%
+ {\@if@DeclareRobustCommand \@show@DeclareRobustCommand@env}%
+ {\@if@newcommand \@show@newcommand@env}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@show@newcommand@env}
+% \begin{macro}{\@show@DeclareRobustCommand@env}
+% These are similar to the command versions below, except they say
+% \enquote{environment} and call \cs{@show@environment@end} to print
+% the \cs{end} part.
+% \begin{macrocode}
+\long\def\@show@newcommand@env#1{%
+ \@show@environment@begin#1%
+ \expandafter\@show@newcommand@aux
+ \csname\@backslashchar\@expl@cs@to@str@@N#1\expandafter\endcsname
+ \expandafter{#1}\@show@typeout
+ \@show@environment@end#1}
+\long\def\@show@DeclareRobustCommand@env#1{%
+ \@show@environment@begin#1%
+ \begingroup
+ \let\@show@tokens\@show@typeout
+ \let\@show@macro\@show@nonstop
+ \expandafter\show@kernel@robust@command
+ \csname\@expl@cs@to@str@@N#1 \endcsname
+ \endgroup
+ \@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->%
+ \@expl@cs@replacement@spec@@N#1.^^J}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@show@normalenv}
+% \begin{macro}{\@show@environment@end}
+% A \enquote{normal} environment is straightforward.
+% \cs{@show@environment@end} needs to check if the \cs{end} part is
+% defined and show it accordingly, otherwise the output would show
+% gibberish.
+% \begin{macrocode}
+\long\def\@show@normalenv#1{%
+ \@show@environment@begin#1%
+ \@show@environment@end#1}
+\long\def\@show@environment@end#1{%
+ \expandafter\@show@environment@end@aux
+ \csname end\@expl@cs@to@str@@N#1\endcsname#1}
+\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->%
+ \@expl@cs@replacement@spec@@N#1%
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@show@nonstop}
+% \begin{macro}{\@show@typeout}
+% And here some auxiliaries:
+% \begin{description}
+% \item[\cs{@show@nonstop}] same output as \cs{show}, but doesn't
+% stop for interaction;
+% \item[\cs{@show@typeout}] same output as \cs{showtokens}, but
+% doesn't stop for interaction.
+% \end{description}
+% \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.}}
+\def\@show@typeout#1{\typeout{> #1.^^J}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Now the rollback code.
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000-00-00}{\ShowEnvironment}
+%<latexrelease> {Undefine \ShowEnvironment}%
+%<latexrelease>\let\ShowEnvironment\@undefined
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
+%
+%
% \subsection{Internal defining commands}
%
% These commands are used internally to define other \LaTeX{}
diff --git a/macros/latex-dev/base/ltfilehook-code.pdf b/macros/latex-dev/base/ltfilehook-code.pdf
index 24cc0545ec..e031f84227 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 65e8fade02..ddc060fcc0 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/ltfinal.dtx b/macros/latex-dev/base/ltfinal.dtx
index 7f4bef3bcc..a19ffa8305 100644
--- a/macros/latex-dev/base/ltfinal.dtx
+++ b/macros/latex-dev/base/ltfinal.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltfinal.dtx}
- [2022/10/26 v2.2x LaTeX Kernel (Final Settings)]
+ [2022/11/30 v2.2y LaTeX Kernel (Final Settings)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltfinal.dtx}
@@ -1151,9 +1151,7 @@
\cs_set_protected:Npn \reserved@a #1
{
\cs_generate_variant:cn { text_ \str_lowercase:n {#1} case:nn } { V }
- \cs_new_protected:cpx { Make#1case \c_space_tl \c_space_tl \c_space_tl } [##1] ##2
- { \exp_not:N \@@text@case@aux { \str_lowercase:n {#1} } {##1} {##2} }
- \ExpandArgs { cnx } \NewExpandableDocumentCommand
+ \ExpandArgs { cnx } \NewExpandableDocumentCommand
{ Make#1case }
{ O{} +m }
{ \exp_not:c { Make#1case \c_space_tl \c_space_tl \c_space_tl } [####1] {####2} }
@@ -1162,6 +1160,34 @@
\reserved@a { Lower }
\reserved@a { Title }
% \end{macrocode}
+% \changes{v2.2y}{2022/11/30}{Set \cs{oe}/\cs{OE} equal to act as a marker for \pkg{babel}}
+% Currently, \pkg{babel} uses the equivalence of \cs{oe} and \cs{OE} to force casing of
+% some material, most notably in \cs{today}. To enable that to work, we have to set those
+% commands equal even though the current case changing code does not work using this
+% approach.
+% \begin{macrocode}
+\cs_new_protected:cpn { MakeLowercase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
+ {
+ \let \kernel@saved@OE \OE
+ \let \OE \oe
+ \@@text@case@aux { lower } {#1} {#2}
+ \let \OE \kernel@saved@OE
+ }
+\cs_new_protected:cpn { MakeUppercase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
+ {
+ \let \kernel@saved@oe \oe
+ \let \oe \OE
+ \@@text@case@aux { upper } {#1} {#2}
+ \let \oe \kernel@saved@oe
+ }
+\cs_new_protected:cpn { MakeTitlecase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
+ {
+ \let \kernel@saved@oe \oe
+ \let \oe \OE
+ \@@text@case@aux { title } {#1} {#2}
+ \let \oe \kernel@saved@oe
+ }
+% \end{macrocode}
%
% \changes{v2.2u}{2022/06/02}{Add \cs{NoCaseChange}}
% \changes{v2.2u}{2022/06/30}{Add \cs{AddToNoCaseChangeList}}
diff --git a/macros/latex-dev/base/lthooks-code.pdf b/macros/latex-dev/base/lthooks-code.pdf
index 9a8066d7e5..4b4b85023e 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 0fd3ab67ac..17e5d3a514 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/ltluatex.pdf b/macros/latex-dev/base/ltluatex.pdf
index 19a3267767..c99840f04b 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 4e28cba0f7..3204fd93a2 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 9ee6c42916..1203c72f0e 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/ltmiscen.dtx b/macros/latex-dev/base/ltmiscen.dtx
index b7b2bf5e31..69a7ac6963 100644
--- a/macros/latex-dev/base/ltmiscen.dtx
+++ b/macros/latex-dev/base/ltmiscen.dtx
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltmiscen.dtx}
- [2021/06/05 v1.1z LaTeX Kernel (Misc. Environments)]
+ [2022/11/06 v1.2a LaTeX Kernel (Misc. Environments)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltmiscen.dtx}
@@ -270,9 +270,17 @@
% This is one of the few places where we already add data and rules
% to a hook already in the kernel.
% \changes{v1.0w}{1994/11/30}{(DPC) Use \cs{@dofilelist}}
+% \changes{v1.2a}{2022/11/06}{Repeat release info at the end (gh/944)}
% \begin{macrocode}
\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings}
+\AddToHook{enddocument/info}[kernel/release]{%
+ \let\show@release@info\wlog
+ \show@release@info{ ***********}%
+ \the\LaTeXReleaseInfo
+ \show@release@info{ ***********}}
+
+\DeclareHookRule{enddocument/info}{kernel/release}{before}{kernel/filelist}
\DeclareHookRule{enddocument/info}{kernel/filelist}{before}{kernel/warnings}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex-dev/base/ltnews.pdf b/macros/latex-dev/base/ltnews.pdf
index 7074281150..3185ce2fc0 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 8d45f77cda..9a8de244c2 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}{36}
+\providecommand*{\lastissue}{37}
\InputIfFileExists{ltnews-lastissue.cfg}{}{}
diff --git a/macros/latex-dev/base/ltnews01.pdf b/macros/latex-dev/base/ltnews01.pdf
index 8f5c23193e..8bc64afa46 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 332a568c99..6410f6c49a 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 10dcd6dabb..e6faf40788 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 140ae9bfc0..fdea7fa928 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 b533e823d3..f45d499a6a 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 ab0e8e6b0a..8fa7fd39ab 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 b572c2afbb..deb8285b1d 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 cfe3a2e383..2127ebe3a2 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 e0d106d0f6..d731efbd39 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 4c9e88504a..5d2967891b 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 8f61d02d4d..364f3ab434 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 10deb7706e..7cccdcc6a4 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 098589bd93..5aa1175b0c 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 9c3dc54f14..02063e4e90 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 7678526dbc..1ff4a5662e 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 e81dd332d6..04f5796d12 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 a3bf39bcf2..a601da8823 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 e754202b75..89350a011c 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 3288407f59..aa27ba08dc 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 dd66d032cd..402394cc48 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 18b01c53e1..e4ea9cc255 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 fa05f6a59f..5ee6bfc24d 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 fa67d7822e..c2caca4c16 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 a991678ddd..3c5ede15d2 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 52aef54c0c..885993792d 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 09e49e79ae..299a726a8e 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 fa8a5fcf11..cc8f3e4896 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 ac868bf0ed..9366cf0426 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/ltnews29.pdf b/macros/latex-dev/base/ltnews29.pdf
index 80a19569bf..8dbbb56102 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 68d5d8afb1..7a217b657a 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 54e5e2a830..c4a8f385eb 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 17264132fc..2e8fc1b80b 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 d91676a1c0..05ed870d0b 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 9074b39850..5648f3e89e 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 bffff429ce..2bab979d1a 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/ltnews36.pdf b/macros/latex-dev/base/ltnews36.pdf
index bd3fd8be10..575e2b9feb 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/ltnews36.tex b/macros/latex-dev/base/ltnews36.tex
index d6df801db2..b3f66564cb 100644
--- a/macros/latex-dev/base/ltnews36.tex
+++ b/macros/latex-dev/base/ltnews36.tex
@@ -262,10 +262,11 @@ will give the expected result: {\fontfamily{cmr}
\bfseries
\textsc{\textsl{Bold Slanted Small Caps}}; \textsc{\textit{Bold Italic Small Caps}}}.
-Given that the Computer Modern fonts in \texttt{T1} do not have real italic small caps but only
-slanted small caps, the latter is substituted for the former, which is
-why above both work but you see no difference between the two (and in the log you get a
-substitution warning for the \cs{textit}\cs{textsc} shape combination).
+Given that the Computer Modern fonts in \texttt{T1} do not have real
+italic small caps but only slanted small caps, the latter is
+substituted for the former. This is why both work in the above, but
+there is no difference between the two (and you get a substitution
+warning for the \cs{textit}\cs{textsc} shape combination).
%
\githubissue{782}
diff --git a/macros/latex-dev/base/ltnews37.pdf b/macros/latex-dev/base/ltnews37.pdf
new file mode 100644
index 0000000000..a9216f04fd
--- /dev/null
+++ b/macros/latex-dev/base/ltnews37.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews37.tex b/macros/latex-dev/base/ltnews37.tex
new file mode 100644
index 0000000000..4ce8fcccc9
--- /dev/null
+++ b/macros/latex-dev/base/ltnews37.tex
@@ -0,0 +1,378 @@
+% \iffalse meta-comment
+%
+% Copyright 2021-2023
+% 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: ltnews37.tex
+%
+% This is issue 37 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 parameters parameter}
+
+\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{} % 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
+
+
+\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
+
+\let\finalvspace\vspace % for document layout fixes
+
+% Undo ltnews's \verbatim@font with active < and >
+\makeatletter
+\def\verbatim@font{%
+ \normalsize\ttfamily}
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\providecommand\tubcommand[1]{}
+\tubcommand{\input{tubltmac}}
+
+\publicationmonth{June}
+\publicationyear{2023 --- DRAFT version for upcoming release}
+
+\publicationissue{37}
+
+\begin{document}
+
+\tubcommand{\addtolength\textheight{4.2pc}} % only for TUB
+
+\maketitle
+{\hyphenpenalty=10000 \exhyphenpenalty=10000 \spaceskip=3.33pt \hbadness=10000
+\tableofcontents}
+
+\setlength\rightskip{0pt plus 3em}
+
+
+\medskip
+
+
+\section{Introduction}
+
+
+\section{New or improved commands}
+
+
+
+\subsection{Providing copy and show functions for environments}
+
+To copy a command definition we have introduced \cs{NewCommandCopy} in
+2022. This even allows you to copy commands that consist of several internal
+components, such as robust commands or those with a complex signature.
+To do the same with environments, e.g., to define the environment
+\env{myitemize} to be equivalent to \env{itemize}, you can now write
+\begin{verbatim}
+ \NewEnvironmentCopy{myitemize}{itemize}
+\end{verbatim}
+There are also \cs{Renew...}\ and \cs{Declare...}, which may be useful
+depending on the circumstances.
+
+In addition, we offer a \cs{ShowEnvironment} command, which displays the
+\cs{begin} and \cs{end} code of the environment passed as an
+argument. E.g., \verb=\ShowEnvironment{center}= results in the
+following output:
+\begin{verbatim}
+ > \begin{center}=environment:
+ > ->\trivlist \centering \item \relax .
+ <recently read> }
+ l. ...\ShowEnvironment{center}
+ > \end{center}:
+ > ->\endtrivlist .
+ <recently read> }
+ l. ...\ShowEnvironment{center}
+\end{verbatim}
+%
+\githubissue{963}
+
+
+
+
+\section{Code improvements}
+
+\subsection{\pkg{doc}: Index \texttt{\textbackslash\textvisiblespace} correctly}
+
+\emph{to write}
+%
+\githubissue{943}
+
+
+\subsection{\pkg{doc}: Support the \pkg{upquote} package}
+
+The default quote and backquote characters in typewriter fonts are
+typographical quotes, e.g., the input
+\begin{verbatim}
+ \verb*/`prog 'my input'`/
+\end{verbatim}
+ is rendered as \verb*/`prog 'my input'`/ and not as
+%
+\begingroup % code to mimic upquote.sty
+\catcode`'=\active
+\catcode``=\active
+\makeatletter
+\g@addto@macro\@noligs
+ {\let'\textquotesingle
+ \let`\textasciigrave
+ \ifx\encodingdefault\upquote@OTone
+ \ifx\ttdefault\upquote@cmtt
+ \def'{\char13 }%
+ \def`{\char18 }%
+ \fi\fi}
+\endgroup
+%
+\verb*/`prog 'my input'`/ as preferred by many programmers.
+
+This can be adjusted, for example, with the \pkg{upquote} package,
+which results in the second output. However, for historical reasons
+\pkg{doc} had its own definition of \cs{verb} and \env{verbatim} and
+as a consequence the two packages did not cooperate. This has now
+been fixed and loading \pkg{upquote} together with \pkg{doc} has the
+desired effect.
+%
+\githubissue{953}
+
+
+\subsection{New key for \env{filecontents}}
+
+The \env{filecontents} environment warns on the terminal if a file
+gets overwritten even if that is intentional,
+e.g., when you write a temporary file over and over again. To make
+the warning less noisy in this case we added a new \texttt{nowarn} key
+that redirects the overwriting warning to the transcript file. We
+think that some record of the action is still required to help with
+debugging, thus it is not completely silenced. The warning that
+nothing gets written, because the file aready exists (and the
+\texttt{force} key was not used), is not altered and still shows up on
+the terminal.
+%
+\githubissue{958}
+
+
+
+\subsection{A further hook for shipping out pages}
+
+Since October 2020 the shipout process offers a number of hooks to
+adjust what is happening before, during, and after the
+\cs{shipout}. For example, with the \hook{shipout/before} hook, packages
+can reset code they have altered (e.g., \cs{catcode}s during
+verbatim-like processing) and with \hook{shipout/background} and
+\hook{shipout/foreground} material can be added to the pages.
+Details are given in \cite{37:ltshipout-doc}. However, what was
+missing was a hook that allows a package writer to manipulate the
+completed page (with foreground and background attached) just before
+the actual shipout happens.
+
+For this we now provide the additional hook \hook{shipout}. One
+use case (sometimes needed in print production) is to mirror the
+whole page via \cs{reflectbox} including all the extra data that may
+have been added into the fore- or background.
+%
+\githubissue{920}
+
+
+
+\subsection{Displaying release information in the \texttt{.log}}
+
+\LaTeX{} displays its release information at the very beginning of the
+\LaTeX{} run on the terminal and also writes it to the transcript file
+if that is already opened at this point. While this is normally true,
+it is not the case if the \LaTeX{} run was started passing additional
+\TeX{} code on the command line, e.g.,
+\begin{verbatim}
+pdflatex '\PassOptionsToClass{11pt}{article}
+ \input{myarticle}'
+\end{verbatim}
+In this case the release information is displayed when
+\cs{PassOptionsToClass} is processed but the transcript file is only
+opened when the output file name is known, i.e., after \cs{input} has
+been seen, and as a result the release information is only shown on
+the terminal.
+
+To account for this scenario, we now repeat the release information
+also at the very end of the transcript file where we can be sure that
+it is open and ready to receive material.
+%
+\githubissue{944}
+
+
+
+
+
+\section{Bug fixes}
+
+\subsection{Incompatibility between \pkg{doc} and \pkg{unicode-math}}
+
+The \pkg{unicode-math} package alters the catcode of \verb=|= but does
+not adjust its value for use in \pkg{doc}, with the result that
+\enquote{or} module, i.e., $\langle A | B \rangle$ are displayed in a
+strange way. This is now fixed with some firstaid code that will
+eventually be moved into \pkg{unicode-math}.
+%
+\githubissue{820}
+
+
+\subsection{A fix for \cs{hspace}}
+
+The change to \cs{hspace}, done in 2020 to make it \pkg{calc} aware,
+had the unfortunate side effect that starting a paragraph with
+\cs{hspace} would result in the execution of \cs{everypar} inside a
+group (i.e., any local changes would immediately be revoked, breaking,
+for example, \pkg{wrapfig} in that special situation).
+%
+This got fixed with the 2022-11 PL1 hotfix, so was already corrected in
+the previous release, but only now documented in a newletter.
+%
+\githubissue{967}
+
+
+
+\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}
+
+
+%\medskip
+
+\begin{thebibliography}{9}
+
+\fontsize{9.3}{11.3}\selectfont
+
+\bibitem{37:ltshipout-doc} Frank Mittelbach, \LaTeX{}~Project~Team:
+ \emph{The \texttt{\upshape ltshipout} documentation}.\\
+ Run \texttt{texdoc} \texttt{ltshipout-doc} to view.
+
+%\bibitem{37: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/}
+
+%\bibitem{37:source2e}
+% \emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\
+% \url{https://latex-project.org/help/documentation/}
+
+%\bibitem{37:Lamport}
+%Leslie Lamport.
+%\newblock {\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{37:ltnews32} \LaTeX{} Project Team:
+% \emph{\LaTeXe{} news 32}.\\
+% \url{https://latex-project.org/news/latex2e-news/ltnews32.pdf}
+%
+%\bibitem{37:ltnews34} \LaTeX{} Project Team:
+% \emph{\LaTeXe{} news 34}.\\
+% \url{https://latex-project.org/news/latex2e-news/ltnews34.pdf}
+%
+%\bibitem{37:ltnews35} \LaTeX{} Project Team:
+% \emph{\LaTeXe{} news 35}.\\
+% \url{https://latex-project.org/news/latex2e-news/ltnews35.pdf}
+%
+%\bibitem{37:fntguide} \LaTeX{} Project Team:
+% \emph{\LaTeXe{} font selection}.\\
+% \url{https://latex-project.org/help/documentation/}
+%
+%\bibitem{37:ltfilehook-doc} Frank Mittelbach, Phelype Oleinik, \LaTeX{}~Project~Team:
+% \emph{The \texttt{\upshape ltfilehook} documentation}.\\
+% Run \texttt{texdoc} \texttt{ltfilehook-doc} to view.
+\end{thebibliography}
+
+
+
+\end{document}
diff --git a/macros/latex-dev/base/ltpara-code.pdf b/macros/latex-dev/base/ltpara-code.pdf
index 0fbaccad7a..0537eb4ec9 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 847135c79c..bbd4a35c70 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/ltshipout-code.pdf b/macros/latex-dev/base/ltshipout-code.pdf
index b05e3da93d..5c4df6d628 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 61d3c87b9f..6d28fe7faf 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/ltshipout.dtx b/macros/latex-dev/base/ltshipout.dtx
index ae29c1acad..7aa07f754b 100644
--- a/macros/latex-dev/base/ltshipout.dtx
+++ b/macros/latex-dev/base/ltshipout.dtx
@@ -32,8 +32,8 @@
%%% From File: ltshipout.dtx
%
% \begin{macrocode}
-\providecommand\ltshipoutversion{v1.0m}
-\providecommand\ltshipoutdate{2022/08/26}
+\providecommand\ltshipoutversion{v1.0n}
+\providecommand\ltshipoutdate{2022/11/08}
% \end{macrocode}
%
%<*driver>
@@ -75,7 +75,7 @@
% \providecommand\pkg[1]{\texttt{#1}}
%
%
-% \title{The \texttt{ltshipout} package\thanks{This package has version
+% \title{The \texttt{ltshipout} documentation\thanks{This file has version
% \ltshipoutversion\ dated \ltshipoutdate, \copyright\ \LaTeX\
% Project.}}
%
@@ -241,6 +241,18 @@
% But being placed after the main box content it will be typeset
% later and thus overprints it (i.e., is in the foreground).
%
+% \item[\hook{shipout}]
+% This hook is executed after foreground and/or background
+% material has been added, i.e., just in front of the actual
+% shipout operation. Its purpose is to allow manipulation of the
+% finalized box (stored in \cs{ShipoutBox}) with the extra
+% material also in place (which is not yet the case in
+% \hook{shipout/before}).
+%
+% It cannot be used to cancel the shipout operation via
+% \cs{DiscardShipoutBox} (that has
+% to happen in \hook{shipout/before}, if desired!
+%
%
% \item[\hook{shipout/firstpage}]
%
@@ -296,7 +308,7 @@
% actual shipout. It is even run if there was a
% \cs{DiscardShipoutBox} request in the document.
%
-% The other hooks (except \hook{shipout/after}) are added inside
+% The other hooks (except \hook{shipout} and \hook{shipout/after}) are added inside
% hboxes to the box being shipped out in the following order:
% \begin{center}
% \begin{tabular}{ll}
@@ -307,9 +319,13 @@
% \hook{shipout/lastpage} & only on the last page \\
% \end{tabular}
% \end{center}
-% If any of the hooks has no code then that particular no box is
+% If any of the hooks has no code then the corresponding box is
% added at that point.
%
+% Once the (page) box has got the above extra content it can
+% again be manipulated using the \hook{shipout} hook and then
+% is shipped out for real.
+%
% Once the (page) box has been shipped out the \hook{shipout/after}
% hook is called (while you are still inside the output routine). It
% is not called if the shipout box was discarded.
@@ -381,13 +397,16 @@
%
% \fmi{Once we have a new mark mechanism available we can improve
% on that and make sure that the declaration applies to the page
-% that contains it.}
+% that contains it --- not done (yet)}
+%
+% \cs{DiscardShipoutBox} cannot be used in any of the \hook{shipout/...}
+% hooks other than \hook{shipout/before}.
% \end{function}
%
% In the \pkg{atbegshi} package there are a number of additional
% commands for use inside the \hook{shipout/before} hook. They
% should normally not be needed any more as one can instead simply
-% add code to the hooks \hook{shipout/before},
+% add code to the hooks \hook{shipout/before}, \hook{shipout},
% \hook{shipout/background} or
% \hook{shipout/foreground}.\footnote{If that assumption turns out to
% be wrong it would be trivial to change them to public functions
@@ -401,7 +420,9 @@
%
% \begin{variable}{pre_shipout_filter}
% Under Lua\TeX{} the \texttt{pre\_shipout\_filter} Lua callback is
-% provided which gets called immediately before the shipout primitive gets invoked.
+% provided which gets called directly after the
+% \hook{shipout} hook, immediately before the shipout
+% primitive gets invoked.
% The signature is
% \begin{verbatim}
% function(<node> head)
@@ -1014,15 +1035,20 @@
\_@@_add_foreground_box:n
{ \UseHook{shipout/lastpage}
\@kernel@after@shipout@lastpage }
- \bool_gset_true:N \g_@@_lastpage_handled_bool
% \end{macrocode}
% We record that we have handled the \hook{shipout/lastpage} hook
% but only if we really did.
% \changes{v1.0m}{2022/05/08}{Handle case where shipout/lastpage is
% run too early (gh/813)}
% \begin{macrocode}
+ \bool_gset_true:N \g_@@_lastpage_handled_bool
}
}
+% \end{macrocode}
+%
+% \changes{v1.0n}{2022/11/08}{Add shipout hook (gh/920)}
+% \begin{macrocode}
+ \hook_use:n {shipout}
\@@_finalize_box:
% \end{macrocode}
% Finally we run the actual \TeX{} primitive for shipout. As that will
@@ -1116,13 +1142,14 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{shipout/before,shipout/after,
+% \begin{macro}{shipout/before,shipout,shipout/after,
% shipout/foreground,shipout/background,
-% shipout/firstpage,
-% shipout/lastpage}
+% shipout/firstpage,shipout/lastpage}
% Declaring all hooks for the shipout code.
+% \changes{v1.0n}{2022/11/08}{Add shipout hook (gh/920)}
% \begin{macrocode}
\hook_new:n{shipout/before}
+\hook_new:n{shipout}
\hook_new:n{shipout/after}
\hook_new:n{shipout/foreground}
\hook_new:n{shipout/background}
diff --git a/macros/latex-dev/base/ltspace.dtx b/macros/latex-dev/base/ltspace.dtx
index feb82730ec..30bda278fb 100644
--- a/macros/latex-dev/base/ltspace.dtx
+++ b/macros/latex-dev/base/ltspace.dtx
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltspace.dtx}
- [2020/05/06 v1.3n LaTeX Kernel (spacing)]
+ [2022/11/28 v1.3o LaTeX Kernel (spacing)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltspace.dtx}
@@ -438,12 +438,13 @@
% \cs{setlength}. This way the \texttt{calc} package can operate on
% the argument value.
% \changes{v1.3m}{2020/04/21}{Support calc syntax (gh/152)}
+% \changes{v1.3o}{2022/11/28}{Support calc syntax without a group (gh/967)}
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
%<latexrelease>\IncludeInRelease{2020/10/01}%
%<latexrelease> {\@vspace@calcify}{Add calc support}%
-\def\@vspace@calcify#1{\begingroup\setlength\skip@{#1}\vskip\skip@\endgroup}
+\def\@vspace@calcify#1{\setlength\sp@ce@skip{#1}\vskip\sp@ce@skip}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
% \end{macrocode}
@@ -1261,12 +1262,21 @@
% {(RmS) Removed superfluous \cs{leavevmode} in \cs{@hspace} and
% \cs{@hspacer}, as suggested by CAR.}
% \changes{v1.3m}{2020/04/21}{Support calc syntax (gh/152)}
+% \changes{v1.3o}{2022/11/28}{Support calc syntax correctly (gh/967)}
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
%<latexrelease>\IncludeInRelease{2020/10/01}%
%<latexrelease> {\@hspace}{Support calc with \hspace}%
-\def\@hspace#1{\begingroup\setlength\skip@{#1}\hskip\skip@\endgroup}
+% \end{macrocode}
+% We use a private register to calculate the space (if \pkg{calc} is used). Previously
+% we used a group but that results in
+% \cs{everypar} etc.\ being executed inside the group if the \cs{hspace} starts a paragraph.
+% This is a bug fix so
+% we do not provide rollback to the incorrect intermediate version.
+% \begin{macrocode}
+\newskip\sp@ce@skip
+\def\@hspace#1{\setlength\sp@ce@skip{#1}\hskip\sp@ce@skip}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
% \end{macrocode}
diff --git a/macros/latex-dev/base/ltvers.dtx b/macros/latex-dev/base/ltvers.dtx
index a170ce98e1..eae29f0f01 100644
--- a/macros/latex-dev/base/ltvers.dtx
+++ b/macros/latex-dev/base/ltvers.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltvers.dtx}
- [2022/02/28 v1.1i LaTeX Kernel (Version Info)]
+ [2022/11/06 v1.1j LaTeX Kernel (Version Info)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltvers.dtx}
@@ -112,10 +112,10 @@
%</2ekernel>
%<latexrelease>\edef\latexreleaseversion
%<*2ekernel|latexrelease>
- {2023-05-01}
+ {2023-06-01}
%</2ekernel|latexrelease>
%<*2ekernel>
-\def\patch@level{-0}
+\def\patch@level{-1}
% \end{macrocode}
%
% \begin{macro}{\development@branch@name}
@@ -178,20 +178,33 @@
% by a loader (\texttt{.ini} file)}
% \changes{v1.0v}{2015/08/23}{Allow negative patchlevel for pre-release}
% \changes{v1.1e}{2020/01/31}{Allow for upcoming format as pre-release 0}
+% \changes{v1.1j}{2022/11/06}{Repeat release info at the end (gh/944)}
+%
+% We store release info in the toks \cs{LaTeXReleaseInfo} to be
+% used in \cs{everyjob} but also when \verb=\end{document}= is
+% executed.
+% Instead of using \cs{typeout} we use \cs{show@release@info} so
+% that we can write to the log only by changing that to \cs{wlog}.
+% \begin{macrocode}
+\newtoks\LaTeXReleaseInfo
+\everyjob\expandafter{\the\everyjob\the\LaTeXReleaseInfo}
+\let\show@release@info\typeout
+% \end{macrocode}
+%
% \begin{macrocode}
\ifnum0\ifnum\patch@level=0 \ifx\development@branch@name\@empty 1\fi\fi>0 %
- \everyjob\expandafter{\the\everyjob
- \typeout{\fmtname\space <\fmtversion>}}
+ \LaTeXReleaseInfo\expandafter{\the\LaTeXReleaseInfo
+ \show@release@info{\fmtname\space <\fmtversion>}}
\immediate
\write16{\fmtname \space<\fmtversion>}
\else\ifnum\patch@level>0
- \everyjob\expandafter{\the\everyjob
- \typeout{\fmtname\space <\fmtversion> patch level \patch@level}}
+ \LaTeXReleaseInfo\expandafter{\the\LaTeXReleaseInfo
+ \show@release@info{\fmtname\space <\fmtversion> patch level \patch@level}}
\immediate
\write16{\fmtname\space <\fmtversion> patch level \patch@level}
\else
- \everyjob\expandafter{\the\everyjob
- \typeout{\fmtname\space <\fmtversion>
+ \LaTeXReleaseInfo\expandafter{\the\LaTeXReleaseInfo
+ \show@release@info{\fmtname\space <\fmtversion>
pre-release-\number-\patch@level\space
\ifx\development@branch@name\@undefined \else
\ifx\development@branch@name\@empty \else
diff --git a/macros/latex-dev/base/ltx3info.pdf b/macros/latex-dev/base/ltx3info.pdf
index fd0ac95b4c..122feaff59 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.dtx b/macros/latex-dev/base/ltxdoc.dtx
index 46c324c590..6863349be3 100644
--- a/macros/latex-dev/base/ltxdoc.dtx
+++ b/macros/latex-dev/base/ltxdoc.dtx
@@ -30,7 +30,7 @@
%
%<class>\NeedsTeXFormat{LaTeX2e}
%<class>\ProvidesClass{ltxdoc}
-%<class> [2022/06/22 v2.1h Standard LaTeX documentation class]
+%<class> [2022/06/22 v2.1i Standard LaTeX documentation class]
%
%<*driver>
\documentclass{ltxdoc}
@@ -633,12 +633,15 @@ Bug reports can be opened (category \texttt{#1}) at\\%
%
% \changes{v2.1f}{2022/06/03}{define \cs{pkg} and other commands}
% \changes{v2.1f}{2022/06/03}{allow \_ in macro names}
-% Some feaures from l3doc.cls
+% Some features from l3doc.cls
% \changes{v2.1g}{2022/06/14}{define \cs{pkg} but delay until begin document}
+% \changes{v2.1i}{2022/11/28}{Revert 2.1f and not use \cs{detokenize} for now (gh/962)}
+% Eventually, \cs{cs} should get the definition from \pkg{l3doc} but for now we
+% revert to the simple one from \pkg{doc}.
% \begin{macrocode}
-\DeclareRobustCommand\cs[1]{\texttt{\bslash\detokenize{#1}}}%
+%\DeclareRobustCommand\cs[1]{\texttt{\bslash #1}}% -- def in doc.sty
\AtBeginDocument{%
- \renewcommand\PrintMacroName[1]{\MacroFont\detokenize{#1}}%
+% \renewcommand\PrintMacroName[1]{\MacroFont\string #1\ }% -- def in doc.sty
% \end{macrocode}
% We provide those delated in case somebody has loaded \texttt{csquotes}
% or makes some definitions in the preamble.
diff --git a/macros/latex-dev/base/ltxdoc.pdf b/macros/latex-dev/base/ltxdoc.pdf
index aff4835ebb..0e75ce008e 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 07c7f3aa06..8ebcab2ea6 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 f818b299ac..0778d8eb49 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 fd2dcfb5cc..601fa1592e 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 2005fa583b..97cc3e82c8 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 002f38d707..c18411078c 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 b73bb5a036..8115e6ae86 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 42f74b42cd..d956472b5d 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 fd876bf802..ef69d1da2e 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 2d3d123d1f..067c94c0c6 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/tulm.pdf b/macros/latex-dev/base/tulm.pdf
index d57694c1d0..57ead84747 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 325eac0a87..a390a49de9 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 52c0370645..263df7df63 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 32e12a1397..7234ac821c 100644
--- a/macros/latex-dev/base/usrguide.tex
+++ b/macros/latex-dev/base/usrguide.tex
@@ -865,7 +865,7 @@ specification then an error is issued.
-\section{Copying and showing (robust) commands}
+\section{Copying and showing (robust) commands and environments}
If you want to (slightly) alter an existing command you may want to
save the current definition under a new name and then use that in a
@@ -911,9 +911,6 @@ token but need \enquote{constructing}, you can use \cs{ExpandArgs}
as explained in
Section~\ref{sec:preconstructing-csnames}.
-
-
-
\begin{decl}
|\ShowCommand| \arg{cmd}
\end{decl}
@@ -926,6 +923,26 @@ also the actual payload code and in case of commands declared with
\cs{NewDocumentCommand}, etc.\ it also gives you detailed information
about the argument signature.
+\begin{decl}
+ |\NewEnvironmentCopy| \arg{env} \arg{existing-env} \\
+ |\RenewEnvironmentCopy| \arg{env} \arg{existing-env} \\
+ |\DeclareEnvironmentCopy| \arg{env} \arg{existing-env}
+\end{decl}
+
+This copies the definition for environment \meta{existing-env} to
+\meta{env} (both the beginning and end code), i.e., it is simply
+applying \cs{NewCommandCopy} twice to the internal commands that
+define an environment, i.e., \cs{}\meta{env} and \cs{end}\meta{env}.
+The differences between \cs{New...}, \cs{Renew...}, and
+\cs{Declare...} are the usual ones.
+
+\begin{decl}
+ |\ShowEnvironment| \arg{env}
+\end{decl}
+This displays the meaning of the begin end end code for environment \meta{env}.
+
+
+
\section[Preconstructing command names \\ (or otherwise expanding arguments)]
{Preconstructing command names (or otherwise expanding arguments)}
diff --git a/macros/latex-dev/base/utf8ienc.pdf b/macros/latex-dev/base/utf8ienc.pdf
index 5bbc4da5f0..4459986064 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 45d2350e67..1bf17cd5bd 100644
--- a/macros/latex-dev/base/webcomp.pdf
+++ b/macros/latex-dev/base/webcomp.pdf
Binary files differ