summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-10-22 03:01:42 +0000
committerNorbert Preining <norbert@preining.info>2021-10-22 03:01:42 +0000
commitd8b81c54ee53a93b7f939601fd6438d0f194978b (patch)
tree778d96f9997157967c023e7de3b72d9ef6d6bbe2 /macros
parenta94181338fbbc4c93ae38719f727b05d3e5be421 (diff)
CTAN sync 202110220301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex-dev/base/README.md2
-rw-r--r--macros/latex-dev/base/alltt.pdfbin214710 -> 214710 bytes
-rw-r--r--macros/latex-dev/base/cfgguide.pdfbin242886 -> 242886 bytes
-rw-r--r--macros/latex-dev/base/changes.txt56
-rw-r--r--macros/latex-dev/base/classes.dtx22
-rw-r--r--macros/latex-dev/base/classes.pdfbin550711 -> 550728 bytes
-rw-r--r--macros/latex-dev/base/clsguide.pdfbin402779 -> 402779 bytes
-rw-r--r--macros/latex-dev/base/cmfonts.pdfbin292317 -> 292317 bytes
-rw-r--r--macros/latex-dev/base/cyrguide.pdfbin239681 -> 239681 bytes
-rw-r--r--macros/latex-dev/base/doc.dtx11
-rw-r--r--macros/latex-dev/base/doc.pdfbin676958 -> 676765 bytes
-rw-r--r--macros/latex-dev/base/docstrip.pdfbin503607 -> 503393 bytes
-rw-r--r--macros/latex-dev/base/encguide.pdfbin1316472 -> 1316472 bytes
-rw-r--r--macros/latex-dev/base/exscale.pdfbin212307 -> 212307 bytes
-rw-r--r--macros/latex-dev/base/fix-cm.pdfbin287672 -> 287672 bytes
-rw-r--r--macros/latex-dev/base/fntguide.pdfbin493957 -> 493957 bytes
-rw-r--r--macros/latex-dev/base/graphpap.pdfbin169323 -> 169323 bytes
-rw-r--r--macros/latex-dev/base/ifthen.pdfbin220417 -> 220417 bytes
-rw-r--r--macros/latex-dev/base/inputenc.pdfbin318168 -> 318168 bytes
-rw-r--r--macros/latex-dev/base/lamport-manual.pdfbin170875 -> 170875 bytes
-rw-r--r--macros/latex-dev/base/latexchanges.pdfbin469966 -> 469966 bytes
-rw-r--r--macros/latex-dev/base/latexrelease.pdfbin290495 -> 290495 bytes
-rw-r--r--macros/latex-dev/base/latexsym.pdfbin208359 -> 208359 bytes
-rw-r--r--macros/latex-dev/base/lb2.pdfbin252154 -> 252154 bytes
-rw-r--r--macros/latex-dev/base/letter.pdfbin328443 -> 328630 bytes
-rw-r--r--macros/latex-dev/base/lgc2.pdfbin215091 -> 215091 bytes
-rw-r--r--macros/latex-dev/base/lppl.pdfbin132373 -> 132373 bytes
-rw-r--r--macros/latex-dev/base/ltboxes.dtx25
-rw-r--r--macros/latex-dev/base/ltcmdhooks-code.pdfbin699078 -> 718404 bytes
-rw-r--r--macros/latex-dev/base/ltcmdhooks-doc.pdfbin479642 -> 478668 bytes
-rw-r--r--macros/latex-dev/base/ltcmdhooks.dtx373
-rw-r--r--macros/latex-dev/base/ltfilehook-code.pdfbin795879 -> 795683 bytes
-rw-r--r--macros/latex-dev/base/ltfilehook-doc.pdfbin546791 -> 546580 bytes
-rw-r--r--macros/latex-dev/base/ltfiles.dtx20
-rw-r--r--macros/latex-dev/base/ltfinal.dtx37
-rw-r--r--macros/latex-dev/base/ltfloat.dtx27
-rw-r--r--macros/latex-dev/base/ltfssdcl.dtx255
-rw-r--r--macros/latex-dev/base/lthooks-code.pdfbin1083948 -> 1083770 bytes
-rw-r--r--macros/latex-dev/base/lthooks-doc.pdfbin703437 -> 703251 bytes
-rw-r--r--macros/latex-dev/base/lthooks.dtx28
-rw-r--r--macros/latex-dev/base/ltluatex.dtx4
-rw-r--r--macros/latex-dev/base/ltluatex.pdfbin325107 -> 325177 bytes
-rw-r--r--macros/latex-dev/base/ltmath.dtx8
-rw-r--r--macros/latex-dev/base/ltnews.pdfbin1116092 -> 1120782 bytes
-rw-r--r--macros/latex-dev/base/ltnews01.pdfbin161518 -> 161518 bytes
-rw-r--r--macros/latex-dev/base/ltnews02.pdfbin150466 -> 159793 bytes
-rw-r--r--macros/latex-dev/base/ltnews02.tex14
-rw-r--r--macros/latex-dev/base/ltnews03.pdfbin150493 -> 159336 bytes
-rw-r--r--macros/latex-dev/base/ltnews03.tex32
-rw-r--r--macros/latex-dev/base/ltnews04.pdfbin143686 -> 152526 bytes
-rw-r--r--macros/latex-dev/base/ltnews04.tex24
-rw-r--r--macros/latex-dev/base/ltnews05.pdfbin174488 -> 174501 bytes
-rw-r--r--macros/latex-dev/base/ltnews05.tex20
-rw-r--r--macros/latex-dev/base/ltnews06.pdfbin142909 -> 142851 bytes
-rw-r--r--macros/latex-dev/base/ltnews06.tex30
-rw-r--r--macros/latex-dev/base/ltnews07.pdfbin138044 -> 137813 bytes
-rw-r--r--macros/latex-dev/base/ltnews07.tex34
-rw-r--r--macros/latex-dev/base/ltnews08.pdfbin155055 -> 155055 bytes
-rw-r--r--macros/latex-dev/base/ltnews08.tex33
-rw-r--r--macros/latex-dev/base/ltnews09.pdfbin129032 -> 129573 bytes
-rw-r--r--macros/latex-dev/base/ltnews09.tex26
-rw-r--r--macros/latex-dev/base/ltnews10.pdfbin159313 -> 169412 bytes
-rw-r--r--macros/latex-dev/base/ltnews10.tex32
-rw-r--r--macros/latex-dev/base/ltnews11.pdfbin111955 -> 111955 bytes
-rw-r--r--macros/latex-dev/base/ltnews12.pdfbin147587 -> 156556 bytes
-rw-r--r--macros/latex-dev/base/ltnews12.tex12
-rw-r--r--macros/latex-dev/base/ltnews13.pdfbin173323 -> 182226 bytes
-rw-r--r--macros/latex-dev/base/ltnews13.tex23
-rw-r--r--macros/latex-dev/base/ltnews14.pdfbin161405 -> 170473 bytes
-rw-r--r--macros/latex-dev/base/ltnews14.tex31
-rw-r--r--macros/latex-dev/base/ltnews15.pdfbin130447 -> 130310 bytes
-rw-r--r--macros/latex-dev/base/ltnews15.tex36
-rw-r--r--macros/latex-dev/base/ltnews16.pdfbin146533 -> 138080 bytes
-rw-r--r--macros/latex-dev/base/ltnews16.tex2
-rw-r--r--macros/latex-dev/base/ltnews17.pdfbin166368 -> 166234 bytes
-rw-r--r--macros/latex-dev/base/ltnews17.tex56
-rw-r--r--macros/latex-dev/base/ltnews18.pdfbin38031 -> 38031 bytes
-rw-r--r--macros/latex-dev/base/ltnews19.pdfbin245818 -> 230027 bytes
-rw-r--r--macros/latex-dev/base/ltnews19.tex2
-rw-r--r--macros/latex-dev/base/ltnews20.pdfbin297070 -> 318546 bytes
-rw-r--r--macros/latex-dev/base/ltnews20.tex103
-rw-r--r--macros/latex-dev/base/ltnews21.pdfbin244869 -> 244868 bytes
-rw-r--r--macros/latex-dev/base/ltnews21.tex60
-rw-r--r--macros/latex-dev/base/ltnews22.pdfbin318399 -> 317766 bytes
-rw-r--r--macros/latex-dev/base/ltnews22.tex50
-rw-r--r--macros/latex-dev/base/ltnews23.pdfbin287125 -> 286590 bytes
-rw-r--r--macros/latex-dev/base/ltnews23.tex54
-rw-r--r--macros/latex-dev/base/ltnews24.pdfbin265211 -> 265283 bytes
-rw-r--r--macros/latex-dev/base/ltnews24.tex50
-rw-r--r--macros/latex-dev/base/ltnews25.pdfbin205162 -> 204933 bytes
-rw-r--r--macros/latex-dev/base/ltnews25.tex48
-rw-r--r--macros/latex-dev/base/ltnews26.pdfbin379735 -> 379461 bytes
-rw-r--r--macros/latex-dev/base/ltnews26.tex66
-rw-r--r--macros/latex-dev/base/ltnews27.pdfbin252432 -> 250593 bytes
-rw-r--r--macros/latex-dev/base/ltnews27.tex20
-rw-r--r--macros/latex-dev/base/ltnews28.pdfbin387987 -> 376645 bytes
-rw-r--r--macros/latex-dev/base/ltnews28.tex36
-rw-r--r--macros/latex-dev/base/ltnews29.pdfbin454808 -> 455099 bytes
-rw-r--r--macros/latex-dev/base/ltnews29.tex6
-rw-r--r--macros/latex-dev/base/ltnews30.pdfbin511855 -> 511899 bytes
-rw-r--r--macros/latex-dev/base/ltnews30.tex18
-rw-r--r--macros/latex-dev/base/ltnews31.pdfbin526312 -> 526316 bytes
-rw-r--r--macros/latex-dev/base/ltnews31.tex27
-rw-r--r--macros/latex-dev/base/ltnews32.pdfbin546162 -> 546165 bytes
-rw-r--r--macros/latex-dev/base/ltnews32.tex43
-rw-r--r--macros/latex-dev/base/ltnews33.pdfbin522413 -> 522413 bytes
-rw-r--r--macros/latex-dev/base/ltnews33.tex10
-rw-r--r--macros/latex-dev/base/ltnews34.pdfbin505243 -> 510897 bytes
-rw-r--r--macros/latex-dev/base/ltnews34.tex843
-rw-r--r--macros/latex-dev/base/ltoutenc.dtx7
-rw-r--r--macros/latex-dev/base/ltpara-code.pdfbin666188 -> 667664 bytes
-rw-r--r--macros/latex-dev/base/ltpara-doc.pdfbin560534 -> 560785 bytes
-rw-r--r--macros/latex-dev/base/ltpara.dtx214
-rw-r--r--macros/latex-dev/base/ltshipout-code.pdfbin818929 -> 818659 bytes
-rw-r--r--macros/latex-dev/base/ltshipout-doc.pdfbin564752 -> 564465 bytes
-rw-r--r--macros/latex-dev/base/ltvers.dtx2
-rw-r--r--macros/latex-dev/base/ltx3info.pdfbin219354 -> 219354 bytes
-rw-r--r--macros/latex-dev/base/ltxdoc.pdfbin238577 -> 238577 bytes
-rw-r--r--macros/latex-dev/base/makeindx.dtx4
-rw-r--r--macros/latex-dev/base/makeindx.pdfbin173682 -> 173471 bytes
-rw-r--r--macros/latex-dev/base/modguide.pdfbin243601 -> 243601 bytes
-rw-r--r--macros/latex-dev/base/nfssfont.pdfbin218782 -> 218782 bytes
-rw-r--r--macros/latex-dev/base/preload.dtx4
-rw-r--r--macros/latex-dev/base/proc.pdfbin233995 -> 233995 bytes
-rw-r--r--macros/latex-dev/base/slides.dtx8
-rw-r--r--macros/latex-dev/base/slides.pdfbin374051 -> 374076 bytes
-rw-r--r--macros/latex-dev/base/slifonts.pdfbin234008 -> 234008 bytes
-rw-r--r--macros/latex-dev/base/source2e.pdfbin5421635 -> 5463192 bytes
-rw-r--r--macros/latex-dev/base/source2edoc.cls18
-rw-r--r--macros/latex-dev/base/syntonly.pdfbin197195 -> 197093 bytes
-rw-r--r--macros/latex-dev/base/tlc2.pdfbin289519 -> 289519 bytes
-rw-r--r--macros/latex-dev/base/tulm.pdfbin170530 -> 170530 bytes
-rw-r--r--macros/latex-dev/base/usrguide.pdfbin430996 -> 430996 bytes
-rw-r--r--macros/latex-dev/base/usrguide3.pdfbin325727 -> 325727 bytes
-rw-r--r--macros/latex-dev/base/utf8ienc.pdfbin361582 -> 361155 bytes
-rw-r--r--macros/latex-dev/base/webcomp.pdfbin146200 -> 146200 bytes
-rw-r--r--macros/latex-dev/required/amsmath/README.md6
-rw-r--r--macros/latex-dev/required/amsmath/amsbsy.pdfbin173746 -> 173746 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amscd.pdfbin178672 -> 178672 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amsgen.pdfbin176740 -> 176740 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amsldoc.pdfbin508199 -> 508199 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amsmath.dtx10
-rw-r--r--macros/latex-dev/required/amsmath/amsmath.pdfbin399552 -> 399735 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amsopn.pdfbin138783 -> 138783 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amstext.pdfbin215810 -> 215810 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amsxtra.pdfbin112556 -> 112556 bytes
-rw-r--r--macros/latex-dev/required/amsmath/changes.txt7
-rw-r--r--macros/latex-dev/required/amsmath/subeqn.pdfbin109737 -> 109737 bytes
-rw-r--r--macros/latex-dev/required/amsmath/technote.pdfbin145610 -> 145610 bytes
-rw-r--r--macros/latex-dev/required/amsmath/testmath.pdfbin454662 -> 454662 bytes
-rw-r--r--macros/latex-dev/required/graphics/README.md4
-rw-r--r--macros/latex-dev/required/graphics/changes.txt6
-rw-r--r--macros/latex-dev/required/graphics/color.dtx23
-rw-r--r--macros/latex-dev/required/graphics/color.pdfbin215002 -> 215047 bytes
-rw-r--r--macros/latex-dev/required/graphics/drivers.pdfbin286309 -> 286309 bytes
-rw-r--r--macros/latex-dev/required/graphics/epsfig.pdfbin167686 -> 167686 bytes
-rw-r--r--macros/latex-dev/required/graphics/graphics.dtx2
-rw-r--r--macros/latex-dev/required/graphics/graphics.pdfbin310676 -> 310675 bytes
-rw-r--r--macros/latex-dev/required/graphics/graphicx.pdfbin248231 -> 248231 bytes
-rw-r--r--macros/latex-dev/required/graphics/grfguide.pdfbin330071 -> 330070 bytes
-rw-r--r--macros/latex-dev/required/graphics/keyval.pdfbin239654 -> 239654 bytes
-rw-r--r--macros/latex-dev/required/graphics/lscape.pdfbin163584 -> 163584 bytes
-rw-r--r--macros/latex-dev/required/graphics/rotating.pdfbin269103 -> 268985 bytes
-rw-r--r--macros/latex-dev/required/graphics/rotex.pdfbin172231 -> 172229 bytes
-rw-r--r--macros/latex-dev/required/graphics/trig.pdfbin206897 -> 206897 bytes
-rw-r--r--macros/latex-dev/required/tools/README.md4
-rw-r--r--macros/latex-dev/required/tools/afterpage.pdfbin205344 -> 205344 bytes
-rw-r--r--macros/latex-dev/required/tools/array.dtx6
-rw-r--r--macros/latex-dev/required/tools/array.pdfbin517124 -> 516777 bytes
-rw-r--r--macros/latex-dev/required/tools/bm.pdfbin331424 -> 331424 bytes
-rw-r--r--macros/latex-dev/required/tools/calc.pdfbin370414 -> 370414 bytes
-rw-r--r--macros/latex-dev/required/tools/changes.txt9
-rw-r--r--macros/latex-dev/required/tools/dcolumn.pdfbin220689 -> 220689 bytes
-rw-r--r--macros/latex-dev/required/tools/delarray.pdfbin198647 -> 198647 bytes
-rw-r--r--macros/latex-dev/required/tools/enumerate.pdfbin215355 -> 215355 bytes
-rw-r--r--macros/latex-dev/required/tools/fileerr.pdfbin195434 -> 195026 bytes
-rw-r--r--macros/latex-dev/required/tools/fontsmpl.pdfbin154034 -> 154034 bytes
-rw-r--r--macros/latex-dev/required/tools/ftnright.pdfbin370134 -> 369733 bytes
-rw-r--r--macros/latex-dev/required/tools/hhline.pdfbin189538 -> 189538 bytes
-rw-r--r--macros/latex-dev/required/tools/indentfirst.pdfbin157803 -> 157803 bytes
-rw-r--r--macros/latex-dev/required/tools/layout.pdfbin267761 -> 267761 bytes
-rw-r--r--macros/latex-dev/required/tools/longtable.pdfbin382155 -> 382155 bytes
-rw-r--r--macros/latex-dev/required/tools/multicol.dtx128
-rw-r--r--macros/latex-dev/required/tools/multicol.pdfbin516148 -> 517737 bytes
-rw-r--r--macros/latex-dev/required/tools/rawfonts.pdfbin146534 -> 146534 bytes
-rw-r--r--macros/latex-dev/required/tools/shellesc.pdfbin183532 -> 183532 bytes
-rw-r--r--macros/latex-dev/required/tools/showkeys.pdfbin260624 -> 260624 bytes
-rw-r--r--macros/latex-dev/required/tools/somedefs.pdfbin175169 -> 175169 bytes
-rw-r--r--macros/latex-dev/required/tools/tabularx.pdfbin278041 -> 278041 bytes
-rw-r--r--macros/latex-dev/required/tools/theorem.pdfbin351657 -> 351239 bytes
-rw-r--r--macros/latex-dev/required/tools/tools-overview.pdfbin73674 -> 73674 bytes
-rw-r--r--macros/latex-dev/required/tools/trace.pdfbin229713 -> 229713 bytes
-rw-r--r--macros/latex-dev/required/tools/varioref.pdfbin383524 -> 383524 bytes
-rw-r--r--macros/latex-dev/required/tools/verbatim.pdfbin330815 -> 330815 bytes
-rw-r--r--macros/latex-dev/required/tools/xr.pdfbin177595 -> 177595 bytes
-rw-r--r--macros/latex-dev/required/tools/xspace.pdfbin256897 -> 256897 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx115
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin577608 -> 577644 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex12
199 files changed, 2187 insertions, 1111 deletions
diff --git a/macros/latex-dev/base/README.md b/macros/latex-dev/base/README.md
index ae8444f5dd..9628a36282 100644
--- a/macros/latex-dev/base/README.md
+++ b/macros/latex-dev/base/README.md
@@ -1,7 +1,7 @@
The LaTeX kernel
================
-Release 2021-11-15 pre-release 2
+Release 2021-11-15 pre-release 3
Overview
--------
diff --git a/macros/latex-dev/base/alltt.pdf b/macros/latex-dev/base/alltt.pdf
index 637e33bf8b..a8caa96cd5 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 cc8ced07f7..c9b1cbb62d 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 50f916b233..c8c36aa941 100644
--- a/macros/latex-dev/base/changes.txt
+++ b/macros/latex-dev/base/changes.txt
@@ -6,6 +6,62 @@ completeness or accuracy and it contains some references to files that
are not part of the distribution.
================================================================================
+2021-10-20 Phelype Oleinik <phelype.oleinik@latex-project.org>
+
+ * ltcmdhooks.dtx (subsubsection{Patching by expansion and redefinition}):
+ Fix patching of commands that contain parameter tokens (gh/697)
+
+2021-10-19 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltpara.dtx (subsection{The error messages}):
+ Remove content from \tex_everypar:D (aka \everypar) on rollback.
+ Without it rollback is not functioning in all cases (gh/695).
+
+2021-10-16 David Carlisle <David.Carlisle@latex-project.org>
+
+ * ltoutenc.dtx: guard spacefactor setting in accents gh/643
+
+2021-10-15 Marcel Krüger <Marcel.Krueger@latex-project.org>
+
+ * ltluatex.dtx:
+ Added missing callback process_charproc_data
+
+2021-10-14 David Carlisle <David.Carlisle@latex-project.org>
+
+ * ltfiles.dtx: Warn if \include is used before \begin{document}
+ and do not try to write to the aux file (which is not open) gh/645
+
+2021-10-14 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfloat.dtx (subsection{Footnotes}):
+ * ltboxes.dtx (section{\LaTeX\ Box commands}):
+ * ltmath.dtx (two places}):
+ Explicitly set \@currentcounter when not automatically done
+ through \refstepcounter (gh/687)
+
+2021-10-04 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * classes.dtx, doc.dtx, makeindx.dtx, preload.dtx, slides.dtx, array.dtx
+ Removed old references to latex.tex or latex.dtx (gh/685)
+
+2021-09-28 Phelype Oleinik <phelype.oleinik@latex-project.org>
+
+ * ltcmdhooks.dtx (subsection{Patching commands}):
+ Make patching of commands with generic cmd hooks a global operation (gh/674)
+
+2021-09-28 Phelype Oleinik <phelype.oleinik@latex-project.org>
+
+ * lthooks.dtx (subsection{Adding or removing hook code}):
+ Correct usage of older \@@_if_file_hook:wTF (gh/675).
+
+2021-09-27 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfssdcl.dtx (section{Interface Commands}):
+ Provide counter "localmathalphabets" to keep that many alphabets
+ from being permanently allocated after use. This allows
+ some flexibility if many math alphabets are needed but not needed
+ all in the same formula. (gh/676)
+
2021-09-18 David Carlisle <David.Carlisle@latex-project.org>
* ltpara.dtx: use a \hskip rather than \kern as the guard to
diff --git a/macros/latex-dev/base/classes.dtx b/macros/latex-dev/base/classes.dtx
index fdf0ef3a5b..a13053b871 100644
--- a/macros/latex-dev/base/classes.dtx
+++ b/macros/latex-dev/base/classes.dtx
@@ -53,7 +53,7 @@
%<*driver>
\ProvidesFile{classes.drv}
%</driver>
- [2021/09/11 v1.4n
+ [2021/10/04 v1.4n
%<article|report|book> Standard LaTeX document class]
%<10pt|11pt|12pt> Standard LaTeX file (size option)]
% \end{macrocode}
@@ -1622,7 +1622,7 @@
% \label{sec:classes:pagestyle}
%
% The pagestyles \pstyle{empty} and \pstyle{plain} are defined in
-% \file{latex.dtx}.
+% the \LaTeX{} format.
%
% \begin{macro}{\ps@headings}
% The definition of the page style \pstyle{headings} has to be
@@ -1771,7 +1771,7 @@
% \begin{macro}{\title}
% \begin{macro}{\author}
% \begin{macro}{\date}
-% These three macros are provided by \file{latex.dtx} to provide
+% These three macros are provided by the \LaTeX{} format to provide
% information about the title, author(s) and date of the document.
% The information is stored away in internal control sequences.
% It is the task of the |\maketitle| command to use the
@@ -2056,7 +2056,7 @@
% Default initializations of |\...mark| commands. These commands
% are used in the definition of the page styles (see
% section~\ref{sec:classes:pagestyle}) Most of them are already defined by
-% \file{latex.dtx}, so they are only shown here.
+% the \LaTeX{} format, so they are only shown here.
%
% \begin{macrocode}
%<!article>\newcommand*\chaptermark[1]{}
@@ -2891,7 +2891,7 @@
% \begin{macro}{\theenumii}
% \begin{macro}{\theenumiii}
% \begin{macro}{\theenumiv}
-% The counters are already defined in \file{latex.dtx}, but their
+% The counters are already defined in the \LaTeX{} format, but their
% representation is changed here.
%
% \begin{macrocode}
@@ -2990,7 +2990,7 @@
%
% \begin{environment}{description}
% The description environment is defined here -- while the itemize
-% and enumerate environments are defined in \file{latex.dtx}.
+% and enumerate environments are defined in the \LaTeX{} format.
%
% \begin{macrocode}
\newenvironment{description}
@@ -3123,7 +3123,7 @@
% \subsubsection{Theorem}
%
% This document class does not define it's own theorem environments,
-% the defaults, supplied by \file{latex.dtx} are available.
+% the defaults, supplied by the \LaTeX{} format are available.
%
% \subsubsection{Titlepage}
%
@@ -3365,7 +3365,7 @@
%
% \subsection{Floating objects}
%
-% The file \file{latex.dtx} only defines a number of tools with
+% The \LaTeX{} format only defines a number of tools with
% which floating objects can be defined. This is done in the
% document class. It needs to define the following macros for each
% floating object of type \texttt{TYPE} (e.g., \texttt{TYPE} =
@@ -3402,7 +3402,7 @@
%
% The actual environment that implements a floating object such as
% a figure is defined using the macros |\@float| and |\end@float|,
-% which are defined in \file{latex.dtx}.
+% which are defined in the \LaTeX{} format.
%
% An environment that implements a single-column floating object is
% started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type
@@ -4194,7 +4194,7 @@
%
% \begin{macro}{\@biblabel}
% The label for a |\bibitem[...]| command is produced by this
-% macro. The default from \file{latex.dtx} is used.
+% macro. The default from the \LaTeX{} format is used.
% \begin{macrocode}
% \renewcommand*{\@biblabel}[1]{[#1]\hfill}
% \end{macrocode}
@@ -4202,7 +4202,7 @@
%
% \begin{macro}{\@cite}
% The output of the |\cite| command is produced by this macro. The
-% default from \file{latex.dtx} is used.
+% default from the \LaTeX{} format is used.
% \begin{macrocode}
% \renewcommand*{\@cite}[1]{[#1]}
% \end{macrocode}
diff --git a/macros/latex-dev/base/classes.pdf b/macros/latex-dev/base/classes.pdf
index 937b11968e..2076b3d4c4 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 4d049fe540..65a001cd5c 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 bdb26b2672..f5e78cc31d 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 5fca8b3953..606076eb91 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.dtx b/macros/latex-dev/base/doc.dtx
index fb3412f21f..41bc073315 100644
--- a/macros/latex-dev/base/doc.dtx
+++ b/macros/latex-dev/base/doc.dtx
@@ -35,7 +35,7 @@
%<+package|shortvrb>\NeedsTeXFormat{LaTeX2e}[1994/12/01]
%<+package> \ProvidesPackage{doc}
%<+shortvrb>\ProvidesPackage{shortvrb}
-%<+package|shortvrb> [2021/05/28 v2.1n
+%<+package|shortvrb> [2021/10/04 v2.1n
%<+package|shortvrb> Standard LaTeX documentation package (FMi)]
%\catcode`\<=12
%
@@ -885,7 +885,7 @@
% We provide macros for logos such as \Web, \AmSTeX, \BibTeX,
% \SliTeX{} and \PlainTeX. Just type |\Web|, |\AmSTeX|,
% |\BibTeX|, |\SliTeX| or |\PlainTeX|, respectively.
-% \LaTeX{} and \TeX{} are already defined in \texttt{latex.tex}.
+% \LaTeX{} and \TeX{} are already defined in the \LaTeX{} format.
%
% \DescribeMacro\meta
% Another useful macro is |\meta| which has one argument and
@@ -938,7 +938,8 @@
% argument and produces a verbatim listing of the file, indexing every
% command as it goes along. This might be handy, if you want to learn
% something about macros without enough documentation. I used this
-% feature to cross-reference \texttt{latex.tex} getting a verbatim
+% feature to cross-reference \texttt{latex.tex} (these days
+% called \texttt{latex.ltx}) getting a verbatim
% copy with about 15 pages index.\footnote{It took quite a long time
% and the resulting \texttt{.idx} file was longer than the
% \texttt{.dvi} file. Actually too long to be handled by the
@@ -2031,7 +2032,7 @@
% \begin{macro}{\@verbatim}
% Additionally we redefine the |\@verbatim| macro so that it
% suppresses |%| characters at the beginning of the line. The
-% first lines are copied literally from \texttt{latex.tex}.
+% first lines are copied literally from the \LaTeX{} format.
% \changes{v1.7i}{1992/07/12}{Added \cs{@@par} to clear possible
% \cs{parshape}.}
% \begin{macrocode}
@@ -2055,7 +2056,7 @@
% \begin{macrocode}
\check@percent}%
% \end{macrocode}
-% The rest is again copied literally from \texttt{latex.tex} (less
+% The rest is again copied literally from the \LaTeX{} format (less
% "\tt").
% \changes{v1.7a}{1992/02/26}{Removed redundant \cs{tt}.}
% \changes{v1.8b}{1993/09/21}{Changed to conform to new LaTeX verbatim,
diff --git a/macros/latex-dev/base/doc.pdf b/macros/latex-dev/base/doc.pdf
index 60f15ff69f..432491c970 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 325df35eb6..52eb19d03b 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 98a03a7bb1..c9cf55877b 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 e00c839154..aa4181eae6 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 cc3df9f5db..ef11e32912 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 976d306413..69525cb6d5 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 bc9c785398..d5999ff382 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 a291da6184..74b9679c65 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 d8a2f584ed..4873d7eeb7 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 06adb9a77a..79f87a60ac 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/latexchanges.pdf b/macros/latex-dev/base/latexchanges.pdf
index 75144a2fd0..6429f07900 100644
--- a/macros/latex-dev/base/latexchanges.pdf
+++ b/macros/latex-dev/base/latexchanges.pdf
Binary files differ
diff --git a/macros/latex-dev/base/latexrelease.pdf b/macros/latex-dev/base/latexrelease.pdf
index 0bdfb2ccf3..ec1463c7e0 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 5b7ae7f8b4..408443b83c 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 6c01b2a28f..3ff32031e9 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 258a768277..508f6d7de2 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 2bf91f2d66..0dc3b375db 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 f55fe97188..cf7534cac2 100644
--- a/macros/latex-dev/base/lppl.pdf
+++ b/macros/latex-dev/base/lppl.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltboxes.dtx b/macros/latex-dev/base/ltboxes.dtx
index 8499d3ab8b..92d9228a8a 100644
--- a/macros/latex-dev/base/ltboxes.dtx
+++ b/macros/latex-dev/base/ltboxes.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltboxes.dtx}
- [2021/02/10 v1.4b LaTeX Kernel (Box Commands)]
+ [2021/10/14 v1.4c LaTeX Kernel (Box Commands)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltboxes.dtx}
@@ -1137,10 +1137,12 @@
% {Color groups restored here.}
% \changes{v1.4b}{2021/02/10}
% {Explicitly run \cs{par} in support for paragraph tagging}
+% \changes{v1.4c}{2021/10/14}
+% {Explicitly set \cs{@currentcounter} (gh/687)}
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2021/06/01}%
+%<latexrelease>\IncludeInRelease{2021/11/15}%
%<latexrelease> {\@mpfootnotetext}{footnotetext tagging}%
\long\def\@mpfootnotetext#1{%
\global\setbox\@mpfootins\vbox{%
@@ -1148,6 +1150,7 @@
\reset@font\footnotesize
\hsize\columnwidth
\@parboxrestore
+ \def\@currentcounter{mpfootnote}%
\protected@edef\@currentlabel
{\csname p@mpfootnote\endcsname\@thefnmark}%
\color@begingroup
@@ -1158,6 +1161,24 @@
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
% \end{macrocode}
+% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2021/06/01}%
+%<latexrelease> {\@mpfootnotetext}{footnotetext tagging}%
+%<latexrelease>\long\def\@mpfootnotetext#1{%
+%<latexrelease> \global\setbox\@mpfootins\vbox{%
+%<latexrelease> \unvbox\@mpfootins
+%<latexrelease> \reset@font\footnotesize
+%<latexrelease> \hsize\columnwidth
+%<latexrelease> \@parboxrestore
+%<latexrelease> \protected@edef\@currentlabel
+%<latexrelease> {\csname p@mpfootnote\endcsname\@thefnmark}%
+%<latexrelease> \color@begingroup
+%<latexrelease> \@makefntext{%
+%<latexrelease> \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+%<latexrelease> \par
+%<latexrelease> \color@endgroup}}
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
%
% \begin{macrocode}
%<latexrelease>\IncludeInRelease{0000/00/00}%
diff --git a/macros/latex-dev/base/ltcmdhooks-code.pdf b/macros/latex-dev/base/ltcmdhooks-code.pdf
index 7dc8850331..7f4d2a871a 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 6ee7bc215c..c825208f49 100644
--- a/macros/latex-dev/base/ltcmdhooks-doc.pdf
+++ b/macros/latex-dev/base/ltcmdhooks-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltcmdhooks.dtx b/macros/latex-dev/base/ltcmdhooks.dtx
index b6c57a41ac..208f7c3d22 100644
--- a/macros/latex-dev/base/ltcmdhooks.dtx
+++ b/macros/latex-dev/base/ltcmdhooks.dtx
@@ -13,21 +13,14 @@
%
%%% From File: ltcmdhooks.dtx
%
-\def\ltcmdhooksversion{v1.0d}
-\def\ltcmdhooksdate{2021/08/25}
+\def\ltcmdhooksversion{v1.0f}
+\def\ltcmdhooksdate{2021/10/20}
%
%
%
%<*driver>
\documentclass{l3doc}
%\usepackage{ltcmdhooks}
-\makeatletter
-\providecommand\footref[1]{%
- \begingroup
- \unrestored@protected@xdef\@thefnmark{\ref{#1}}%
- \endgroup
- \@footnotemark}
-\makeatother
\EnableCrossrefs
\CodelineIndex
\begin{document}
@@ -360,19 +353,46 @@
% \end{macro}
%
% \begin{macro}{\l_@@_patch_prefixes_tl}
-% \begin{macro}{\l_@@_patch_param_text_tl}
-% \begin{macro}{\l_@@_patch_replacement_tl}
+% \begin{macro}{\l_@@_param_text_tl}
+% \begin{macro}{\l_@@_replace_text_tl}
% The prefixes and parameters of the definition for the macro being
% patched.
% \begin{macrocode}
\tl_new:N \l_@@_patch_prefixes_tl
-\tl_new:N \l_@@_patch_param_text_tl
-\tl_new:N \l_@@_patch_replacement_tl
+\tl_new:N \l_@@_param_text_tl
+\tl_new:N \l_@@_replace_text_tl
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\c_@@_hash_tl}
+% A constant token list that contains two parameter tokens.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_hash_tl { # # }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_exp_not:NN}
+% \begin{macro}{\@@_def_cmd:w}
+% Two temporary macros that change depending on the macro being
+% patched.
+% \begin{macrocode}
+\cs_new_eq:NN \@@_exp_not:NN ?
+\cs_new_eq:NN \@@_def_cmd:w ?
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\q_@@_recursion_tail,\q_@@_recursion_stop}
+% Internal quarks for recursion: they can't appear in any macro being
+% patched.
+% \begin{macrocode}
+\quark_new:N \q_@@_recursion_tail
+\quark_new:N \q_@@_recursion_stop
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\g_@@_delayed_patches_prop}
% A list containing the patches delayed to |\begin{document}|, so that
% patching is not attempted twice.
@@ -670,13 +690,71 @@
%
%
%
+%
% \begin{macro}{\@@_patch_expand_redefine:NNnn}
+% \begin{macro}{\@@_redefine_with_hooks:Nnnn}
% \begin{macro}[EXP]{\@@_make_prefixes:w}
% Now the real action begins. Here we have in |#1| a boolean
-% indicating if the command has a |[|\ldots|]|-delimited argument, in
-% |#2| the command control sequence, in |#3| the name of the command
-% (note that |#1|${}\ne{}$|\csname#2\endcsname| at this point!), and
-% in |#4| the hook position, either |before| or |after|.
+% indicating if the command has a leading |[|\ldots|]|-delimited
+% argument, in |#2| the command control sequence, in |#3| the name of
+% the command (note that |#1|${}\ne{}$|\csname#2\endcsname| at this
+% point!), and in |#4| the hook position, either |before| or |after|.
+%
+% \changes{v1.0f}{2021/10/20}
+% {Correct patching by expansion+redefinition when the macro
+% contains a parameter tokens (gh/697).}
+% Patching with expansion+redefinition is trickier than it looks like
+% at first glance. Suppose the simple definition:
+% \begin{verbatim}
+% \def\foo#1{#1##2}
+% \end{verbatim}
+% When defined, its \meta{replacement text} will be a token list
+% containing:
+% \begin{quote}
+% \itshape
+% out\_param |1|, mac\_param |#|, character |2|
+% \end{quote}
+%
+% Then, after expanding \cs{foo}|{##1}| (here |##| denotes a single
+% |#|$_6$) we end up with a token list with \textit{out\_param}~|1|
+% replaced:
+% \begin{quote}
+% \itshape
+% mac\_param |#|, character |1|, mac\_param |#|, character |2|
+% \end{quote}
+% that is, the definition would be:
+% \begin{verbatim}
+% \def\foo#1{#1#2}
+% \end{verbatim}
+% which obviously fails, because the original input in the definition
+% was |##| but \TeX{} reduced that to a single parameter token |#|$_6$
+% when carrying out the definition. That leaves no room for a clever
+% solution with (say) \cs{unexpanded}, because anything that would
+% double the second |#|$_6$, would also (incorrectly) double the
+% first, so there's not much to do other than a manual solution.
+%
+% There are three cases we can distinguish to make things hopefully
+% faster on simpler cases:
+% \begin{enumerate}
+% \item a macro with no parameters;
+% \item a macro with no parameter tokens in its definition;
+% \item a macro with parameters \emph{and} parameter tokens.
+% \end{enumerate}
+%
+% The first case is trivial: if the macro has no parameters, we can
+% just use \cs{unexpanded} around it, and if there is a parameter
+% token in it, it is handled correctly (the macro can be treated as a
+% |tl| variable).
+%
+% The second case requires looking at the \meta{replacement text} of
+% the macro to see if it has a parameter token in there. If it does
+% not, then there is no worry, and the macro can be redefined normally
+% (without \cs{unexpanded}).
+%
+% The third case, as usual, is the devious one. Here we'll have to
+% loop through the definition token by token, and double every
+% parameter token, so that this case can be handled like the previous
+% one.
% \begin{macrocode}
\cs_new_protected:Npn \@@_patch_expand_redefine:NNnn #1 #2 #3 #4
{
@@ -696,36 +774,93 @@
% \end{macrocode}
% Now build two token lists:
% \begin{description}
-% \item[\cs{l_@@_patch_param_text_tl}] will contain the
+% \item[\cs{l_@@_param_text_tl}] will contain the
% \meta{parameter text} to be used when redefining the macro. It
% should be identical to the \meta{parameter text} used when
% originally defining that macro.
-% \item[\cs{l_@@_patch_replacement_tl}] will contain braced pairs of
-% |#|$_{12}$\meta{num} to feed to the macro when expanded. This
-% token list as well as the previous will have the first item
+% \item[\cs{l_@@_replace_text_tl}] will contain braced pairs of
+% \cs{c_@@_hash_tl}\meta{num} to feed to the macro when expanded.
+% This token list as well as the previous will have the first item
% surrounded by |[|\ldots|]| in the case of an optional argument.
% \end{description}
+%
+% The use of \cs{c_@@_hash_tl} here is to differentiate actual
+% parameters in the macro from parameter tokens in the original
+% definition of the macro. Later on, \cs{c_@@_hash_tl} is either
+% replaced by actual parameter tokens, or expanded into them.
% \begin{macrocode}
\int_compare:nNnTF { \l_@@_patch_num_args_int } > { \c_zero_int }
{
- \tl_set:Nx \l_@@_patch_param_text_tl
- { \bool_if:NTF #1 { [####1] } { ####1 } }
- \tl_set:Nx \l_@@_patch_replacement_tl
- { \bool_if:NTF #1 { [####1] } { {####1} } }
+% \end{macrocode}
+% We'll first check if the command has any parameter token in its
+% definition (feeding it empty arguments), and set \cs{@@_exp_not:n}
+% accordingly. \cs{@@_exp_not:n} will be used later to either leave
+% \cs{c_@@_hash_tl} or expand it, and also to remember the result of
+% \cs{@@_if_has_hash:nTF} to avoid testing twice (the test can be
+% rather slow).
+% \begin{macrocode}
+ \tl_set:Nx \l_@@_tmpa_tl { \bool_if:NTF #1 { [ ] } { { } } }
+ \int_step_inline:nnn { 2 } { \l_@@_patch_num_args_int }
+ { \tl_put_right:Nn \l_@@_tmpa_tl { { } } }
+ \exp_args:NNo \exp_args:No \@@_if_has_hash:nTF
+ { \exp_after:wN #2 \l_@@_tmpa_tl }
+ { \cs_set_eq:NN \@@_exp_not:n \exp_not:n }
+ { \cs_set_eq:NN \@@_exp_not:n \use:n }
+ \cs_set_protected:Npn \@@_tmp:w ##1 ##2
+ {
+ ##1 \l_@@_param_text_tl { \use:n ##2 }
+ ##1 \l_@@_replace_text_tl { \@@_exp_not:n {##2} }
+ }
+% \end{macrocode}
+% Here we'll conditionally add |[|\ldots|]| around the first
+% parameter:
+% \begin{macrocode}
+ \bool_if:NTF #1
+ { \@@_tmp:w \tl_set:Nx { [ \c_@@_hash_tl 1 ] } }
+ { \@@_tmp:w \tl_set:Nx { { \c_@@_hash_tl 1 } } }
+% \end{macrocode}
+% Then, for every parameter from the second, just add it normally:
+% \begin{macrocode}
\int_step_inline:nnn { 2 } { \l_@@_patch_num_args_int }
+ { \@@_tmp:w \tl_put_right:Nx { { \c_@@_hash_tl ##1 } } }
+% \end{macrocode}
+% Now, if the command has any parameter token in its definition
+% (then \cs{@@_exp_not:n} is \cs{exp_not:n}), call
+% \cs{@@_double_hashes:n} to double them, and replace every
+% \cs{c_@@_hash_tl} by |#|:
+% \begin{macrocode}
+ \tl_set:Nx \l_@@_replace_text_tl
+ { \exp_not:N #2 \exp_not:V \l_@@_replace_text_tl }
+ \tl_set:Nx \l_@@_replace_text_tl
{
- \tl_put_right:Nn \l_@@_patch_param_text_tl { ## ####1 }
- \tl_put_right:Nn \l_@@_patch_replacement_tl { { ## ####1 } }
+ \token_if_eq_meaning:NNTF \@@_exp_not:n \exp_not:n
+ { \exp_args:NNV \exp_args:No \@@_double_hashes:n }
+ { \exp_args:NV \exp_not:o }
+ \l_@@_replace_text_tl
}
+% \end{macrocode}
+% And now, set a few auxiliaries for the case that the macro has
+% parameters, so it won't be passed through \cs{unexpanded} (twice):
+% \begin{macrocode}
+ \cs_set_eq:NN \@@_def_cmd:w \tex_gdef:D
+ \cs_set_eq:NN \@@_exp_not:NN \prg_do_nothing:
}
{
- \tl_clear:N \l_@@_patch_param_text_tl
- \tl_clear:N \l_@@_patch_replacement_tl
+% \end{macrocode}
+% In the case the macro has no parameters, we'll treat it as a token
+% list and things are much simpler (expansion control looks a bit
+% complicated, but it's just a pair of \cs{exp_not:N} preventing
+% another \cs{exp_not:n} from expanding):
+% \begin{macrocode}
+ \tl_clear:N \l_@@_param_text_tl
+ \tl_set_eq:NN \l_@@_replace_text_tl #2
+ \cs_set_eq:NN \@@_def_cmd:w \tex_xdef:D
+ \cs_set:Npn \@@_exp_not:NN ##1 { \exp_not:N ##1 \exp_not:N }
}
% \end{macrocode}
-% Finally, before redefining, we need to also get the prefixes used
-% when defining the command. Here we ensure that the \tn{escapechar}
-% is printable, otherwise a macro defined with prefixes
+% Before redefining, we need to also get the prefixes used when
+% defining the command. Here we ensure that the \tn{escapechar} is
+% printable, otherwise a macro defined with prefixes
% |\protected \long| will have it \tn{meaning} printed as
% |protectedlong|, making life unnecessarily complicated. Here the
% \tn{escapechar} is changed to |/|, then we loop between pairs of
@@ -740,34 +875,47 @@
{ \exp_not:N \@@_make_prefixes:w \cs_prefix_spec:N #2 / / }
}
% \end{macrocode}
-% Now that all the needed tools are ready, without further ado we'll
-% redefine the command |#2|. The definition uses the prefixes
-% gathered in \cs{l_@@_patch_prefixes_tl}, a primitive \cs{tex_def:D}
-% to avoid adding extra prefixes, and the \meta{parameter text} from
-% \cs{l_@@_patch_param_text_tl}.
-%
-% Then finally, in the body of the definition, we insert
-% \hook{cmd/\#3/before} if |#4| is |before|, the code of the
-% command expanded once grabbing the parameters in
-% \cs{l_@@_patch_replacement_tl}, and \hook{cmd/\#3/after} if |#4| is
-% |after|.
+% Finally, call \cs{@@_redefine_with_hooks:Nnnn} with the macro being
+% redefined in |#1|, then \cs{UseHook}|{cmd/<name>/before}| in |#2| or
+% \cs{UseHook}|{cmd/<name>/after}| in |#3| (one is always empty), and
+% in |#4| the \meta{replacement text} of the macro.
% \begin{macrocode}
\use:x
{
- \l_@@_patch_prefixes_tl \tex_def:D
- \exp_not:N #2 \exp_not:V \l_@@_patch_param_text_tl
- {
- \str_if_eq:nnT {#4} { before }
- { \exp_not:N \UseHook { cmd / #3 / #4 } }
- \exp_args:No \exp_not:o
- { \exp_after:wN #2 \l_@@_patch_replacement_tl }
- \str_if_eq:nnT {#4} { after }
- { \exp_not:N \UseHook { cmd / #3 / #4 } }
- }
+ \@@_redefine_with_hooks:Nnnn \exp_not:N #2
+ \str_if_eq:nnTF {#4} { after }
+ { \use_ii_i:nn }
+ { \use:nn }
+ { { \@@_exp_not:NN \exp_not:N \UseHook { cmd / #3 / #4 } } }
+ { { } }
+ { \@@_exp_not:NN \exp_not:V \l_@@_replace_text_tl }
}
}
% \end{macrocode}
%
+% Now that all the needed tools are ready, without further ado we'll
+% redefine the command. The definition uses the prefixes gathered in
+% \cs{l_@@_patch_prefixes_tl}, a primitive \cs{@@_def_cmd:w} (which is
+% \cs{tex_gdef:D} or \cs{tex_xdef:D}) to avoid adding extra prefixes,
+% and the \meta{parameter text} from \cs{l_@@_param_text_tl}.
+%
+% Then finally, in the body of the definition, we insert |#2|, which
+% is \hook{cmd/\#1/before} or empty, |#4| which is the
+% \meta{replacement text}, and |#3| which is \hook{cmd/\#1/after} or
+% empty.
+%
+% \changes{v1.0e}{2021/09/28}
+% {Make patching of commands a global operation (gh/674)}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_redefine_with_hooks:Nnnn #1 #2 #3 #4
+ {
+ \l_@@_patch_prefixes_tl
+ \exp_after:wN \@@_def_cmd:w
+ \exp_after:wN #1 \l_@@_param_text_tl
+ { #2 #4 #3 }
+ }
+% \end{macrocode}
+%
% Here's the auxiliary that makes the prefix control sequences for the
% redefinition. Each item has to be \cs{tl_trim_spaces:n}'d because
% the last item (and not any other) has a trailing space.
@@ -783,11 +931,125 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
%
%
+% Here are some auxiliaries for the contraption above.
%
+% \begin{macro}[pTF]{\@@_if_has_hash:n}
+% \begin{macro}{\@@_if_has_hash:w,\@@_if_has_hash_check:w}
+% \cs{@@_if_has_hash:nTF} searches the token list |#1| for a catcode~6
+% token, and if any is found, it returns |true|, and |false|
+% otherwise. The searching doesn't care about preserving groups or
+% spaces: we can ignore those safely (braces are removed) so that
+% searching is as fast as possible.
+% \begin{macrocode}
+\prg_new_conditional:Npnn \@@_if_has_hash:n #1 { TF }
+ { \@@_if_has_hash:w #1 ## \s_@@_mark }
+\cs_new:Npn \@@_if_has_hash:w #1
+ {
+ \tl_if_single_token:nTF {#1}
+ {
+ \token_if_eq_catcode:NNTF ## #1
+ { \@@_if_has_hash_check:w }
+ { \@@_if_has_hash:w }
+ }
+ { \@@_if_has_hash:w #1 }
+ }
+\cs_new:Npn \@@_if_has_hash_check:w #1 \s_@@_mark
+ { \tl_if_empty:nTF {#1} { \prg_return_false: } { \prg_return_true: } }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
%
%
+% \begin{macro}[rEXP]{\@@_double_hashes:n}
+% \begin{macro}[rEXP]{
+% \@@_double_hashes:w,
+% \@@_double_hashes_output:N,
+% \@@_double_hashes_stop:w,
+% \@@_double_hashes_group:n,
+% \@@_double_hashes_space:w,
+% }
+% \cs{@@_double_hashes:n} loops through the token list |#1| and
+% duplicates any catcode~6 token, and expands tokens \cs{ifx}-equal to
+% \cs{c_@@_hash_tl}, and leaves all other tokens \cs{notexpanded} with
+% \cs{exp_not:N}. Unfortunately pairs of explicit catcode~1 and
+% catcode~2 character tokens are normalised to |{|$_1$ and |}|$_1$
+% because it's not feasible to expandably detect the character code
+% (\emph{maybe} it could be done using something along the lines of
+% \url{https://tex.stackexchange.com/a/527538}, but it's far too much
+% work for close to zero benefit).
+%
+% \cs{@@_double_hashes:w} is the tail-recursive loop macro, that tests
+% which of the three types of item is in the head of the token list.
+% \begin{macrocode}
+\cs_new:Npn \@@_double_hashes:n #1
+ { \@@_double_hashes:w #1 \q_@@_recursion_tail \q_@@_recursion_stop }
+\cs_new:Npn \@@_double_hashes:w #1 \q_@@_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#1}
+ { \@@_double_hashes_output:N }
+ {
+ \tl_if_head_is_group:nTF {#1}
+ { \@@_double_hashes_group:n }
+ { \@@_double_hashes_space:w }
+ }
+ #1 \q_@@_recursion_stop
+ }
+% \end{macrocode}
+%
+% \cs{@@_double_hashes_output:N} checks for the end of the token list,
+% then checks if the token is \cs{c_@@_hash_tl}, and if so just leaves
+% it.
+% \begin{macrocode}
+\cs_new:Npn \@@_double_hashes_output:N #1
+ {
+ \if_meaning:w \q_@@_recursion_tail #1
+ \@@_double_hashes_stop:w
+ \fi:
+ \if_meaning:w \c_@@_hash_tl #1
+% \end{macrocode}
+% (this \cs{use_i:nnnn} uses \cs{fi:} and consumes \cs{use:n}, the
+% whole \cs{if_catcode:w} block, and the \cs{exp_not:N}, leaving just
+% |#1| which is \cs{c_@@_hash_tl}.)
+% \begin{macrocode}
+ \use_i:nnnn
+ \fi:
+ \use:n
+ {
+% \end{macrocode}
+% If |#1| is not \cs{c_@@_hash_tl}, then check if its catcode is~6,
+% and if so, leave it doubled in \cs{exp_not:n} and consume the
+% following |\exp_not:N #1|.
+% \begin{macrocode}
+ \if_catcode:w ## \exp_not:N #1
+ \exp_after:wN \use_ii:nnnn
+ \fi:
+ \use_none:n
+ { \exp_not:n { #1 #1 } }
+ }
+% \end{macrocode}
+% If both previous tests returned |false|, then leave the token
+% unexpanded and resume the loop.
+% \begin{macrocode}
+ \exp_not:N #1
+ \@@_double_hashes:w
+ }
+\cs_new:Npn \@@_double_hashes_stop:w #1 \q_@@_recursion_stop { \fi: }
+% \end{macrocode}
+%
+% Dealing with spaces and grouped tokens is trivial:
+% \begin{macrocode}
+\cs_new:Npn \@@_double_hashes_group:n #1
+ { { \@@_double_hashes:n {#1} } \@@_double_hashes:w }
+\exp_last_unbraced:NNo
+\cs_new:Npn \@@_double_hashes_space:w \c_space_tl
+ { ~ \@@_double_hashes:w }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
%
% \subsubsection{Patching by retokenization}
%
@@ -1061,8 +1323,11 @@
% \end{macrocode}
% And to close, copy the newly-defined command into the old name and
% the patching is finally completed:
+%
+% \changes{v1.0e}{2021/09/28}
+% {Make patching of commands a global operation (gh/674)}
% \begin{macrocode}
- \cs_set_eq:NN #1 \kerneltmpDoNotUse
+ \cs_gset_eq:NN #1 \kerneltmpDoNotUse
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex-dev/base/ltfilehook-code.pdf b/macros/latex-dev/base/ltfilehook-code.pdf
index 01d8a52583..732b6c1626 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 ed7c6213e6..497a13eaa5 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/ltfiles.dtx b/macros/latex-dev/base/ltfiles.dtx
index 4dee83c4d6..4c24716df6 100644
--- a/macros/latex-dev/base/ltfiles.dtx
+++ b/macros/latex-dev/base/ltfiles.dtx
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltfiles.dtx}
- [2021/08/25 v1.2o LaTeX Kernel (File Handling)]
+ [2021/10/14 v1.2p LaTeX Kernel (File Handling)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltfiles.dtx}
@@ -823,8 +823,16 @@
%
% \changes{v1.2j}{2020/10/04}{Quotes around the aux file name removed,
% they are not needed and upset BibTeX (gh/400)}
+% \changes{v1.2p}{2021/10/14}{Warn about use in preamble}
% \begin{macrocode}
\def\@include#1 {%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifx\@nodocument\relax
+% \end{macrocode}
+%
+% \begin{macrocode}
\clearpage
\if@filesw
\immediate\write\@mainaux{\string\@input{#1.aux}}%
@@ -892,7 +900,15 @@
\deadcycles\z@
\@nameuse{cp@#1}%
\fi
- \let\@auxout\@mainaux}
+ \let\@auxout\@mainaux
+% \end{macrocode}
+%
+% \begin{macrocode}
+\else
+\@latex@warning{%
+ \noexpand\include should only be used after \string\begin{document}}%
+\@input@{#1}%
+\fi}
% \end{macrocode}
%
% \changes{v1.2o}{2021/08/25}{Declare non-generic include hooks}
diff --git a/macros/latex-dev/base/ltfinal.dtx b/macros/latex-dev/base/ltfinal.dtx
index 5d77fb2e83..40017a205a 100644
--- a/macros/latex-dev/base/ltfinal.dtx
+++ b/macros/latex-dev/base/ltfinal.dtx
@@ -1246,32 +1246,33 @@
% \end{macro}
% \end{macro}
%
-% \subsection{Prepare for supporting PDF management in backends}
+% \subsection{Preparation for supporting PDF in backends}
%
-% At the current point in time support for PDF management in
-% backends is not part of \LaTeX{} core but provided by external
+% At the current point in time, basic support for PDF in
+% backends is not part of \LaTeX{} core; it is provided by external
% packages. At some time in the future that work will be placed
% into the kernel but for now it is separate and has to be
% explicitly loaded in the document.
%
-% There is a command \cs{IfPDFManagementActiveTF} in that code
-% which checks if the PDF management code is activated, which can
-% be used by packages to execute different code branches depending
-% on the state.
+% In that code there is a command \cs{IfPDFManagementActiveTF}
+% which can be used by packages in order to execute different
+% code depending on the whether this basic backend support is loaded.
%
-% To make this also work properly if the external package is not
-% loaded at all this command is already made available in the
-% kernel (with a trivial definition) so that other packages can
-% query the state in all circumstances. Once the PDF management
-% support moves to the kernel this definition here will vanish
-% again or rather will be replaced by a real test.
+% To make this also work properly when this external package is not
+% loaded at all, we here add this command already in the
+% kernel (with a trivial definition); thus any package can
+% query this loading state in all circumstances.
+% Once this basic PDF backend
+% support gets moved to the kernel, this definition will vanish
+% again from here or, rather, it will be replaced by a real test.
%
-%
% \begin{macro}{\IfPDFManagementActiveTF}
-% While the PDF management code is not loaded, the test will
-% always return the false branch. Once this code is loaded, it
-% is replaced by a real test (as then it is possible that the
-% management code is activate or not activated).
+% So long as the code for the basic backend support for PDF is not
+% loaded, the test that is implicit here will
+% always return the false branch.
+% Once this code is loaded, this definition will get
+% replaced by a real test (as it is then possible that the
+% management code is either activated or not activated).
% \changes{v2.2p}{2021/08/08}{Default definition added (gh/640)}
% \begin{macrocode}
\let \IfPDFManagementActiveTF \@secondoftwo
diff --git a/macros/latex-dev/base/ltfloat.dtx b/macros/latex-dev/base/ltfloat.dtx
index ed25db3ed1..ac3b641817 100644
--- a/macros/latex-dev/base/ltfloat.dtx
+++ b/macros/latex-dev/base/ltfloat.dtx
@@ -31,7 +31,7 @@
%
%<*driver>
% \fi
-\ProvidesFile{ltfloat.dtx}[2021/03/03 v1.2f LaTeX Kernel (Floats)]
+\ProvidesFile{ltfloat.dtx}[2021/10/14 v1.2g LaTeX Kernel (Floats)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltfloat.dtx}
@@ -1510,10 +1510,12 @@
% {Missing percent, again}
% \changes{v1.2e}{2021/02/10}{Explicitly run \cs{par} at the end of footnote text
% in preparation for paragraph hooks}
+% \changes{v1.2g}{2021/10/14}
+% {Explicitly set \cs{@currentcounter} (gh/687)}
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2021/06/01}%
+%<latexrelease>\IncludeInRelease{2021/11/15}%
%<latexrelease> {\@footnotetext}{footnotetext tagging}%
\long\def\@footnotetext#1{\insert\footins{%
\reset@font\footnotesize
@@ -1521,6 +1523,7 @@
\splittopskip\footnotesep
\splitmaxdepth \dp\strutbox \floatingpenalty \@MM
\hsize\columnwidth \@parboxrestore
+ \def\@currentcounter{footnote}%
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark
}%
@@ -1534,6 +1537,26 @@
% \end{macrocode}
%
% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2021/06/01}%
+%<latexrelease> {\@footnotetext}{footnotetext tagging}%
+%<latexrelease>\long\def\@footnotetext#1{\insert\footins{%
+%<latexrelease> \reset@font\footnotesize
+%<latexrelease> \interlinepenalty\interfootnotelinepenalty
+%<latexrelease> \splittopskip\footnotesep
+%<latexrelease> \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+%<latexrelease> \hsize\columnwidth \@parboxrestore
+%<latexrelease> \protected@edef\@currentlabel{%
+%<latexrelease> \csname p@footnote\endcsname\@thefnmark
+%<latexrelease> }%
+%<latexrelease> \color@begingroup
+%<latexrelease> \@makefntext{%
+%<latexrelease> \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+%<latexrelease> \par
+%<latexrelease> \color@endgroup}}%
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+% \begin{macrocode}
%<latexrelease>\IncludeInRelease{0000/00/00}%
%<latexrelease> {\@footnotetext}{footnotetext tagging}%
%<latexrelease>
diff --git a/macros/latex-dev/base/ltfssdcl.dtx b/macros/latex-dev/base/ltfssdcl.dtx
index 9710d54382..4f2cabd613 100644
--- a/macros/latex-dev/base/ltfssdcl.dtx
+++ b/macros/latex-dev/base/ltfssdcl.dtx
@@ -36,7 +36,7 @@
%
%
\ProvidesFile{ltfssdcl.dtx}
- [2021/02/15 v3.0w LaTeX Kernel (NFSS Declarative Interface)]
+ [2021/10/15 v3.0y LaTeX Kernel (NFSS Declarative Interface)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -454,25 +454,88 @@
% \end{macrocode}
% \end{macro}
%
+%
+%
+%
+% \begin{macro}{\c@localalphabets}
+% \changes{v3.0x}{2021/09/26}{Counter added for (gh/676)}
+% To avoid hitting the ``no more math fams available'' limit of 16, we
+% keep a defined number of math alphabets flexible/local. If we have to
+% allocate any of those we roll back the allocation after the
+% formula has ended, so the next formula can use other alphabets in
+% the slot(s). This makes the processing a bit slower if you are
+% working at the limit, but that is better than dying with ``out of memory''.
+% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2021/11/15}
+%<latexrelease> {\document@select@group}{\document@select@group}%
+%<*2ekernel|latexrelease>
+% \end{macrocode}
+% We don't really undo the declaration on rollback (as that would
+% be hard to maintain), so rolling
+% forward needs to check if the declaration was already made.
+% \begin{macrocode}
+\ifx\c@localmathalphabets\@undefined
+% \end{macrocode}
+% There is no need to have this counter as part of the include
+% checkpoints, given that it makes little sense to alter its
+% settings mid document. All we want is the ability to change it
+% using the \cs{setcounter} interface.
+%
+% By default we keep two math fams flexible.
+% \begin{macrocode}
+ \newcount\c@localmathalphabets
+ \setcounter{localmathalphabets}{2}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+%
% \begin{macro}{\document@select@group}
-% We surround |\select@group| with braces so that functions using it
-% can be used directly after |_| or |^|.
-% \changes{v2.1p}{1994/12/10}{Surround with braces (add fourth arg)}
-% \changes{v2.1q}{1995/04/02}{fix problem for pr/1275}
+% The \cs{document@select@group} command is the version of
+% \cs{select@group} (inside math versions) that is used in the
+% document body to set up math alphabets (if used).
+%
% \changes{v3.0g}{1997/11/20}
% {(DPC) inline use of \cs{stepcounter} (faster, and saves a csname
% per math version as no reset list)}
% \changes{v3.0q}{2015/03/18}{Introduce \cs{e@mathgroup@top}}
% \begin{macrocode}
-%</2ekernel>
-%<latexrelease>\IncludeInRelease{2020/10/01}
-%<latexrelease> {\document@select@group}{\document@select@group}%
-%<*2ekernel|latexrelease>
\def\document@select@group#1#2#3#4{%
\ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi
{%
\ifmmode
+% \end{macrocode}
+% We first check if there is still room for allocating another
+% mathgroup. If there is, we check if it can be globally allocated
+% or if we have reached the limit which is given by
+% \cs{e@mathgroup@top} with \cs{c@localmathalphabets} subtracted.
+%
+% \changes{v3.0x}{2021/09/26}{Test if we should freeze the version (gh/676)}
+% \begin{macrocode}
\ifnum\csname c@mv@\math@version\endcsname<\e@mathgroup@top
+ \ifnum \numexpr\e@mathgroup@top-\c@localmathalphabets
+ >\csname c@mv@\math@version\endcsname
+ \else
+% \end{macrocode}
+% If we are past this point we freeze the current state of the math
+% version so that we can return to it after the formula has
+% ended. Of course, that should be done only once, so we check if
+% \cs{mv@\meta{version}@frozen} already exists.
+% \begin{macrocode}
+ \ifcsname mv@\math@version @frozen\endcsname \else
+% \end{macrocode}
+% We have to pass the current value of \cs{math@version} not the
+% macro itself, because some of the processing is delayed to a
+% point where the value may have changed again---not doing this
+% caused a puzzling error in one setup.
+% \begin{macrocode}
+ \expandafter\freeze@math@version\expandafter{\math@version}%
+ \fi
+ \fi
\begingroup
\escapechar\m@ne
\getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3%
@@ -486,16 +549,21 @@
\global\advance\csname c@mv@\math@version\endcsname\@ne
\else
\let#1\relax
- \@latex@error{Too many math alphabets used
- in version \math@version}%
+ \@latex@error{Too many math alphabets used in
+ version \math@version}%
\@eha
\fi
% \end{macrocode}
-% extra \cs{expandafter} to remove the \cs{expandafter} added below
-% \changes{v3.0w}{2021/02/115}{fix for (gh/501)}
+% Extra \cs{expandafter} to remove the \cs{expandafter} added below
+% \changes{v3.0w}{2021/02/15}{fix for (gh/501)}
% \begin{macrocode}
\else \expandafter\expandafter\expandafter\non@alpherr\fi
% \end{macrocode}
+% We surround |\select@group| with braces so that functions using it
+% can be used directly after |_| or |^|.
+% \changes{v2.1p}{1994/12/10}{Surround with braces (add fourth arg)}
+% \changes{v2.1q}{1995/04/02}{fix problem for pr/1275}
+%
% If the legacy interface is used, e.g., \verb=$\sf -1$= the math
% alphabet \verb=#1= does not take an argument so we better do not
% surround \verb=#4= with braces, because then we get
@@ -507,8 +575,142 @@
\expandafter#1\ifx\math@bgroup\bgroup{#4}\else#4\fi
}%
}
+% \end{macrocode}
+%
+%
+%
+% \begin{macro}{\freeze@math@version}
+% \changes{v3.0x}{2021/09/26}{Macro added for (gh/676)}
+% This command stores the current state of the math version and sets
+% things up to return to it after each formula from now on. We use
+% L3 programming layer code to set it up.
+% \begin{macrocode}
+\ExplSyntaxOn
+\cs_new_protected:Npn\freeze@math@version #1 {
+% \end{macrocode}
+% Save the current \cs{mv@\meta{version}} code and the number of
+% allocated mathgroups inside.
+% \begin{macrocode}
+ \@font@info{Freeze~ math~ alphabet~ allocation~ in~ version~
+ #1.\MessageBreak
+ Allocated~math~groups:~\int_use:c{ c@mv@ #1 }~
+ (local:~ \int_use:N\c@localmathalphabets) }
+ \cs_gset_eq:cc { mv@#1@frozen }{ mv@#1 }
+ \tl_gset:cx { g__nfss_frozen_mv_ #1 _tl }{ \int_use:c { c@mv@#1 } }
+% \end{macrocode}
+% Doing the reset the first time, we wait until we are out of
+% math mode, so we use some recursive \cs{group_insert_after:N} for this
+% before we execute \cs{mv@\meta{version}@reset}.
+% \begin{macrocode}
+ \group_insert_after:N \__nfss_init_mv_freeze:N \exp_after:wN
+ \group_insert_after:N \cs:w mv@#1@reset \cs_end:
+% \end{macrocode}
+% The \cs{check@mathfonts} is called at the very beginning of each
+% math formula, so it is a good way to hook in the resetting.
+% Again that has to happen after the formula has ended, but we know
+% because of the place where \cs{check@mathfonts} is used
+% that a single \cs{aftergoup} is sufficient.
+% \begin{macrocode}
+ \tl_gput_right:No \check@mathfonts
+ {
+ \exp_after:wN \group_insert_after:N \cs:w mv@#1@reset \cs_end:
+ }
+% \end{macrocode}
+% Here is the definition of \cs{mv@\meta{version}@reset}. If there
+% has been no new math alphabet allocation, doing a reset would
+% just cause a lot of unnecessary processing, so we do a quick
+% check upfront for this.
+% \begin{macrocode}
+ \cs_gset:cpn{mv@#1@reset}
+ {
+ \int_compare:nNnTF { \int_use:c{c@mv@#1} } >
+ { \tl_use:c{g__nfss_frozen_mv_ #1 _tl} }
+ {
+ \@font@info{Undo~ math~ alphabet~ allocation~ in~ version~ #1}
+% \end{macrocode}
+% If the undo is necessary, we restore the \cs{mv@\meta{version}} code.
+% \begin{macrocode}
+ \cs_gset_eq:cc { mv@#1 }{ mv@#1@frozen }
+ \int_gset:cn { c@mv@#1 }{ \tl_use:c {g__nfss_frozen_mv_ #1 _tl} }
+% \end{macrocode}
+% But we also should undo changes to the math alphabet
+% definitions. We therefore run this code with a modified
+% definition for \cs{getanddefine@fonts} because there is no need
+% to do anything to the symbol fonts that are permanently allocated.
+% \begin{macrocode}
+ \group_begin:
+ \cs_set_eq:NN \getanddefine@fonts \use_none:nn
+ \use:c {mv@#1}
+ \group_end:
+ }
+ {
+% \end{macrocode}
+% If there was no change, we report that in the log (but this
+% branch could go completely).
+% \begin{macrocode}
+ \@font@info{No~ math~ alphabet~ change~ to~ frozen~ version~ #1}
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\__nfss_init_mv_freeze:N}
+% \changes{v3.0x}{2021/09/26}{Macro added for (gh/676)}
+% To do the initial freeze in a safe place, we check if we are in
+% math mode and if so try again after the group has ended by pushing
+% the command and its single token argument with two
+% \cs{group_insert_after:N}s after the current group. If we are no longer in
+% math mode we bypass the
+% conditional and so the next token is our argument
+% which is then finally executed.
+% \begin{macrocode}
+\cs_new_protected:Npn \__nfss_init_mv_freeze:N #1 {%
+ \mode_if_math:T { \group_insert_after:N \__nfss_init_mv_freeze:N
+ \group_insert_after:N } #1
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{2020/10/01}
+%<latexrelease> {\document@select@group}{\document@select@group}%
+%<latexrelease>
+%<latexrelease>\def\document@select@group#1#2#3#4{%
+%<latexrelease> \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi
+%<latexrelease> {%
+%<latexrelease> \ifmmode
+%<latexrelease> \ifnum\csname c@mv@\math@version\endcsname<\e@mathgroup@top
+%<latexrelease> \begingroup
+%<latexrelease> \escapechar\m@ne
+%<latexrelease> \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3%
+%<latexrelease> \globaldefs\@ne \math@fonts
+%<latexrelease> \endgroup
+%<latexrelease> \expandafter\extract@alph@from@version
+%<latexrelease> \csname mv@\math@version\expandafter\endcsname
+%<latexrelease> \expandafter{\number\csname
+%<latexrelease> c@mv@\math@version\endcsname}%
+%<latexrelease> #1%
+%<latexrelease> \global\advance\csname c@mv@\math@version\endcsname\@ne
+%<latexrelease> \else
+%<latexrelease> \let#1\relax
+%<latexrelease> \@latex@error{Too many math alphabets used
+%<latexrelease> in version \math@version}%
+%<latexrelease> \@eha
+%<latexrelease> \fi
+%<latexrelease> \else \expandafter\expandafter\expandafter\non@alpherr\fi
+%<latexrelease> \expandafter#1\ifx\math@bgroup\bgroup{#4}\else#4\fi
+%<latexrelease> }%
+%<latexrelease>}
+%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{2015/01/01}
%<latexrelease> {\document@select@group}{\document@select@group}%
%<latexrelease>
@@ -653,9 +855,36 @@
%
% \begin{macro}{\DeclareMathVersion}
% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/11/15}%
+%<latexrelease> {\DeclareMathVersion}{local alphabets}%
\def\DeclareMathVersion#1{%
+% \end{macrocode}
+% When declaring a new math version we need to instantiate an L3
+% variable that is used when we freeze the version, because too many
+% alphabets got allocated. If we don't do this, L3 programming layer
+% complains if it is run in checking mode.
+% \changes{v3.0y}{2021/10/15}{Initialize variable for freezing
+% math version (gh/676)}
+% \begin{macrocode}
+ \@namedef{g__nfss_frozen_mv_#1_tl}{}%
+% \end{macrocode}
+%
+% \begin{macrocode}
\expandafter\new@mathversion\csname mv@#1\endcsname}
\@onlypreamble\DeclareMathVersion
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\DeclareMathVersion}{local alphabets}%
+%<latexrelease>\def\DeclareMathVersion#1{%
+%<latexrelease> \expandafter\new@mathversion\csname mv@#1\endcsname}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex-dev/base/lthooks-code.pdf b/macros/latex-dev/base/lthooks-code.pdf
index 8f563f3955..63fecb0784 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 9f6df1b13b..575ef8ddfa 100644
--- a/macros/latex-dev/base/lthooks-doc.pdf
+++ b/macros/latex-dev/base/lthooks-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lthooks.dtx b/macros/latex-dev/base/lthooks.dtx
index 3969a2be56..5b3d80e984 100644
--- a/macros/latex-dev/base/lthooks.dtx
+++ b/macros/latex-dev/base/lthooks.dtx
@@ -31,8 +31,8 @@
%%% From File: lthooks.dtx
%
% \begin{macrocode}
-\def\lthooksversion{v1.0r}
-\def\lthooksdate{2021/09/06}
+\def\lthooksversion{v1.0s}
+\def\lthooksdate{2021/09/28}
% \end{macrocode}
%
%<*driver>
@@ -959,13 +959,14 @@
% \begin{syntax}
% \cs{hook_activate_generic:n} \Arg{hook}
% \end{syntax}
-% Like \cs{hook_new:n} but does nothing if the hook was previously
-% declared with \cs{hook_new:n}. This declaration should only be used
-% in special situations, e.g., when a command of another package
-% needs to be altered and it is not clear if for that command a
-% generic \hook{cmd} hook was already explicitly declared before.
-%
-% Normally \cs{hook_new:n} should be used instead.
+% This is like \cs{hook_new:n} but it does nothing if the hook was previously
+% declared with \cs{hook_new:n}. This declaration should be used
+% only in special situations, e.g., when a command from another package
+% needs to be altered and it is not clear whether a
+% generic \hook{cmd} hook (for that command) has been previously
+% explicitly declared.
+%
+% Normally \cs{hook_new:n} should be used instead of this.
% \end{function}
%
%
@@ -3138,10 +3139,13 @@
% component to see if we have to make a reversed hook. In either case
% the function returns \meta{true} for a generic hook and \meta{false}
% in other cases.
+%
+% \changes{v1.0s}{2021/09/28}
+% {Correct usage of older \cs{@@_if_file_hook:wTF} (gh/675)}
% \begin{macrocode}
%<latexrelease>\cs_new_protected:Npn \@@_try_declaring_generic_hook:nNNnn #1
%<latexrelease> {
-%<latexrelease> \@@_if_file_hook:wTF #1 / \s_@@_mark {#1}
+%<latexrelease> \@@_if_file_hook:wTF #1 / \s_@@_mark
%<latexrelease> {
%<latexrelease> \exp_args:Ne \@@_try_declaring_generic_hook_split:nNNnn
%<latexrelease> { \exp_args:Ne \@@_file_hook_normalize:n {#1} }
@@ -4777,10 +4781,12 @@
%<latexrelease> }
% \end{macrocode}
%
+% \changes{v1.0s}{2021/09/28}
+% {Correct usage of older \cs{@@_if_file_hook:wTF} (gh/675)}
% \begin{macrocode}
%<latexrelease>\cs_new_protected:Npn \@@_try_file_hook:n #1
%<latexrelease> {
-%<latexrelease> \@@_if_file_hook:wTF #1 / \s_@@_mark {#1}
+%<latexrelease> \@@_if_file_hook:wTF #1 / \s_@@_mark
%<latexrelease> {
%<latexrelease> \exp_args:Ne \@@_if_usable_use:n
%<latexrelease> { \exp_args:Ne \@@_file_hook_normalize:n {#1} }
diff --git a/macros/latex-dev/base/ltluatex.dtx b/macros/latex-dev/base/ltluatex.dtx
index 2508f5a7cc..258ac48297 100644
--- a/macros/latex-dev/base/ltluatex.dtx
+++ b/macros/latex-dev/base/ltluatex.dtx
@@ -28,7 +28,7 @@
\ProvidesFile{ltluatex.dtx}
%</driver>
%<*tex>
-[2021/08/11 v1.1u
+[2021/10/15 v1.1v
%</tex>
%<plain> LuaTeX support for plain TeX (core)
%<*tex>
@@ -1415,6 +1415,7 @@ local callbacktypes = callbacktypes or {
% \changes{v1.1j}{2019/06/18}{font\_descriptor\_objnum\_provider added}
% \changes{v1.1l}{2020/02/02}{glyph\_info added}
% \changes{v1.1t}{2021/04/18}{input\_level\_string added}
+% \changes{v1.1v}{2021/10/15}{provide\_charproc\_data added}
% \begin{macrocode}
define_font = exclusive,
glyph_info = exclusive,
@@ -1423,6 +1424,7 @@ local callbacktypes = callbacktypes or {
make_extensible = exclusive,
font_descriptor_objnum_provider = exclusive,
input_level_string = exclusive,
+ provide_charproc_data = exclusive,
% \end{macrocode}
% \changes{v1.0m}{2016/02/11}{pdf\_stream\_filter\_callback removed}
% \begin{macrocode}
diff --git a/macros/latex-dev/base/ltluatex.pdf b/macros/latex-dev/base/ltluatex.pdf
index 6eeefd94d4..26bf4b87b9 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/ltmath.dtx b/macros/latex-dev/base/ltmath.dtx
index aadb96fb02..59e0d89a10 100644
--- a/macros/latex-dev/base/ltmath.dtx
+++ b/macros/latex-dev/base/ltmath.dtx
@@ -38,7 +38,7 @@
%<*driver>
% \fi
\ProvidesFile{ltmath.dtx}
- [2021/04/20 v1.2i LaTeX Kernel (Math Setup)]
+ [2021/10/14 v1.2j LaTeX Kernel (Math Setup)]
% \iffalse
%</driver>
%
@@ -915,10 +915,13 @@
% whole display. Note that we can't use \cs{refstepcounter} as this
% results in |\@currentlabel| getting restored at the wrong and
% thus always writing the first label to the \texttt{.aux} file.
+% \changes{v1.2j}{2021/10/14}
+% {Explicitly set \cs{@currentcounter} (gh/687)}
% \begin{macrocode}
\def\eqnarray{%
\stepcounter{equation}%
\def\@currentlabel{\p@equation\theequation}%
+ \def\@currentcounter{equation}%
\global\@eqnswtrue
\m@th
\global\@eqcnt\z@
@@ -1231,10 +1234,13 @@
%
% \begin{environment}{eqnarray}
% The \textsf{eqnarray} environment
+% \changes{v1.2j}{2021/10/14}
+% {Explicitly set \cs{@currentcounter} (gh/687)}
% \begin{macrocode}
\renewenvironment{eqnarray}{%
\stepcounter{equation}%
\def\@currentlabel{\p@equation\theequation}%
+ \def\@currentcounter{equation}%
\global\@eqnswtrue\m@th
\global\@eqcnt\z@
\tabskip\mathindent
diff --git a/macros/latex-dev/base/ltnews.pdf b/macros/latex-dev/base/ltnews.pdf
index 2869b242c9..c972722afe 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/ltnews01.pdf b/macros/latex-dev/base/ltnews01.pdf
index cfcc5d6c60..5e059298a7 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 4d389f4e2c..42d4965665 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/ltnews02.tex b/macros/latex-dev/base/ltnews02.tex
index e1fa2909dc..dfc78e4843 100644
--- a/macros/latex-dev/base/ltnews02.tex
+++ b/macros/latex-dev/base/ltnews02.tex
@@ -38,6 +38,12 @@
\publicationyear{1994}
\publicationissue{2}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -64,7 +70,7 @@ font selection} (\verb|fntguide.tex|) and our change log
(\verb|changes.txt|) for more details.
However, there are two important new packages available for \LaTeX:
-\texttt{inputenc} and AMS-\LaTeX.
+\pkg{inputenc} and AMS-\LaTeX.
\section{Accented input}
@@ -110,17 +116,17 @@ be upwardly compatible with the test version.
It will be divided into two bundles:
\begin{itemize}
- \item the \verb|amsfonts| packages, which give access to
+ \item the \pkg{amsfonts} packages, which give access to
hundreds of new mathematical symbols, and new math fonts
such as blackboard bold and fraktur.
- \item the \verb|amsmath| packages, which provide finer control over
+ \item the \pkg{amsmath} packages, which provide finer control over
mathematical typesetting, such as multi-line subscripts,
enhanced theorem and proof environments,
and improved displayed equations,
\end{itemize}
- For compatibility with older documents, an \verb|amstex| package will be
+ For compatibility with older documents, an \pkg{amstex} package will be
provided.
\section{\LaTeX{} on the internet}
diff --git a/macros/latex-dev/base/ltnews03.pdf b/macros/latex-dev/base/ltnews03.pdf
index 4ad827fbe1..d4d4599f55 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/ltnews03.tex b/macros/latex-dev/base/ltnews03.tex
index f000d66e4d..e555e12df4 100644
--- a/macros/latex-dev/base/ltnews03.tex
+++ b/macros/latex-dev/base/ltnews03.tex
@@ -38,6 +38,14 @@
\publicationyear{1995}
\publicationissue{3}
+
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
+
\begin{document}
\maketitle
@@ -61,20 +69,20 @@ true!
\section{Additional input encodings}
In the last release of \LaTeX{} we distributed a test version of the
-\texttt{inputenc} package which allows the use of input characters
+\pkg{inputenc} package which allows the use of input characters
other than just a--z and A--Z. The package has proved to be robust,
so we are now distributing an expanded version.
The new release comes with a number of input encodings:
\begin{itemize}
-\item \texttt{ascii} the standard encoding,
-\item \texttt{latin1} the ISO Western European alphabet,
-\item \texttt{latin2} the ISO Eastern European alphabet,
-\item \texttt{cp437} the IBM codepage 437,
-\item \texttt{cp850} the IBM codepage 850, and
-\item \texttt{applemac} the Apple Macintosh encoding.
+\item \option{ascii} the standard encoding,
+\item \option{latin1} the ISO Western European alphabet,
+\item \option{latin2} the ISO Eastern European alphabet,
+\item \option{cp437} the IBM codepage 437,
+\item \option{cp850} the IBM codepage 850, and
+\item \option{applemac} the Apple Macintosh encoding.
\end{itemize}
-These can be used by specifying an option to the \texttt{inputenc}
+These can be used by specifying an option to the \pkg{inputenc}
package, for example:
\begin{verbatim}
\usepackage[latin1]{inputenc}
@@ -95,10 +103,10 @@ memory, which is a 2.7\% reduction.
We are currently experimenting with other ways of reducing the size of
\LaTeX. For example, we are experimenting with an option to remove
-the \texttt{picture} and \texttt{tabbing} environments from the
+the \env{picture} and \env{tabbing} environments from the
\LaTeX{} kernel, and to load them from a file the first time they are
used. This should help \LaTeX{} to run on machines with limited
-memory. See \texttt{autoload.txt} for details.
+memory. See \file{autoload.txt} for details.
\section{Distribution and modification}
@@ -110,7 +118,7 @@ systems.
The modification conditions are currently under discussion, and we
would like to hear from anyone interested. Please read
-\texttt{modguide.tex} for more information.
+\file{modguide.tex} for more information.
\section{AMS-\LaTeX\ full release}
@@ -118,7 +126,7 @@ The AMS-\LaTeX\ packages were still in beta test in the December 1994
release of \LaTeX, and the full release came out in January 1995.
AMS-\LaTeX\ is described in the \emph{User's Guide}
-(\texttt{amsldoc.tex}) and in \emph{The \LaTeX{} Companion}.
+(\file{amsldoc.tex}) and in \emph{The \LaTeX{} Companion}.
\section{PostScript fonts}
diff --git a/macros/latex-dev/base/ltnews04.pdf b/macros/latex-dev/base/ltnews04.pdf
index 3e3948c941..99d8bf389e 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/ltnews04.tex b/macros/latex-dev/base/ltnews04.tex
index cbcf151f12..0a313664ba 100644
--- a/macros/latex-dev/base/ltnews04.tex
+++ b/macros/latex-dev/base/ltnews04.tex
@@ -39,6 +39,12 @@
\publicationyear{1995}
\publicationissue{4}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -56,7 +62,7 @@ This issue accompanies the fourth release of \LaTeXe.
The last release in June started a trend of \LaTeX\ becoming
smaller, we are pleased to announce that this has continued with this
release. In particular the experimental `autoload' version described in
-\texttt{autoload.txt} is much smaller as more parts of \LaTeX\ are
+\file{autoload.txt} is much smaller as more parts of \LaTeX\ are
autoloaded.
\section{New `concurrent' docstrip}
@@ -80,7 +86,7 @@ This release of the dc fonts fixes many bugs (including the missing
many other ways. It is strongly recommended that you upgrade as soon as
possible if currently you are using the old dc fonts, release 1.1 or
earlier. The new fonts are available from the CTAN archives, in
-\texttt{tex-archive/fonts/dc}.
+\file{tex-archive/fonts/dc}.
The names of the font files are \emph{different}. This does not affect
\LaTeX\ documents but \emph{does} affect the installation procedure as
@@ -89,7 +95,7 @@ it assumes that you have the \emph{new} fonts, and will write suitable
then, after unpacking the distribution, you \emph{must}
\verb|latex olddc.ins| to produce `fd' files for the old dc fonts.
This must be done \emph{before} the format is made. Running the test
-document at \texttt{ltxcheck.tex} the end of the installation will
+document at \file{ltxcheck.tex} the end of the installation will
inform you if the wrong set of `fd' files has been installed.
Note that this change does not affect the standard `OT1' Computer
@@ -113,21 +119,21 @@ where you want the `base' class to be called with \emph{all} the
options that were specified to the extension class. This is now
provided by the new command \verb|\LoadClassWithOptions|. A similar
command \verb|\RequirePackageWithOptions| is provided for package use.
-More details of this feature are provided in \texttt{clsguide.tex} and
-\texttt{ltclass.dtx}.
+More details of this feature are provided in \file{clsguide.tex} and
+\file{ltclass.dtx}.
\section{More Input Encodings}
-The experimental \texttt{inputenc} package allows a more natural style
+The experimental \pkg{inputenc} package allows a more natural style
of input of accented and other characters.
Three new input encodings are now supported.
\begin{itemize}
-\item \texttt{ansinew} the Windows ansi encoding,
+\item \option{ansinew} the Windows ansi encoding,
as used in Microsoft Windows 3.x.
-\item \texttt{cp437de} a variant of \texttt{cp437}, which uses \ss\
+\item \option{cp437de} a variant of \option{cp437}, which uses \ss\
rather than $\beta$ in the appropriate slot.
-\item \texttt{next} the encoding used on Next computers.
+\item \option{next} the encoding used on Next computers.
\end{itemize}
\section{Further information}
diff --git a/macros/latex-dev/base/ltnews05.pdf b/macros/latex-dev/base/ltnews05.pdf
index 6619a66579..cf660636e4 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/ltnews05.tex b/macros/latex-dev/base/ltnews05.tex
index f8d611808b..840f04fe72 100644
--- a/macros/latex-dev/base/ltnews05.tex
+++ b/macros/latex-dev/base/ltnews05.tex
@@ -40,6 +40,10 @@
\publicationyear{1996}
\publicationissue{5}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -51,7 +55,7 @@ new standard \LaTeX{}, \LaTeXe.
\section{Extra possibilities for section headings}
Most \LaTeX\ sectioning commands are defined using
\verb|\@startsection|.
-For example, the \textsf{article} class defines:
+For example, the \cls{article} class defines:
\begin{small}
\begin{verbatim}
\newcommand\section{\@startsection
@@ -75,13 +79,13 @@ produce uppercase headings. A package or class file could contain:
\end{verbatim}
\end{small}
to produce section headings using uppercase medium weight text, rather
-than the bold text used by \textsf{article}. Note that, like the font
+than the bold text used by \cls{article}. Note that, like the font
choice, the uppercasing applies only to the actual heading (including
any automatically generated section number), not to the text as it may
appear in the running head or table of contents.
\section{The `openany' option in the `book' class}
-The \textsf{openany} option allows chapter and similar openings to
+The \option{openany} option allows chapter and similar openings to
occur on left hand pages. Previously this option only affected
\verb|\chapter| and \verb|\backmatter|. It now also affects
\verb|\part|, \verb|\frontmatter| and \verb|\mainmatter|.
@@ -89,7 +93,7 @@ occur on left hand pages. Previously this option only affected
\section{More font (output) encodings}
The font encoding name \texttt{T3} has been allocated to the encoding
used in the new 256-character \textsc{IPA} fonts (for the phonetic
-alphabet) produced by Rei Fukui. His package, \textsf{tipa},
+alphabet) produced by Rei Fukui. His package, \pkg{tipa},
gives access to these fonts and should soon be available. (The
encoding named \texttt{OT3} is the 128-character encoding used in the
\textsc{IPA} fonts produced by Washington State University.)
@@ -97,11 +101,11 @@ encoding named \texttt{OT3} is the 128-character encoding used in the
\section{More input encodings supported}
-The \textsf{inputenc} package now supports the IBM codepage~852 used
+The \pkg{inputenc} package now supports the IBM codepage~852 used
in Eastern Europe, with the option~\texttt{[cp852]} contributed by
Petr~Sojka.
-Also, the \textsf{inputenc} package now activates most `control codes'
+Also, the \pkg{inputenc} package now activates most `control codes'
with \textsc{ascii} values below 32.
Currently none of the encodings in the standard distribution makes use
of these positions.
@@ -135,7 +139,7 @@ following problems:
\begin{itemize}
\item
- The \textsf{longtable} package now uses a modified algorithm,
+ The \pkg{longtable} package now uses a modified algorithm,
contributed by David Kastrup, to align the `chunks' of a table.
It is now unnecessary to edit the document to add
\verb|\setlongtables| before the final run of \LaTeX.
@@ -144,7 +148,7 @@ following problems:
price of extra passes through \LaTeX).
\item
- The \textsf{dcolumn} package now has the extra possibility of
+ The \pkg{dcolumn} package now has the extra possibility of
specifying the number of digits both \emph{before} and after the
`decimal point'. This makes it easy to centre the column of numbers
under a wide heading.
diff --git a/macros/latex-dev/base/ltnews06.pdf b/macros/latex-dev/base/ltnews06.pdf
index 85e4996709..c17fca7f22 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/ltnews06.tex b/macros/latex-dev/base/ltnews06.tex
index d0c5943b5e..52ecba9918 100644
--- a/macros/latex-dev/base/ltnews06.tex
+++ b/macros/latex-dev/base/ltnews06.tex
@@ -40,6 +40,12 @@
\publicationyear{1996}
\publicationissue{6}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -50,12 +56,12 @@ new standard \LaTeX{}, \LaTeXe.
\section{Mono-case file names}
Previously \LaTeX\ has used some files with `mixed-case' file names
-such as \texttt{T1cmr.fd} and \texttt{T1enc.def}.
+such as \file{T1cmr.fd} and \file{T1enc.def}.
These file names cause problems on some systems (in particular they
are illegal on the ISO 9660 CDROM format) and so in this release
all file names have been made lowercase (for example
-\texttt{t1cmr.fd} and \texttt{t1enc.def}).
+\file{t1cmr.fd} and \file{t1enc.def}).
This change should \emph{not} affect any document. Within \LaTeX,
encodings still have the usual uppercase names in uses such as
@@ -68,17 +74,17 @@ should still work with this new release.
The change \emph{does} affect the configuration files that may be used
to make the \LaTeX\ format with initex. For example, the file
-\texttt{fonttext.ltx} previously specified \verb|\input{T1cmr.fd}|.
+\file{fonttext.ltx} previously specified \verb|\input{T1cmr.fd}|.
It now has \verb|\input{t1cmr.fd}|.
-If you use a local file \texttt{fonttext.cfg}
+If you use a local file \file{fonttext.cfg}
you will need to make similar changes, as \verb|\input{T1cmr.fd}|
-will not work as \texttt{T1cmr.fd} is no longer in the distribution.
+will not work as \file{T1cmr.fd} is no longer in the distribution.
The files affected by this change all have names of the form
\verb|*.fd| or \verb|*enc.def|.
\section{Another input encoding}
-Thanks to work by S\o ren Sandmann, the \textsf{inputenc} package now
+Thanks to work by S\o ren Sandmann, the \pkg{inputenc} package now
supports the IBM codepage~865 used in Scandinavia.
\section{Better user-defined math display environments}
@@ -109,15 +115,15 @@ you can use to avoid this problem; it should be inserted as shown here:
\end{verbatim}
\section{Docstrip improvements}
-The \textsf{docstrip} program that is used to unpack the \LaTeX\
+The \pkg{docstrip} program that is used to unpack the \LaTeX\
sources has undergone further development. The new version should be
able to process all old `batchfiles' but it allows a simpler syntax in
new `batchfiles' (no need to define \verb|\def\batchfile{|\ldots).
It also allows `target' directories to be specified when writing
files. This directory support is disabled by default unless activated
-in a local \texttt{docstrip.cfg} configuration file.
-See \texttt{docstrip.dtx} for details.
+in a local \file{docstrip.cfg} configuration file.
+See \file{docstrip.dtx} for details.
\section{AMS \LaTeX\ update}
Since the last \LaTeX\ release in June, the American Mathematical
@@ -137,11 +143,11 @@ This release of \LaTeX\ does \emph{not} default to these `ec' fonts
as its T1 encoded fonts. By default it will
use the `dc' fonts if the T1 encoding is requested.
-As noted in \texttt{install.txt} you may run \TeX\ on the install file
-\texttt{ec.ins} \emph{after} unpacking the base distribution but
+As noted in \file{install.txt} you may run \TeX\ on the install file
+\file{ec.ins} \emph{after} unpacking the base distribution but
\emph{before} making the \LaTeX\ format. This will produce
suitable `fd' files making \LaTeX\ (including, for the first time, the
-\textsf{slides} class) use the `ec' fonts as the default T1 encoded
+\cls{slides} class) use the `ec' fonts as the default T1 encoded
font set.
diff --git a/macros/latex-dev/base/ltnews07.pdf b/macros/latex-dev/base/ltnews07.pdf
index 79b731a27b..471af003fe 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/ltnews07.tex b/macros/latex-dev/base/ltnews07.tex
index 53b8b778f4..db3812e387 100644
--- a/macros/latex-dev/base/ltnews07.tex
+++ b/macros/latex-dev/base/ltnews07.tex
@@ -40,6 +40,12 @@
\publicationyear{1997}
\publicationissue{7}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -48,30 +54,30 @@
As in the last release the base \LaTeX\ distribution contains
three different sets of `fd' files for T1 encoded fonts.
-In this release the default installation uses \texttt{ec.ins}
+In this release the default installation uses \file{ec.ins}
and so installs files suitable for the current `EC fonts'
distribution. If you have still not updated to the EC fonts and
are using the earlier test versions, known as DC then you should
-unpack \texttt{newdc.ins} (for DC release 1.2 or later) or
-\texttt{olddc.ins} (for the original releases of the DC fonts).
-This should be done after unpacking \texttt{unpack.ins} but
-before making the format by running ini\TeX{} on \texttt{latex.ltx}.
-There are further details in \texttt{install.txt}.
+unpack \file{newdc.ins} (for DC release 1.2 or later) or
+\file{olddc.ins} (for the original releases of the DC fonts).
+This should be done after unpacking \file{unpack.ins} but
+before making the format by running ini\TeX{} on \file{latex.ltx}.
+There are further details in \file{install.txt}.
\section{T1 encoded Concrete fonts}
The Metafont sources for T1 encoded `Concrete' fonts have been
removed from the \textsf{mfnss} distribution as they were based
on the now obsolete DC fonts release 1.1. Similarly the
-\textsf{cmextra.ins} install file in the \textsf{base} distribution no
+\file{cmextra.ins} install file in the \textsf{base} distribution no
longer generates fd files for the `Concrete' fonts.
To use these fonts in either T1 or OT1 encoding it is
-recommended that you obtain Walter Schmidt's \textsf{ccfonts} package
-and fonts from CTAN \texttt{macros/latex/contrib/supported/ccfonts}.
+recommended that you obtain Walter Schmidt's \pkg{ccfonts} package
+and fonts from CTAN \file{macros/latex/contrib/supported/ccfonts}.
\section{Further input encodings}
-Two more \textsf{inputenc} packages have been added: for latin5,
+Two more \pkg{inputenc} packages have been added: for latin5,
thanks to H. Turgut Uyar; and for latin3, thanks to J\"org Knappen.
@@ -83,18 +89,18 @@ reported by Donald Arseneau, that punctuation in page headers has
always (in all known \TeX\ formats) been potentially incorrect if the
page break happens while a local setting of the space codes (for
instance by the command \verb|\frenchspacing|) is in effect. A common
-example of this happening in \LaTeX\ is in the \textsf{verbatim}
+example of this happening in \LaTeX\ is in the \env{verbatim}
environment.
\section{Accessing Bold Math Symbols}
-The \textsf{tools} distribution contains a new package, \textsf{bm},
+The \textsf{tools} distribution contains a new package, \pkg{bm},
which defines a command \verb|\bm| that allows individual bold symbols
to be accessed within a math expression (in contrast to
\verb|\boldmath| which makes whole math expressions default to bold
-fonts). It is more general than the existing \textsf{amsbsy} package;
+fonts). It is more general than the existing \pkg{amsbsy} package;
however, to ease the translation of documents between these two
-packages, \textsf{bm} makes \verb|\boldsymbol| an alias for
+packages, \pkg{bm} makes \verb|\boldsymbol| an alias for
\verb|\bm|.
This package was previously made available from the `contrib' area of
diff --git a/macros/latex-dev/base/ltnews08.pdf b/macros/latex-dev/base/ltnews08.pdf
index 2ae4ed4d23..5ce98884e0 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/ltnews08.tex b/macros/latex-dev/base/ltnews08.tex
index 5ea811267d..d79a1b1b74 100644
--- a/macros/latex-dev/base/ltnews08.tex
+++ b/macros/latex-dev/base/ltnews08.tex
@@ -40,13 +40,19 @@
\publicationyear{1997}
\publicationissue{8}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
\section{New supported font encodings}
-Two new font encodings are supported as options to the \textsf{fontenc}
+Two new font encodings are supported as options to the \pkg{fontenc}
package:
\begin{description}
\item [OT4]
@@ -59,7 +65,7 @@ supported by the `tc' fonts, which match the T1 encoded `ec' text
fonts. A subset of the glyphs in this encoding is supported by
virtual fonts distributed with the PostScript font metrics on the
\textsc{ctan} archives. (This is the `8c' encoding in Karl Berry's
-fontname scheme.) The \textsf{textcomp} package provides access to
+fontname scheme.) The \pkg{textcomp} package provides access to
this encoding but here is a warning to current users of that package:
some of the internal names for the characters have changed.
\end{description}
@@ -67,17 +73,17 @@ some of the internal names for the characters have changed.
\section{New input encodings}
-These additions to the \textsf{inputenc} package are
-\texttt{decmulti} (the DEC Multinational
+These additions to the \pkg{inputenc} package are
+\option{decmulti} (the DEC Multinational
Character Set, contributed by M.~Y.~Chartoire)
-and \texttt{cp1250} (an MS-Windows encoding for Central and Eastern
+and \option{cp1250} (an MS-Windows encoding for Central and Eastern
Europe, contributed by Marcin Woli\'nski). There is also a
-\texttt{cp1252} encoding that is identical to \texttt{ansinew}.
+\option{cp1252} encoding that is identical to \option{ansinew}.
\section{Tools}
-The \textsf{calc} package (used in many examples in \emph{The \LaTeX\
+The \pkg{calc} package (used in many examples in \emph{The \LaTeX\
Companion}) has been contributed to this distribution by Kresten Krab
Thorup and Frank Jensen. This is essentially the same as the version
that has been available from the \textsc{ctan} archives for some time,
@@ -91,10 +97,10 @@ example:
\end{verbatim}
There have also been some improvements to several other packages in
-this collection. In particular, \textsf{bm} now works correctly with
+this collection. In particular, \pkg{bm} now works correctly with
constructions such as \verb|\bm{f'}| involving \texttt{'} or other
characters which use \TeX's special ``\verb|\mathcode"8000|''
-feature. Also, \textsf{multicol} sets the length \verb|\columnwidth|
+feature. Also, \pkg{multicol} sets the length \verb|\columnwidth|
to an appropriate value; this enables it to work with classes that
support two-column setting, e.g.,~the AMS classes.
@@ -105,10 +111,10 @@ The special \verb|oztex.def| driver file has been removed, and Oz\TeX\
support has been merged with dvips, following advice from
Andrew Trevorrow about Oz\TeX~3.x.
-The \textsf{keyval} package has had some internal improvements: to
+The \pkg{keyval} package has had some internal improvements: to
use \LaTeX\ format error messages; and to avoid `\verb|#| doubling'.
This latter change means that the \verb|command| key for the
-\textsf{graphicx} version of \verb|\includegraphics| should now be used
+\pkg{graphicx} version of \verb|\includegraphics| should now be used
with one \verb|#| rather than two. For example, \verb|command = `gunzip #1|.
Fortunately this key is almost never used in practice, so few if any
documents should be affected by this change.
@@ -129,7 +135,7 @@ this CTAN directory:
The documentation of this material is as follows: individual package
files provide outline, draft documentation; there is an article that
gives an overview of the syntax and related concepts; there is a
-\texttt{readme.txt} file containing a brief description of the
+\file{readme.txt} file containing a brief description of the
collection.
All aspects of these packages are liable, indeed likely, to change.
@@ -146,8 +152,5 @@ the following one line message:
subscribe LATEX-L <<first-name>> <<second-name>>
\end{verbatim}
-% Revert to this if gets too full.
-% See \texttt{modguide.tex} for
-% information on how to subscribe to \texttt{LaTeX-L}.
\end{document}
diff --git a/macros/latex-dev/base/ltnews09.pdf b/macros/latex-dev/base/ltnews09.pdf
index 0bce55eaa5..f83984dfd2 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/ltnews09.tex b/macros/latex-dev/base/ltnews09.tex
index 0d959d9f92..2d56515ca0 100644
--- a/macros/latex-dev/base/ltnews09.tex
+++ b/macros/latex-dev/base/ltnews09.tex
@@ -40,6 +40,12 @@
\publicationyear{1998}
\publicationissue{9}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -93,19 +99,19 @@ The old five-argument form is detected and will work as before.
\section{Tools distribution}
-The \texttt{multicol} package now supports the production of multiple
+The \pkg{multicol} package now supports the production of multiple
columns without balancing the last page. To get this effect use the
-\texttt{multicols*} environment.
+\env{multicols*} environment.
-The \texttt{layout} package was partly recoded by Hideo Umeki to
+The \pkg{layout} package was partly recoded by Hideo Umeki to
display page layout effects in a better way.
-As suggested by Donald Arseneau, the \texttt{calc} package was extended
+As suggested by Donald Arseneau, the \pkg{calc} package was extended
to support the new commands \verb|\widthof{<text>}|,
\verb|\heightof{<text>}|, and \verb|\depthof{<text>}| within a
-\texttt{calc}-expression. At the same time we modified a few kernel
-commands so that \texttt{calc}-expressions can now be used in various
-useful places such as the dimension arguments to the \texttt{tabular}
+\pkg{calc}-expression. At the same time we modified a few kernel
+commands so that \pkg{calc}-expressions can now be used in various
+useful places such as the dimension arguments to the \env{tabular}
environment and the \verb|\rule| command. For many other standard
\LaTeX{} commands this was already possible.
@@ -118,10 +124,10 @@ characters will soon be available.
Test versions of the `LH' fonts for these Cyrillic encodings, based on
the Computer Modern design, are available from CTAN archives in the
-directory \texttt{fonts/cyrillic/lh-test}. The \LaTeX\ support files
+directory \file{fonts/cyrillic/lh-test}. The \LaTeX\ support files
(by Werner Lemberg and Vladimir Volovich) are also available from CTAN
archives in\\
- \texttt{macros/latex/contrib/supported/t2}
+ \file{macros/latex/contrib/supported/t2}
\section{Default docstrip header}
@@ -135,7 +141,7 @@ We have changed the default version of this header so that it allows
stripped files to be distributed in ready-to-run installations such as
the \TeX{}Live CD\@. If you use the default header for distributing
your files you should check that the new copyright text is acceptable
-to you. The file \texttt{docstrip.dtx} explains how to produce your own
+to you. The file \file{docstrip.dtx} explains how to produce your own
header if you wish to do so.
diff --git a/macros/latex-dev/base/ltnews10.pdf b/macros/latex-dev/base/ltnews10.pdf
index 437faed1d7..c9316fa856 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/ltnews10.tex b/macros/latex-dev/base/ltnews10.tex
index bad9fda6ce..5ab159f0bb 100644
--- a/macros/latex-dev/base/ltnews10.tex
+++ b/macros/latex-dev/base/ltnews10.tex
@@ -40,6 +40,12 @@
\publicationyear{1998}
\publicationissue{10}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -77,21 +83,21 @@ existence of \LaTeXe{} is a great miracle}.
need not supply them).
As a first small step towards this definition, we shall replace the
- \texttt{latex/packages} subdirectory on \ctan{}.
+ \file{latex/packages} subdirectory on \ctan{}.
This directory was a curious mixture of the important, such as the
- \LaTeX{} \texttt{tools}, that any self-respecting \LaTeX{}
+ \LaTeX{} \textsf{tools}, that any self-respecting \LaTeX{}
installation ought to have, and the esoteric or experimental.
- The esoterica from \texttt{packages} will be moved to
+ The esoterica from \textsf{packages} will be moved to
new locations, as follows:
\begin{quote}
- \texttt{expl3} to \texttt{latex/exptl/project}\\
- \texttt{mfnfss} to \texttt{latex/contrib/supported/mfnfss}
+ \textsf{expl3} to \file{latex/exptl/project}\\
+ \textsf{mfnfss} to \file{latex/contrib/supported/mfnfss}
\end{quote}
- The subdirectory that replaces \texttt{packages} will be called
- \texttt{latex/required}; all the other sub-directories of
- \texttt{packages} will be moved there.
+ The subdirectory that replaces \textsf{packages} will be called
+ \file{latex/required}; all the other sub-directories of
+ \file{packages} will be moved there.
\vspace{17pt}
\pagebreak
@@ -107,14 +113,14 @@ The web site is not yet fully functional but the old \LaTeX\ pages from
Several people have requested an easy mechanism for the distribution
of \LaTeX\ packages and other software ``under the same conditions as
-\LaTeX''. The old \texttt{legal.txt} file was unsuitable as a general
+\LaTeX''. The old \file{legal.txt} file was unsuitable as a general
licence as it referred to specific \LaTeX\ authors, and to specific
files.
-Therefore, in this release \texttt{legal.txt} contains just the
+Therefore, in this release \file{legal.txt} contains just the
copyright notice and a reference to the new \emph{\LaTeX\ Project
Public License} (LPPL) for the distribution and modification
-conditions. The \texttt{tools}, \texttt{graphics}, and \texttt{mfnfss}
+conditions. The \textsf{tools}, \textsf{graphics}, and \textsf{mfnfss}
packages also now refer to this license in their distribution notices.
\section{Support for Cyrillic encodings}
@@ -130,11 +136,11 @@ encodings). This provides platform independent and
sophisticated basic support for high-quality typesetting in various
Cyrillic-based languages.
-For further information see the file \texttt{cyrguide.tex}.
+For further information see the file \file{cyrguide.tex}.
\section{Tools distribution}
-The \texttt{varioref} package has been extended to support textual
+The \pkg{varioref} package has been extended to support textual
page references to a range of objects: e.g.,~if \texttt{eq-first}
and \texttt{eq-last} are the label names for the first and last
equation in a sequence, then you can now write
diff --git a/macros/latex-dev/base/ltnews11.pdf b/macros/latex-dev/base/ltnews11.pdf
index 45c6fd4d57..9b49d7f50b 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 69b3920e0a..f18852c473 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/ltnews12.tex b/macros/latex-dev/base/ltnews12.tex
index 7e3a73f508..62b08324b7 100644
--- a/macros/latex-dev/base/ltnews12.tex
+++ b/macros/latex-dev/base/ltnews12.tex
@@ -42,6 +42,12 @@
\providecommand{\acro}[1]{\textsc{\MakeLowercase{#1}}}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -100,9 +106,9 @@ the following parts can be downloaded.
documentation.
\item[template] Prototype implementation of the template interface
- (needs parts of \texttt{xparse}).
+ (needs parts of \pkg{xparse}).
- The file \texttt{template.dtx} in that directory has a large section
+ The file \file{template.dtx} in that directory has a large section
of documentation at the front describing the commands in the
interface and giving a `worked example' building up some templates
for caption formatting.
@@ -112,7 +118,7 @@ the following parts can be downloaded.
\texttt{latex-l} list.
\item[xfootnote] Working examples for generating footnotes,
- etc. Needs \texttt{xparse} and \texttt{template}.
+ etc. Needs \pkg{xparse} and \pkg{template}.
\end{description}
All examples are organised in subdirectories and additionally
diff --git a/macros/latex-dev/base/ltnews13.pdf b/macros/latex-dev/base/ltnews13.pdf
index 304fe2ab43..8821741816 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/ltnews13.tex b/macros/latex-dev/base/ltnews13.tex
index 185a080e2b..08acf95df6 100644
--- a/macros/latex-dev/base/ltnews13.tex
+++ b/macros/latex-dev/base/ltnews13.tex
@@ -40,6 +40,11 @@
\publicationyear{2000}
\publicationissue{13}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
\begin{document}
@@ -78,7 +83,7 @@ to release patches as needed to fix significant bugs.
\noindent
The \PSNFSS{} material, which supports the use\latex{\\}
of common PostScript fonts with \LaTeX{}, has been thoroughly updated.
-Most noticeably, the \package{mathpple} package, which used to be
+Most noticeably, the \pkg{mathpple} package, which used to be
distributed separately, is now part of the basic \PSNFSS{} bundle;
this package provides mathematical typesetting with the Palatino
typeface family. In addition, numerous bugs and flaws have been fixed
@@ -130,9 +135,9 @@ The files \file{diffs-m.txt}, \file{diffs-c.txt},
changes and address some common questions.
The primary documentation files remain \file{amsldoc.tex}, for the
-\package{amsmath} package, and \file{instr-l.tex}, for the AMS
+\pkg{amsmath} package, and \file{instr-l.tex}, for the AMS
document classes.\latex{\\}
-The documentation for the \package{amsthm} package,\latex{\\}
+The documentation for the \pkg{amsthm} package,\latex{\\}
however, has been moved from \file{amsldoc.tex}\latex{\\}
to a separate document \file{amsthdoc.tex}.
@@ -140,10 +145,10 @@ to a separate document \file{amsthdoc.tex}.
\vfill
\end{latexonly}
-\section{New input encoding \package{latin4}}
+\section{New input encoding \texttt{latin4}}
-The package \package{inputenc} has, thanks to Hana Skoumalov\'a,
-been extended to cover the \package{latin4} input encoding; this
+The package \pkg{inputenc} has, thanks to Hana Skoumalov\'a,
+been extended to cover the \option{latin4} input encoding; this
covers Baltic and Scandinavian languages as well as Greenland
Inuit and Lappish.
@@ -187,11 +192,11 @@ This directory has been extended to contain
\item[galley] Prototype implementation of the interface\latex{\\}
for manipulating vertical material in galleys.
\item[xinitials] Prototype implementation of the interface\latex{\\}
- for paragraph initials (needs the \texttt{galley} package.
- \item[xtheorem] Contributed example using the \texttt{template}
+ for paragraph initials (needs the \pkg{galley} package.
+ \item[xtheorem] Contributed example using the \pkg{template}
package to provide a designer interface for theorem environments.
\item[xoutput] A prototype implementation of the new output routine
- as described in the \texttt{xo-pfloat.pdf} paper. Expected
+ as described in the \file{xo-pfloat.pdf} paper. Expected
availability: at or shortly after\latex{\\}
the TUG\,2000 conference.
\end{description}
diff --git a/macros/latex-dev/base/ltnews14.pdf b/macros/latex-dev/base/ltnews14.pdf
index e6b444ca02..1fb228c5a9 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/ltnews14.tex b/macros/latex-dev/base/ltnews14.tex
index 836591019e..61c96c81ae 100644
--- a/macros/latex-dev/base/ltnews14.tex
+++ b/macros/latex-dev/base/ltnews14.tex
@@ -40,6 +40,11 @@
\publicationyear{2001}
\publicationissue{14}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
\begin{document}
@@ -69,14 +74,14 @@ available. You can read about its new features in
One of the bugs that got fixed in this release deals with how labels
are handled by \LaTeX{}. Because this part of the kernel is modified
-by \textsf{babel}, the relevant changes need to be coordinated.
-Therefore to use \textsf{Babel} with this release of \LaTeX{} you will
-need to update your version of \textsf{babel} to at least 3.7.
+by \pkg{babel}, the relevant changes need to be coordinated.
+Therefore to use \pkg{Babel} with this release of \LaTeX{} you will
+need to update your version of \pkg{babel} to at least 3.7.
-\section{New input encoding \package{latin9}}
+\section{New input encoding \option{latin9}}
-The package \package{inputenc} has, thanks to Karsten Tinnefeld, been
-extended to cover the \package{latin9} input encoding. The
+The package \pkg{inputenc} has, thanks to Karsten Tinnefeld, been
+extended to cover the \option{latin9} input encoding. The
ISO-Latin~9 encoding is a useful modern replacement for ISO-Latin~1
that contains a few characters needed for French and Finnish. Of wider
interest, it also contains the euro currency sign; this could be the
@@ -87,11 +92,11 @@ Breton, Catalan, Danish, Dutch, English, Estonian, Faroese, Finnish,
French, Frisian, Galician, German, Greenlandic, Icelandic, Irish
Gaelic, Italian, Latin, Luxembourgish, Norwegian, Portuguese,
Rhaeto-Romanic, Scottish Gaelic, Spanish and Swedish.\\
-The characters added in \package{latin9} are (in \LaTeX{} notation):\\
+The characters added in \option{latin9} are (in \LaTeX{} notation):\\
\begin{small}
\verb| \texteuro \v S \v s \v Z \v z \OE \oe \" Y |
\end{small}\\
-They displace the following characters from \package{latin1}:\\
+They displace the following characters from \option{latin1}:\\
\begin{small}
\verb| \textcurrency \textbrokenbar \"{} \'{} \c{} |\\
\verb| \textonequarter \textonehalf \textthreequarters |
@@ -100,7 +105,7 @@ They displace the following characters from \package{latin1}:\\
\section{New tools}
-The new package \package{trace} provides many commands to control
+The new package \pkg{trace} provides many commands to control
\LaTeX{}'s tracing and debugging output, including the excellent new
information available with \eTeX{} such as the extremely useful
tracing of local assignments. You will find it in the tools
@@ -112,7 +117,7 @@ loading by NFSS (which can go on for pages if you are unlucky). It
also offers \verb|\traceoff| to \ldots\ guess what! Full details are
in the documented source file, \file{trace.dtx}.
-In the base \package{ifthen} package we have added
+In the base \pkg{ifthen} package we have added
the uppercase synonyms \verb|\NOT| \verb|\AND| and \verb|\OR|.
\section{New experimental code}
@@ -157,11 +162,11 @@ This directory has been extended to contain the following.
\item[galley] Prototype implementation of the interface\latex{\\}
for manipulating vertical material in galleys.
\item[xinitials] Prototype implementation of the interface\latex{\\}
- for paragraph initials (needs the \texttt{galley} package).
- \item[xtheorem] Contributed example using the \texttt{template}
+ for paragraph initials (needs the \pkg{galley} package).
+ \item[xtheorem] Contributed example using the \pkg{template}
package to provide a designer interface for theorem environments.
\item[xor] A prototype implementation of the new output routine
- as described in the \texttt{xo-pfloat.pdf} paper.
+ as described in the \file{xo-pfloat.pdf} paper.
\item[xfrontm] A prototype version of
the new font matter interface.
\end{description}
diff --git a/macros/latex-dev/base/ltnews15.pdf b/macros/latex-dev/base/ltnews15.pdf
index e8b197ddc1..3d691a5397 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/ltnews15.tex b/macros/latex-dev/base/ltnews15.tex
index 4532111d98..e143d5f4dd 100644
--- a/macros/latex-dev/base/ltnews15.tex
+++ b/macros/latex-dev/base/ltnews15.tex
@@ -40,6 +40,12 @@
\publicationyear{2003}
\publicationissue{15}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -87,14 +93,14 @@ The English has been corrected in \verb|\reftextbefore|
(an incompatible change). There are other extensions
such as \verb|\labelformat|, \verb|\Ref|, \verb|\Vref| and \verb|\vpagerefnum|.
Some Dutch text has also been changed and two\newline
-new options added: \package{slovak} and \package{slovene}.
+new options added: \option{slovak} and \option{slovene}.
\section{New and more robust commands}
Many of the math mode commands for compound symbols have been made
robust and a new robust command has been added: \verb|\nobreakdashes|.
-This last is a low-level command, borrowed from the \package{amsmath}
+This last is a low-level command, borrowed from the \pkg{amsmath}
package, for use only before hyphens or dashes. It prevents the line
break that is normally allowed\newline
after the following sequence of dashes.
@@ -102,20 +108,20 @@ after the following sequence of dashes.
\section{Fixing font sizes}
-The new \package{fix-cm} package, by Walter Schmidt, changes the CM font
+The new \pkg{fix-cm} package, by Walter Schmidt, changes the CM font
definition (\texttt{.fd}) files so that similar design sizes are used
in both the \texttt{OT1} and \texttt{T1} encodings.
\section{Font encodings}
-A number of options have been added to the \package{textcomp} package,
+A number of options have been added to the \pkg{textcomp} package,
enabling only available glyphs to be used.
Also, the `NFSS font families' are now divided into five different groups
according to the subset of glyphs each provides from the full
collection of symbols in the TS1 encoding.
Given sufficient information about a font family
-\package{textcomp} will use this in order to limit the\newline
+\pkg{textcomp} will use this in order to limit the\newline
typesetting to those glyphs that are available.
Use of this mechanism has also enhanced \verb|\oldstylenums|
@@ -124,7 +130,7 @@ to use the current font if possible.
\section{Displaying font tables}
-With the \package{nfssfont} package you can now
+With the \pkg{nfssfont} package you can now
specify the font to display by giving its `NFSS classification',
rather than needing to know its external font file's name.
It is also now possible to generate large collections of font
@@ -133,25 +139,25 @@ tables in batch mode by providing a suitable input file.
\section{New input encodings}
-The \package{inputenc} package has been extended as follows:
-\package{macce} input encoding
+The \pkg{inputenc} package has been extended as follows:
+\option{macce} input encoding
(Apple Central European),
-thanks to Radek Tryc and Marcin Wolinski; \package{cp1257}\newline
+thanks to Radek Tryc and Marcin Wolinski; \option{cp1257}\newline
for Baltic languages; \package{latin10},
thanks to Ionel Ciob\^{i}c\u{a}.\newline
The euro symbol has by
now been added to several encodings:
-\package{ansinew}, \package{cp1250}
-and \package{cp1252} (which also\newline
-has another addition), whilst \package{cp858}
-adds it to \package{cp850}.
+\option{ansinew}, \option{cp1250}
+and \option{cp1252} (which also\newline
+has another addition), whilst \option{cp858}
+adds it to \option{cp850}.
\section{Unicode input}
Partial, experimental support for text files that use the Unicode
-encoding form UTF-8 is now provided by the option \package{utf8} for
-the \package{inputenc} package.
+encoding form UTF-8 is now provided by the option \option{utf8} for
+the \pkg{inputenc} package.
The only Unicode text file characters supported by the current version
are those based on the most common inputs for glyphs from the small
diff --git a/macros/latex-dev/base/ltnews16.pdf b/macros/latex-dev/base/ltnews16.pdf
index 6ef0fdbd51..9983cc1f05 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/ltnews16.tex b/macros/latex-dev/base/ltnews16.tex
index 8f96ed197f..17f9cd094a 100644
--- a/macros/latex-dev/base/ltnews16.tex
+++ b/macros/latex-dev/base/ltnews16.tex
@@ -127,7 +127,7 @@ need to debug macros.
\section{End of `autoload' support}
As computer systems generally grow in capacity, requirements change
-and so we believe that the \package{autoload} variant of \LaTeX{} is
+and so we believe that the \texttt{autoload} variant of \LaTeX{} is
no longer required. Thus, although the code remains it is no longer
supported. We hope this does not cause any problems.
diff --git a/macros/latex-dev/base/ltnews17.pdf b/macros/latex-dev/base/ltnews17.pdf
index 1475bf5fb5..3355ee5d19 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/ltnews17.tex b/macros/latex-dev/base/ltnews17.tex
index f850f8d64c..614c5c7d63 100644
--- a/macros/latex-dev/base/ltnews17.tex
+++ b/macros/latex-dev/base/ltnews17.tex
@@ -41,6 +41,12 @@
\publicationyear{2005}
\publicationissue{17}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -76,7 +82,7 @@ lists all the `encoding specific commands' (the LICR or \LaTeX{}
Internal Character Representation) for characters supported by the
encodings \texttt{OT1} and \texttt{T1}.
-When the file \texttt{encguide.tex} is processed by \LaTeX{}, it will
+When the file \file{encguide.tex} is processed by \LaTeX{}, it will
attempt to typeset an encoding table for each encoding it describes.
For this to be possible, \LaTeX{} must be able to find \texttt{.tfm}
files for a representative example font for each encoding. If
@@ -100,42 +106,42 @@ the same way as their text-mode counterparts.
\section{Updates of required packages}
-Several of the packages in the \package{tools} bundle have been updated
+Several of the packages in the \textsf{tools} bundle have been updated
for this release.
-The \package{xspace} package has some new features. One is an
+The \pkg{xspace} package has some new features. One is an
interface for adding and removing the exceptions it knows about and
another is that it works with active characters. These remove problems
-of incompatibility with the \package{babel} system.
+of incompatibility with the \pkg{babel} system.
In \textit{\LaTeX\ News~16} we announced that some packages might
begin to take advantage of \eTeX{} extensions on systems where these
-are available: and the latest version of \package{xspace} does just
-that. Note also that \package{fixltx2e} will make use of the
+are available: and the latest version of \pkg{xspace} does just
+that. Note also that \pkg{fixltx2e} will make use of the
facilities in \eTeX{} whenever these are present (see below).
-The \package{calc} package has also been given an update with a few
+The \pkg{calc} package has also been given an update with a few
extra commands.
The commands \verb|\maxof| and \verb|\minof|, each with two
brace-delimited arguments, provide the usual numeric $\max$ and $\min$
operations. The commands \verb|\settototalheight| and
\verb|\totalheightof| work like \verb|\settoheight| and
\verb|\heightof|. There are also some internal improvements to make
-\package{calc} work with some more primitive \TeX\ constructs, such as
+\pkg{calc} work with some more primitive \TeX\ constructs, such as
\verb|\ifcase|.
-The \package{varioref} package has acquired a few more default
+The \pkg{varioref} package has acquired a few more default
strings but there are still a number of languages for
which good strings are still missing.
-The \package{showkeys} package has also been updated slightly to work
-with more recent developments in \package{varioref}. Also, it now
+The \pkg{showkeys} package has also been updated slightly to work
+with more recent developments in \pkg{varioref}. Also, it now
provides an easy way to define the look of the printed labels with
the command \verb|\showkeyslabelformat|.
\section{Work on \LaTeX{} fixes}
-The package known as \package{fixltx2e} has three new additions. A new
+The package known as \pkg{fixltx2e} has three new additions. A new
command \verb|\textsubscript| has been added as a complement to the
command \verb|\textsuperscript| in the kernel. Secondly, a new form of
\verb|\DeclareMathSizes| that allows all of its arguments to have a
@@ -153,7 +159,7 @@ extensions if available; more specifically,
when the \eTeX{} extensions are available, it does not
destroy kerning between previous letters and the text to be typeset.
The command is also used
-internally in \package{fixltx2e} to resolve a problem with
+internally in \pkg{fixltx2e} to resolve a problem with
\verb|\fnsymbol|.
Also, further work has been done on reimplementing
@@ -162,14 +168,14 @@ places: we hope it is an improvement!
\section{The graphics bundle}
-The \package{graphics} bundle now supports the
-\package{dvipdfmx} post-processor and Jonathan Kew's XE\TeX\
+The \textsf{graphics} bundle now supports the
+\texttt{dvipdfmx} post-processor and Jonathan Kew's XE\TeX\
program. By support we mean that the graphics packages recognize the
-new options \texttt{xetex} and \texttt{dvipdfmx} but we do not
+new options \option{xetex} and \option{dvipdfmx} but we do not
distribute the respective driver files.
This leads elegantly to a description of the
-new policy concerning such driver files in the \package{graphics} bundle.
+new policy concerning such driver files in the \textsf{graphics} bundle.
Most driver files for our graphics packages are maintained by the
developers of the associated post-processor or \TeX\ programs.
The teams developing these packages are working very hard: their rapid
@@ -178,7 +184,7 @@ releases. It is therefore no longer practical
for the \LaTeX\ Team to be responsible for distributing the
latest versions of these driver files.
-Therefore the installation files for \package{graphics} have been
+Therefore the installation files for \pkg{graphics} have been
split: there is now \file{graphics.ins} to install the package files and
\file{graphics-drivers.ins} for the driver files (located in
\file{drivers.dtx}).
@@ -186,8 +192,8 @@ There is no need
to install all those provided in the file \file{drivers.dtx}.
Please also note that, as requested by the maintainers of
-\package{PStricks}, we have removed the package \package{pstcol} as
-current versions of \package{PSTricks} make it obsolete.
+\textsf{PStricks}, we have removed the package \pkg{pstcol} as
+current versions of \textsf{PSTricks} make it obsolete.
%%
\newpage
@@ -197,12 +203,12 @@ current versions of \package{PSTricks} make it obsolete.
\section{Future development}
The title of this section is a little misleading as it actually
-describes \emph{current} development. In 1998 the \package{expl3}
+describes \emph{current} development. In 1998 the \textsf{expl3}
bundle of packages was put on \ctan\ to demonstrate a possible \LaTeX3
programming environment. These packages have been lying dormant for some
time while the \LaTeX\ Project Team were preoccupied by other things
-such as developing the experimental packages \package{xor},
-\package{template}, etc., (and also writing that indispensable
+such as developing the experimental packages \pkg{xor},
+\pkg{template}, etc., (and also writing that indispensable
and encyclopaedic volume,\\
The \LaTeX{} Companion -- 2nd edition).
@@ -215,12 +221,12 @@ two areas are central to this work.
\item Extending the
kernel code of \LaTeX3.
\item Converting the experimental packages
- such as \package{xor}, \package{template} to use the new
+ such as \pkg{xor}, \pkg{template} to use the new
syntax internally.
\end{itemize}
Beware! Development of
-\package{expl3} is happening so fast that the descriptions above might
+\textsf{expl3} is happening so fast that the descriptions above might
be out of date when you read this! If you wish to see what's going on
then go to
\url{http://www.latex-project.org/code.html} where you can download
diff --git a/macros/latex-dev/base/ltnews18.pdf b/macros/latex-dev/base/ltnews18.pdf
index 368f808908..88f612f15e 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 aa2c6801a4..faf8e60b2d 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/ltnews19.tex b/macros/latex-dev/base/ltnews19.tex
index 4d50b98c82..f733c41dd4 100644
--- a/macros/latex-dev/base/ltnews19.tex
+++ b/macros/latex-dev/base/ltnews19.tex
@@ -54,7 +54,7 @@ Just in time for \TeX\ Live 2009, this version is a maintenance
release and introduces no new features. A number of small changes have
been made to correct minor bugs in the kernel, slightly extend the Unicode
support, and improve various
-aspects of some of the \texttt{tools} packages.
+aspects of some of the \textsf{tools} packages.
\section{New code repository}
diff --git a/macros/latex-dev/base/ltnews20.pdf b/macros/latex-dev/base/ltnews20.pdf
index d0dcaaad1b..d5af903d3f 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/ltnews20.tex b/macros/latex-dev/base/ltnews20.tex
index 44acd1ec3e..89d166b49c 100644
--- a/macros/latex-dev/base/ltnews20.tex
+++ b/macros/latex-dev/base/ltnews20.tex
@@ -41,6 +41,12 @@
\publicationissue{20}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -57,15 +63,32 @@ This situation has been rectified this year!
\section{Continued development}
-The \LaTeXe\ program is no longer being actively developed, as any non-negligible changes now could have dramatic backwards compatibility issues with old documents. Similarly, new features cannot be added to the kernel since any new documents written now would then be incompatible with legacy versions of \LaTeX.
-
-The situation on the package level is quite different though. While most of us have stopped developing packages for \LaTeXe{} there are many contributing developers that continue to enrich \LaTeXe{} by providing or extending add-on packages with new or better functionality.
-
-However, the \LaTeX\ team certainly recognises that there are improvements to be made to the kernel code; over the last few years we have been working on building, expanding, and solidifying the \textsf{expl3} programming layer for future \LaTeX\ development. We are using \textsf{expl3} to build new interfaces for package development and tools for document design. Progress here is continuing.
+The \LaTeXe\ program is no longer being actively developed, as any
+non-negligible changes now could have dramatic backwards compatibility
+issues with old documents. Similarly, new features cannot be added to
+the kernel since any new documents written now would then be
+incompatible with legacy versions of \LaTeX.
+
+The situation on the package level is quite different though. While
+most of us have stopped developing packages for \LaTeXe{} there are
+many contributing developers that continue to enrich \LaTeXe{} by
+providing or extending add-on packages with new or better
+functionality.
+
+However, the \LaTeX\ team certainly recognises that there are
+improvements to be made to the kernel code; over the last few years we
+have been working on building, expanding, and solidifying the
+\textsf{expl3} programming layer for future \LaTeX\ development. We
+are using \textsf{expl3} to build new interfaces for package
+development and tools for document design. Progress here is
+continuing.
\section{Release notes}
-In addition to a few small documentation fixes, the following changes have been made to the \LaTeXe\ code; in accordance with the philosophy of minimising forwards and backwards compatibility problems, most of these will not be noticeable to the regular \LaTeX\ user.
+In addition to a few small documentation fixes, the following changes
+have been made to the \LaTeXe\ code; in accordance with the philosophy
+of minimising forwards and backwards compatibility problems, most of
+these will not be noticeable to the regular \LaTeX\ user.
\paragraph{Font subsets covered by Latin Modern and \TeX\ Gyre}
@@ -79,28 +102,32 @@ characters for high-quality multilingual typesetting.%
}
Information about their symbol coverage in the \verb|TS1| encoding is now included
-in \texttt{textcomp}'s default font definitions.
+in \pkg{textcomp}'s default font definitions.
-% \paragraph{Private conditional switch in italic correction}
-% negligible improvement/only useful to LaTeX programmers: not worth documenting I think?
-
-% \paragraph{Improve formatting in \texttt{doc} for filenames with some punctuation}
-% negligible improvement, again?
\paragraph{Redefinition of \cs{enddocument}}
-Inside the definition of \verb=\end{document}= the \texttt{.aux} file is read back in to resolve cross-references and build the table of contents etc. From 2.09 days this was done using \verb=\input= without any surrounding braces which could lead to some issues in boundary cases, especially if \verb=\input= was redefined by some package. It was therefore changed to use \LaTeXe{}'s internal name for this function. As a result, packages that modify \verb=\enddocument= other than through the officially provided hooks may need to get updated.
+Inside the definition of \verb=\end{document}= the \texttt{.aux} file
+is read back in to resolve cross-references and build the table of
+contents etc. From 2.09 days this was done using \verb=\input= without
+any surrounding braces which could lead to some issues in boundary
+cases, especially if \verb=\input= was redefined by some package. It
+was therefore changed to use \LaTeXe{}'s internal name for this
+function. As a result, packages that modify \verb=\enddocument= other
+than through the officially provided hooks may need to get updated.
-\paragraph{Small improvement with split footnotes in \texttt{ftnright}}
+\paragraph{Small improvement with split footnotes in \pkg{ftnright}}
-If in the first column there is more than a full column worth of footnote
-material the material will be split resulting in footnotes out of
-order. This issue is now at least detected and generates an error but the algorithm used by the package is
-unable to gracefully handle it in an automated fashion (some alternatives for resolving the problem if it happens are given in the package documentation).
+If in the first column there is more than a full column worth of
+footnote material the material will be split resulting in footnotes
+out of order. This issue is now at least detected and generates an
+error but the algorithm used by the package is unable to gracefully
+handle it in an automated fashion (some alternatives for resolving the
+problem if it happens are given in the package documentation).
-\paragraph{Improvement in \texttt{xspace} and font-switching}
+\paragraph{Improvement in \file{xspace} and font-switching}
-The \texttt{xspace} package provides the command \verb|\xspace|
+The \file{xspace} package provides the command \verb|\xspace|
which attempts to be clever about inserting spaces automatically
after user-defined control sequences.
An important bug fix has been made to this command to correct its
@@ -116,27 +143,31 @@ would result in an extraneous space being inserted after `foo' in
both cases; this has now been corrected.
-\paragraph{RTL in \texttt{multicol}}
+\paragraph{RTL in \file{multicol}}
- The 1.7 release of \texttt{multicol} adds support for languages that are typeset
- right-to-left. For those languages the order of the columns on the page
- also needs to be reversed---something that wasn't possible in earlier releases.
+ The 1.7 release of \file{multicol} adds support for languages that
+ are typeset right-to-left. For those languages the order of the
+ columns on the page also needs to be reversed---something that wasn't
+ possible in earlier releases.
The new feature is supported through the
commands \verb|\RLmulticolcolumns| (switching to right-to-left typesetting)
and \verb|\LRmulticolcolumns| (switching to left-to-right typesetting) the
latter being the default.
-\paragraph{Improve French \texttt{babel} interaction with \texttt{varioref}}
-
- Extracting and saving the page number turned out to be a source of subtle
- bugs. Initially it was done through an \verb"\edef" with a bunch of
-\verb"\expandafter" commands inside. This posed a problem if the page number
- itself contained code which needed protection (e.g., pr/4080) so this got
- changed in the last release to use \verb"\protected@edef". However, that in turn failed with Babel
-(bug report/4093) if the label contained active characters, e.g., a ``:'' in French. So now
-we use (after one failed attempt pr/4159) even more \verb"\expandafter" commands and \verb"\romannumeral" trickery to avoid any expansion other
- than what is absolutely required---making the code in that space absolutely unreadable.
+\paragraph{Improve French \file{babel} interaction with \file{varioref}}
+
+ Extracting and saving the page number turned out to be a source of
+ subtle bugs. Initially it was done through an \verb"\edef" with a
+ bunch of \verb"\expandafter" commands inside. This posed a problem if
+ the page number itself contained code which needed protection (e.g.,
+ pr/4080) so this got changed in the last release to use
+ \verb"\protected@edef". However, that in turn failed with Babel (bug
+ report/4093) if the label contained active characters, e.g., a ``:''
+ in French. So now we use (after one failed attempt pr/4159) even more
+ \verb"\expandafter" commands and \verb"\romannumeral" trickery to
+ avoid any expansion other than what is absolutely required---making
+ the code in that space absolutely unreadable.
\begin{verbatim}
\expandafter\def\expandafter#1\expandafter{%
\romannumeral
@@ -148,6 +179,8 @@ we use (after one failed attempt pr/4159) even more \verb"\expandafter" commands
\z@
\csname r@#2\endcsname\@nil}%
\end{verbatim}
-Code like this nicely demonstrates the limitations in the programming layer of \LaTeXe{} and the advantages that \textsf{expl3} will offer on this level.
+Code like this nicely demonstrates the limitations in the programming
+layer of \LaTeXe{} and the advantages that \textsf{expl3} will offer
+on this level.
\end{document}
diff --git a/macros/latex-dev/base/ltnews21.pdf b/macros/latex-dev/base/ltnews21.pdf
index 258f2ad4d6..eb5b476b0b 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/ltnews21.tex b/macros/latex-dev/base/ltnews21.tex
index 14de47c648..7b363447d9 100644
--- a/macros/latex-dev/base/ltnews21.tex
+++ b/macros/latex-dev/base/ltnews21.tex
@@ -41,6 +41,12 @@
\publicationissue{21}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -73,7 +79,7 @@ at:\\ \url{http://latex-project.org/cgi-bin/ltxbugs2html}
\let\paragraph\subsubsection
-\paragraph{\textsf{fixltx2e} updates}
+\paragraph{\pkg{fixltx2e} updates}
@@ -86,7 +92,7 @@ a particular misfeature. Thus changing the kernel code would break
too many existing documents.
The corrections for these types of bug have therefore been collected together
-in a package that can be loaded only when needed; its name is \textsf{fixltx2e}.
+in a package that can be loaded only when needed; its name is \pkg{fixltx2e}.
For this release we made the following changes to this package:
\begin{itemize}
\item
@@ -97,7 +103,7 @@ For this release we made the following changes to this package:
\item
\LaTeX's float handling algorithm can get out of sync if you mix
single and double-column floats (as they are placed independently
- of each other). This was corrected in \textsf{fixltx2e} a few years ago
+ of each other). This was corrected in \pkg{fixltx2e} a few years ago
but the fix was not perfect as one situation using
\verb=\enlargethispage= generated a low-level \TeX{} error.
This behaviour of the package is now improved.
@@ -106,12 +112,12 @@ For this release we made the following changes to this package:
-\paragraph{New \textsf{fltrace} package}
+\paragraph{New \pkg{fltrace} package}
-For years the file \texttt{ltoutput.dtx} contained some hidden code to
+For years the file \file{ltoutput.dtx} contained some hidden code to
trace the detailed behaviour of the float placement algorithm of
\LaTeX. Prompted by questions on StackExchange we now extract this
-code into a new \textsf{fltrace} package. To see the float algorithm
+code into a new \pkg{fltrace} package. To see the float algorithm
in action (or to understand why it decides to place all your floats at
the very end of the document) use
\begin{verbatim}
@@ -122,33 +128,33 @@ To stop tracing somewhere in the document use
parameters use \verb=\tracefloatvals=. As the package is identical to
the kernel code with tracing added, it may or may not work if you load any
other package that manipulates that part of the kernel code. In such a
-case your best bet is to load \textsf{fltrace} first.
+case your best bet is to load \pkg{fltrace} first.
-\paragraph{\textsf{inputenc} package updates}
+\paragraph{\pkg{inputenc} package updates}
-The \textsf{inputenc} package allows different input encodings for
+The \pkg{inputenc} package allows different input encodings for
\LaTeX\ documents to be specified including the important
-\texttt{utf8} option used to specify the Unicode UTF-8 encoding. A
+\option{utf8} option used to specify the Unicode UTF-8 encoding. A
common mistake in documents has been to also include this option when
using the Unicode-based \TeX\ engines \hologo{LuaTeX} and \hologo{XeTeX}
producing strange errors as these engines natively deal with UTF-8
characters.
If a document stored in an 8bit encoding is processed by
-\hologo{pdfTeX}, it needs the \textsf{inputenc} package to work
+\hologo{pdfTeX}, it needs the \pkg{inputenc} package to work
correctly. However, if such a document is processed unchanged by
\hologo{LuaTeX} or \hologo{XeTeX}, then accented characters may
silently get dropped from the output.
The package has been modified so that if used with \hologo{LuaTeX} or
-\hologo{XeTeX}, then it just issues a warning if \texttt{utf8} or
-\texttt{ascii} is specified, and stops with an error for any other
+\hologo{XeTeX}, then it just issues a warning if \option{utf8} or
+\option{ascii} is specified, and stops with an error for any other
encoding requested.
One further improvement has been made to the encoding definition files
-(\texttt{.def}) used by \textsf{inputenc}: the catcode of \texttt{@}
+(\texttt{.def}) used by \pkg{inputenc}: the catcode of \texttt{@}
is now saved and restored when reading them instead of always using
\verb=\makeatother= inside the files (latex/4192).
@@ -163,9 +169,9 @@ started to provide individual \texttt{.ins} files for each of those
packages that are likely to require updates outside a major
\LaTeX{} release.
-\paragraph{\textsf{multicol} updates}
+\paragraph{\pkg{multicol} updates}
-Version 1.8 of \textsf{multicol} implements some improvements/fixes
+Version 1.8 of \pkg{multicol} implements some improvements/fixes
and one extension. In the past the balancing algorithm enlarged the
column height until it found a solution that satisfied all
constraints. If there were insufficient break points then the final
@@ -182,43 +188,43 @@ to allow the execution of code depending on the column in which the
command is executed. See the documentation for details.
Bug fixes: the new version fixes both a color leak that could happen
-in certain situations and the problem that \texttt{multicols} could
+in certain situations and the problem that \pkg{multicols} could
mess up the positioning of \verb=\marginpar=s that followed the
environment.
-\paragraph{\textsf{tabularx} updates}
+\paragraph{\pkg{tabularx} updates}
The restrictions on embedding \verb|\tabularx| \verb|\endtabularx|
into the definition of a new environment have been relaxed
slightly. See the package documentation for details.
-\paragraph{\textsf{showkeys} updates}
+\paragraph{\pkg{showkeys} updates}
-The \textsf{showkeys} package has been updated to fix problems if used
+The \pkg{showkeys} package has been updated to fix problems if used
at the start of list items, and to work if brace groups (\verb|{| and
\verb|}|) are used in the optional argument of
\verb|\cite|. (tools/4162, tools/4173)
-\paragraph{\textsf{color} updates}
+\paragraph{\pkg{color} updates}
The \verb|\nopagecolor| command suggested by Heiko Oberdiek,
-available for some years in the \textsf{pdftex} option, has been
+available for some years in the \option{pdftex} option, has been
added to the core package as suggested in graphics/3873. Currently
this is supported in the driver files for \textsf{dvips} and
\textsf{pdftex}. Patches to support other drivers are welcome.
- \paragraph{\textsf{graphicx} updates}
+ \paragraph{\pkg{graphicx} updates}
-The \textsf{graphicx} version of \verb|\rotatebox| now allows
+The \pkg{graphicx} version of \verb|\rotatebox| now allows
\verb|\par| (and blank lines) in values, to match the change made
-to the \textsf{graphics} version some years ago. See graphics/4296.
+to the \pkg{graphics} version some years ago. See graphics/4296.
-\paragraph{\textsf{keyval} updates}
+\paragraph{\pkg{keyval} updates}
-All parsing used in the \textsf{keyval} package has been changed
+All parsing used in the \pkg{keyval} package has been changed
to allow \verb|\par| (and blank lines) in values.
(A second change, to parsing of brace groups
in a construct such as \texttt{key=\{\{\{value\}\}\}}, was reverted in v1.15.)
diff --git a/macros/latex-dev/base/ltnews22.pdf b/macros/latex-dev/base/ltnews22.pdf
index 878636b1f7..97622a3b34 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/ltnews22.tex b/macros/latex-dev/base/ltnews22.tex
index e73fb4b7c4..7551616154 100644
--- a/macros/latex-dev/base/ltnews22.tex
+++ b/macros/latex-dev/base/ltnews22.tex
@@ -40,6 +40,12 @@
\publicationissue{22}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -49,29 +55,29 @@
\subsection{Introduction}
For some years we have supplied bug fixes to the \LaTeXe\ kernel via the
-\textsf{fixltx2e} package. This
+\pkg{fixltx2e} package. This
kept the kernel stable, but at the expense of meaning that most users did not
benefit from bug fixes, and that some compromises
which were made to save space in the
machines of the time are still affecting most users today.
In this release we have started a new update policy. All the fixes previously
-available via \textsf{fixltx2e} are now enabled \emph{by default} in the
+available via \pkg{fixltx2e} are now enabled \emph{by default} in the
format, as are some further extensions for extended \TeX\ engines, \eTeX,
\hologo{XeTeX} and \hologo{LuaTeX}. Compatibility and stability are still
important considerations, and while most users will not notice these
-improvements, or will want to benefit from them, a new \textsf{latexrelease}
+improvements, or will want to benefit from them, a new \pkg{latexrelease}
package is provided that will revert all the changes and re-instate the
definitions from earlier releases. The package can also be used with older
releases to effectively \emph{update} the kernel to be equivalent to this 2015
release.
-A new document, \textsf{latexchanges}, is distributed with the release
+A new document, \file{latexchanges}, is distributed with the release
that documents all the changes to documented commands since the 2014
\LaTeX\ release, and will be updated in future releases if further
changes have been made.
-\subsection{The \textsf{latexrelease} package}
+\subsection{The \pkg{latexrelease} package}
As noted above a new package is available to manage differences between \LaTeX\
releases. If you wish to revert all changes back to the definitions as they
@@ -86,21 +92,21 @@ against possible future changes, you may start your document
\RequirePackage[2015/01/01]{latexrelease}
\documentclass{article}
\end{verbatim}
-Then the version of \textsf{latexrelease} distributed with any future \LaTeX\
+Then the version of \pkg{latexrelease} distributed with any future \LaTeX\
release will revert any changes made in that format, and revert to the
definitions as they where at the beginning of 2015.
If you wish to share a document using the latest features with a
user restricted to using an older
-format, you may use the form above and make the \textsf{latexrelease} package
+format, you may use the form above and make the \pkg{latexrelease} package
available on the older installation. The package will then update the format
definitions as needed to enable the older format to work as if dated on the date
specified in the package option.
\subsection{The \cs{IncludeInRelease} command}
-The mechanism used in the \textsf{latexrelease} package is available for use in
-package code. If in your \textsf{zzz} package you have
+The mechanism used in the \pkg{latexrelease} package is available for use in
+package code. If in your \pkg{zzz} package you have
\begin{verbatim}
\RequirePackage{latexrelease}
\IncludeInRelease{2015/06/01}
@@ -116,7 +122,7 @@ then in a document using a format dated 2015/06/01 or later, the ``new code''
will be used, and for documents being processed with an older format, the
``original'' code will be used. Note the format date here may be the original
format date as shown at the start of every \LaTeX\ run, or a format date
-specified as a package option to the \textsf{latexrelease} package.
+specified as a package option to the \pkg{latexrelease} package.
So if the document has
\begin{verbatim}
@@ -132,7 +138,7 @@ processed with the current format, as the format acts as if dated 2014/05/01.
The new concept provides full backward and forward compatibility for
the \LaTeX{} format, i.e., with the help of a current
-\textsf{latexrelease} package the kernel can emulate all released
+\pkg{latexrelease} package the kernel can emulate all released
formats (starting with 2014/06/01\footnote{Patching an older format
most likely works too, given that the changes in the past have been
minimal, though this isn't guaranteed and hasn't been tested.}).
@@ -155,10 +161,10 @@ help identifying what release tree to use to achieve perfect accuracy.
\section{Updates to the kernel}
-\subsection{Updates incorporated from \textsf{fixltx2e}}
+\subsection{Updates incorporated from \pkg{fixltx2e}}
-The detailed list of changes incorporated from \textsf{fixltx2e} is
-available in the new \textsf{latexchanges} document that is
+The detailed list of changes incorporated from \pkg{fixltx2e} is
+available in the new \file{latexchanges} document that is
distributed with this release. The main changes are that $2$-column
floats are kept in sequence with one column floats, corrections are
made to the \verb|\mark| system to ensure correct page headings in
@@ -170,18 +176,18 @@ $2$-column documents, several additional commands are made robust.
that allocated registers in the range $0$--$255$. Almost all distributions have
for some years used \eTeX\ based formats (or \hologo{XeTeX} or \hologo{LuaTeX})
which have $2^{15}$ registers of each type ($2^{16}$ in the case of
-\hologo{LuaTeX}). The \textsf{etex} package has been available to provided an
+\hologo{LuaTeX}). The \pkg{etex} package has been available to provided an
allocation mechanism for these extended registers but now the format will by
default allocate in a range suitable for the engine being used. The new
-allocation mechanism is different than the \textsf{etex} package mechanism, and
+allocation mechanism is different than the \pkg{etex} package mechanism, and
supports \hologo{LuaTeX}'s full range and an allocation mechanism for \LaTeX\
floats as described below.
On \eTeX\ based engines, an additional command, \verb|\newmarks| is available
-(as with the \textsf{etex} package) that allocates extended \eTeX\ marks, and
+(as with the \pkg{etex} package) that allocates extended \eTeX\ marks, and
similarly if \hologo{XeTeX} is detected a new command
\verb|\newXeTeXintercharclass| is available, this is similar to the command
-previously defined in the \texttt{xelatex.ini} file used to build the
+previously defined in the \file{xelatex.ini} file used to build the
\texttt{xelatex} format.
\subsection{Additional \LaTeX{} float storage}
@@ -189,7 +195,7 @@ previously defined in the \texttt{xelatex.ini} file used to build the
\LaTeX's float placement algorithm needs to store floats (figures and tables)
until it finds a suitable page to output them. It allocates $18$ registers for
this storage, but this can often be insufficient.
- The contributed \textsf{morefloats} package has
+ The contributed \pkg{morefloats} package has
been available to extend this list; however, it also only allocates from the
standard range $0$--$255$ so cannot take advantage of the extended registers.
The new allocation mechanism in this release incorporates a new command
@@ -203,11 +209,11 @@ make many more boxes available to hold floats.
The kernel sources now detect the engine being used and adjust definitions
accordingly, this reduces the need for the ``\texttt{.ini}'' files used to make
-the formats to patch definitions defined in \texttt{latex.ltx}.
+the formats to patch definitions defined in \file{latex.ltx}.
As noted above the format now includes extended allocation routines.
-The distribution includes a file \textsf{unicode-letters.def} derived from the
+The distribution includes a file \file{unicode-letters.def} derived from the
Unicode Consortium's Unicode Character Data files that details the upper and
lower case transformation data for the full Unicode range. This is used to set
the \verb|lccode| and \verb|uccode| values if a Unicode engine is being used,
@@ -235,7 +241,7 @@ As well as updating the build system, the team have looked again at exactly
what gets released to \textsc{ctan}. Taking inspiration from Heiko Oberdiek's
\textsf{latex-tds} bundle, the PDF documentation provided now includes
hyperlinks where appropriate. This has been done without modifying the sources
-such that users without \textsf{hyperref} available can still typeset the
+such that users without \pkg{hyperref} available can still typeset the
documentation using only the core distribution. At the same time, the release
now includes ready-to-install TDS-style zip files. This will be of principal
interest to \TeX\ system maintainers, but end users with older machines who
diff --git a/macros/latex-dev/base/ltnews23.pdf b/macros/latex-dev/base/ltnews23.pdf
index 7978622df5..5612fc112c 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/ltnews23.tex b/macros/latex-dev/base/ltnews23.tex
index 36f8948e7d..99e9615074 100644
--- a/macros/latex-dev/base/ltnews23.tex
+++ b/macros/latex-dev/base/ltnews23.tex
@@ -54,6 +54,12 @@
\publicationissue{23}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -77,35 +83,35 @@ The main feature of this release is that by default it includes
allocators for \hologo{LuaTeX}-provided features, such as Lua
functions, bytecode registers, catcode tables and Lua callbacks.
Previously these features have been provided by the contributed
-\package{luatex} (Heiko Oberdiek) and \package{luatexbase}
+\pkg{luatex} (Heiko Oberdiek) and \pkg{luatexbase}
(\'{E}lie Roux,
Manuel P\'{e}gouri\'{e}-Gonnard and Philipp Gesang)
packages. However, just as
-noted with the \package{etex} package in the previous release, it is
+noted with the \pkg{etex} package in the previous release, it is
better if allocation is handled by the format to avoid problems with
conflicts between different allocation schemes, or definitions made
before a package-defined allocation scheme is enabled.
The facilities incorporated into the format with this release, and
-described below, are closely modelled on the \package{luatexbase}
+described below, are closely modelled on the \pkg{luatexbase}
package and we thank the authors, and especially \'{E}lie Roux, for
help in arranging this transition.
The implementation of these \hologo{LuaTeX} features has been
redesigned to match the allocation system introduced in the 2015/01/01
\LaTeX\ release, and there are some other differences from the previous
-\package{luatexbase} package. However, as noted below,
-\package{luatexbase} is being updated in line with this \LaTeX\ release
+\pkg{luatexbase} package. However, as noted below,
+\pkg{luatexbase} is being updated in line with this \LaTeX\ release
to provide the previous interface as a wrapper around the new
implementation, so we expect the majority of documents using
-\package{luatexbase} to work without change.
+\pkg{luatexbase} to work without change.
\subsection{Names of \hologo{LuaTeX} primitive commands}
The 2015/01/01 \LaTeX\ release for the first time initialised
-\hologo{LuaTeX} in \textsf{latex.ltx} if \hologo{LuaTeX} is being
+\hologo{LuaTeX} in \file{latex.ltx} if \hologo{LuaTeX} is being
used. Following the convention used in the contributed
-\textsf{lualatex.ini} file used to set up the format for earlier
+\file{lualatex.ini} file used to set up the format for earlier
releases, most \hologo{LuaTeX}-specific primitives were defined with
names prefixed by \texttt{luatex}. This was designed to minimize name
clashes but had the disadvantage that names did not match the
@@ -136,7 +142,7 @@ then you can add:
\end{verbatim}
to your document.
-Note the compatibility layer offered by the \package{luatexbase} package
+Note the compatibility layer offered by the \pkg{luatexbase} package
described below makes several commands available under both names.
As always, this change can be reverted using:\\
@@ -147,8 +153,8 @@ at the start of the document.
\subsection{\TeX\ commands for allocation in \hologo{LuaTeX}}
For detailed descriptions of the new allocation commands see the
-documented sources in \textsf{ltluatex.dtx} or chapter N of
-\textsf{source2e}; however, the following new allocation commands are
+documented sources in \file{ltluatex.dtx} or chapter N of
+\file{source2e}; however, the following new allocation commands are
defined by default in \hologo{LuaTeX}:
\verb|\newattribute|,
\verb|\newcatcodetable|,
@@ -165,13 +171,13 @@ several catcode tables are predefined:
\subsection{Predefined Lua functions}
If used with \hologo{LuaTeX}, \LaTeX\ will initialise a Lua table,
-\textsf{luatexbase}, with functions supporting allocation and also
+\texttt{luatexbase}, with functions supporting allocation and also
the registering of Lua callback functions.
\subsection{Support for older releases and plain \TeX}
The \hologo{LuaTeX} allocation functionality made available in this
release is also available in plain \TeX\ and older \LaTeX\ releases
-in the files \textsf{ltluatex.tex} and \textsf{ltluatex.lua} which may be
+in the files \file{ltluatex.tex} and \file{ltluatex.lua} which may be
used simply by including the \TeX\ file: \verb|\input{ltluatex}|.
An alternative for old \LaTeX\ releases is to use:\\
\verb|\RequirePackage[2015/10/01]{latexrelease}|\\
@@ -181,21 +187,21 @@ which will update the kernel to the current release, including
\subsection{Additional \hologo{LuaTeX} support packages}
In addition to the base \LaTeX\ release two packages have been
contributed to the \textsf{contrib} area on CTAN. The
-\package{ctablestack} package offers some commands to help package
-writers control the \hologo{LuaTeX} \textsf{catcodetable}
-functionality, and the \package{luatexbase} package replaces the
+\pkg{ctablestack} package offers some commands to help package
+writers control the \hologo{LuaTeX} \texttt{catcodetable}
+functionality, and the \pkg{luatexbase} package replaces the
previously available package of the same name, providing a compatible
-interface but implemented over the \package{ltluatex} code.
+interface but implemented over the \pkg{ltluatex} code.
\section{More Floats and Inserts}
If \hologo{eTeX} is available, the number of registers allocated in
the format to hold floats such as figures is increased from 18 to 52.
The extended allocation system introduced in 2015/01/01 means that in
-most cases it is no longer necessary to load the \package{etex}
+most cases it is no longer necessary to load the \pkg{etex}
package. Many classes and packages that previously loaded this package
no longer do so. Unfortunately in some circumstances where a package
-or class previously used the \package{etex} \verb|\reserveinserts|
+or class previously used the \pkg{etex} \verb|\reserveinserts|
command, it is possible for a document that previously worked to
generate an error ``no room for a new insert''. In practice this error
can always be avoided by declaring inserts earlier, before the
@@ -213,7 +219,7 @@ insert allocations which is more than enough for practical documents
\section{Updated Unicode data}
-The file \textsf{unicode-letters.def} recording catcodes, upper and
+The file \file{unicode-letters.def} recording catcodes, upper and
lower case mappings and other properties for Unicode characters has
been regenerated using the data files from Unicode~8.0.0.
@@ -223,8 +229,8 @@ This is mainly used for the Romanian letters
\textcommabelow{S}\textcommabelow{s}\textcommabelow{T}\textcommabelow{t}.
This was requested in latex/4414 in the \LaTeX\ bug tracker.
-\section{Extended \package{inputenc}}
-The \texttt{utf8} option for \package{inputenc} has been extended to support
+\section{Extended \pkg{inputenc}}
+The \option{utf8} option for \pkg{inputenc} has been extended to support
the letters s and t with comma accent,
U+0218\,--\,U+021b. Similarly circumflex w and y U+0174\,--\,U+0177 are defined.
Also U+00a0 and U+00ad are declared by default, and defined to be
@@ -250,8 +256,8 @@ level.
\section{Updates in tools}
-The \package{multicol} package has been updated to fix the interaction
+The \pkg{multicol} package has been updated to fix the interaction
with ``here'' floats that land on the same page as the start or end of
-a \textsf{multicols} environment.
+a \env{multicols} environment.
\end{document}
diff --git a/macros/latex-dev/base/ltnews24.pdf b/macros/latex-dev/base/ltnews24.pdf
index 1752ed71a7..8edd07e2ce 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/ltnews24.tex b/macros/latex-dev/base/ltnews24.tex
index 5dee993186..44cd76a060 100644
--- a/macros/latex-dev/base/ltnews24.tex
+++ b/macros/latex-dev/base/ltnews24.tex
@@ -67,6 +67,12 @@
\publicationissue{24}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -77,7 +83,7 @@
This release refines the \hologo{LuaTeX} support introduced in the
2015/10/01 release. A number of patches have been added to improve the
-behavior of \package{ltluatex} (thanks largely to code review by Philipp Gesang).
+behavior of \pkg{ltluatex} (thanks largely to code review by Philipp Gesang).
The kernel code has been adjusted to
allow for changes in \hologo{LuaTeX} v0.85--v0.88. Most notably, newer
\hologo{LuaTeX} releases allow more than $16$ write streams and these are now
@@ -94,10 +100,10 @@ files in this release but has required major changes to the
\texttt{.ini} files used by \TeX{} Live and similar distributions to
set up the format files. These changes in the \hologo{LuaTeX} engine
will affect any packages using these back end commands (packages such
-as \package{graphics}, \package{color}, \package{hyperref}, etc.).
+as \pkg{graphics}, \pkg{color}, \pkg{hyperref}, etc.).
Until all contributed packages are updated to the new syntax users may
need to add aliases for the old \hologo{pdfTeX} commands. A new
-\package{luapdftexalias} package has been contributed to CTAN (not part of the
+\pkg{luapdftexalias} package has been contributed to CTAN (not part of the
core \LaTeX\ release) that may be used for this purpose.
See also the sections below for related changes in the
@@ -118,7 +124,7 @@ a ready-to-use form as \verb|unicode-letters.def|. However, the relationship
between the Unicode Consortium files and \TeX{} data structures is non-trivial and still
being explored. As such, it is preferable to directly parse the original
(\verb|.txt|) files at point of use. The team has therefore ``spun-out'' both
-the data and the loading to a new generic package, \package{unicode-data}. This
+the data and the loading to a new generic package, \pkg{unicode-data}. This
package makes the original Unicode Consortium data files available in the
\verb|texmf| tree (in \verb|tex/generic/unicode-data|) and provides generic
loaders suitable for reading this data into the plain, \LaTeXe{}, and other,
@@ -133,7 +139,7 @@ At present, the following data files are included in this new package:
\item \verb|SpecialCasing.txt|
\item \verb|UnicodeData.txt|
\end{itemize}
-These files are used either by \LaTeXe{} or by \package{expl3}
+These files are used either by \LaTeXe{} or by \textsf{expl3}
(i.e.~they represent the set currently required by the team). The
Unicode Consortium provides various other data files and we would be happy to add
these to the generic package, as it is intended to provide a single place
@@ -155,8 +161,8 @@ to \verb|\XeTeXinterchartoks| and that no \verb|\XeTeXintercharclass| data is
loaded into the format. The values which were previously inherited from
the plain \hologo{XeTeX} setup files are \emph{not} suitable for properly
typesetting East Asian text. There are third-party packages addressing this
-area well, notably those in the \package{CTeX} bundle. Third-party packages
-may need adjustment to load the data themselves; see the \textsf{unicode-data}
+area well, notably those in the \textsf{CTeX} bundle. Third-party packages
+may need adjustment to load the data themselves; see the \pkg{unicode-data}
package for one possible loader.
\section{More support for east European accents}
@@ -174,7 +180,7 @@ required. In T1 encoding, the composite of \verb|\c| with \texttt{k}, \texttt{l
declared to use the comma below accent rather than cedilla to match the
conventional use of these letters.
-The UTF-8 \texttt{inputenc} option \texttt{utf8} has been extended to
+The UTF-8 \pkg{inputenc} option \option{utf8} has been extended to
support all latin combinations that can be reasonably constructed with a
(single) accent command an a base character for the T1 encoding so
\textcommaabove{g}, \k{u} and similar characters may be directly input
@@ -182,24 +188,24 @@ using UTF-8 encoding.
\section{Changes in Graphics}
-The changes in \hologo{LuaTeX}~v0.87 mean that the \package{color} and
-\package{graphics} packages no longer share the \texttt{pdftex.def} file
+The changes in \hologo{LuaTeX}~v0.87 mean that the \pkg{color} and
+\pkg{graphics} packages no longer share the \file{pdftex.def} file
between \hologo{LuaTeX} and \hologo{pdfTeX}. A separate file
-\texttt{luatex.def} (distributed separately) has been produced, and
-distributions are encouraged to modify \texttt{graphics.cfg} and
-\texttt{color.cfg} configuration files to default to the \texttt{luatex}
+\file{luatex.def} (distributed separately) has been produced, and
+distributions are encouraged to modify \file{graphics.cfg} and
+\file{color.cfg} configuration files to default to the \option{luatex}
option if \hologo{LuaTeX}~v0.87 or later is being used. The team has
contributed suitable \texttt{.cfg} files to CTAN to be used
as models.
-Normally it is best to let the local \texttt{graphics.cfg}
+Normally it is best to let the local \file{graphics.cfg}
automatically supply the right option depending on the \TeX\ engine
-being used; however the \package{color} and \package{graphics} (and so
-\package{graphicx}) packages have been extended to have an explicit
-\texttt{luatex} option comparable to the existing \texttt{pdftex} and
-\texttt{xetex} options.
+being used; however the \pkg{color} and \pkg{graphics} (and so
+\pkg{graphicx}) packages have been extended to have an explicit
+\option{luatex} option comparable to the existing \option{pdftex} and
+\option{xetex} options.
-The \package{trig} package has been updated so that pre-computed values
+The \pkg{trig} package has been updated so that pre-computed values
such as $\sin(90)$ now expand to digits (\texttt{1} rather than the
internal token \verb|\@one| in this case). This allows them to be used
directly in PDF literal strings.
@@ -208,7 +214,7 @@ directly in PDF literal strings.
\hologo{LuaTeX} from version v0.87 no longer supports the
\verb|\write18| syntax to access system commands. A new package
-\package{shellesc} has been added to \textsf{tools} that defines a new
+\pkg{shellesc} has been added to \textsf{tools} that defines a new
command \verb|\ShellEscape| that may be used in all \TeX\ variants to
provide a consistent access to system commands. The package also
defines \verb|\write18| in \hologo{LuaTeX} so that it continues to access
@@ -233,12 +239,12 @@ future releases.
The default font setup in \LaTeXe{} at present is to use the \texttt{OT1}
encoding. This assumes that hyphenation patterns have been read using
appropriate codes: the \texttt{T1} encoding is assumed. The commonly-used
-hyphenation patterns today, \package{hyph-utf8}, are set up in this
+hyphenation patterns today, \texttt{hyph-utf8}, are set up in this
way for $8$-bit engines (\hologo{pdfTeX}) but for Unicode engines use
Unicode code points. This means that hyphenation will be incorrect
with Unicode engines unless a Unicode font is loaded. This requires
a concept of a Unicode font encoding, which is currently provided by
-the \package{fontspec} package in two versions, \texttt{EU1} and
+the \pkg{fontspec} package in two versions, \texttt{EU1} and
\texttt{EU2}. The team is working to fully understand what is meant
by a ``Unicode font encoding'', as unlike a classical \TeX{} encoding
it is essentially impossible to know what glyphs will be provided
diff --git a/macros/latex-dev/base/ltnews25.pdf b/macros/latex-dev/base/ltnews25.pdf
index 6314a5dce5..57711398fb 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/ltnews25.tex b/macros/latex-dev/base/ltnews25.tex
index e1881018ba..735fda356e 100644
--- a/macros/latex-dev/base/ltnews25.tex
+++ b/macros/latex-dev/base/ltnews25.tex
@@ -41,6 +41,12 @@
\publicationissue{25}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -55,13 +61,13 @@ allocation mechanism has been updated to match the callbacks defined
in Lua\TeX\ version 0.90.
These changes have also required updates in \textsf{tools}
-and \textsf{amsmath} as described below.
+and \pkg{amsmath} as described below.
This is the first release of \LaTeX\ for which the test suite reports
no failures when used with Lua\TeX.
\section{Documentation checksums}
-The \package{doc} package has always provided two mechanisms that were
+The \pkg{doc} package has always provided two mechanisms that were
mainly intended to guard against file truncation or corruption when
files were commonly distributed by email through unreliable mail
gateways: a Character Table of the ASCII character set could be
@@ -69,69 +75,69 @@ inserted (and checked) and a ``checksum'' (count of the number of
backslashes in the code sections) could be checked. These features
are not really needed with modern distribution mechanisms and can be a
distraction when reading the source code and so have been removed. The
-\package{doc} package has been updated so that if you use a
+\pkg{doc} package has been updated so that if you use a
\verb|\CheckSum| command then, as before, the number is checked;
however, if you omit the command then no error or warning is given.
-\section{Updates to \package{inputenc}}
+\section{Updates to \pkg{inputenc}}
-The UTF-8 support in \package{inputenc} has been further extended with
+The UTF-8 support in \pkg{inputenc} has been further extended with
support for non-breaking hyphens and more dashes.
\section{Updates in Tools}
-The \package{varioref} package has been updated with improved
+The \pkg{varioref} package has been updated with improved
documentation of multi\-lingual support, and avoiding unnecessary warnings in
some cases with \verb|\reftextfaraway|.
-The \package{tabularx} package's handling of \verb|\endtabularx| in
+The \pkg{tabularx} package's handling of \verb|\endtabularx| in
environment definitions has been fixed to again match its documentation.
-The \package{bm} package has been updated as required by the changes
+The \pkg{bm} package has been updated as required by the changes
to \verb|\mathchardef| in Lua\TeX.
\section{amsmath}
-Since the launch of \LaTeXe\ in 1993, the \textsf{amsmath} bundle has
+Since the launch of \LaTeXe\ in 1993, the \pkg{amsmath} bundle has
been part of the \emph{required} packages in the core \LaTeX\
distribution, with bug reports handled by the \LaTeX\ bug database at
\url{https://latex-project.org/bugs-upload.html}.
-The \textsf{amsmath} packages and the \textsf{amscls} classes have
+The \pkg{amsmath} packages and the \cls{amscls} classes have
been maintained by the American Mathematical Society.
With this release a new arrangement has been agreed between the
American Mathematical Society and the \LaTeX3 project. The \LaTeX3
-project will take over maintenance of the \textsf{amsmath} bundle,
+project will take over maintenance of the \pkg{amsmath} bundle,
with the American Mathematical Society retaining maintenance of
-\textsf{amscls}.
+\cls{amscls}.
The recommended installation of these files in the \TeX\ directory
structure remains unchanged as \path|tex/latex/amsmath| and
\path|tex/latex/amscls| respectively.
-This release of \package{amsmath} includes several updates so that
-\package{amsmath} does not generate errors when math is used with
+This release of \pkg{amsmath} includes several updates so that
+\pkg{amsmath} does not generate errors when math is used with
Lua\TeX\ v0.87+, which has changes to \verb|\mathchardef| that are
-incompatible with the previous version of \package{amsmath}. It also
+incompatible with the previous version of \pkg{amsmath}. It also
improves \verb|\dots| handling so that \verb|\long| macros are
correctly handled (for example, \verb|\dots \Rightarrow| now
uses centered dots), as well as commands expanding to character tokens
(for example, \verb|\times \dots \times| will use centered dots with
-\verb|\times| defined as in the \package{unicode-math} package).
+\verb|\times| defined as in the \pkg{unicode-math} package).
\section{Related updates}
In addition to the updates in the core \LaTeX\ release, some files in
the CTAN ``contrib'' area have also been updated. Notably there have
-been further updates to the \textsf{unicode-data} files; also, the
+been further updates to the \file{unicode-data} files; also, the
files required to build plain and \LaTeX\ formats have now been
-submitted to CTAN as \textsf{tex-ini-files}. The
-addition of a new \texttt{luatex} option for \textsf{graphics}-related
-packages (\textsf{luatex-def} on CTAN) has required updates to the
+submitted to CTAN as \file{tex-ini-files}. The
+addition of a new \option{luatex} option for \textsf{graphics}-related
+packages (\file{luatex-def} on CTAN) has required updates to the
configuration files to select a
default option and these have similarly been uploaded to CTAN as
-\textsf{graphics-cfg}. (Previously these files were maintained
+\file{graphics-cfg}. (Previously these files were maintained
directly in the \TeX\ Live repository, and were not available on CTAN.)
\end{document}
diff --git a/macros/latex-dev/base/ltnews26.pdf b/macros/latex-dev/base/ltnews26.pdf
index 1e9afbaf6d..bf327e9c39 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/ltnews26.tex b/macros/latex-dev/base/ltnews26.tex
index e1ae85dda8..f0e7578b70 100644
--- a/macros/latex-dev/base/ltnews26.tex
+++ b/macros/latex-dev/base/ltnews26.tex
@@ -40,6 +40,12 @@
\publicationissue{26}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -82,32 +88,32 @@ is not really suitable, and is especially problematic with
\hologo{XeLaTeX} as in the major distributions this is built with
Unicode based hyphenation patterns in the format. In practice this has
not been a major problem as documents use the contributed
-\textsf{fontspec} package in order to switch to a
+\pkg{fontspec} package in order to switch to a
Unicode encoded font.
In this release we are adding \texttt{TU} as a new supported
encoding in addition to the previously supported encodings such as \texttt{OT1}
and \texttt{T1}. This denotes a Unicode based font encoding. It is essentially
the same as the \texttt{TU} encoding that has been on trial with the
-experimental \texttt{tuenc} option to \textsf{fontspec} for the past
+experimental \option{tuenc} option to \pkg{fontspec} for the past
year.
The \hologo{XeLaTeX} and \hologo{LuaLaTeX} formats will now default
to \texttt{TU} encoding and \texttt{lmr} (Latin Modern) family. In the
-case of \hologo{LuaLaTeX} the contributed \textsf{luaotfload} Lua
+case of \hologo{LuaLaTeX} the contributed \texttt{luaotfload} Lua
module will be loaded at the start of each run to enable the loading
of OpenType fonts.
-The \textsf{fontspec} package is being adjusted in a companion release
+The \pkg{fontspec} package is being adjusted in a companion release
to recognise the new encoding default arrangements.
Note that in practice no font supports the full Unicode range, and so
\texttt{TU} encoded fonts, unlike fonts specified for \texttt{T1}, may be
expected to be incomplete in various ways. In the current release the file
-\texttt{tuenc.def} that implements the \texttt{TU} encoding-specific commands
+\file{tuenc.def} that implements the \texttt{TU} encoding-specific commands
has made some basic assumptions for (for example) default handling of
accent commands, and the set of command names is derived from the
-command names used for the UTF-8 support in the \textsf{inputenc} package,
+command names used for the UTF-8 support in the \pkg{inputenc} package,
restricted roughly to the character ranges classically provided by
the \texttt{T1} and \texttt{TS1} encodings, but is part of a longer term plan
seen over recent releases to increase support for Unicode based \TeX\ engines
@@ -130,54 +136,54 @@ document with
\section{\cs{showhyphens} in \hologo{XeLaTeX}}
Due to the way \hologo{XeLaTeX} interfaces to font libraries, the
standard definition of \cs{showhyphens} does not work. A variant
-definition has been available in the contributed \textsf{xltxtra}
+definition has been available in the contributed \pkg{xltxtra}
package, however a (slightly different) definition for \cs{showhyphens}
is now included in \hologo{XeLaTeX} by default. As usual
this change will be undone if an earlier
-release is specified using the \textsf{latexrelease} package.
+release is specified using the \pkg{latexrelease} package.
-\section{The \textsf{fixltx2e} package}
-As described in \LaTeX{} News~22, the \textsf{fixltx2e} package has become
+\section{The \pkg{fixltx2e} package}
+As described in \LaTeX{} News~22, the \pkg{fixltx2e} package has become
obsolete with the new update policy. Since 2015 it has just made a
warning and exited. In this release we have re-introduced all
the code from the original fixes in the 2014 \LaTeX\ but guarded by
\verb|\IncludeInRelease{2015/01/01}|.
-So for current releases \textsf{fixltx2e} still just displays a warning
+So for current releases \pkg{fixltx2e} still just displays a warning
but for old releases, whether that is an old format, or a format with
-the version date reset via the \textsf{latexrelease} package, the
-fixes in the original \textsf{fixltx2e} will be applied.
+the version date reset via the \pkg{latexrelease} package, the
+fixes in the original \pkg{fixltx2e} will be applied.
This improves the ability to run old documents in a way that is compatible
with contemporary formats. If you have a 2014 document that used
\verb|\usepackage{fixltx2e}| and you add
\verb|\RequirePackage[2014/01/01]{latexrelease}| and process it with the
-current format then \textsf{latexrelease} will undo most changes made
-since 2014, but now when the document includes \textsf{fixltx2e} it
+current format then \pkg{latexrelease} will undo most changes made
+since 2014, but now when the document includes \pkg{fixltx2e} it
will act like a 2014 version of the package and apply the code fixes,
not just give a warning that the package is obsolete.
-\section{The \textsf{latexbug} package}
+\section{The \pkg{latexbug} package}
As explained in more detail
at the \LaTeX\ Project
website\footnote{\url{https://www.latex-project.org/bugs/}}
-a new package, \textsf{latexbug}, has been produced to help produce
+a new package, \pkg{latexbug}, has been produced to help produce
test files to accompany bug reports on the core \LaTeX\ distribution.
This is being published separately to CTAN at the same time as this
-release. By using the \textsf{latexbug} package you can easily check
+release. By using the \pkg{latexbug} package you can easily check
that the packages involved in the test are all part of the core
release. The \LaTeX\ project cannot handle bug reports on contributed
packages, which should be directed to the package maintainer as given
in the package documentation.
-\section{Updates to \textsf{amsmath}}
-The \textsf{amsmath} package has two updates at this release.
+\section{Updates to \pkg{amsmath}}
+The \pkg{amsmath} package has two updates at this release.
\begin{itemize}
-\item The spacing to the left of the \texttt{aligned} and
- \texttt{gathered} environments has been fixed: the spurious thin
+\item The spacing to the left of the \env{aligned} and
+ \env{gathered} environments has been fixed: the spurious thin
space is no longer added by default. Package options control this
to revert to the original behaviour where required; see the
- \textsf{amsldoc} guide for further details.
+ \file{amsldoc} guide for further details.
\item The large delimiters around generalised fractions (for example
in the \cs{binom} construct) did not work in previous releases if
using \hologo{LuaTeX} or \hologo{XeTeX} with OpenType math fonts. This is
@@ -193,34 +199,34 @@ The \textsf{amsmath} package has two updates at this release.
\end{itemize}
\section{Updates to \textsf{tools}}
-The \textsf{array} package has been updated to fix a longstanding but
+The \pkg{array} package has been updated to fix a longstanding but
previously unreported issue with unwanted interactions between tables
in the page head or foot and the body of the page, as reported in
\href{http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=tools/4488}{PR
tools/4488}.
-There is also an update to the \hologo{LuaTeX} support in \textsf{bm}.
+There is also an update to the \hologo{LuaTeX} support in \pkg{bm}.
\section{An addendum to the release changes in 2015: page breaks and vertical spacing}
In 2015 we announced the introduction of the roll-back\slash
roll-forward concept to manage bug fixes and additions to core
\LaTeX{} in a manageable way. We also announced at that time
-that we now incorporate all fixes from \textsf{fixltx2e} into the
+that we now incorporate all fixes from \pkg{fixltx2e} into the
kernel (as the old mechanism produced problems instead of improving
the situation). Refer to
-\href{https://www.latex-project.org/news/latex2e-news/ltnews22.pdf}{\texttt{ltnews22.pdf}}
+\href{https://www.latex-project.org/news/latex2e-news/ltnews22.pdf}{\file{ltnews22.pdf}}
for details.
-One of the fixes from \textsf{fixltx2e} was for a glaring bug in
+One of the fixes from \pkg{fixltx2e} was for a glaring bug in
\cs{addvspace} that was originally detected in the mid-nineties and
-back then added to the \textsf{fixltx2e} support package. In certain
+back then added to the \pkg{fixltx2e} support package. In certain
situations \cs{addvspace} would result in a page/column break below
the baseline of the last line. As a result documents using
\cs{flushbottom} would show a clear misalignment (even more prominent
when typesetting in two-column mode).
Starting with release 2015/01/01 this is now finally corrected already
-in the kernel and not only in \textsf{fixltx2e}. In nearly all
+in the kernel and not only in \pkg{fixltx2e}. In nearly all
circumstances this will either make no difference to existing
documents, or it will locally improve the visual appearance of that
document without changing anything on other pages. However, by the
diff --git a/macros/latex-dev/base/ltnews27.pdf b/macros/latex-dev/base/ltnews27.pdf
index cc752c82a0..318bcde667 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/ltnews27.tex b/macros/latex-dev/base/ltnews27.tex
index 3572b5e0b1..ba17d26e5e 100644
--- a/macros/latex-dev/base/ltnews27.tex
+++ b/macros/latex-dev/base/ltnews27.tex
@@ -40,6 +40,12 @@
\publicationissue{27}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -65,9 +71,9 @@ From this release, \LaTeX\ will accept ISO format date strings in the
date argument of \verb|\ProvidesPackage|, \verb|\usepackage|, etc.
Currently we recommend that you do not use this format in any packages
that need to work with older \LaTeX\ releases;
-the \textsf{latexrelease} package may be used with older releases to
+the \pkg{latexrelease} package may be used with older releases to
add this functionality. This change is handled in a special way by
- \textsf{latexrelease}: The package always adds support for ISO dates
+ \pkg{latexrelease}: The package always adds support for ISO dates
whatever format date is requested; this is required so that the
necessary date comparisons may be made.
@@ -92,10 +98,10 @@ verbatim environments use a \verb|\language| setting,
The format ensures that a language has been allocated with this name.
For most users this will in fact be no change as the standard
-\textsf{babel} language has for a long time allocated a language with
+\pkg{babel} language has for a long time allocated a language with
this name.
-In order that page breaks in \texttt{verbatim} do not influence the
+In order that page breaks in \env{verbatim} do not influence the
language used in the page head and foot, the format now normalises the
language used in the output routine to a default language as described
below.
@@ -103,7 +109,7 @@ below.
\section{Discretionary hyphenation}
The \LaTeX\ definition of \verb|\-| has been adjusted so that it will
insert the current font's \verb|\hyphenchar|, as would the
-\TeX\ primitive. A comment in \textsf{source2e} has given
+\TeX\ primitive. A comment in \file{source2e} has given
this new definition since the first releases of \LaTeXe, and in this
release we finally acted upon this comment. Previously \verb|\-|
always inserted a \texttt{-} at a break point even if a different
@@ -118,7 +124,7 @@ introduced; this is initialised to $-1$ but is set at
handling of the default color, and is used in a similar way to
normalise the settings for page head and foot as described above.
Users should not normally need to set this explicitly but it is expected that
-language packages such as \textsf{babel} may set this if the default
+language packages such as \pkg{babel} may set this if the default
behaviour is not suitable.
\section{Line spacing in parboxes}
@@ -129,7 +135,7 @@ lines of a paragraph that have ascenders or descenders could be set
with \emph{closer} line spacing than lines without. This can easily
happen if you use a \verb|\parbox| in an AMS alignment, as they use a
relatively large value of \verb|\lineskiplimit|.
-As usual, the \textsf{latexrelease} package may be used to
+As usual, the \pkg{latexrelease} package may be used to
force the older behavior.
\end{document}
diff --git a/macros/latex-dev/base/ltnews28.pdf b/macros/latex-dev/base/ltnews28.pdf
index ac35b00b69..7cc79e3bcf 100644
--- a/macros/latex-dev/base/ltnews28.pdf
+++ b/macros/latex-dev/base/ltnews28.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews28.tex b/macros/latex-dev/base/ltnews28.tex
index 59b01ed4fc..03d4a04ae1 100644
--- a/macros/latex-dev/base/ltnews28.tex
+++ b/macros/latex-dev/base/ltnews28.tex
@@ -44,6 +44,12 @@
\publicationissue{28}
+\providecommand\pkg[1]{\texttt{#1}}
+\providecommand\cls[1]{\texttt{#1}}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+
\begin{document}
\maketitle
@@ -125,7 +131,7 @@ the early nineties that \LaTeXe{} (that was being developed to provide
a \LaTeX{} version usable across the world) had to provide a solution
to this issue.
-The \LaTeXe{} answer was the introduction of the \package{inputenc}
+The \LaTeXe{} answer was the introduction of the \pkg{inputenc}
package~\cite{Mittelbach:Brno95} through which it is possible to
provide support for multiple encodings. It also allows to correctly
process a file written in one encoding on a computer using a different
@@ -135,10 +141,10 @@ midway.
Since the first release of \LaTeXe{} in 1994, \LaTeX{} documents that
used any characters outside \acro{ascii} in the source (i.e. any
characters in the range of 128--255) were supposed to load
-\package{inputenc} and specify in which file encoding they were
+\pkg{inputenc} and specify in which file encoding they were
written and stored.
%
-If the \package{inputenc} package was not loaded then \LaTeX{} used a
+If the \pkg{inputenc} package was not loaded then \LaTeX{} used a
``raw'' encoding which essentially took each byte from the input file
and typeset the glyph that happened to be in that position in the
current font---something that sometimes produces the right result but
@@ -171,7 +177,7 @@ the same as the existing UTF-8 support from
The \hologo{LuaTeX} and \hologo{XeTeX} engines always supported the
UTF-8 encoding as their native (and only) input encoding, so with
-these engines \package{inputenc} was always a no-op.
+these engines \pkg{inputenc} was always a no-op.
This means that with new documents one can assume UTF-8 input and it
is no longer required to always specify
@@ -186,14 +192,14 @@ For most existing documents this change will be transparent:
\item documents using only \acro{ascii} in the input file and
accessing accented characters via commands;
\item documents that specified the encoding of their file via an
- option to the \package{inputenc} package and then used 8-bit
+ option to the \pkg{inputenc} package and then used 8-bit
characters in that encoding;
\item documents that already had been stored in UTF-8 (whether or not
- specifying this via \package{inputenc}).
+ specifying this via \pkg{inputenc}).
\end{itemize}
Only documents that have been stored in a legacy encoding and used
accented letters from the keyboard \emph{without} loading
-\package{inputenc} (relying on the similarities between the input used
+\pkg{inputenc} (relying on the similarities between the input used
and the T1 font encoding) are affected.
These documents will now generate an error that they contain invalid
@@ -215,12 +221,12 @@ Possible alternatives are reencoding the file to UTF-8 using a tool
\verb= \usepackage[=\meta{encoding}\verb=]{inputenc}=
\end{flushleft}
to the preamble specifying the \meta{encoding} that fits the file
-encoding. In many cases this will be \texttt{latin1} or
-\texttt{cp1252}. For other encoding names and their meaning see the
-\package{inputenc} documentation.
+encoding. In many cases this will be \option{latin1} or
+\option{cp1252}. For other encoding names and their meaning see the
+\pkg{inputenc} documentation.
As usual, this change may also be reverted via the more general
-\package{latexrelease} package mechanism, by speciying a release date
+\pkg{latexrelease} package mechanism, by speciying a release date
earlier than this release.
@@ -291,7 +297,7 @@ command being tested being defined if it was previously undefined may have to ad
\verb|\let\|\meta{command}\verb|\relax|.
-\section{Changes to packages in the tools category}
+\section{Changes to packages in the \pkg{tools} category}
\subsection{\LaTeX{} table columns with fixed widths}
@@ -317,14 +323,14 @@ off-chance that code that hooked into internals of \pkg{multicol}
needs adjustment.
-\section{Changes to packages in the amsmath category}
+\section{Changes to packages in the \pkg{amsmath} category}
With this release of \LaTeX{} a few minor issues with \pkg{amsmath}
have been corrected.
\subsection{Updated user's guide}
-Furthermore, \texttt{amsldoc.pdf}, the AMS user's
+Furthermore, \file{amsldoc.pdf}, the AMS user's
guide for the \pkg{amsmath} package~\cite{amsldoc}, has been updated
from version~2.0 to~2.1 to incorporate changes and corrections made
between 2016 and 2018.
@@ -354,7 +360,7 @@ between 2016 and 2018.
\url{https://www.latex-project.org/publications/}
\bibitem{amsldoc} American Mathematical Society and The \LaTeX\ Project:
- \emph{User's Guide for the \texttt{amsmath} package} (Version 2.1).
+ \emph{User's Guide for the \pkg{amsmath} package} (Version 2.1).
April 2018.
Available from
\url{https://www.ctan.org}
diff --git a/macros/latex-dev/base/ltnews29.pdf b/macros/latex-dev/base/ltnews29.pdf
index fc3b51d12b..0aeed15223 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/ltnews29.tex b/macros/latex-dev/base/ltnews29.tex
index a5732eada9..749b927218 100644
--- a/macros/latex-dev/base/ltnews29.tex
+++ b/macros/latex-dev/base/ltnews29.tex
@@ -61,7 +61,7 @@
\mbox{\small\slshape(\url{https://tex.stackexchange.com/#1})}\par}
\let\cls\pkg
-\newcommand\env[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\iffalse % only for TUB production
@@ -438,7 +438,7 @@ out'' into the surrounding text. This has been corrected.
%
\githubissue{72}
-\subsection{Support fragile commands in \texttt{array} or \texttt{tabular} column templates}
+\subsection{Support fragile commands in \env{array} or \env{tabular} column templates}
The preamble specifiers \texttt{p}, \texttt{m} and \texttt{b} each receives
a user supplied argument: the width of the paragraph column. Normally
@@ -451,7 +451,7 @@ been corrected.
-\section{Changes to packages in the amsmath category}
+\section{Changes to packages in the \pkg{amsmath} category}
The changes in the kernel made for \cs{thinspace}, \cs{smash},
etc.\ (see above) have been reflected in the \pkg{amsmath} package
diff --git a/macros/latex-dev/base/ltnews30.pdf b/macros/latex-dev/base/ltnews30.pdf
index a02ff71f46..50fd14aa61 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/ltnews30.tex b/macros/latex-dev/base/ltnews30.tex
index cfb67b0c68..74d7659512 100644
--- a/macros/latex-dev/base/ltnews30.tex
+++ b/macros/latex-dev/base/ltnews30.tex
@@ -283,7 +283,7 @@ in which you can specify that it is allowed to \option{overwrite} an
already existing file;
by default nothing is written if a file with the given name
exists anywhere in the search tree. An alternative name for this
-option is \texttt{force}.
+option is \option{force}.
Even then the environment will refuse to write
to \cs{jobname}\texttt{.tex} to avoid clobbering its own input
file. However, if you use a different extension on your input file you
@@ -327,7 +327,7 @@ Doing this for \cs{begin} and \cs{end} was rather tricky as the
standard mechanism with \cs{DeclareRobustCommand} doesn't work here,
at least not for \cs{end} as that needs to expand during typesetting
without generating a \cs{relax} (from the \cs{protect}). Such a token
-would start a new row in table environments, such as \texttt{tabular},
+would start a new row in table environments, such as \env{tabular},
etc. Furthermore, some packages try to look into the definition of
\cs{end} by expanding it several times. Thus expansion with
\cs{expandafter} had to produce exactly the same result as before. But
@@ -406,8 +406,8 @@ would work incorrectly, e.g., a construction such as
\begin{verbatim}
\InputIfFileExists{foo}{\input{bar}}{}
\end{verbatim}
-would not load the files \texttt{foo.tex} and \texttt{bar.tex} but
-would load \texttt{bar.tex} twice. This has been corrected.
+would not load the files \file{foo.tex} and \file{bar.tex} but
+would load \file{bar.tex} twice. This has been corrected.
\githubissue{109}
@@ -477,7 +477,7 @@ The command has now changed to not produce such side effects.
\subsection{\pkg{nfssfont}: Make font table generation the default action}
-With the small file \texttt{nfssfont.tex} it is possible to produce
+With the small file \file{nfssfont.tex} it is possible to produce
font tables and other font tests
in the style set up by Don Knuth.
In nearly all cases
@@ -512,7 +512,7 @@ regardless of \pkg{trace} being loaded or not.
\subsection{\pkg{array}: Warn if primitive column specifiers are overwritten}
With \cs{newcolumntype} it is possible to define your own column
-specifiers for a \texttt{tabular} preamble; it is also possible to
+specifiers for a \env{tabular} preamble; it is also possible to
change existing ones. However, doing that for a primitive column
specifier, such as \texttt{c}, is seldom a good idea, since then its
functionality becomes unavailable.
@@ -625,15 +625,15 @@ all the font families supported through the program \texttt{autoinst}
are now producing the standard codes again.
-\subsection{\LaTeX{} \texttt{base} and \texttt{doc} distribution reunited}
+\subsection{\LaTeX{} \textsf{base} and \textsf{doc} distribution reunited}
For a long time the \LaTeX{} distribution available from \CTAN{} was
split into several parts to allow them to be uploaded or downloaded
separately. As this is these days more confusing than helpful we have
recombined the base part with the documentation part (as both are
-anyway always updated together). Thus the package \texttt{latex-doc}
+anyway always updated together). Thus the package \textsf{latex-doc}
is no longer separately available from \CTAN{} but contained in the
-\texttt{latex-base} distribution.
+\textsf{latex-base} distribution.
\begin{thebibliography}{9}
diff --git a/macros/latex-dev/base/ltnews31.pdf b/macros/latex-dev/base/ltnews31.pdf
index 42ba4d841e..8b17c1ab1e 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/ltnews31.tex b/macros/latex-dev/base/ltnews31.tex
index 61e8b00683..8bb6e638b5 100644
--- a/macros/latex-dev/base/ltnews31.tex
+++ b/macros/latex-dev/base/ltnews31.tex
@@ -43,6 +43,8 @@
\providecommand\meta[1]{$\langle$\textit{#1}$\rangle$}
\providecommand\option[1]{\texttt{#1}}
\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
+\providecommand\pkg[1]{\texttt{#1}}
\providecommand\XeTeX{\hologo{XeTeX}}
@@ -251,7 +253,7 @@ The way that shapes combine with each other is not hardwired; it is
customizable and extensible if there is ever a need for this. The
mappings
are defined through \cs{DeclareFontShapeChangeRule} and the
-details for developers are documented in \texttt{source2e.pdf}.
+details for developers are documented in \file{source2e.pdf}.
The ideas for this interface extension have been pioneered in
\pkg{fontspec} by Will Robertson for Unicode engines, and in
@@ -318,7 +320,7 @@ premier league for font usage.
The ways in which the different series values combine with each other is not
hardwired but is again customizable and extensible. The mappings are
defined through \cs{DeclareFontSeriesChangeRule} and the details for
-developers are documented in \texttt{source2e.pdf}.
+developers are documented in \file{source2e.pdf}.
\subsection{Font series defaults per document family}
@@ -457,18 +459,17 @@ With the text companion symbols as part of the kernel, it is normally
no longer necessary to load the \pkg{textcomp} package, but for
backwards compatibility this package will remain available. There is,
however, one use case where it remains useful: if you load the package
-with the option \texttt{error} or \texttt{warn} then substitutions
+with the option \option{error} or \option{warn} then substitutions
will change their behavior and result in a \LaTeX{} error or a
\LaTeX{} warning (on the terminal), respectively. Without the package
the substitution information only appears in the \texttt{.log}
-file. If you use the option \texttt{quiet}, then even the information in
+file. If you use the option \option{quiet}, then even the information in
the transcript is suppressed (which is not really recommended).
\subsection{New \texttt{alias} size function for use in \texttt{.fd} files}
-% These are really called ``size functions'' in NFSS, a bit weird I know
Most of the newer fonts supported in \TeX{} have been set up with the
\texttt{autoinst} tool by Marc Penninga. In the past, this program
@@ -565,7 +566,7 @@ has been corrected. This also involved a correction to \pkg{amsmath}.
\githubissue{251}
-\subsection{Allow more write streams with \texttt{filecontents} in \LuaTeX}
+\subsection{Allow more write streams with \env{filecontents} in \LuaTeX}
Most \TeX{} engines only support a maximum of sixteen concurrently
open write streams, and when those have been used up, then
@@ -576,7 +577,7 @@ also now be utilised.
%
\githubissue{238}
-\subsection{Allow spaces in \texttt{filecontents} option list}
+\subsection{Allow spaces in \env{filecontents} option list}
Leaving spaces or newlines in the option list prevented the options
from being correctly recognized. This\\
@@ -609,9 +610,9 @@ All of these are now robust.
\section{Changes to packages in the \pkg{tools} category}
-\subsection{Fixed column depth in boxed \texttt{multicols}}
+\subsection{Fixed column depth in boxed \env{multicols}}
-The \texttt{multicols} environment was setting \cs{maxdepth} when
+The \env{multicols} environment was setting \cs{maxdepth} when
splitting boxes; but, due to the way the internal interfaces of \LaTeX{} are
designed, it should have used \cs{@maxdepth} instead. As a result,
balanced boxed multicols sometimes ended up having different heights
@@ -620,9 +621,9 @@ even if they had exactly the same content.
\githubissue{190}
-\subsection{Ensure that \texttt{multicols} does not lose text}
+\subsection{Ensure that \env{multicols} does not lose text}
-The \texttt{multicols} environment needs a set of consecutively numbered boxes to
+The \env{multicols} environment needs a set of consecutively numbered boxes to
collect column material. The way those got allocated could result in
disaster if other packages allocated most boxes below box~255 (which
\TeX{} always uses for the output page). In the original
@@ -641,13 +642,13 @@ lower-numbered registers available.
\subsection{Allow spaces in \cs{hhline} arguments}
The \verb|\hhline| command, which allows the
-specification of rule segments in \texttt{tabular} environments, now
+specification of rule segments in \env{tabular} environments, now
allows (but ignores) spaces between its tokens: so
\verb|\hhline{: = : =}| is now allowed and is equivalent to
\verb|\hhline{:=:=}|. This matches similar token arguments in \LaTeX{}
such as the \verb|[h t p]| argument on floats. A similar change has
been made to the extended \verb|\hhline| command in the
-\texttt{colortbl} package.
+\pkg{colortbl} package.
%
\githubissue{242}
diff --git a/macros/latex-dev/base/ltnews32.pdf b/macros/latex-dev/base/ltnews32.pdf
index 9061a66608..b9e88dd6c8 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/ltnews32.tex b/macros/latex-dev/base/ltnews32.tex
index c56537a203..01bc515db5 100644
--- a/macros/latex-dev/base/ltnews32.tex
+++ b/macros/latex-dev/base/ltnews32.tex
@@ -43,6 +43,7 @@
\providecommand\meta[1]{$\langle$\textrm{\itshape#1}$\rangle$}
\providecommand\option[1]{\texttt{#1}}
\providecommand\env[1]{\texttt{#1}}
+\providecommand\file[1]{\texttt{#1}}
\providecommand\Arg[1]{\texttt\{\meta{#1}\texttt\}}
@@ -177,11 +178,11 @@ within the kernel that makes use of the \LaTeX3 functionality now
available (if we discount \pkg{xparse} which has already been available for
a long time as a separate package).
-The file \texttt{lthooks.dtx} holds the core management code for hooks
+The file \file{lthooks.dtx} holds the core management code for hooks
and defines basic hooks for environments (as previously offered by
-\pkg{etoolbox}), \texttt{ltshipout.dtx} provides kernel hooks into the
+\pkg{etoolbox}), \file{ltshipout.dtx} provides kernel hooks into the
shipout process (making packages like \pkg{atbegshi},
-etc., unnecessary) and the file \texttt{ltfilehook.dtx} holds
+etc., unnecessary) and the file \file{ltfilehook.dtx} holds
redefinitions for commands like \cs{input} or \cs{usepackage} so that
they offer hooks in a similar fashion to what is provided by the
\pkg{filehook} package.
@@ -192,16 +193,16 @@ more thorough testing). For that reason the documentation isn't in its
final form either and you have to read through three different
documents:
\begin{description}
- \item[\texttt{lthooks-doc.pdf}] Core management interface and basic
+ \item[\file{lthooks-doc.pdf}] Core management interface and basic
hooks for environments provided by the kernel.
- \item[\texttt{ltshipout-doc.pdf}] Hooks accessible while a page is
+ \item[\file{ltshipout-doc.pdf}] Hooks accessible while a page is
being shipped out.
- \item[\texttt{ltfilehook-doc.pdf}] Hooks used when reading a file.
+ \item[\file{ltfilehook-doc.pdf}] Hooks used when reading a file.
\end{description}
For those who wish to also study the code, replace \texttt{-doc} with
-\texttt{-code}, e.g., \texttt{lthooks-code.pdf}. All documents should
+\texttt{-code}, e.g., \file{lthooks-code.pdf}. All documents should
be accessible via \texttt{texdoc}, e.g.,
\begin{verbatim}
texdoc lthooks-doc
@@ -270,12 +271,12 @@ these commands.
%
\githubissue{152}
-\subsection{Support \eTeX\ length expressions in \texttt{picture} coordinates}
+\subsection{Support \eTeX\ length expressions in \env{picture} coordinates}
Picture mode coordinates specified with \texttt{(\_,\_)} previously
accepted multiples of \cs{unitlength}. They now also allow \eTeX\ length
expressions (as used by the \cs{glueexpr} primitive although all uses
-in \texttt{picture} mode are non-stretchy).
+in \env{picture} mode are non-stretchy).
So, valid uses include \verb|\put(2,2)| as previously,
but now also uses such as\tubcommand\\ \verb|\put(\textwidth-5cm,0.4\textheight)|.
@@ -321,7 +322,7 @@ been adjusted.
\subsection{Spacing issues when using \cs{linethickness}}
In some circumstances the use of \cs{linethickness} introduced a
-spurious space that shifted objects in a \texttt{picture} environment
+spurious space that shifted objects in a \env{picture} environment
to the right. This has been corrected.
%
\githubissue{274}
@@ -403,16 +404,16 @@ been fixed.
\githubissue{22}
-\subsection{Adjusting \texttt{fleqn}}
+\subsection{Adjusting \option{fleqn}}
In \pkg{amsmath} the \cs{mathindent} parameter used with the
-\texttt{fleqn} design is a rubber length parameter allowing for setting
+\option{fleqn} design is a rubber length parameter allowing for setting
it to a value such as \texttt{1em minus 1em}, i.e., so that the normal
indentation can be reduced in case of very wide math displays.
This is now also supported by the \LaTeX{} standard classes.
In addition a compressible space between formula and equation number
-in the \texttt{equation} environment got added when the \texttt{fleqn}
+in the \env{equation} environment got added when the \option{fleqn}
option is used so that a very wide formula doesn't bump into the
equation number.
%
@@ -561,7 +562,7 @@ code written in the L3 programming layer language.
\subsection{Support vertical typesetting with \pkg{doc}}
-The \texttt{macrocode} environment uses a \texttt{trivlist} internally
+The \env{macrocode} environment uses a \env{trivlist} internally
and as part of this sets up the \cs{@labels} box to contain some
horizontal skips, but that box is never used. As a result this
generates an issue in some circumstances if the typesetting direction
@@ -603,7 +604,7 @@ now allowed.
\subsection{Spacing commands moved from \pkg{amsmath} to the kernel}
Originally \LaTeX{} only provided a small set of spacing commands
for use in text and math; some of the commands like \cs{;} were
-only supported in math mode. \texttt{amsmath} normalized and
+only supported in math mode. \pkg{amsmath} normalized and
provided all of them in text and math. This code has now been
moved to the kernel so that it is generally available.
\begin{center}
@@ -690,9 +691,9 @@ by code parsing BoundingBox comments. The package now locally sets
\githubissue{286}
\subsection{Files with multiple parts}
-Sometimes one has a graphics file, say, \texttt{file.svg}, and converts
+Sometimes one has a graphics file, say, \file{file.svg}, and converts
it to another format to include it in \LaTeX{} and ends up with a file
-named \texttt{file.svg.png}. In previous releases, if the user did
+named \file{file.svg.png}. In previous releases, if the user did
\verb|\includegraphics{file.svg}|, an error would be raised and the
graphics inclusion would fail due to the unknown \verb|.svg| extension.
The \pkg{graphics} package now checks if the given extension is known, and if
@@ -746,7 +747,7 @@ corrected.
\subsection{\pkg{varioref}: Support Japanese as a language option}
-The package now recognizes \texttt{japanese} as a language option.
+The package now recognizes \option{japanese} as a language option.
The extra complication is that for grammatical reasons \cs{vref},
\cs{Vref}, \cs{vrefrange} and \cs{fullref} need a structure different
from all other languages currently supported. To accommodate this,
@@ -778,9 +779,9 @@ were not at the same baseline. This has been corrected.
%
\githubissue{126}
-\subsection{Fixes to \texttt{aligned} and \texttt{gathered}}
+\subsection{Fixes to \env{aligned} and \env{gathered}}
-The environments \texttt{aligned} and \texttt{gathered} have a
+The environments \env{aligned} and \env{gathered} have a
trailing optional argument to specify the vertical position of the
environment with respect to the rest of the line. Allowed values are
\texttt{t}, \texttt{b} and \texttt{c} but the code only tested for
@@ -804,7 +805,7 @@ commands to define \cs{std@minus} and
\subsection{Use Lua\TeX{} primitives where applicable}
For a number of years \pkg{lualatex-math} patched \cs{frac},
-\cs{genfrac} and the \texttt{subarray} environment to make use of new
+\cs{genfrac} and the \env{subarray} environment to make use of new
lua\TeX{} primitives. This code has now been integrated into
\pkg{amsmath}.
diff --git a/macros/latex-dev/base/ltnews33.pdf b/macros/latex-dev/base/ltnews33.pdf
index a4344abff5..d6a6936467 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/ltnews33.tex b/macros/latex-dev/base/ltnews33.tex
index f91da0c0d3..39af4f1b72 100644
--- a/macros/latex-dev/base/ltnews33.tex
+++ b/macros/latex-dev/base/ltnews33.tex
@@ -141,7 +141,7 @@ sections.
Subsequent sections describe quite a number of recent smaller
enhancements and fixes. As usual, more detail on individual changes
-can be found in the \texttt{changes.txt} files in the distribution
+can be found in the \file{changes.txt} files in the distribution
and, of course, in the documented sources~\cite{33:source2e}.
@@ -186,7 +186,7 @@ In practice, these new generic \hook{cmd} hooks, especially the
\hook{cmd/.../after}, hooks may fail with commands that are too
complex to be automatically patched, breaking if the hook contains any
code. These restrictions are documented in
-\texttt{ltcmdhooks-doc.pdf}.
+\file{ltcmdhooks-doc.pdf}.
%
However, given that these hooks are mainly meant for developers who
wish to provide better interoperability between different packages,
@@ -354,7 +354,7 @@ may otherwise happen due to the order of declarations.
\subsection{Improved copy\,\&\,paste for \pdfTeX{} documents}
When compiling with \pdfTeX{}, additional information
-(from the file \texttt{glyphtounicode.tex}) is now added automatically
+(from the file \file{glyphtounicode.tex}) is now added automatically
to the PDF file in order to improve copying from, and searching in,
text.
@@ -586,7 +586,7 @@ or symbol. This is now easily possible by placing a \cs{label} within
the referenced \cs{footnote} and referencing this label by using the
new command \cs{footref}. This means that footnote marks can be
generated to refer to arbitrary footnotes (including those in
-\texttt{minipage}s).
+\env{minipage}s).
This \cs{footref} command has previously been available, but only when
using certain classes or the \pkg{footmisc} package.
@@ -859,7 +859,7 @@ being loaded with \cs{includegraphics}. This has been fixed so that
\subsection{\pkg{layout}: Added language options}
-This package now recognizes \texttt{japanese} and \texttt{romanian} as
+This package now recognizes \option{japanese} and \option{romanian} as
language options.
%
\githubissue[s]{353 and 529}
diff --git a/macros/latex-dev/base/ltnews34.pdf b/macros/latex-dev/base/ltnews34.pdf
index cf2cdcf139..7ec22ab724 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/ltnews34.tex b/macros/latex-dev/base/ltnews34.tex
index 7497b71879..4bd847a19f 100644
--- a/macros/latex-dev/base/ltnews34.tex
+++ b/macros/latex-dev/base/ltnews34.tex
@@ -5,7 +5,7 @@
% 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
@@ -34,14 +34,12 @@
\documentclass{ltnews}
-%%CCC Temporary definitions:
-\providecommand\Dash {\unskip ---}
-
-
+%% Temporary definition for Chris' inadequate system: CCC
+\providecommand\Dash {\unskip \textemdash}
%% NOTE: Chris' preferred hyphens!
%%\showhyphens{parameters}
-\hyphenation{because parameters parameter}
+%% \hyphenation{because parameters parameter}
\usepackage[T1]{fontenc}
@@ -72,6 +70,8 @@
{github issue#1 #2}%
)}%
\par\smallskip}
+%% But Chris has to mostly disable \href for his TEXPAD app: CCC
+\def\href #1{}
% simple solution right now (just link to the first issue if there are more)
\def\getfirstgithubissue#1 #2\relax{#1}
@@ -117,7 +117,8 @@
\tubcommand{\input{tubltmac}}
\publicationmonth{November}
-\publicationyear{2021 --- Draft Version (with many unfinished blocks)}
+\publicationyear{2021 \Dash Third Draft Version,
+ not quite complete, eg needs Intro?)} %% CCC
\publicationissue{34}
@@ -136,140 +137,107 @@
\section{Introduction}
-\emph{write}
-
-\section{???}
-
-\emph{write}
+\emph{TO BE COMPOSED, PROBABLY}
+%%
+% \subsection{???}
+%
+% \emph{write} ??
+%%
\section{Hook business}
-After the introduction of the hook management system in the 2020
-release of \LaTeX{}~\cite{34:ltnews32} package developers have started
-to make more and more use of the new functionality. This resulted in a
-number of queries showing that some of the documentation was not
-precise enough and that one or the other clarification was
-needed. This has now been addressed in the documentation. The extended
-usage also showed a small number of deficiencies that we thought
-should be corrected now while the adoption rate is still relatively
-small. These are addressed in this release and documented below.
+Since the introduction of the hook management system in the 2020
+release of \LaTeX{}~\cite{34:ltnews32} package
+developers have started
+to make more and more use of this new functionality. One result
+of this increased activity has been a
+number of queries which show that some of the documentation was not
+precise enough and that some clarifications were needed; these
+deficiencies have now been addressed in the documentation.
+%
+The increased usage has also shown up a small number of
+errors that we thought
+should be corrected now, while the adoption rate is still relatively
+small; the following problems have therefore been addressed in this release.
-\subsection{Providing \cs{ActivateGenericHook}}
+\subsection{Provide \cs{ActivateGenericHook}}
The hook management system offers a number of generic hooks, i.e.,
-hooks whose names contain a variable component, for example the name
-of an environment. Predeclaring such hooks as not really feasible
-which is why these hooks use a different mechanism: they are
-implicitly available end spring into life the moment a package or the
-user in the preamble adds code to them using \cs{AddToHook}. The
-kernel offers such hooks for environments \texttt{env/...}, commands
-\texttt{cmd/...}, and files, package or classes, \texttt{file/...},
-\texttt{include/...}, \texttt{package/...}, and \texttt{class/...}.
-
-It is possible to offer generic hooks in packages, e.g., if you have
-hooks that depend on the current language and therefore need the
-language name as part of the hook name and you don't know all possible
-names beforehand.
-
-If you want to offer your generic hooks you do this by using
+hooks whose names contain a variable component such as the name
+of an environment. Predeclaring such hooks is not really feasible,
+so these hooks use a different mechanism: they are
+implicitly available, springing into life the moment a package, or
+the document preamble, adds any code to one by using \cs{AddToHook}.
+%
+The kernel offers such hooks for environments
+ (\texttt{env/...}) and commands (\texttt{cmd/...}), and for files,
+ packages or classes (\texttt{file/...},
+\texttt{include/...}, \texttt{package/...}, \texttt{class/...}).
+
+It is also possible to offer such generic hooks in
+packages if, for example, hooks are needed that depend on the
+current language and therefore need the
+language name as part of the hook name (but you probably
+don't know beforehand all the necessary names).
+
+If you want to offer such generic hooks, you can now
+do this by using
\cs{UseHook} or \cs{UseOneTimeHook} in your (package) code, but
-\emph{without declaring the hook} with \cs{NewHook}. Without any
-further work a call to \cs{UseHook} with an undeclared hook name does
-nothing. So as an additional setup step, it is necessary to explicitly
-activate the generic hook with \cs{ActivateGenericHook}.\footnote{Note
+\emph{without declaring the hook} with \cs{NewHook}. But without
+further work, a call to \cs{UseHook} with an undeclared hook name
+will do
+nothing; so, as an additional setup step, it is necessary to explicitly
+activate the generic hook by using \cs{ActivateGenericHook}.\footnote{Note
that in the previous release we offered \cs{ProvideHook} as a means
to achieve this effect, but the name was badly chosen so we decided
- to deprecate it and now offer \cs{ActivateGenericHook} instead
- because that is what it is meant for.}
+ to deprecate it and now offer \cs{ActivateGenericHook} instead.}
Assuming
-that you don't know all the different hook names up front it will
+that you don't know all the different hook names up front, it will
remain the task of the users of your package to activate the hook
themselves before adding code to it. For example, Babel offers hooks
-such as \texttt{babel/afterextras/\meta{language}} enabling the user
-to add language specific declarations there. They can then write
+such as \hook{babel/\meta{language}/afterextras}
+that enable a user
+to add language specific declarations to these \enquote{extras}. One can then write
\begin{verbatim}
-\ActivateGenericHook
- {babel/afterextras/ngerman}
-\AddToHook{babel/afterextras/ngerman}
+ \ActivateGenericHook
+ {babel/ngerman/afterextras}
+ \AddToHook{babel/ngerman/afterextras}
{\color{blue}}
\end{verbatim}
after which all German words would be colored blue in the text.
Note that a generic hook produced in this way is always a normal hook.
-
-
-
-\subsection{Clear extra hook code for next invocation}
-
-There are a few use cases where it would be helpful if one can cancel
-an earlier use of \cs{AddToHookNext}, for example, when a page is
-discarded with \cs{DiscardShipoutBox} because only some pages of the
-document are printed. For such situations the new command
-\cs{ClearHookNext} is provided.
-%
-\githubissue{565}
-
-
-
-\subsection{Clean up after \cs{UseOneTimeHook}}
-
-Some hooks are meant to be used only once in a document, and any
-further attempt to add code to them causes the code to be executed
-immediately instead of being added to the hook. The initial implementation of
-this concept was very simple and didn't anticipate that packages may try to
-execute a one-time hook several times resulting in the hook code
-being executed repeatedly. Thus, the implementation was fine for
-simple usages (e.g., the \hook{begindocument} hook), but caused
-trouble if the one-time hook was intended, for example, as an
-initialization hook that is used once when a command is first
-called, but then ignored in further calls.
-
-This deficiency has been addressed, and now a one-time hook will only be executed once
-and the hook code is removed after usage to free up the memory.
-%
-\githubissue{565}
-
-
-
-\subsection{Class, package, and include hook improvements}
-
-Classes, packages and include files can only be loaded once in a
-\LaTeX{} document. For that reasons hooks that are specific to such
-files have been made one-time hooks. Beside being more efficient this
-supports the following important use case
-\begin{verbatim}
-\AddToHook{package/varioref/after}
- { ... apply my customizations if the package
- gets loaded (or was loaded already) ... }
-\end{verbatim}
-without the need to first test if the package was already loaded
-before.
-%
-\githubissue{623}
-
-
-\subsection{Standardizing generic hook names}
-
-The initial set of generic hooks provided by the \LaTeXe{} kernel had
-two patterns of hook names: ones like
-\verb|env/|\meta{name}\verb|/after|, with the variable (\meta{name})
-part in the middle position, and ones like
-\verb|file/after/|\meta{name}, with the variable part in the third
-position. The coexistence of these two types caused confusion, because
-the user had to remember in which position was the variable part
-supposed to go, and made the code more complicated and slower.
-
-The file-related hooks have been renamed so that the variable part of
-their is in the middle, as with other hooks. The changes were:
+\subsection{Standardized names for the generic hooks}
+
+The initial set of generic hooks provided by the kernel had
+two patterns of names:\\
+ones like
+\verb|env/|\meta{name}\verb|/after|,
+with the variable (\meta{name})
+part in the middle position;\\
+and ones like
+\verb|file/after/|\meta{name}, with the
+variable part in the third
+position.
+%
+The coexistence of these two types caused confusion because
+the user had to remember in which position the variable part was
+supposed to go; and it also made the code more complicated and slower.
+
+The file-related hooks have therefore been renamed
+so that the variable part of
+the name is in the middle, as with all other hooks.
+The changes are listed here:
+\smallskip
\begin{center}
\small\ttfamily
- \begin{tabular}{l@{\;$\rightarrow$\;}l}
+ \begin{tabular}{l@{$\;\rightarrow\;$}l}
\hline
\multicolumn{1}{l}{Old name} & \rmfamily New name \\
\hline
@@ -285,265 +253,430 @@ their is in the middle, as with other hooks. The changes were:
\hline
\end{tabular}
\end{center}
-
+\smallskip
Since this is a breaking change, the old names will still work for a
-while, so that users and package authors have enough time to adjust, and
-a warning will be issued when the old names are used. Eventually the
-deprecated names will be turned into errors and then removed completely.
+while so that users and package authors have enough time to adjust;
+but a warning will be issued when the old names are used.
+Eventually the deprecated names will be turned into errors and
+then removed completely.
%
\githubissue{648}
+\subsection{Some file hooks made one-time}
+
+Classes, packages and included files can only be loaded once in a
+\LaTeX{} document. For this reason, the hooks that are specific to loading such
+files have been made one-time hooks. Beside being more efficient, this
+supports the following important use case
+\begin{verbatim}
+ \AddToHook{package/varioref/after}
+ {... apply when the package gets loaded,
+ or apply now (if it is already loaded) ...}
+\end{verbatim}
+without the need to first test whether the package is already loaded.
+%
+\githubissue{623}
-\subsection{Changed how \cs{RemoveFromHook} treats code that isn't in the hook}
-In the first version of \cs{RemoveFromHook}, in case the code label
-being removed didn't exist in the hook, a ``removal order'' would be
-queued, and the next time something tried to add that label to the hook,
-the \cs{AddToHook} would be cancelled by the removal order, and no code
-would be added that once. This was so that in principle package loading
-order wouldn't matter. However this implementation didn't work quite as
-intended, because while two \cs{AddToHook} to a given label would be
-removed by a single \cs{RemoveFromHook}, one \cs{RemoveFromHook} could
-not cancel two \cs{AddToHook} to that label, and this asymmetry caused
-confusion and was a recipe for further problems.
+\subsection{Clearing extra hook code for the next invocation}
-The implementation was changed and now \cs{RemoveFromHook} only removes
-labels that already exist in a hook, and will display a warning if they
-don't. For usage across packages, for removing code in a hook, the
-\texttt{voids} relation should be used instead: this relation is
-non-destructive (meaning it can be later reverted with another one), and
-it is truly independent of package loading order, so it should be
-preferred.
+There are a few use cases where it is helpful if one can cancel
+an earlier use of \cs{AddToHookNext}: for example, when a page is
+discarded with \cs{DiscardShipoutBox} because only some pages of the
+document are printed. For such situations the new command
+\cs{ClearHookNext} is now provided.
%
-\githubissue{625}
+\githubissue{565}
+\subsection{Cleaning up after \cs{UseOneTimeHook}}
-\subsection{???}
+Some hooks are meant to be used only once in a document, and any
+further attempt to add code to one of these will
+cause the code to be executed
+immediately instead of being added to the hook.
+%
+The initial implementation of
+this concept was very simple and didn't anticipate that packages may try to
+execute a one-time hook several times, resulting in the hook code
+being executed repeatedly. Thus the implementation was fine for
+simple cases (such as the \hook{begindocument} hook) but it causes
+trouble if the one-time hook was intended, for example, as an
+initialization hook that is used just once (when a command is first
+called) but is then ignored in further calls.
+This deficiency has been addressed, and now a one-time
+hook will only be executed once, with
+its code being removed after use to free up some memory.
%
-\githubissue{000}
+\githubissue{565}
+\subsection{\cs{RemoveFromHook} with a missing code label}
+In the first version of \cs{RemoveFromHook}, when the code label
+to be removed didn't exist in the hook a ``removal order'' would be
+queued; and then, the next time something tried to add that label to the hook,
+this \cs{AddToHook} action would be cancelled by the removal order, so that no code
+would be added that one time. This was so that, in principle, package loading
+order wouldn't matter.
+%
+However, this implementation didn't work as
+intended because, while two \cs{AddToHook} actions with a given label would be
+removed by a single \cs{RemoveFromHook}, one \cs{RemoveFromHook} could
+not cancel two \cs{AddToHook} actions for that label; this caused
+confusion and also led to further problems.
-\section{New or improved commands}
+The implementation has now been changed, so that
+\cs{RemoveFromHook} removes only code
+labels that already exist in a hook: it will display a
+warning if there is no such code label.
+Note that, whereas when working with a single package
+you should use \cs{RemoveFromHook} to remove a code label,
+when working with more than one package, the
+\texttt{voids} relation should preferably be used.
+%
+This is best because this relation is non-destructive
+(meaning that it can be later reverted by using another relation),
+and it is also truly independent of package loading order.
+%
+\githubissue{625}
-\subsection{Added \cs{PackageNote} and \cs{ClassNote}}
+\subsection{Patching commands that contain parameter tokens}
-\LaTeX{} offers \cs{PackageError} to signal errors that stop
-processing, \cs{PackageWarning} that generates a warning message on the
-terminal, but continues with the processing and also \cs{PackageInfo}
-to provide some information that is only written to the \texttt{.log}
-file. What hasn't existed up to now is a way to provide some
-information on the terminal that is identifying itself as coming from
-a specific package but which isn't claiming to be a warning. Thus,
-packages that wanted to write to the terminal used \cs{PackageWarning}
-even though the information wasn't really warning the user. For this
-we now have \cs{PackageNote} and \cs{PackageNoteNoLine}, that identify
-themselves as \enquote{informational}, but still go to the terminal and
-not only to the transcript.
-
-Similar commands exist for classes and there we have added the missing
-\cs{ClassNote} and \cs{ClassNoteNoLine} as well.
+In the last release, \LaTeX's hook mechanism was extended to add
+support for hooking into commands using generic \hook{cmd} hooks
+(see~\cite{34:ltnews33}). That version of the extension had a bug: the
+patching of some commands that contained a parameter token
+(normally \verb|#|) in
+their definition would fail with a low-level \TeX{} error. This has now
+been fixed so that patching now works for those commands as well.
%
-\githubissue{613}
+\githubissue{697}
+
-\subsection{New implementation for \cs{counterwithin}}
+\section{New or improved commands}
+
-New implementation for \cs{counterwithout} and \cs{counterwithin} with
-an additional optional arg so it becomes a drop-in replacement for
-amsmath \cs{numberwithin}.
+\subsection{\cs{PackageNote} and \cs{ClassNote} added}
-\emph{write appropriate description}
+\LaTeX{} offers these three commands:\cs{PackageError} to signal errors that
+stop the processing; \cs{PackageWarning} to generate a warning message on the
+terminal but continue with the processing; and \cs{PackageInfo}
+to provide some information that is only written to the \texttt{.log}
+file but not sent to the terminal.
+%
+What has not existed up to now is a way to provide
+information on the terminal that identifies itself as coming from
+a specific package but which does not claim to be a warning.
+(Packages that wanted to write to the terminal used \cs{PackageWarning}
+even though the information wasn't really a warning.)
+We have therefore now added \cs{PackageNote} (and the closely
+related \cs{PackageNoteNoLine}): these identify
+themselves as \enquote{informational}, but they still go to the terminal and
+not only to the \texttt{.log} file.
+%
+Similar commands exist for classes and so there too we have
+new commands: \cs{ClassNote} and \cs{ClassNoteNoLine}.
+%
+\githubissue{613}
-\subsection{New default for \cs{tracinglostchars}}
+\subsection{New \cs{ShowFloat} command}
-In 2021 the \TeX{} engines got enhanced so that \cs{tracinglostchars}
-is now also supporting the value \texttt{3}, turning missing
-characters into errors and not just warnings. This change made us
-realize that \LaTeX{} should use a better default for this parameter
-(so far the warning was only written to the transcript file).
-Using the now available \texttt{3} would really be the best, but for
-compatibility reasons we only set it to \texttt{2} in the kernel.
-However, we recommend adding \cs{tracinglostchars}\texttt{=3} to the
-preamble of documents, because missing glyphs in the output are an
-error and should therefore be properly looked at.
+The package \pkg{fltrace} offers a (fairly low-level but very
+detailed) way to trace \LaTeX's float mechanism. This can help in
+understanding why a certain float is placed into a certain
+region, or why it shows up unexpectedly on a later page.
+\LaTeX{} stores floats in registers named \cs{bx@A}, \cs{bx@B}, etc.,
+and these names show up in the tracing information.
+To display the contents of a float register, you can now say
+\verb=\ShowFloat{=\textit{identifier}\verb=}= where
+\textit{identifier} is the uppercase letter (or letters) after
+\texttt{bx@} in the register name shown in the tracing.
+If additional
+registers have been allocated (with \cs{extrafloats}), the
+\textit{identifier} can also be a number. The command is generally
+available, whether or not you have loaded \pkg{fltrace}, because
+it is also useful when interpreting the tracing output of the
+\pkg{fewerfloatpages} package.
+\subsection{New argument for \cs{counterwithin/without}}
+The commands \cs{counterwithout} and \cs{counterwithin} each now has
+an additional optional argument, similar to that for the command
+ \cs{numberwithin} from \pkg{amsmath},
+for which these are now the preferred replacements.
+This optional argument
+specifies the format of the counter, such as \cs{roman},
+the default value being \cs{arabic}.
-\subsection{Provide tests for package and class loading}
+\subsection{Tests for package and class loading}
-To test if a package was loaded you can now use \cs{IfPackageLoadedTF}
-\Arg{package} \Arg{true} \Arg{false} and based on the result execute
-different code. It is also possible to check if the package was loaded
+To test whether a package has been loaded you can now use \cs{IfPackageLoadedTF}
+\Arg{package} \Arg{true} \Arg{false} and, based on the result, execute
+different code. It is also possible to check whether the package was loaded
with certain options. This is done with
\cs{IfPackageLoadedWithOptionsTF}. It takes four arguments:
-\Arg{package}\Arg{option-list}\Arg{true}\Arg{false}. It uses the
-\meta{false} code if at least one option in the \meta{option-list} has
-not been used during loading or if the package hasn't been loaded at
-all.
+\Arg{package}\Arg{option-list}\Arg{true}\Arg{false}.
+%
+It uses the \meta{false} code if at least one option in
+the \meta{option-list} was
+not specified when loading the package, or if the package
+has never been.
%
-Both commands can be used anywhere in the document, i.e., they are not
-restricted to the preamble.\footnote{This is now also true for the
+Both commands can be used anywhere in the document, i.e.,
+they are not restricted to the preamble.%
+\footnote{This is now also true for the
corresponding internal commands, e.g., \cs{@ifpackageloaded}, that
had this restriction in the past.}
-For classes similar commands (\texttt{Package} replaced by
+For classes, similar commands (with \texttt{Package} replaced by
\texttt{Class} in the name) are provided.
%
\githubissue{621}
+\subsection{\cs{NewCommandCopy}, \cs{ShowCommand} now in \pkg{ltcmd}}
-
-
-
-
-
-
-\subsection{New \cs{ShowFloat} command}
-
-The package \pkg{fltrace} offers a (fairly low-level but very
-detailed) way to trace \LaTeX's float mechanism. This can help to
-understand why a certain float is placed into a certain region or why
-it shows up unexpectedly on a later page. \LaTeX{} stores floats in
-registers named \cs{bx@A}, \cs{bx@B}, etc., and these names show up in
-the tracing information.
+Since the 2020-10-01 release (see~\cite{34:ltnews32}), \LaTeX{}
+has provided \cs{NewCommandCopy} to copy robust commands,
+and \cs{ShowCommand} to show their definitions on the terminal.
%
-To display their contents you can now say
-\verb=\ShowFloat{=\textit{identifier}\verb=}= where
-\textit{identifier} is the uppercase letter (or letters) after
-\texttt{bx@} in the register name shown in the tracing. If additional
-registers have been allocated with \cs{extrafloats}, the
-\textit{identifier} can also be a number. The command is generally
-available, whether or not you have loaded \pkg{fltrace}, because it is
-also useful when interpreting the tracing output of the
-\pkg{fewerfloatpages} package.
-
-
-\subsection{Add \pkg{ltcmd} support for \cs{NewCommandCopy} and \cs{ShowCommand}}
-
-Since the 2020-10-01 release (see~\cite{34:ltnews32}), \LaTeX{} provides
-\cs{NewCommandCopy} to copy robust commands, and \cs{ShowCommand} to
-show their definition in the terminal. In the same release, the
-\pkg{xparse} package was integrated in the kernel (now called
-\pkg{ltcmd}). However, the extended support for \cs{NewCommandCopy} and
+In that same release, the \pkg{xparse} package was integrated
+into the kernel (as \pkg{ltcmd}).
+%
+However, the extended support for \cs{NewCommandCopy} and
\cs{ShowCommand} was not implemented in \pkg{ltcmd}. The present
-\LaTeX{} release ships with that support implemented, so now commands
-defined with \pkg{xparse}/\pkg{ltcmd} can be copied and their definition
-can be easily shown in the terminal without \cs{csname} gymnastics.
+\LaTeX{} release implements this support, so now commands
+defined with \pkg{xparse}/\pkg{ltcmd} can be copied, and their definitions
+can be easily shown on the terminal without the need for ``\cs{csname} gymnastics''.
%
\githubissue{569}
+\subsection{Undo math alphabet allocations if necessary}
+
+\TeX{}, or more exactly the 8-bit versions of \TeX, such as \pdfTeX{}
+have a hard limit of 16 on the number of different math font groups
+(\cs{fam} or \cs{mathgroup}) that can be used in a single formula. For each symbol font
+declared (by a package or in the preamble) an extra math group is allocated,
+and the same happens for each math alphabet, (such as \cs{mathbf}) that
+gets used anywhere in the document. Up to now, these math
+alphabet allocations were permanent, even if they were
+used only once;
+the result was that in complex documents you
+could easily run out of available math font groups.
+The only remedy for this was to
+define your own math version, which is a complicated and cumbersome process.
+
+This situation has now been improved by the introduction of a new counter
+\texttt{localmathalphabets}: this counter governs how many of
+the math group slots are assigned only locally when a new math
+alphabet (and a new math group) is needed.
+%
+Once the current formula is finished, every such further (local)
+allocation is undone, giving you a fighting chance of being
+able to use different new math alphabets in the next formula.
+
+The default value of \texttt{localmathalphabets} is 2,
+but if you need more local alphabets because of the complexity of your
+document, you can set this to a higher value such as 4 or 5.
+Setting it even higher is possible, but this would seldom
+be useful because many group slots will be taken up by
+symbol fonts and such slots are always permanently allocated,
+whether used or not.
+%
+\githubissue{676}
+
+
+\subsection{Better handling for a misuse of \cs{include}}
+
+The command \cs{include} is by now getting used quite often, but
+erroneously, to input a variety files in the preamble of the document
+(before \verb|\begin{document}|).
+%
+Therefore \LaTeX\ now warns about such bad use of \cs{include}.
+As a recovery action it will nevertheless input the specified file
+if it exists (this is as before). Note, however, that this is now done
+without any adjustments to the \texttt{.aux} file settings and
+without running the \cs{include} file hooks (only the generic
+file hooks from \cs{InputIfFileExists} are run).
+%
+\githubissue{645}
+
+
+\subsection{New default value for \cs{tracinglostchars}}
+
+In 2021 all \TeX{} engines were enhanced so that \cs{tracinglostchars}
+supported the extra value \texttt{3}, that turns missing
+characters into errors and not just warnings.
+%
+This engine change made us
+realize that \LaTeX{} should set a better default value for this parameter
+(previously, the warning was written only to the transcript file).
+Using the now available value of \texttt{3} as the default
+would really be best, but for
+compatibility reasons we have only increased it to \texttt{2} in the kernel.
+%
+However, we recommend setting \cs{tracinglostchars}\texttt{=3},
+in either a package or the
+preamble of your documents: this is because having missing glyphs
+in the output is definitely an error and should therefore be
+flagged as such (to ensure that it gets proper attention).
+Further reasons, related especially to Unicode engines, for making
+this recommended change can be found later in this newsletter
+(in connection with the misuse of text accents in mathmode).
+\section{Code improvements}
-\subsection{???}
-%
-\githubissue{000}
+\subsection{Use OpenType version of Latin Modern Upright Italic font}
+When a Latin Modern font is used with the TU encoding under \XeTeX\ or \LuaTeX\
+and fontshape \texttt{ui} is requested, \LaTeX\ now uses the OpenType
+version of the font instead of substituting the (T1-encoded) Type 1 version.
+\subsection{Additional Extended Latin characters predefined}
+More characters, such as \'k (U+1E131), are now pre-defined and
+do not need a \verb|\DeclareUnicodeCharacter| declaration.
+%
+\githubissue{593}
-\section{Code improvements}
+\subsection{Check \cs{endfoo} in \cs{NewDocumentEnvironment}}
-\subsection{Detect ``\cs{endfoo}'' when using \cs{NewDocumentEnvironment}}
+The \cs{newenvironment} command has always checked that neither \cs{foo} nor
+\cs{endfoo} exists before creating a \texttt{foo} environment.
+In contrast (for historical reasons) the more recently introduced
+command \cs{NewDocumentEnvironment}
+checked only for \cs{foo}.
+%
+The behavior of \cs{NewDocumentEnvironment} now aligns with that
+of \cs{newenvironment}, except that it gives distinct errors
+concerning the existence of \cs{foo} and \cs{endfoo}.
-The \cs{newenvironment} command has always checked that both \cs{foo} and
-\cs{endfoo} do not exist before creating a \texttt{foo} environment. In
-contrast, \cs{NewDocumentEnvironment} has only to date checked for \cs{foo};
-this reflects the fact that historically the code was designed around the
-target of an entirely new format. The behavior of \cs{NewDocumentEnvironment}
-now aligns with \cs{newenvironment}, except that it gives separate errors
-for the existence of \cs{foo} and \cs{endfoo}.
-\subsection{Improve ``\cs{begin} ended by'' error message}
+\subsection{Improve the error
+ message \texttt{\textup{\cs{begin} ended by \textellipsis}}}
-In the past it was possible to get an error message stating something
+In the past it was possible to get an error message something
like \verb=\begin{foo} ended by \end{foo}=. This could happen when the
-environment name was partly hidden inside a macro, because the test was
-comparing the literal strings while the error message expanded the
-strings fully. This has now been changed to show a more sensible error
+environment name was partly hidden inside a macro. It happened because
+the test was comparing the literal strings, whereas in the error message
+these got fully expanded.
+%
+This has now been changed to show a more sensible error
message in this instance.
%
\githubissue{587}
-
-\subsection{Additional Extended Latin characters predefined}
-Some additional characters such as \'k (U+1E131) are now pre-defined and
-will work without needing \verb|\DeclareUnicodeCharacter| declarations.
-%
-\githubissue{593}
-
-
-\subsection{Use OpenType version of Latin Modern Upright Italic}
-When Latin Modern is used with the TU encoding under \XeTeX\ or \LuaTeX\
-and fontshape \texttt{ui} is requested, \LaTeX\ now uses the OpenType
-version instead of substituting the (T1 encoded) Type 1 version.
-
-
\subsection{Pick up all arguments to \cs{contentsline}}
-The \cs{contentsline} commands in the TOC file are always followed by
-four arguments, the last one being empty by default and only used by
-\pkg{hyperref}. The \cs{contentsline} command itself only used the
-first three arguments and relied on the fourth being empty (and thus
-doing no harm). But this assumption is not always correct, e.g., if
-you use \pkg{hyperref} and then remove it from the preamble.
-
-So now we pick up all four arguments and save the last one away, so
-that it can be used by \pkg{hyperref}.
+A \cs{contentsline} command in the TOC file is always followed by
+four arguments, the last one being empty except when using the
+\pkg{hyperref} package. The \cs{contentsline} command itself only used the
+first three arguments and it relied on the fourth being empty (and thus
+doing no harm).
+%
+But this assumption is not always correct: e.g., if
+you at first decide to load \pkg{hyperref} but then later you remove
+this loading from the preamble.
+%
+So now all four arguments ate picked up, with the
+fourth being saved away so that it can be used by \pkg{hyperref}.
%
\githubissue{633}
-\subsection{Fix dropping math lists in \LuaTeX\ callbacks}
+\subsection{Allow dropping a math list in \LuaTeX\ callback}
The \LuaTeX\ callbacks \texttt{pre\_mlist\_to\_hlist\_filter}
-and \texttt{post\_mlist\_to\_hlist\_filter} no longer create an error if
-the callback handler indicates to remove the entire math block.
+and \texttt{post\_mlist\_to\_hlist\_filter} no longer create an error when
+the callback handler indicates removal of the entire math list.
%
\githubissue{644}
+\subsection{Extended label handling in package code}
+Since 2020, as noted in \LaTeX News 32~\cite{34:ltnews32}, \LaTeX\ has
+recorded the name of the counter associated with the current label in
+the internal command \cs{@currentcounter}. This facility (originally
+from the \pkg{zref} package of Heiko Oberdiek) can be used to generate
+prefixes such as \enquote{Figure} before the reference text.
+%
+In the most
+common cases the current label is set by \cs{refstepcounter}, which
+automatically stores the counter name; but some constructs (alignments
+and footnotes) may need to store the current label directly and so for
+these it is useful to update additionally \cs{@currentcounter} so as to
+store this counter name.
+In this release both the footnote command in the kernel and
+also some of the environments in the \pkg{amsmath} package
+have been updated in this way.
+%
+We encourage the maintainers of any class or
+package files that defines \cs{@currentlabel} to also set
+\cs{@currentcounter} at the same point.
+%
+\githubissue{300, 687}
-\subsection{???}
-%
-\githubissue{000}
+\subsection{Better message if text accent used in mathmode}
+Using text accents like \verb|\^| in math does not work
+(and \TeX{} explicitly provides math accents such as \cs{hat}
+for accessing such symbols in mathmode). Therefore LaTeX issued a
+warning when such a wrongly placed accent was encountered
+and this was often followed by a strange, and apparently
+unrelated, low-level error.
+%
+This has now been changed so that the message from this
+error is at least about accents, which we hope is less puzzling.
+Discussion of such warnings or errors reminds us to reinforce
+here a recommendation from earlier in this newsletter, as part
+of the item on the value of \cs{tracinglostchars}.
+%
+Using \TeX\ implementations from 2020 onwards, any warning that
+concerns missing characters can be
+converted to an error by setting \cs{tracinglostchars} to 3; we therefore
+now recommend changing this setting to 3, especially for
+Unicode engines where such missing characters are common (because
+no font supports the full Unicode range).
+%
+\githubissue{643}
\section{Bug fixes}
-\subsection{Replicate argument processors for all embellishments}
+\subsection[Replicate argument processors for all
+ embellishments in command declarations]
+ {Replicate argument processors for all \\
+ \mbox{}\qquad embellishments in command declarations}
-There was a bug in \pkg{ltcmd} (former \pkg{xparse}) that caused
+There was a bug in \pkg{ltcmd} (formerly \pkg{xparse}) that caused
commands to misbehave if they were defined with embellishments and
argument processors. In that case, only one (possibly void) argument
processor would be added to the full set of embellishment arguments,
-resulting in too few processors in some cases, leading to unpredictable
+resulting in too few processors in some cases and thus leading to unpredictable
behavior. This bug has been fixed by applying the same argument
-processors to all the embellishments in a set, so a declaration like:
+processors to all the embellishments in a set, so that a declaration like:
\begin{verbatim}
-\NewDocumentCommand\foo{>{\TrimSpaces}e{_^}}
- {(#1)[#2]}
-\foo^{ a }_{ b }
+ \NewDocumentCommand\foo{>{\TrimSpaces}e{_^}}
+ {(#1)[#2]}
+ \foo^{ a }_{ b }
\end{verbatim}
will now correctly apply \cs{TrimSpaces} to both arguments.
%
@@ -551,143 +684,147 @@ will now correctly apply \cs{TrimSpaces} to both arguments.
-\subsection{Correct case changes for \cs{ij} and \cs{IJ}}
+\subsection{Correct case changing of \cs{ij} and \cs{IJ}}
The ligatures \enquote{\ij} and \enquote{\IJ}, as used in Dutch,
-are only available in most \TeX{} fonts, if the commands \cs{ij} or
-\cs{IJ} are used or when you enter them as UTF-8 characters U+0133 or
+are available (for most \TeX{} fonts) only
+when the commands \cs{ij} or
+\cs{IJ} are used, or when you enter them as the Unicode characters U+0133 or
U+0132.
%
However, when using \texttt{OT1} or \texttt{T1} encoded fonts in
\pdfTeX, the upper or lower casing with \cs{MakeUppercase} and
\cs{MakeLowercase} would always fail regardless of the input method.
This has now been corrected. At the same time we improved the
-hyphenation results for words containing this ligature (when
-typesetting is done in \texttt{OT1} encoding).
+hyphenation results for words containing this ligature (when using the \texttt{OT1} encoding).
%
\githubissue{658}
-\subsection{Improve handling of legacy \cs{bfdefault} changes}
+\subsection{Legacy font series default changes}
In the past, changes to the font series defaults were made by directly
altering \cs{bfdefault} or \cs{mddefault}. Since 2020 there is now
-\cs{DeclareFontSeriesDefault} that allows more granular control,
-i.e., with that declaration you can alter the default for individual meta
-font families, for example, by only altering the bold settings for the
-sans serif family without changing it for \cs{rmfamily} or \cs{ttfamily}.
+\cs{DeclareFontSeriesDefault} that allows more granular control:
+with this declaration you can alter the default for individual meta
+font families by, for example, changing the bold setting only for the
+sans serif family, without changing it for \cs{rmfamily} or \cs{ttfamily}.
See~\cite{34:ltnews31} for more details.
For backwards compatibility, changing \cs{bfdefault} with
-\cs{renewcommand} remained possible. If used, it alters the setting
-for all meta families in one go. This cannot be done when the
-\cs{renewcommand} happens and was therefore delayed until the next
+\cs{renewcommand} remained possible: if used, this alters the setting
+for all meta families in one go. This alteration cannot be done when the
+\cs{renewcommand} happens and it was therefore delayed until the next
time \cs{bfseries} or \cs{mdseries} was executed.
-
+%
However, the problem with that
-approach was that any call to \cs{DeclareFontSeriesDefault} that
-happened in the mean time was overwritten---the two approaches didn't
-work well side by side. This is a problem because older font packages
+approach was that any call to \cs{DeclareFontSeriesDefault} in
+the meantime was overwritten, thus these two approaches didn't
+work well side by side.
+There was a problem because older font packages
use the legacy method while newer ones use
-\cs{DeclareFontSeriesDefault}. This has now been corrected by changing
+\cs{DeclareFontSeriesDefault}.
+
+This has now been resolved by changing
\cs{DeclareFontSeriesDefault} to do any necessary resetting prior to
-setting new defaults.
+setting the new defaults.
%
\githubissue{663}
-\subsection{Use of \# in \cs{textbf} and similar commands}
-Previously you could not use the macro parameter character \# in inline functions
-in the argument of \cs{texbf} and similar text font commands.
+\subsection{Use of \texttt{\textup{\#}} in \cs{textbf} and similar commands}
+Previously you could not use the macro parameter character \texttt{\#}
+in inline functions
+within the argument of \cs{texbf} or similar text font commands.
An internal definition is now guarded with \cs{unexpanded}
-so that \# does not generate an error.
+so that the use of \texttt{\#} here no longer generates an error.
%
\githubissue{665}
-\subsection{???}
-
-%
-\githubissue{000}
-
-
-
-
-
\section{Changes to packages in the \pkg{graphics} category}
-\subsection{Key for alt text}
-A new key \texttt{alt} has been added to \verb|\includegraphics| allowing specification
-of an alternative text for accessibility.
-This is unused by default but may be used by extension packages and possible future use.
+\subsection{\pkg{graphicx}: New key, for alt text}
+A new key, \texttt{alt}, has been added to \cs{includegraphics} to support the addition of descriptive text that is important for accessibility.
+This key is unused by default; it can be deployed by extension packages and it will provide useful support for other future possibilities.
%
\githubissue{651}
-
\section{Changes to packages in the \pkg{tools} category}
-\subsection{\pkg{varioref}: Improve missing label handling}
+\subsection{\pkg{array}: No \cs{mathsurround} around a \env{tabular}}
-If an undefined label is referenced, \pkg{varioref} makes a default
-definition so that later processing finds the right structure (two
-brace groups inside \cs{r@}\meta{label}) However, if \pkg{nameref} or
-\pkg{hyperref} is loaded, the data structure changes to five
-arguments, resulting in low-evel errors in some cases. The code has
-been changed to avoid these errors.
+A \env{tabular} environment is typeset (internally) as an \env{array}
+environment with special settings, and it therefore uses (hidden) math mode.
+Since it is not in fact a math formula,
+no extra space from \cs{mathsuround} should be added
+(the spacing around the \env{tabular} should not get changed).
%
-\sxissue{603948}
-
-
-\subsection{\pkg{array}: Cancel \cs{mathsurround} for \env{tabular}}
-
-A \env{tabular} environment is internally typeset as an \env{array}
-environment with special settings and therefore in math mode. This
-math group should not get any \cs{mathsuround} added as it isn't a
-real formula because otherwise the spacing around the \env{tabular}
-changes. This bug has been there forever (which means not many people
-use \cs{mathsurround} or noticed the difference). Anyhow, this now got
-fixed.
+Note that this bug has been present ``forever'', which shows that \cs{mathsurround}
+is never used, or at least its use is never noticed.
+Anyhow, this bug has now finally gotten fixed.
%
\githubissue{614}
-\subsection{\pkg{longtable}: Improve behavior after a section heading}
-The \env{longtable} environment now sets the \cs{@nobreakfalse} flag so that
-spacing and indentation changes after a section heading are not triggered by
-a paragraph which follows a table which starts a section. Similarly a test for
-\cs{if@noskipsec} added so that a table follows a run-in heading
-rather than appearing before it.
-%
-\githubissue[s]{131 and 173}
-
-\subsection{???}
+\subsection{\pkg{longtable}: Improvements after a section heading}
+The \env{longtable} environment now sets the \cs{@nobreakfalse} flag
+to correct the typesetting when a table immediately follows a heading.
+Previously the spacing and indentation changes that are required
+immediately after a section heading were incorrectly triggered
+within the next paragraph (if any)
+following the table.
%
-\githubissue{000}
+A similar test for
+\cs{if@noskipsec} has been added, so that a table is correctly placed after
+a run-in heading rather than appearing before that heading.
+%
+\githubissue[s]{131 and 173}
-\section{Changes to packages in the \pkg{amsmath} category}
-\subsection{Improve compability with hyperref}
+\subsection{\pkg{multicol}: Better column break control}
-When \pkg{hyperref} is used, incrementing a counter creates anchors and this can affect spacing.
-For a long time \pkg{hyperref} patched the \env{equation} environment to
-avoid some of the side effects. This patch has now been moved directly into \pkg{amsmath}.
-Additionally,
-a \cs{mathopen} has been added to avoid that the anchor affects a following unary symbol.
+From version 1.9 onwards \cs{columnbreak} accepts an optional
+argument (like \cs{pagebreak}) in which you can specify the
+desirability of breaking the column after the current line: supported values are
+\texttt{1} to \texttt{4}, with higher numbers indicating increased desirability.
+This version also adds \cs{newcolumn},
+which forces a break but runs the column short (comparable to
+\cs{newpage} for pages).
%
-\githubissue{652}
+\githubissue{682}
+
-\subsection{???}
+\subsection{\pkg{varioref}: Improved handling of missing labels}
+If an undefined label is referenced, \pkg{varioref} makes a default
+definition so that later processing finds the right structure (two
+brace groups inside \cs{r@}\meta{label}) However, if \pkg{nameref} or
+\pkg{hyperref} is loaded this data structure changes to having five
+arguments; this could cause low-evel errors in some cases.
+The code has therefore now been changed to avoid these errors.
%
-\githubissue{000}
+\sxissue{603948}
+\section{Changes to packages in the \pkg{amsmath} category}
+\subsection{Improved compatibility with \pkg{hyperref}}
+This change in amsmath fixes a spacing problem caused by the
+method used in \pkg{hyperref} to change the \env{equation} environment.
+%
+For simplicity, an explicit, low-level (hence possibly temporary)
+patch has been added to \pkg{amsmath}: this consists
+of an extra, empty (hence invisible)
+\cs{mathopen} atom (with no mathematical meaning) at the start of the
+environment's mathematical content.
+%
+\githubissue{652}
\medskip
@@ -711,8 +848,14 @@ a \cs{mathopen} has been added to avoid that the anchor affects a following unar
\emph{\LaTeXe{} news 32}.\\
\url{https://latex-project.org/news/latex2e-news/ltnews32.pdf}
+\bibitem{34:ltnews33} \LaTeX{} Project Team:
+ \emph{\LaTeXe{} news 33}.\\
+ \url{https://latex-project.org/news/latex2e-news/ltnews33.pdf}
+
\end{thebibliography}
\end{document}
+
+
diff --git a/macros/latex-dev/base/ltoutenc.dtx b/macros/latex-dev/base/ltoutenc.dtx
index 14518d2fb2..61ea381823 100644
--- a/macros/latex-dev/base/ltoutenc.dtx
+++ b/macros/latex-dev/base/ltoutenc.dtx
@@ -44,7 +44,7 @@
%<*driver>
% \fi
\ProvidesFile{ltoutenc.dtx}
- [2021/09/12 v2.0w LaTeX Kernel (font encodings)]
+ [2021/10/16 v2.0x LaTeX Kernel (font encodings)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltoutenc.dtx}
@@ -199,7 +199,7 @@
% commands, such as accents. It also contains the code for some of
% the encoding files, including |omlenc.def|,
% |omsenc.def|, |t1enc.def| and |ot1enc.def| files, which define
-% the |OLM|,
+% the |OML|,
% |OMS|, |T1| and |OT1| encodings, and the |fontenc| package
% for selecting encodings.
%
@@ -845,10 +845,11 @@
% We also ignore \cs{ignorespaces} which has the same issue and may
% show up as part of \cs{normalfont} if that is used.
% \changes{v2.0m}{2019/12/18}{Avoid code that breaks \cs{accent}}
+% \changes{v2.0x}{2021/10/16}{Dont set \cs{spacefactor in math mode gh/643}}
% \begin{macrocode}
\let\maybe@load@fontshape\relax
\let\ignorespaces\relax
- \accent#1 #2\egroup\spacefactor\accent@spacefactor}
+ \accent#1 #2\egroup\ifmmode\else\spacefactor\accent@spacefactor\fi}
% \end{macrocode}
%
%
diff --git a/macros/latex-dev/base/ltpara-code.pdf b/macros/latex-dev/base/ltpara-code.pdf
index c39ce4eb6b..2a41c09ba1 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 2d05e77304..6c5396b2d8 100644
--- a/macros/latex-dev/base/ltpara-doc.pdf
+++ b/macros/latex-dev/base/ltpara-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltpara.dtx b/macros/latex-dev/base/ltpara.dtx
index bc51e4688f..9802bfd63a 100644
--- a/macros/latex-dev/base/ltpara.dtx
+++ b/macros/latex-dev/base/ltpara.dtx
@@ -14,8 +14,8 @@
%%% From File: ltpara.dtx
%
% \begin{macrocode}
-\def\ltparaversion{v1.0j}
-\def\ltparadate{2021/09/18}
+\def\ltparaversion{v1.0k}
+\def\ltparadate{2021/10/19}
% \end{macrocode}
%<*driver>
\documentclass{l3doc}
@@ -122,8 +122,8 @@
% \verb=\hbox{a\par b}= is ignored, but \verb=$a\par b$= would complain.
%
% If this primitive ends the paragraph it does some special
-% \enquote{end of horizontal list} processing, then calls \TeX{} paragraph
-% builder that breaks the horizontal list into lines then these
+% \enquote{end of horizontal list} processing, then calls \TeX{}’s paragraph
+% builder; this breaks the horizontal list into lines and then these
% lines are added as boxes to the enclosing vertical list and
% \TeX{} returns to vertical mode.
%
@@ -133,13 +133,14 @@
% automatically changed to a \cs{par} command which is then
% executed. The other possibility is that \TeX{} encounters a
% command which is incompatible with horizontal processing, e.g.,
-% \cs{vskip} (a request for adding vertical space). In such case it
+% \cs{vskip} (a request for adding vertical space). In such cases it
% silently backs up, and inserts a \cs{par} in the hope that this
-% gets it out of horizontal mode and makes the offending command
+% gets it out of horizontal mode and makes the vertical command
% acceptable.
% The important point to note here is that \TeX{} really inserts
-% the command \cs{par} which can be redefined. Thus, it may not have
+% the command with the name \cs{par}, which can be redefined.
+% Thus, it may not have
% its original \enquote{primitive} meaning and therefore may not end the
% horizontal list and call the paragraph builder. This approach
% offers some flexibility but also allows you to easily produce a
@@ -151,31 +152,30 @@
% then sees \cs{vskip} and inserts \cs{par} to end the
% paragraph. But this now only runs \cs{relax} so nothing changes
% and \cs{vskip} is read again, issues a \cs{par} which \ldots. In
-% short, it takes a plain \TeX{} document with five tokens to run
-% forever (as not even memory is consumed and therefore eventually
+% short, it only takes a plain \TeX{} document with five tokens to run
+% forever (since no memory is consumed and therefore eventually
% exhausted).
%
-% There are no other ways than changing \cs{par} to gain control at
+% There is no way other than changing \cs{par} to gain control at
% the end of a paragraph, i.e., there is no token list like
-% \cs{everypar} that is inserted, i.e., the only way to change the
-% default behavior is to modify the action that \cs{par} executes
+% \cs{everypar} that is inserted. Hence the only way to change the
+% default behavior is to modify the action that \cs{par} executes,
% with similar issues as outlined before: different processes need
% to ensure that they do not overwrite their modifications or
% worse, think that the \cs{par} in front of them is the engine
% primitive while in fact it has already been changed by other
% code.
%
-%
% To make matters slightly worse there are a few places where
% \TeX{} handles the situation differently (most likely for speed
% reasons back when computers were much slower). If \TeX{} finds
% itself in unrestricted horizontal mode at the end of building a
-% vertical box (or an \cs{insert}, \cs{vadjust} or at the end of
+% vertical box (for an \cs{insert}, \cs{vadjust} or
% executing the output routine code), it will finish the horizontal
% list not by issuing a \cs{par} command (which would be consistent
-% with all other places, but by simply executing the primitive version
-% of \cs{par} regardless of the definition that \cs{par} has at the
-% time.
+% with all other places) but by simply executing the primitive meaning
+% of \cs{par}, regardless of the actual definition that \cs{par}
+% has at the time.
%
% Thus, if you have carefully crafted a redefined \cs{par} to execute
% some special actions at the end of a paragraph and you write
@@ -183,27 +183,28 @@
%\begin{verbatim}
% \vbox{Some paragraph ... text.}
%\end{verbatim}
-% you will find that your code has never run for the last paragraph
+% you will find that your code does not get run for the last paragraph
% in that box. \LaTeX{} avoids this problem, by making sure that
-% all its boxes (such as \cs{parbox} or the \env{minipage}
+% its boxes (such as \cs{parbox} or the \env{minipage}
% environment, etc.) all internally add an explicit \cs{par} at the
% end so that such code is run and \TeX{} finds itself in vertical
% mode already without the need to start up the paragraph builder
% internally. But, of course, this only works for boxes under direct
-% control of the \LaTeX{} kernel, if some package uses low-level
+% control of the \LaTeX{} kernel; if some package uses low-level
% \cs{vbox}es without adding this precaution the \TeX{}
% optimization kicks in and no special \cs{par} code is executed.
%
% And there is another optimization that is painful: if a paragraph
% is interrupted by a mathematical display, e.g., \verb=\[...\]= in
% \LaTeX{} or \verb=$$...$$= in plain \TeX{}, then \TeX{} will
-% resume horizontal mode afterward, i.e., build a new horizontal
-% list (without inserting an indentation box or \cs{everypar} at
-% that point). However, if that list immediately ends with an
+% resume horizontal mode afterward, i.e., it will start to build
+% a new horizontal
+% list without inserting an indentation box or \cs{everypar} at
+% that point. However, if that list immediately ends with an
% explicit or implicit \cs{par} then \TeX{} will simply throw away
% this \enquote{null} paragraph and not do its usual \enquote{end
-% of horizontal list} processing, so this special case need to be
-% accounted for when introducing some extended processing.
+% of horizontal list} processing, so this special case also needs to be
+% accounted for when introducing any extended processing.
%
%
%
@@ -214,8 +215,8 @@
% the start and end of the paragraph processing. The public hooks
% can be used by packages (or by the user in the preamble or
% within the document) and using the hook mechanisms it is possible
-% to reorder or arrange code from different packages in a way that
-% it can safely coexist.
+% to reorder or arrange code from different packages in such a way that
+% these can safely coexist.
%
% To make that happen we have to make use of the basic
% functionality that is offered by \TeX{}, e.g., we install
@@ -248,7 +249,7 @@
% Fortunately, \LaTeX{} has already redefined \cs{par} for its own
% purposes. As a result there aren't many packages that attempt to
% change \cs{par}, because without a lot of extra care that would
-% fail miserably. But bottom line, if you load a package that
+% fail miserably. But the bottom line is that, if you load a package that
% alters \cs{par} then the end of paragraph hooks are most likely
% not executing while that redefinition is
% active.\footnote{Similarly to the \cs{everypar} situation, the
@@ -326,7 +327,7 @@
%
% This hook is executed at the end of a paragraph when \TeX{} is
% ready to return to vertical mode and after it has removed the
-% last horizontal glue (but not kern) placed on the horizontal
+% last horizontal glue (but not any kerns) placed on the horizontal
% list. The code is still executed in horizontal mode so it is
% possible to add further horizontal material at this point, but
% it should not alter the mode (even a temporary exit from
@@ -415,20 +416,30 @@
% \subsection{Altered and newly provided commands}
%
% \begin{function}{\par,\endgraf,\para_end:}
-% An explicit request for ending a paragraph is known in plain
-% \TeX{} under the name \cs{endgraf} where it simply calls the
-% paragraph primitive (regardless of what \cs{par} may have as its
-% current definition). In \LaTeX{} \cs{endgraf} with that behavior
-% was also made available.
+% An explicit request for ending a paragraph is provided in plain
+% \TeX{} under the name \cs{endgraf}, which simply uses the
+% primitive meaning (regardless of what \cs{par} may have as its
+% current definition). In \LaTeX{} \cs{endgraf} (with that behavior)
+% was originally also available.
%
% With the new paragraph handling in \LaTeX{}, ending a paragraph
% means a bit more than just calling the engine's paragraph
% builder: the process also has to add any hook code for the end of
% a paragraph. Thus
% \cs{endgraf} was changed to provide this additional functionality
-% (and so by extension \cs{par} subject to its current meaning).
-%
-% The \pkg{expl3} name for the functionality is \cs{para_end:}.
+% (along with \cs{par} remaining subject to its current meaning).
+%
+% TEMP NOTE: Maybe endgraf should not be changed by LaTeX as it is
+% essentially not at all a part of LaTeX.
+% If it is too dangerous to leave it as
+% a synonym for the primitive, then we could just disable it.
+% [FMi:]
+% not in my opinion. It is used in many places and the redefinition is safe and does the right thing.
+% disabling it just means it breaks a lot of stuff for no reason.
+% [FMi:]
+% Note that the 2e kernel has been completely purged of endgrafs.
+%
+% The \pkg{expl3} name for this functionality is \cs{para_end:}.
% \end{function}
%
% \begin{quote}
@@ -538,7 +549,7 @@
% sequence numbers. This is most easily done using \pkg{expl3}
% functions, so we switch over. This is not a very general
% implementation, just enough for what we need and a bit of
-% \LaTeXe{} thrown in as well. When popping the result gets stored
+% \LaTeXe{} thrown in as well. When popping, the result gets stored
% in \cs{paracntvalue} and the \cs{ERROR} should never happen
% because it means we have tried to pop from an empty stack.
%\begin{verbatim}
@@ -629,7 +640,7 @@
% \subsubsection{Glue items between paragraphs (found with \pkg{fancypar})}
%
% In the past \LaTeX{} placed two glue items between two
-% consecutive paragraph, e.g.,
+% consecutive paragraphs, e.g.,
%\begin{verbatim}
% text1 \par text2 \par
%\end{verbatim}
@@ -644,12 +655,12 @@
% \glue(\parskip) 0.0
% \glue(\baselineskip) 5.16669
%\end{verbatim}
-% The reason is that we generate a \enquote{fake}'' paragraph to
+% The reason is that we generate a \enquote{fake} paragraph to
% gain control and safely add the early hooks, but this generates
% an additional glue item. That item doesn't contribute anything
-% vertically but ifsomebody writes code the unravels a constructed
+% vertically but if somebody writes code that unravels a constructed
% list using \cs{lastbox}, \cs{unskip} and \cs{unpenalty} then the
-% code has to remove one additional glue item or else will fail.
+% code has to remove one additional glue item or else it will fail.
%
% ^^A \subsubsection{}
@@ -828,8 +839,8 @@
%
% But if we have already replaced it by a token register then all
% they do is to give that token register a new name. Thus our code
-% in \cs{tex_everypar:D} would call \cs{everypar} (which is their
-% now token register) and the code that they added ends up in our
+% in \cs{tex_everypar:D} would call \cs{everypar} (which is now their
+% token register) and the code that they added ends up in our
% token register which is then never used at all. A bit mind
% boggling I guess.
%
@@ -927,7 +938,7 @@
% \end{itemize}
%
% Unfortunately, \TeX{} has some (these days) unnecessary
-% optimization: if a \cs{vbox} ends and \TeX{} is still in
+% optimizations: if a \cs{vbox} ends and \TeX{} is still in
% horizontal mode it simply exercises the paragraph builder instead
% of issuing a \cs{par}. It is therefore necessary for \LaTeX{} to
% ensure that this case doesn't happen and all boxes internally
@@ -940,11 +951,12 @@
% \texttt{latex.ltx}. For this \LaTeXe{} code has the following
% conventions: \cs{@@@@par} and \cs{endgraf} both refer to the
% default meaning (in the past this was the initex primitive) while
-% \cs{par} is the current meaning which may does something else.
+% \cs{par} is the current meaning which maybe does something else.
%
+% TEMP NOTE: See earlier note re endgraf.
%
-% We are now going to change this default meaning to run
-% \cs{para_end:} instead, which ultimately executes the initex
+% We are now going to change this default meaning to instead run
+% \cs{para_end:}, which ultimately executes the initex
% primitive but additionally adds our hooks when appropriate.
% This way the change is again transparent to the legacy \LaTeXe{}
% code.
@@ -953,22 +965,24 @@
% primitive and we achieve this by simply expanding it to the
% primitive which is available to us as \cs{tex_par:D}. This way we
% don't have to care about whether \TeX{} just does nothing (e.g.,
-% if in vertical mode already) or generate an error, etc.
+% if in vertical mode already) or generates an error, etc.
% \begin{macrocode}
\cs_new_protected:Npn \para_end: {
% \end{macrocode}
%
+% TEMP NOTE: What should happen if in outer hmode with an empty hlist?
+%
% The only case we care about is when we are in horizontal mode
% (i.e., doing typesetting) and not also in inner mode (i.e.,
% making paragraphs and not building an \cs{hbox}.
-% \begin{macrocode}
+%\begin{verbatim}
% \bool_lazy_and:nnT
% { \mode_if_horizontal_p: }
% { \bool_not_p:n { \mode_if_inner_p: } }
% { ...
-% \end{macrocode}
+%\end{verbatim}
% Since this is executed for each and every paragraph in a document
-% we try to stay a fast as possible, So we are aren't using the
+% we try to stay as fast as possible, so we do not use the
% above construct but two conditionals instead. Using low-level
% \cs{if_mode...} conditions would be even faster but has the
% danger to conflict with conditionals in the user hooks.
@@ -981,17 +995,18 @@
% \afterassignment\lst@vskip\@tempskipa \z@ \par
%\end{verbatim}
% If \TeX{} is in hmode while that assignment happens then the
-% \cs{par} is seen in hmode (because in the above case the
-% assignment isn't finished (one should have used \cs{z@skip} and
+% \cs{par} is seen in hmode because in the above case the
+% assignment may not be finished (one should have used \cs{z@skip}) and
% the \cs{lst@vskip} will get inserted into the middle of the
% conditional. The \cs{lst@vskip} then changes to vmode and you get
% a surprising error about the \texttt{para/end} hook having
-% changed modes even if you don't have any hook code because it is
-% the instered \cs{lst@vskip} that is causing it. That happened
+% changed modes even if you don't have any hook code(!): it is
+% the inserted \cs{lst@vskip} that is actually causing the change of
+% mode.This is what happened
% when the output routines got started while a \texttt{lstlisting}
% environment (that redefines \cs{vskip} in this way) was
% active. This is really faulty coding, but we try to be proactive
-% and guard the conditional so thatany scanning is stopped before it:
+% and guard the conditional so that any scanning is first stopped, thus:
% \begin{macrocode}
\scan_stop:
% \end{macrocode}
@@ -1001,17 +1016,26 @@
\mode_if_inner:F {
% \end{macrocode}
% In that case the action of the primitive would be to remove the
-% last glue (not kern) from the horizontal list constructed to form
-% a paragraph then append the a penalty of 10000 and the
-% \cs{parfillskip} at the end and pass the whole list to the
-% paragraph builder which breaks it into lines and \TeX{} then
+% last glue (but no kerns) from the horizontal list (constructed to form
+% a paragraph) and then to append a penalty of 10000 and the
+% \cs{parfillskip}; it then passes the whole list to the
+% paragraph builder, which breaks it into lines and \TeX{} then
% returns to vertical mode.
%
-% What we want to do instead is to add our hook code at the end of
-% the horizontal list before that happens and the code is passed to
-% the paragraph builder. If there was a glue item at the end then
+% What we want to do is to add this hook code at the end of
+% the horizontal list before any of the above happens.
+% If there was a glue item at the end of the list then
% it should get removed before the hook code gets added so we have
-% to arrange for its removal ourselves.
+% to arrange for this removal.
+%
+% TEMP NOTE: maybe a ‘nobreak’ should also be added?
+%
+% [FMi:]
+% sounds wrong to me, why?
+% [CCC:] See email: because the hook may add some material,
+% such as glue that might produce an unintended linebreak.
+% [FMi:]
+%
%
% There is not much point in checking if there was really a glue
% item at the end of the horizontal list, instead we simply try to
@@ -1020,38 +1044,44 @@
% \begin{macrocode}
\tex_unskip:D
% \end{macrocode}
-% The we execute the public hook (which may add final typesetting
-% material) followed by the kernel hook we need for adding tagging
+% We then execute the public hook (which may add some final typeset
+% material) followed by the kernel hook that we need for adding tagging
% support. None of this is supposed to change the mode---at the
% moment we make only a very simple test for this, more devious
-% changes go unnoticed, but too bad, that will then probably
-% badly backfire.
+% changes go unnoticed, but too bad as they will then probably
+% backfire badly.
% \begin{macrocode}
\hook_use:n{para/end}
\@kernel@after@para@end
\mode_if_horizontal:TF {
% \end{macrocode}
% The final action (before getting to the point where
-% \cs{tex_par:D} is called) is to add a glue item so that the
-% primitive is prevented from removing glue (if there was some). If
-% we don't do this and the
-% horizontal list ended in several glue items we would end up with
-% removing two instead of just the last one, which would be wrong.
-% We use glue (rather than a kern) as that will be removed by the primitive
-% par.
+% \cs{tex_par:D} is called) is to add an extra glue item so that the
+% primitive is prevented from removing intended glue
+% (if there was some). If we don't do this and the
+% horizontal list ends in several glue items we would end up removing
+% two glue items instead of just the last one, which would be wrong.
+% We use glue (rather than a kern) as that will be removed by the
+% primitive.
%
% There is however one other \TeX{} optimization that hurts: in a
% sequence like this \verb=$$ ... $$ \par= \TeX{} will be in
% horizontal mode after the display, ready to receive further
% paragraph text, but since the \cs{par} follows immediately there
% is a ``null'' paragraph at the end and \TeX{} simply throws that
-% away. The space between \verb=$$= and \cs{par} got already
+% away.
+% The space between \verb=$$= and \cs{par} got already
% dropped during the display processing so the \cs{par} is not
% removing any space and appending \cs{parfillskip}, instead it
-% simply goes silently to vmode. Now if we would have added something (to
+% simply goes silently to vmode.
+%
+% TEMP NOTE: Is this actually how it works?
+% For any current definition of par?
+%
+% Now if we would have added something (to
% prevent glue removal) that would look to \TeX{} like material
% after the display and so we would end up with an empty paragraph
-% just containing \cs{parfillskip}.
+% just containing a penalty and \cs{parfillskip}.
%
% We therefore check if the current hlist does end in glue
% (\cs{tex_lastnodetype:D} has the value \texttt{11}) and
@@ -1066,15 +1096,16 @@
% To run the \hook{para/after} hook we first end the
% paragraph. This means that the \cs{tex_par:D} at the very end is
% unnecessary but executing it there unnecessarily is better than
-% having code that test for all the different mode possibilities.
+% having code that tests for all the different mode possibilities.
% \begin{macrocode}
\tex_par:D
\hook_use:n{para/after}
\@kernel@after@para@after
}
% \end{macrocode}
-% If we haven't been in horizontal mode then the earlier hook
-% \hook{para/end} is at fault and we report that.
+% If we were not horizontal mode (the F case from above)
+% then the earlier hook
+% \hook{para/end} must have been at fault, so we report that.
% \begin{macrocode}
{ \msg_error:nnnn { hooks }{ para-mode }{end}{horizontal} }
% \end{macrocode}
@@ -1083,7 +1114,7 @@
}
}
% \end{macrocode}
-%
+% And then we can use the primitive to truly end the paragraph.
% \begin{macrocode}
\tex_par:D
}
@@ -1160,10 +1191,13 @@
% \begin{macro}[int]{\@@par}
%
% Having the new default definition for \cs{par} we also have to
-% set it up so that it gets used. This is needed in three places
+% set it up so that it gets used. This involves three commands:
% \cs{par}, \cs{@@par} (to which \LaTeX{} resets \cs{par}
-% occasionally) and \cs{endgraf} which is another name for the
+% occasionally) and \cs{endgraf}, which is another name for the
% ``default'' action of \cs{par}.
+%
+% TEMP NOTE: re endgraf again.
+%
% \begin{macrocode}
\cs_set_eq:NN \par \para_end:
\cs_set_eq:NN \@@par \para_end:
@@ -1235,6 +1269,16 @@
%<latexrelease>\cs_set_eq:NN \@@par \tex_par:D
%<latexrelease>\cs_set_eq:NN \endgraf \tex_par:D
%<latexrelease>
+% \end{macrocode}
+% We also need to clean up the primitive ``everypar'' as that
+% should no longer execute any code by default. And, of course,
+% make \cs{everypar} become the primitive again.
+% \changes{v1.0k}{2021/10/19}{Remove content from \cs{tex_everypar:D}
+% on rollback}
+% \begin{macrocode}
+%<latexrelease>\tex_everypar:D {}
+%<latexrelease>\cs_set_eq:NN \everypar \tex_everypar:D
+%<latexrelease>
%<latexrelease>\EndModuleRelease
\ExplSyntaxOff
%</2ekernel|latexrelease>
diff --git a/macros/latex-dev/base/ltshipout-code.pdf b/macros/latex-dev/base/ltshipout-code.pdf
index 2bb3e8e560..1ff9cf1060 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 c422ae9794..2a08daa276 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/ltvers.dtx b/macros/latex-dev/base/ltvers.dtx
index 3f2f119cb1..7c17069aea 100644
--- a/macros/latex-dev/base/ltvers.dtx
+++ b/macros/latex-dev/base/ltvers.dtx
@@ -115,7 +115,7 @@
{2021-11-15}
%</2ekernel|latexrelease>
%<*2ekernel>
-\def\patch@level{-2}
+\def\patch@level{-3}
% \end{macrocode}
%
% \begin{macro}{\development@branch@name}
diff --git a/macros/latex-dev/base/ltx3info.pdf b/macros/latex-dev/base/ltx3info.pdf
index 3f492d24c7..e91af5e9e7 100644
--- a/macros/latex-dev/base/ltx3info.pdf
+++ b/macros/latex-dev/base/ltx3info.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltxdoc.pdf b/macros/latex-dev/base/ltxdoc.pdf
index 7f3de03312..7a5ab06389 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.dtx b/macros/latex-dev/base/makeindx.dtx
index e8e48e60b0..9dc03a8431 100644
--- a/macros/latex-dev/base/makeindx.dtx
+++ b/macros/latex-dev/base/makeindx.dtx
@@ -121,7 +121,7 @@
% \begin{macrocode}
%<makeidx>\ProvidesPackage{makeidx}
%<showidx>\ProvidesPackage{showidx}
- [2014/09/29 v1.0m Standard LaTeX package]
+ [2021/10/04 v1.0m Standard LaTeX package]
% \end{macrocode}
%
% \subsection{Makeidx}
@@ -261,7 +261,7 @@
%
% \begin{macro}{\raggedbottom}
% \begin{macro}{\flushbottom}
-% The definition of these macros from \texttt{latex.dtx} is changed
+% The definitions of these macros from the \LaTeX{} format are changed
% here to add the execution of |\@mkidx| to |\@texttop|, which is
% executed at the top of each page.
% \begin{macrocode}
diff --git a/macros/latex-dev/base/makeindx.pdf b/macros/latex-dev/base/makeindx.pdf
index 736ef277a2..d9f95cb588 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 73386625ce..a697696fef 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 904aafcd7d..adf213ada8 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/preload.dtx b/macros/latex-dev/base/preload.dtx
index b2ca24bce5..bf2bfebbfa 100644
--- a/macros/latex-dev/base/preload.dtx
+++ b/macros/latex-dev/base/preload.dtx
@@ -45,7 +45,7 @@
%<+tex> \ProvidesFile{preload.ltx}
% \fi
% \ProvidesFile{preload.dtx}
- [2014/09/29 v2.1g LaTeX Kernel (Font Preloading)]
+ [2021/10/04 v2.1g LaTeX Kernel (Font Preloading)]
%
%
%
@@ -179,7 +179,7 @@
% We begin by loading the math extension font (cmex10)
% and the \LaTeX{} line and circle fonts.
% It is necessary to do this explicitly since these are
-% used by \texttt{lplain.tex} and \texttt{latex.tex}.
+% used by the \LaTeX{} format.
% Since the internal font name contains |/| characters
% and digits we construct the name via |\csname|.
% These are the only fonts (!) that must be loaded in this file.
diff --git a/macros/latex-dev/base/proc.pdf b/macros/latex-dev/base/proc.pdf
index 7edbb77c6b..7ea4b3e4a8 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.dtx b/macros/latex-dev/base/slides.dtx
index 883e7d34f0..e63c1901d6 100644
--- a/macros/latex-dev/base/slides.dtx
+++ b/macros/latex-dev/base/slides.dtx
@@ -53,7 +53,7 @@
%<*driver>
\ProvidesFile{slides.drv}
%</driver>
- [2020/11/23 v2.4b
+ [2021/10/04 v2.4b
%<+class> Standard LaTeX document class]
%<+cmd> SLiTeX definitions]
% \end{macrocode}
@@ -1342,7 +1342,7 @@
%
% \begin{environment}{description}
% The description environment is defined here -- while the itemize
-% and enumerate environments are defined in \file{latex.dtx}.
+% and enumerate environments are defined in the \LaTeX{} format.
%
% \begin{macrocode}
\newenvironment{description}{\list{}{\labelwidth\z@
@@ -1373,7 +1373,7 @@
% \begin{macro}{\theenumii}
% \begin{macro}{\theenumiii}
% \begin{macro}{\theenumiv}
-% The counters are already defined in \file{latex.dtx}, but their
+% The counters are already defined in the \LaTeX{} format, but their
% representation is changed here.
%
% \begin{macrocode}
@@ -2349,7 +2349,7 @@ COLOR LAYER\\[.75in]%
%
% \changes{v2.2j}{1994/03/11}{Corrected \cs{@oval}, like previous
% \changes{v2.4a}{2016/03/29}{Initialize in \cs{@oval}tests added for
-% latex/4452} change to \file{latex.dtx}.}
+% latex/4452} change to the \LaTeX{} format.}
% \begin{macrocode}
\def\line(#1,#2)#3{\if@visible\@xarg #1\relax \@yarg #2\relax
\@linelen #3\unitlength
diff --git a/macros/latex-dev/base/slides.pdf b/macros/latex-dev/base/slides.pdf
index 69e2a0c1ae..55d910ddb5 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 c18e1a26d2..30888e181e 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 cb22937a33..dfac0c7787 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/source2edoc.cls b/macros/latex-dev/base/source2edoc.cls
index ba6acf9f80..bef81d995d 100644
--- a/macros/latex-dev/base/source2edoc.cls
+++ b/macros/latex-dev/base/source2edoc.cls
@@ -61,6 +61,24 @@
\int_compare:nNnTF \@auxout = \@partaux
{ \@latexerr{\string\include\space cannot~be~nested}\@eha }
{ \@docinclude {#1} } % <--- braces needed!
+ \int_compare:nNnF { \tex_currentgrouplevel:D } = { 0 }
+ {
+ \int_compare:nNnT { \tex_interactionmode:D } = { 0 }
+ { \int_set:Nn \tex_interactionmode:D { 1 } }
+ \msg_fatal:nnn { source2edoc } { missing-endgroup } {#1}
+ }
+ }
+\msg_new:nnn { source2edoc } { missing-endgroup }
+ {
+ \str_if_eq:VnTF \@currenvir { document }
+ {
+ There~are~\int_use:N \tex_currentgrouplevel:D
+ \c_space_tl unclosed~groups~in~#1.dtx.
+ }
+ {
+ The~\@currenvir \c_space_tl environment~on~line~\@currenvline
+ \c_space_tl doesn't~have~a~matching~\iow_char:N\\end{\@currenvir}.
+ }
}
\cs_gset:Npn \@docinclude #1
{
diff --git a/macros/latex-dev/base/syntonly.pdf b/macros/latex-dev/base/syntonly.pdf
index 4ab7c3814b..ee196d5506 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 60c2def519..64bad4b3ec 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 eae26e7a6c..40f7c20262 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.pdf b/macros/latex-dev/base/usrguide.pdf
index 35201e63bd..5c2715391e 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/usrguide3.pdf b/macros/latex-dev/base/usrguide3.pdf
index bf279eb39a..7e468274b4 100644
--- a/macros/latex-dev/base/usrguide3.pdf
+++ b/macros/latex-dev/base/usrguide3.pdf
Binary files differ
diff --git a/macros/latex-dev/base/utf8ienc.pdf b/macros/latex-dev/base/utf8ienc.pdf
index bbcff9bc6f..e445412b8c 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 c28756a894..bf3bcb8424 100644
--- a/macros/latex-dev/base/webcomp.pdf
+++ b/macros/latex-dev/base/webcomp.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/README.md b/macros/latex-dev/required/amsmath/README.md
index 48f1e27234..6a8e9e73d6 100644
--- a/macros/latex-dev/required/amsmath/README.md
+++ b/macros/latex-dev/required/amsmath/README.md
@@ -1,7 +1,7 @@
The amsmath bundle for LaTeX
============================
-Release 2021-11-15 pre-release 2
+Release 2021-11-15 pre-release 3
Overview
--------
@@ -39,7 +39,7 @@ Additional documentation files include:
which are included in the collection. All of these can be accessed
easily with most distributions by entering `texdoc` *filename* at the
-command line, or via [TeXdoc Online](http://texdoc.net).
+command line, or via [TeXdoc Online](https://texdoc.org).
Change logs
-----------
@@ -61,7 +61,7 @@ In particular, to check that you are really seeing a bug, please write
a short, self-contained document that shows the problem. This should
include the `latexbug` package, which will warn if your test file is
not suitable for one or the other reason. See the [CONTRIBUTING
-guide](https://github.com/latex3/latex2e/blob/master/CONTRIBUTING.md)
+guide](https://github.com/latex3/latex2e/blob/main/CONTRIBUTING.md)
for further details, or if you need to obtain the `latexbug` package.
If the bug turns out to be with third-party software then please
diff --git a/macros/latex-dev/required/amsmath/amsbsy.pdf b/macros/latex-dev/required/amsmath/amsbsy.pdf
index b85ad28df0..ae7d7d493e 100644
--- a/macros/latex-dev/required/amsmath/amsbsy.pdf
+++ b/macros/latex-dev/required/amsmath/amsbsy.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amscd.pdf b/macros/latex-dev/required/amsmath/amscd.pdf
index 23a47f71d6..ae90e51c08 100644
--- a/macros/latex-dev/required/amsmath/amscd.pdf
+++ b/macros/latex-dev/required/amsmath/amscd.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amsgen.pdf b/macros/latex-dev/required/amsmath/amsgen.pdf
index b5dda96a10..5209adf690 100644
--- a/macros/latex-dev/required/amsmath/amsgen.pdf
+++ b/macros/latex-dev/required/amsmath/amsgen.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amsldoc.pdf b/macros/latex-dev/required/amsmath/amsldoc.pdf
index 38f627d41d..bd7b03bc12 100644
--- a/macros/latex-dev/required/amsmath/amsldoc.pdf
+++ b/macros/latex-dev/required/amsmath/amsldoc.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amsmath.dtx b/macros/latex-dev/required/amsmath/amsmath.dtx
index eec51f50cb..a5cf333e79 100644
--- a/macros/latex-dev/required/amsmath/amsmath.dtx
+++ b/macros/latex-dev/required/amsmath/amsmath.dtx
@@ -86,7 +86,7 @@ Bug reports can be opened (category \texttt{#1}) at\\%
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesPackage{amsmath}[2021/08/28 v2.17k AMS math features]
+\ProvidesPackage{amsmath}[2021/10/15 v2.17l AMS math features]
% \end{macrocode}
%
% \section{Catcode defenses}
@@ -3012,7 +3012,13 @@ ill-advised in LaTeX.%
% the \cs{maketag@@} macro above.
% \begin{macrocode}
\let\df@tag\@empty
-\def\make@df@tag{\@ifstar\make@df@tag@@\make@df@tag@@@}
+\def\make@df@tag{%
+% \end{macrocode}
+% We set \cs{@currentcounter} here so that it applies to both branches.
+%\changes{v2.17l}{2021/10/15}{Explicitly set \cs{@currentcounter} (gh/687)}
+% \begin{macrocode}
+ \def\@currentcounter{equation}%
+ \@ifstar\make@df@tag@@\make@df@tag@@@}
% \end{macrocode}
% \cs{make@df@tag} sets \cs{@currentlabel} and defines
% \cs{df@tag} appropriately.
diff --git a/macros/latex-dev/required/amsmath/amsmath.pdf b/macros/latex-dev/required/amsmath/amsmath.pdf
index e845d54387..0b707d2e5f 100644
--- a/macros/latex-dev/required/amsmath/amsmath.pdf
+++ b/macros/latex-dev/required/amsmath/amsmath.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amsopn.pdf b/macros/latex-dev/required/amsmath/amsopn.pdf
index bc4a3590d9..c3e1256739 100644
--- a/macros/latex-dev/required/amsmath/amsopn.pdf
+++ b/macros/latex-dev/required/amsmath/amsopn.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amstext.pdf b/macros/latex-dev/required/amsmath/amstext.pdf
index d3d5dbf093..891daa0543 100644
--- a/macros/latex-dev/required/amsmath/amstext.pdf
+++ b/macros/latex-dev/required/amsmath/amstext.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amsxtra.pdf b/macros/latex-dev/required/amsmath/amsxtra.pdf
index 485d56d23e..eadeabb62d 100644
--- a/macros/latex-dev/required/amsmath/amsxtra.pdf
+++ b/macros/latex-dev/required/amsmath/amsxtra.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/changes.txt b/macros/latex-dev/required/amsmath/changes.txt
index a07a5cee26..bb0bc90cd1 100644
--- a/macros/latex-dev/required/amsmath/changes.txt
+++ b/macros/latex-dev/required/amsmath/changes.txt
@@ -2,10 +2,15 @@
All changes above are only part of the development branch for the next release.
================================================================================
+2021-10-15 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * amsmath.dtx (subsection{Implementing tags and labels}):
+ Explicitly set \@currentcounter (gh/687)
+
2021-08-24 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
* amsmath.dtx (subsection{Implementing tags and labels}):
move \incr@eqnum inside the equation if fleqn isn't used and guard
- it with a mathopen for better compability with hyperref, issue gh/652
+ it with a mathopen for better compability with hyperref (gh/652)
#########################
# 2021-06-01 Release
diff --git a/macros/latex-dev/required/amsmath/subeqn.pdf b/macros/latex-dev/required/amsmath/subeqn.pdf
index 88db5466cd..7f6292a828 100644
--- a/macros/latex-dev/required/amsmath/subeqn.pdf
+++ b/macros/latex-dev/required/amsmath/subeqn.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/technote.pdf b/macros/latex-dev/required/amsmath/technote.pdf
index 73fafa5f80..91f8369366 100644
--- a/macros/latex-dev/required/amsmath/technote.pdf
+++ b/macros/latex-dev/required/amsmath/technote.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/testmath.pdf b/macros/latex-dev/required/amsmath/testmath.pdf
index 811bb8be8b..4196dc09fa 100644
--- a/macros/latex-dev/required/amsmath/testmath.pdf
+++ b/macros/latex-dev/required/amsmath/testmath.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/README.md b/macros/latex-dev/required/graphics/README.md
index c2ba96233d..e18f2f137b 100644
--- a/macros/latex-dev/required/graphics/README.md
+++ b/macros/latex-dev/required/graphics/README.md
@@ -1,7 +1,7 @@
The LaTeX `graphics` bundle
===========================
-Release 2021-11-15 pre-release 2
+Release 2021-11-15 pre-release 3
Overview
--------
@@ -40,7 +40,7 @@ In particular, to check that you are really seeing a bug, please write
a short, self-contained document that shows the problem. This should
include the `latexbug` package, which will warn if your test file is
not suitable for one or the other reason. See the [CONTRIBUTING
-guide](https://github.com/latex3/latex2e/blob/master/CONTRIBUTING.md)
+guide](https://github.com/latex3/latex2e/blob/main/CONTRIBUTING.md)
for further details, or if you need to obtain the `latexbug` package.
If the bug turns out to be with third-party software then please
diff --git a/macros/latex-dev/required/graphics/changes.txt b/macros/latex-dev/required/graphics/changes.txt
index bd328646f1..c74d3abdf0 100644
--- a/macros/latex-dev/required/graphics/changes.txt
+++ b/macros/latex-dev/required/graphics/changes.txt
@@ -4,6 +4,12 @@ completeness or accuracy and it contains some references to files that
are not part of the distribution.
=======================================================================
+2021-09-27 David Carlisle <David.Carlisle@latex-project.org>
+
+ * color.dtx: use \@backslashchar color rather than \string\color to
+ generate internal csnames, to avoid relying on the current setting
+ of \escapechar
+
2021-09-16 David Carlisle <David.Carlisle@latex-project.org>
* graphicx.dtx: Add an alt key to \includegraphics gh/651
diff --git a/macros/latex-dev/required/graphics/color.dtx b/macros/latex-dev/required/graphics/color.dtx
index 2dfbb238da..9418a12477 100644
--- a/macros/latex-dev/required/graphics/color.dtx
+++ b/macros/latex-dev/required/graphics/color.dtx
@@ -21,7 +21,7 @@
%<driver> \ProvidesFile{color.drv}
% \fi
% \ProvidesFile{color.dtx}
- [2020/02/24 v1.2b Standard LaTeX Color (DPC)]
+ [2021/10/11 v1.3b Standard LaTeX Color (DPC)]
%
% \iffalse
%<*driver>
@@ -78,6 +78,9 @@
% fixed values whilst this file is being read.
% \changes{v0.3b}{1994/09/14}
% {Save and restore catcodes}
+% \changes{v1.3a}{2021/09/27}
+% {Use \cs{@backslashchar} in preference to \cs{string} gh/659}
+%
% \begin{macrocode}
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
@@ -185,9 +188,11 @@
% \begin{option}{dvipdfm}
% \changes{v1.0h}{1999/01/13}
% {dvipdfm added}
-% Mark Wick's dvipdfm driver.
+% \changes{v1.3b}{2021/10/11}
+% {make dvipdfm an alias for dvipdfmx}
+% Mark Wick's dvipdfm driver (now merged with xdvipdfmx).
% \begin{macrocode}
-\DeclareOption{dvipdfm}{\def\Gin@driver{dvipdfm.def}}
+\DeclareOption{dvipdfm}{\def\Gin@driver{dvipdfmx.def}}
% \end{macrocode}
% \end{option}
%
@@ -375,7 +380,7 @@
% \begin{macrocode}
\DeclareOption{usenames}{%
\def\c@lor@usename#1{%
- \expandafter\color@named\csname\string\color @#1\endcsname{#1}}}
+ \expandafter\color@named\csname\@backslashchar color @#1\endcsname{#1}}}
% \end{macrocode}
% \end{option}
%
@@ -432,10 +437,10 @@
% Finally call |\set@color| to effect the colour change.
% \begin{macrocode}
\def\@declaredcolor#1{%
- \@ifundefined{\string\color @#1}%
+ \@ifundefined{\@backslashchar color @#1}%
{\c@lor@error{`#1'}}%
{\expandafter\let\expandafter\current@color
- \csname\string\color @#1\endcsname
+ \csname\@backslashchar color @#1\endcsname
\set@color}%
\ignorespaces}
% \end{macrocode}
@@ -506,7 +511,7 @@
% \begin{macrocode}
\protected\def\nopagecolor{%
\@ifundefined{no@page@color}{%
- \PackageInfo{color}{\string\nopagecolor\space is not supported}%
+ \PackageInfo{color}{\@backslashchar nopagecolor\space is not supported}%
}{%
\no@page@color
}%
@@ -545,10 +550,10 @@
\protected\def\definecolor#1#2#3{%
\@ifundefined{color@#2}%
{\c@lor@error{model `#2'}}%
- {\@ifundefined{\string\color @#1}{}%
+ {\@ifundefined{\@backslashchar color @#1}{}%
{\PackageInfo{color}{Redefining color #1}}%
\csname color@#2\expandafter\endcsname
- \csname\string\color @#1\endcsname{#3}}}
+ \csname\@backslashchar color @#1\endcsname{#3}}}
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex-dev/required/graphics/color.pdf b/macros/latex-dev/required/graphics/color.pdf
index dbc9c25788..f1829a454e 100644
--- a/macros/latex-dev/required/graphics/color.pdf
+++ b/macros/latex-dev/required/graphics/color.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/drivers.pdf b/macros/latex-dev/required/graphics/drivers.pdf
index ecd63d0fb4..5e54fa719d 100644
--- a/macros/latex-dev/required/graphics/drivers.pdf
+++ b/macros/latex-dev/required/graphics/drivers.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/epsfig.pdf b/macros/latex-dev/required/graphics/epsfig.pdf
index 5787ecf75b..e4d4d1925e 100644
--- a/macros/latex-dev/required/graphics/epsfig.pdf
+++ b/macros/latex-dev/required/graphics/epsfig.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/graphics.dtx b/macros/latex-dev/required/graphics/graphics.dtx
index 0c5c9e88ec..cec35559ef 100644
--- a/macros/latex-dev/required/graphics/graphics.dtx
+++ b/macros/latex-dev/required/graphics/graphics.dtx
@@ -616,7 +616,7 @@
% \end{macrocode}
% \end{option}
%
-% \begin{option}{luatex}
+% \begin{option}{dvisvgm}
% \changes{v1.0r}{2016/05/09}
% {dvisvgm added}
% dvisvgm driver.
diff --git a/macros/latex-dev/required/graphics/graphics.pdf b/macros/latex-dev/required/graphics/graphics.pdf
index 2a78345161..b822dadb4a 100644
--- a/macros/latex-dev/required/graphics/graphics.pdf
+++ b/macros/latex-dev/required/graphics/graphics.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/graphicx.pdf b/macros/latex-dev/required/graphics/graphicx.pdf
index 210d251efc..27467b0f6d 100644
--- a/macros/latex-dev/required/graphics/graphicx.pdf
+++ b/macros/latex-dev/required/graphics/graphicx.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/grfguide.pdf b/macros/latex-dev/required/graphics/grfguide.pdf
index 792686e0af..77d4881297 100644
--- a/macros/latex-dev/required/graphics/grfguide.pdf
+++ b/macros/latex-dev/required/graphics/grfguide.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/keyval.pdf b/macros/latex-dev/required/graphics/keyval.pdf
index 3571d1347e..e2dd512f7f 100644
--- a/macros/latex-dev/required/graphics/keyval.pdf
+++ b/macros/latex-dev/required/graphics/keyval.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/lscape.pdf b/macros/latex-dev/required/graphics/lscape.pdf
index caf9f95ee7..14ac364242 100644
--- a/macros/latex-dev/required/graphics/lscape.pdf
+++ b/macros/latex-dev/required/graphics/lscape.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/rotating.pdf b/macros/latex-dev/required/graphics/rotating.pdf
index e4c4a0df13..f74059ec6a 100644
--- a/macros/latex-dev/required/graphics/rotating.pdf
+++ b/macros/latex-dev/required/graphics/rotating.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/rotex.pdf b/macros/latex-dev/required/graphics/rotex.pdf
index 6a89c2edff..fe1850a507 100644
--- a/macros/latex-dev/required/graphics/rotex.pdf
+++ b/macros/latex-dev/required/graphics/rotex.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/trig.pdf b/macros/latex-dev/required/graphics/trig.pdf
index fcfbf0a4da..b92253e175 100644
--- a/macros/latex-dev/required/graphics/trig.pdf
+++ b/macros/latex-dev/required/graphics/trig.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/README.md b/macros/latex-dev/required/tools/README.md
index 4eb7829acd..97b1f1b81b 100644
--- a/macros/latex-dev/required/tools/README.md
+++ b/macros/latex-dev/required/tools/README.md
@@ -1,7 +1,7 @@
The LaTeX `tools` bundle
========================
-Release 2021-11-15 pre-release 2
+Release 2021-11-15 pre-release 3
Overview
--------
@@ -30,7 +30,7 @@ In particular, to check that you are really seeing a bug, please write
a short, self-contained document that shows the problem. This should
include the `latexbug` package, which will warn if your test file is
not suitable for one or the other reason. See the [CONTRIBUTING
-guide](https://github.com/latex3/latex2e/blob/master/CONTRIBUTING.md)
+guide](https://github.com/latex3/latex2e/blob/main/CONTRIBUTING.md)
for further details, or if you need to obtain the `latexbug` package.
If the bug turns out to be with third-party software then please
diff --git a/macros/latex-dev/required/tools/afterpage.pdf b/macros/latex-dev/required/tools/afterpage.pdf
index f1532c82b6..1eee62c8d8 100644
--- a/macros/latex-dev/required/tools/afterpage.pdf
+++ b/macros/latex-dev/required/tools/afterpage.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/array.dtx b/macros/latex-dev/required/tools/array.dtx
index eab451fccd..ba88aba7c2 100644
--- a/macros/latex-dev/required/tools/array.dtx
+++ b/macros/latex-dev/required/tools/array.dtx
@@ -33,7 +33,7 @@
%<+package>\DeclareCurrentRelease{}{2020-10-01}
%<+package>
%<+package>\ProvidesPackage{array}
-%<+package> [2021/07/12 v2.5f Tabular extension package (FMi)]
+%<+package> [2021/10/04 v2.5f Tabular extension package (FMi)]
%
% \fi
%
@@ -927,12 +927,12 @@
% \textsf{token} is stored in the
% \textsf{count} register =\@lastchclass=.
% All of the mentioned registers are already allocated in
-% \texttt{latex.tex},
+% the \LaTeX{} format,
% which is the reason why the following three lines of code are
% commented out.
% Later throughout the text I will not mention it again explicitly
% whenever I use a =%= sign. These parts are already defined in
-% \texttt{latex.tex}.
+% the \LaTeX{} format.
% \begin{macrocode}
% \newcount \@chclass
% \newcount \@chnum
diff --git a/macros/latex-dev/required/tools/array.pdf b/macros/latex-dev/required/tools/array.pdf
index 28778ed39c..243892d475 100644
--- a/macros/latex-dev/required/tools/array.pdf
+++ b/macros/latex-dev/required/tools/array.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/bm.pdf b/macros/latex-dev/required/tools/bm.pdf
index e69390ef57..23865fa585 100644
--- a/macros/latex-dev/required/tools/bm.pdf
+++ b/macros/latex-dev/required/tools/bm.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/calc.pdf b/macros/latex-dev/required/tools/calc.pdf
index 327661413a..6b9ba85a49 100644
--- a/macros/latex-dev/required/tools/calc.pdf
+++ b/macros/latex-dev/required/tools/calc.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/changes.txt b/macros/latex-dev/required/tools/changes.txt
index aa5a341960..b781bba6ce 100644
--- a/macros/latex-dev/required/tools/changes.txt
+++ b/macros/latex-dev/required/tools/changes.txt
@@ -5,9 +5,14 @@ completeness or accuracy and it contains some references to files that
are not part of the distribution.
=======================================================================
+2021-10-08 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * multicol.dtx:
+ Added optional argument to \columnbreak and implemented \newcolumn (gh/682)
+
2021-09-01 David Carlisle <David.Carlisle@latex-project.org>
- * longtable.dtx: add \@nobreakfalse for github/173 and \if@noskipsec for gh/131
+ * longtable.dtx: add \@nobreakfalse for github/173 and \if@noskipsec for (gh/131)
2021-07-12 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
@@ -38,7 +43,7 @@ All changes above are only part of the development branch for the next release.
2021-05-07 David Carlisle <David.Carlisle@latex-project.org>
* longtable.dtx: write lists of tables entry to the file with
- extension \ext@table, not force .lot github/561
+ extension \ext@table, not force .lot (github/561)
2021-04-25 David Carlisle <David.Carlisle@latex-project.org>
diff --git a/macros/latex-dev/required/tools/dcolumn.pdf b/macros/latex-dev/required/tools/dcolumn.pdf
index c6e3921f1e..a5fde542e2 100644
--- a/macros/latex-dev/required/tools/dcolumn.pdf
+++ b/macros/latex-dev/required/tools/dcolumn.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/delarray.pdf b/macros/latex-dev/required/tools/delarray.pdf
index e5ad5342da..79c9bbcb2c 100644
--- a/macros/latex-dev/required/tools/delarray.pdf
+++ b/macros/latex-dev/required/tools/delarray.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/enumerate.pdf b/macros/latex-dev/required/tools/enumerate.pdf
index 1cf36525a6..e95426c3a4 100644
--- a/macros/latex-dev/required/tools/enumerate.pdf
+++ b/macros/latex-dev/required/tools/enumerate.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/fileerr.pdf b/macros/latex-dev/required/tools/fileerr.pdf
index 9c6316e99a..72873b3d36 100644
--- a/macros/latex-dev/required/tools/fileerr.pdf
+++ b/macros/latex-dev/required/tools/fileerr.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/fontsmpl.pdf b/macros/latex-dev/required/tools/fontsmpl.pdf
index 123c70457c..150c27a9e6 100644
--- a/macros/latex-dev/required/tools/fontsmpl.pdf
+++ b/macros/latex-dev/required/tools/fontsmpl.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/ftnright.pdf b/macros/latex-dev/required/tools/ftnright.pdf
index 78e4d069f7..683950702d 100644
--- a/macros/latex-dev/required/tools/ftnright.pdf
+++ b/macros/latex-dev/required/tools/ftnright.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/hhline.pdf b/macros/latex-dev/required/tools/hhline.pdf
index 36a4dd7104..ebec5f1d1b 100644
--- a/macros/latex-dev/required/tools/hhline.pdf
+++ b/macros/latex-dev/required/tools/hhline.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/indentfirst.pdf b/macros/latex-dev/required/tools/indentfirst.pdf
index 709cf3fef5..5914a76e76 100644
--- a/macros/latex-dev/required/tools/indentfirst.pdf
+++ b/macros/latex-dev/required/tools/indentfirst.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/layout.pdf b/macros/latex-dev/required/tools/layout.pdf
index 5b447f8f6d..0a1f7de2e7 100644
--- a/macros/latex-dev/required/tools/layout.pdf
+++ b/macros/latex-dev/required/tools/layout.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/longtable.pdf b/macros/latex-dev/required/tools/longtable.pdf
index 05c3f41a99..2eb442eeae 100644
--- a/macros/latex-dev/required/tools/longtable.pdf
+++ b/macros/latex-dev/required/tools/longtable.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/multicol.dtx b/macros/latex-dev/required/tools/multicol.dtx
index 25d4bc68db..2b74d85af9 100644
--- a/macros/latex-dev/required/tools/multicol.dtx
+++ b/macros/latex-dev/required/tools/multicol.dtx
@@ -98,7 +98,7 @@
%<driver> \ProvidesFile{multicol.drv}
% \fi
% \ProvidesFile{multicol.dtx}
- [2021/07/06 v1.8z multicolumn formatting (FMi)]
+ [2021/10/08 v1.9a multicolumn formatting (FMi)]
%
%
%%
@@ -564,6 +564,13 @@
% forced into the second column (resulting in some white
% space between paragraphs in the first column).
%
+% From version 1.9 onwards \cs{columnbreak} accepts an optional
+% argument (just like \cs{pagebreak}) in which you can specify the
+% desirability to break the column at that point: supported values are
+% \texttt{1} to \texttt{4}. This version also adds \cs{newcolumn}
+% which forces a column break but runs the column short (comparible to
+% \cs{newpage}).
+%
% \subsection{Floats inside a \mc{} environment}
%
% Within the \mc{} environment the usual star float commands are
@@ -981,7 +988,8 @@
% \changes{v1.8x}{2019/10/15}{Use \cs{@maxdepth} not \cs{maxdepth} (gh/190)}
% \begin{macrocode}
\let\mc@gridwarn\maxdimen
-\DeclareOption{grid}{\def\mc@gridwarn{\@maxdepth}}
+\DeclareOption{grid}
+ {\def\mc@gridwarn{\@maxdepth}}
% \end{macrocode}
%
% \changes{v1.8e}{2014/04/23}{Support \cs{docolaction}}
@@ -1071,7 +1079,8 @@
% \changes{v1.6e}{2004/02/14}{Avoid self-referencing definition of
% \cs{@footnotetext} (pr/3618)}.
% \begin{macrocode}
- \ifx\@footnotetext\mult@footnotetext\else
+ \ifx\@footnotetext\mult@footnotetext
+ \else
\let\orig@footnotetext\@footnotetext
\let\@footnotetext\mult@footnotetext
\fi
@@ -1512,10 +1521,13 @@
\def\clearpage{%
\ifx\@deferlist\@empty\else
\PackageError{multicol}%
- {Deferred floats not cleared}%
- {A \string\clearpage\space inside multicols acts like
- \string\newpage\space and doesn't clear floats.\MessageBreak
- Move it before the multicols environment if you need it.}%
+ {Deferred floats not cleared}%
+ {A \string\clearpage\space inside
+ multicols acts like
+ \string\newpage\space and doesn't
+ clear floats.\MessageBreak
+ Move it before the multicols
+ environment if you need it.}%
\fi
\newpage}%
% \end{macrocode}
@@ -1701,7 +1713,8 @@
% for later.
% \changes{v1.8r}{2018/01/28}{Macro added}
% \begin{macrocode}
-\mathchardef\@Mvi=10006 % 10005 is \columnbreak
+\mathchardef\@Mvi=10006 % 10005 is
+ % \columnbreak
% \end{macrocode}
% \end{macro}
%
@@ -1724,7 +1737,8 @@
% \changes{v1.8c}{2013/11/03}{Add \cs{color@endgroup} to prevent color leak}
% \changes{v1.8f}{2014/06/19}{Discard spaces before adding \cs{color@endgroup}}
% \begin{macrocode}
- \remove@discardable@items\color@endgroup\egroup
+ \remove@discardable@items
+ \color@endgroup\egroup
% \end{macrocode}
% Now we call |\balance@columns| the routine that balances material
% stored in the box |\mult@box|.
@@ -1754,7 +1768,7 @@
{Restore kept marks to\MessageBreak
first: \meaning\kept@firstmark
\MessageBreak bot\space\space:
- \meaning\kept@botmark }%
+ \meaning\kept@botmark }%
%</marktrace>
% \end{macrocode}
% This finishes the code for the ``boxed'' case.
@@ -2203,7 +2217,7 @@
% \changes{v1.8x}{2019/10/15}{Use \cs{@maxdepth} not \cs{maxdepth} (gh/190)}
% \begin{macrocode}
\def\vfilmaxdepth{\vskip \z@ \@plus .0001fil
- \@minus \@maxdepth}
+ \@minus \@maxdepth}
% \end{macrocode}
% \end{macro}
%
@@ -2335,7 +2349,8 @@
\setbox\count@
\vbox to\dimen@
{\unvbox\count@
- \ifshr@nking\vfilmaxdepth\fi}%
+ \ifshr@nking
+ \vfilmaxdepth\fi}%
}%
% \end{macrocode}
% Then the last column follows.
@@ -2615,7 +2630,8 @@
% \changes{v1.8r}{2018/01/28}{Handling end of env through special penalty}
% \begin{macrocode}
\ifnum\outputpenalty = -\@Mvi
- \mult@info\@ne{End penalty of multicols seen}%
+ \mult@info\@ne{End penalty of
+ multicols seen}%
% \end{macrocode}
% If we are at this point then we have to run the balancing code
% (which was previously its own output routine). First we pretend
@@ -2626,7 +2642,9 @@
% in a better way; basically it is like this, because of the older
% code was using different ORs and I simply reused most of it.
% \begin{macrocode}
- \outputpenalty\@M % pretend we had a natural forced break
+ \outputpenalty\@M % pretend we had
+ % a natural
+ % forced break
\balance@columns@out
\else
% \end{macrocode}
@@ -2647,7 +2665,8 @@
% this is possible with |\xdef|.)
% \changes{v1.2a}{1990/02/05}{Float boxes freed.}
% \begin{macrocode}
- \xdef\@freelist{\@freelist\@currlist}%
+ \xdef\@freelist{\@freelist
+ \@currlist}%
\gdef\@currlist{}%
\fi
\fi
@@ -2822,8 +2841,9 @@
% |\enlargethispage| command.
% \changes{v1.8a}{2011/12/20}{Support for \cs{enlargethispage}}
% \begin{macrocode}
- \ifvbox\@kludgeins\insert\@kludgeins
- {\unvbox\@kludgeins}\fi
+ \ifvbox\@kludgeins
+ \insert\@kludgeins
+ {\unvbox\@kludgeins}\fi
% \end{macrocode}
% Then we |\unvbox| the |\partial@page| (which may be void if we
% are not processing the first page of this \mc{} environment.
@@ -2833,7 +2853,8 @@
% Then we return the first and bottom mark and the gathered
% material to the main vertical list.
% \begin{macrocode}
- \return@nonemptymark{first}\kept@firstmark
+ \return@nonemptymark{first}%
+ \kept@firstmark
\return@nonemptymark{bot}\kept@botmark
\page@sofar
% \end{macrocode}
@@ -2960,12 +2981,14 @@
% \changes{v1.8w}{2019/03/01}{Provide minrows counter for balancing}
% \begin{macrocode}
\@tempdima\dimexpr
- \topskip +\c@minrows\baselineskip-\baselineskip\relax
+ \topskip +\c@minrows\baselineskip
+ -\baselineskip\relax
\ifnum\dimen@<\@tempdima
\mult@info\@ne
{Start value
\the\dimen@ \space ->
- \the\@tempdima \space (corrected for minrows)}%
+ \the\@tempdima \space
+ (corrected for minrows)}%
\dimen@\@tempdima
\fi
% \end{macrocode}
@@ -3466,7 +3489,9 @@
% directly at the values of the allocation counters.
% \changes{v1.8y}{2019/12/09}{Allow for 20 columns (gh/237)}
% \begin{macrocode}
-\ifnum\numexpr \count20-\count14-1<41 % = 2 * 20 + 1
+\ifnum\numexpr
+ \count20-\count14-1<41
+ % this is = 2 * 20 + 1
\count14=\@cclv
\fi
% \end{macrocode}
@@ -4071,34 +4096,65 @@
%
% \begin{macro}{\columnbreak}
% \changes{v1.5u}{1999/05/25}{Macro added}
+% \changes{v1.9a}{2021/10/08}{Added optional argument for conditional break}
% |\columnbreak| is modeled after |\pagebreak| except that we
% generate a penalty -10005.
% \begin{macrocode}
\mathchardef\@Mv=10005
-\def\columnbreak{%
+\newcommand\columnbreak[1][4]{%
% \end{macrocode}
% We have to ensure that it is only used within a \mc{}
% environment since if that penalty would be seen by the unmodified
% \LaTeX{} output routine strange things would happen.
% \begin{macrocode}
- \ifnum\col@number<\tw@
- \PackageError{multicol}%
- {\noexpand\columnbreak outside multicols}%
- {This command can only be used within
- a multicols or multicols* environment.}%
- \else
- \ifvmode
- \penalty -\@Mv\relax
- \else
- \@bsphack
- \vadjust{\penalty -\@Mv\relax}%
- \@esphack
- \fi
- \fi}
+ \ifnum\col@number<\tw@
+ \PackageError{multicol}%
+ {\noexpand\newcolumn outside multicols}%
+ {This command can only be used within
+ a multicols or multicols* environment.}%
+ \else
+% \end{macrocode}
+% Increasingly lower penalty based on argument value. This is like
+% \cs{pagebreak} but we use other penalty values are the \LaTeX{}
+% defaults aree rather pointless for pagination.
+% \begin{macrocode}
+ \edef\mc@break@pen
+ {-\ifcase#1\@m\or 3333\or 6666\or 9999\else\@Mv\fi\relax}%
+ \ifvmode
+ \penalty \mc@break@pen
+ \else
+ \@bsphack
+ \vadjust{\penalty \mc@break@pen}%
+ \@esphack
+ \fi
+ \fi}
% \end{macrocode}
% \end{macro}
%
%
+%
+% \begin{macro}{\newcolumn}
+% \changes{v1.9a}{2021/10/08}{Macro added}
+% This is modeled after \cs{newpage} but for column breaks.
+% \begin{macrocode}
+\newcommand\newcolumn{%
+ \ifnum\col@number<\tw@
+ \PackageError{multicol}%
+ {\noexpand\newcolumn outside multicols}%
+ {This command can only be used within
+ a multicols or multicols* environment.}%
+ \else
+ \ifvmode
+ \nobreak\vfill\penalty -\@Mv\relax
+ \else
+ \@bsphack
+ \vadjust{\nobreak\vfill\kern\z@\penalty -\@Mv\relax}%
+ \@esphack
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\colbreak@box}
% \changes{v1.5u}{1999/05/25}{Macro added}
% Need a box to collect the galley up to the column break.
diff --git a/macros/latex-dev/required/tools/multicol.pdf b/macros/latex-dev/required/tools/multicol.pdf
index e76bfdc8cc..30e277d5a3 100644
--- a/macros/latex-dev/required/tools/multicol.pdf
+++ b/macros/latex-dev/required/tools/multicol.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/rawfonts.pdf b/macros/latex-dev/required/tools/rawfonts.pdf
index e6163af063..9e41ceaee5 100644
--- a/macros/latex-dev/required/tools/rawfonts.pdf
+++ b/macros/latex-dev/required/tools/rawfonts.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/shellesc.pdf b/macros/latex-dev/required/tools/shellesc.pdf
index 2897cfc51a..8f522dbc73 100644
--- a/macros/latex-dev/required/tools/shellesc.pdf
+++ b/macros/latex-dev/required/tools/shellesc.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/showkeys.pdf b/macros/latex-dev/required/tools/showkeys.pdf
index 239bf98ed9..450f8f7f02 100644
--- a/macros/latex-dev/required/tools/showkeys.pdf
+++ b/macros/latex-dev/required/tools/showkeys.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/somedefs.pdf b/macros/latex-dev/required/tools/somedefs.pdf
index 35da07a943..8a457cd6e1 100644
--- a/macros/latex-dev/required/tools/somedefs.pdf
+++ b/macros/latex-dev/required/tools/somedefs.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/tabularx.pdf b/macros/latex-dev/required/tools/tabularx.pdf
index ac4f8d0765..11bfc3e209 100644
--- a/macros/latex-dev/required/tools/tabularx.pdf
+++ b/macros/latex-dev/required/tools/tabularx.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/theorem.pdf b/macros/latex-dev/required/tools/theorem.pdf
index 7464f0e78e..f1b3fff4c0 100644
--- a/macros/latex-dev/required/tools/theorem.pdf
+++ b/macros/latex-dev/required/tools/theorem.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/tools-overview.pdf b/macros/latex-dev/required/tools/tools-overview.pdf
index 8292ac5e8d..896c737afe 100644
--- a/macros/latex-dev/required/tools/tools-overview.pdf
+++ b/macros/latex-dev/required/tools/tools-overview.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/trace.pdf b/macros/latex-dev/required/tools/trace.pdf
index ce8a6d778f..b13c1b50c5 100644
--- a/macros/latex-dev/required/tools/trace.pdf
+++ b/macros/latex-dev/required/tools/trace.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/varioref.pdf b/macros/latex-dev/required/tools/varioref.pdf
index 3504106b14..2bb9cb21a8 100644
--- a/macros/latex-dev/required/tools/varioref.pdf
+++ b/macros/latex-dev/required/tools/varioref.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/verbatim.pdf b/macros/latex-dev/required/tools/verbatim.pdf
index 11e237e5e3..5dfd7a7a11 100644
--- a/macros/latex-dev/required/tools/verbatim.pdf
+++ b/macros/latex-dev/required/tools/verbatim.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/xr.pdf b/macros/latex-dev/required/tools/xr.pdf
index 8b1eeee496..a280f43928 100644
--- a/macros/latex-dev/required/tools/xr.pdf
+++ b/macros/latex-dev/required/tools/xr.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/xspace.pdf b/macros/latex-dev/required/tools/xspace.pdf
index db9fa6bb44..9ec2b17c7a 100644
--- a/macros/latex-dev/required/tools/xspace.pdf
+++ b/macros/latex-dev/required/tools/xspace.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index d1a50adb6b..6fef9a504a 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -15,7 +15,7 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2021/10/20}{1.3S}
+\ProvidesExplClass{easybook}{2021/10/21}{1.3X}
{Typeset Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
@@ -319,7 +319,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2021/10/20}{1.3S}
+\ProvidesExplPackage{easybase}{2021/10/21}{1.3X}
{Typeset Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -394,7 +394,7 @@
{
The~macro~package~#1~has~been~reloaded. \\
Please~pass~the~arguments~by \\
- the~\string\PassOptionsToPackage{\#1}{#1}\space~command.
+ the~\string\PassOptionsToPackage{\#1}{#1}\ command.
}
\cs_set_eq:NN \eb@usepackage@save \usepackage
\RenewDocumentCommand{\usepackage}{O{}m}
@@ -523,7 +523,7 @@
\msg_new:nnn { easybase } { no-chapter }
{
Your~document~class~is~in~article~mode. \\
- The~\string\chapter\space~command~will~not~be~used.
+ The~\string\chapter\ command~will~not~be~used.
}
\LoadPackage
@@ -778,23 +778,23 @@
footwith .value_required:n = true,
footwith .initial:n = chapter
}
-\NewDocumentCommand{\eb_assign_fnmark_code:n}
+\NewDocumentCommand{\eb_assign_fntext_code:n}
{>{\SplitArgument{1}{,}}m}
{\eb_assign_fnmark_code_pos:nn #1}
\cs_new_protected:Npn \eb_assign_fnmark_code_pos:nn #1#2
{
- \tl_set:Nn \l__eb_fnmark_before_tl {#1}
+ \tl_set:Nn \l__eb_fntext_before_tl {#1}
\tl_if_novalue:nTF {#2}
- { \tl_clear:N \l__eb_fnmark_after_tl }
- { \tl_set:Nn \l__eb_fnmark_after_tl {#2} }
+ { \tl_clear:N \l__eb_fntext_after_tl }
+ { \tl_set:Nn \l__eb_fntext_after_tl {#2} }
}
-\cs_new:Npn \eb_fnmark_counter_pifont:N #1
+\cs_new:Npn \eb_fnmate_counter_pifont:N #1
{ \ding{\int_eval:n { 171 + #1 }} }
-\cs_new:Npn \eb_fnmark_counter_pifont_neg:N #1
+\cs_new:Npn \eb_fnmate_counter_pifont_neg:N #1
{ \ding{\int_eval:n { 181 + #1 }} }
-\cs_new:Npn \eb_fnmark_counter_pisans:N #1
+\cs_new:Npn \eb_fnmate_counter_pisans:N #1
{ \ding{\int_eval:n { 191 + #1 }} }
-\cs_new:Npn \eb_fnmark_counter_pisans_neg:N #1
+\cs_new:Npn \eb_fnmate_counter_pisans_neg:N #1
{ \ding{\int_eval:n { 201 + #1 }} }
\cs_new:Npn \eb_int_format_trans:NN #1
{
@@ -808,41 +808,41 @@
{ c } { \exp_args:NV \zhnumber }
}
}
-\cs_new_protected:Npn \eb_fnmark_normal_label_set:nn #1#2
+\cs_new_protected:Npn \eb_fnmate_normal_label_set:nn #1#2
{
- \tl_set:Nn \l__eb_fnmark_number_type_tl {#1}
+ \tl_set:Nn \l__eb_fnmate_number_type_tl {#1}
\cs_set:cpx {#2}
{
- \str_case:VnT \l__eb_fnmark_number_type_tl
+ \str_case:VnT \l__eb_fnmate_number_type_tl
{
{ plain }
{ \exp_not:N \int_use:N }
{ pifont }
- { \exp_not:N \eb_fnmark_counter_pifont:N }
+ { \exp_not:N \eb_fnmate_counter_pifont:N }
{ pifont* }
- { \exp_not:N \eb_fnmark_counter_pifont_neg:N }
+ { \exp_not:N \eb_fnmate_counter_pifont_neg:N }
{ pisans }
- { \exp_not:N \eb_fnmark_counter_pisans:N }
+ { \exp_not:N \eb_fnmate_counter_pisans:N }
{ pisans* }
- { \exp_not:N \eb_fnmark_counter_pisans_neg:N }
+ { \exp_not:N \eb_fnmate_counter_pisans_neg:N }
}
{ \exp_not:N \c@footnote }
}
}
-\cs_new_protected:Npn \eb_fnmark_short_label_set:nn #1#2
+\cs_new_protected:Npn \eb_fnmate_short_label_set:nn #1#2
{
- \tl_set:Nn \l__eb_fnmark_short_tokens_tl {#1}
+ \tl_set:Nn \l__eb_fnmate_short_tokens_tl {#1}
\eb_clist_map_inline:nn
{ A,a,1,I,i,c }
{
\tl_if_in:nnT {#1} {##1}
{
- \tl_replace_once:Nnn \l__eb_fnmark_short_tokens_tl {##1}
+ \tl_replace_once:Nnn \l__eb_fnmate_short_tokens_tl {##1}
{ \eb_int_format_trans:NN ##1 \c@footnote }
\seq_map_break:
}
}
- \cs_set_eq:cN {#2} \l__eb_fnmark_short_tokens_tl
+ \cs_set_eq:cN {#2} \l__eb_fnmate_short_tokens_tl
}
\cs_new_protected:Npn \eb_footnote_choice_handle:n #1
{
@@ -863,7 +863,7 @@
{ \tl_set:Nn \l__eb_footnote_choice_tl {#1} }
}
}
-\cs_new_protected:Npn \eb_fn_shift_set:nnn #1#2#3
+\cs_new_protected:Npn \eb_fnmate_shift_set:nnn #1#2#3
{
\str_if_eq:nnTF {#1} { match }
{
@@ -872,7 +872,7 @@
}
{ \tl_set:cn { l__eb_fn#2_#3shift_tl } {#1} }
}
-\cs_new_protected:Npn \eb_fn_format_set:nn #1#2
+\cs_new_protected:Npn \eb_fnboth_format_set:nn #1#2
{
\str_if_eq:nnTF {#1} { match }
{ \bool_set_true:c { l__eb_fn#2_format_match_bool } }
@@ -898,11 +898,11 @@
fntext-pos .tl_set:N = \l__eb_fntext_position_tl,
fntext-pos .initial:n = super,
- fntext-code .code:n = \eb_assign_fnmark_code:n {#1},
+ fntext-code .code:n = \eb_assign_fntext_code:n {#1},
fntext-code .initial:n =
- { ,\tl_if_eq:NnF \l__eb_fntext_position_tl { super } { \space } },
- fnmate-form .code:n = \eb_fn_format_set:nn {#1} { mate },
- fncust-form .code:n = \eb_fn_format_set:nn {#1} { cust },
+ { ,\tl_if_eq:NnF \l__eb_fntext_position_tl { super } { ~ } },
+ fnmate-form .code:n = \eb_fnboth_format_set:nn {#1} { mate },
+ fncust-form .code:n = \eb_fnboth_format_set:nn {#1} { cust },
fnboth-form .meta:n = { fnmate-form = #1,fncust-form = #1 },
footnotetype .multichoices:nn =
@@ -911,25 +911,25 @@
footnotetype .value_required:n = true,
footnotetype .initial:n = hang,
- fnmark-vshift .code:n = \eb_fn_shift_set:nnn {#1} { mark } { v },
- fnmark-hshift .code:n = \eb_fn_shift_set:nnn {#1} { mark } { h },
- fntext-vshift .code:n = \eb_fn_shift_set:nnn {#1} { text } { v },
+ fnmark-vshift .code:n = \eb_fnmate_shift_set:nnn {#1} { mark } { v },
+ fnmark-hshift .code:n = \eb_fnmate_shift_set:nnn {#1} { mark } { h },
+ fntext-vshift .code:n = \eb_fnmate_shift_set:nnn {#1} { text } { v },
fnmark-vshift .initial:n = 0pt,
fnmark-hshift .initial:n = 0pt,
fntext-vshift .initial:n = 0pt,
fnmark-num .choices:nn =
{ plain,pifont,pifont*,pifont-sans,pifont-sans* }
- { \eb_fnmark_normal_label_set:nn {#1} { the@footnote } },
+ { \eb_fnmate_normal_label_set:nn {#1} { the@footnote } },
fnmark-num .value_required:n = true,
fnmark-num/unknown .code:n =
- { \eb_fnmark_short_label_set:nn {#1} { the@footnote } },
+ { \eb_fnmate_short_label_set:nn {#1} { the@footnote } },
fntext-num .choices:nn =
{ plain,pifont,pifont*,pifont-sans,pifont-sans* }
- { \eb_fnmark_normal_label_set:nn {#1} { thefootnote } },
+ { \eb_fnmate_normal_label_set:nn {#1} { thefootnote } },
fntext-num .value_required:n = true,
fntext-num/unknown .code:n =
- { \eb_fnmark_short_label_set:nn {#1} { thefootnote } },
+ { \eb_fnmate_short_label_set:nn {#1} { thefootnote } },
fnboth-num .meta:n = { fntext-num = #1,fnmark-num = #1 },
fnboth-num .initial:n = plain,
unknown .code:n = \eb_msg_unknown_option:n { hdrset }
@@ -1103,7 +1103,7 @@
\ProvideDocumentCommand{\super}{omo}{\textsuperscript{#3}}
\providecommand{\spbset}{\use_none:n}
-\NewDocumentCommand{\eb@fnmark@super}{sm}
+\NewDocumentCommand{\eb@fnmate@super}{sm}
{
\IfBooleanTF{#1}
{\super[\l__eb_fntext_vshift_tl]{#2}[0pt]}
@@ -1113,7 +1113,7 @@
[\l__eb_fnmark_hshift_tl]
}
}
-\cs_new_protected:Npn \eb_fnmark_format_initial:
+\cs_new_protected:Npn \eb_fnmate_format_initial:
{
\bool_if:NTF \l__eb_normal_footnote_bool
{
@@ -1135,24 +1135,24 @@
{
\hbox:n
{
- \eb_fnmark_format_initial:
+ \eb_fnmate_format_initial:
\tl_if_eq:NnTF \@mpfn { footnote }
- { \eb@fnmark@super{\eb@thefnmark} }
- { \eb@fnmark@super{\@thefnmark} }
+ { \eb@fnmate@super{\eb@thefnmark} }
+ { \eb@fnmate@super{\@thefnmark} }
}
}
\cs_new:Npn \eb@makefnmark
{
\hbox:n
{
- \eb_fnmark_format_initial:
+ \eb_fnmate_format_initial:
\tl_if_eq:NnT \l__eb_fntext_position_tl { super }
- { \eb@fnmark@super* }
+ { \eb@fnmate@super* }
{
- \tl_use:N \l__eb_fnmark_before_tl
+ \tl_use:N \l__eb_fntext_before_tl
{\l__eb_fnmate_format_tl{\@thefnmark}}
}
- \tl_use:N \l__eb_fnmark_after_tl
+ \tl_use:N \l__eb_fntext_after_tl
}
}
@@ -1374,19 +1374,19 @@
figure/tocline =
{
- \figurename\space #1
+ \figurename~#1
\bool_if:NF \eb@titletoc@hang@fix@bool
{ \hspace{\eb@toc@figure@numsep} }
},
table/tocline =
{
- \tablename\space #1
+ \tablename~#1
\bool_if:NF \eb@titletoc@hang@fix@bool
{ \hspace{\eb@toc@table@numsep} }
},
lstlisting/tocline =
{
- \lstlistingname\space\thelstlisting
+ \lstlistingname~\thelstlisting
\bool_if:NF \eb@titletoc@hang@fix@bool
{ \hspace{\eb@toc@lstlisting@numsep} }
},
@@ -1432,17 +1432,16 @@
\tl_use:c { the#1 }
}
}
-\NewDocumentCommand{\counteruse}{soD(){arabic}mmO{.}d()}
+\NewDocumentCommand{\counteruse}{soD(){arabic}mO{.}d()}
{
\IfBooleanF{#1}{\stepcounter{#4}}
- \IfValueT{#7}{\setcounter{#4}{#7}}
+ \IfValueT{#6}{\setcounter{#4}{#6}}
\tl_set:cn { theeb@#4 }
{
- \IfValueT{#2}{\use:c { the#2 }#6}
- \use:c {#3}{#4}\space #5
+ \IfValueT{#2}{\use:c { the#2 }#5}
+ \use:c {#3}{#4}
}
\tl_use:c { theeb@#4 }
- \tl_remove_once:cn { theeb@#4 } {#5}
\eb_current_label:n { eb@#4 }
}
\cs_new:Npn \eb_section_counter_prefix:n #1
@@ -2041,7 +2040,7 @@
\def\NAME
{
\the\thm@headfont ##1
- \peek_meaning:NT \NUMBER { \tl_if_blank:nF {##2} { \space } }
+ \peek_meaning:NT \NUMBER { \tl_if_blank:nF {##2} { \ } }
}
}
\ctex_set:nn { thmset }
@@ -2143,11 +2142,11 @@
enumitem .code:n = \setexerlist{#1},
tcolorbox .code:n = \addtcbstyle{exercise}{#1}
}
-\cs_new_protected:Npn \setexercise #1
+\cs_set_protected:Npn \setexercise #1
{ \keys_set:nn { eb/exercise } {#1} }
-\cs_new_protected:Npn \addtcbstyle #1#2
+\cs_set_protected:Npn \addtcbstyle #1#2
{ \tcbset{#1/.append~style = {#2}} }
-\cs_new_protected:Npn \newtcbstyle #1#2
+\cs_set_protected:Npn \newtcbstyle #1#2
{ \tcbset{#1/.style = {#2}} }
\cs_new_protected:Npn \tcbappstyle
{ \@ifstar{\newtcbstyle}{\addtcbstyle} }
@@ -2470,7 +2469,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2021/10/20}{1.3S}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2021/10/21}{1.3X}
{Customization of tcolorbox for easybook}
\tl_gset:Nn \eb@tc@line@skip { 0.5\baselineskip }
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 3bfd5d6790..06436bb1e8 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 07274eeb2c..43d36ab171 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -20,8 +20,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK 使用手册,
- version = v1.3S,
- date = 2021/10/20,
+ version = v1.3X,
+ date = 2021/10/21,
authors = 瞿毅,
info = 排版简体中文学位论文和书籍,
email = q1jx@foxmail.com,
@@ -960,7 +960,7 @@
\meta{键值列表2} 包括 \pkg*{tcolorbox} 的盒子样式选项,例如 \option*{boxsep} 和 \option*{fontupper} 等,也可以使用下述 \option{tcolorbox} 选项。在这里可以使用 \cs{addtcbstyle} 命令设置标题选项 \meta{键值列表2} 的值,第一个参数为 \code{tc-exercise}。
\begin{ctexexam}
- \tcphantomifname{\markright{\counteruse{tcbcounter}{\quad 习题}}}{}
+ \tcphantomifname{\markright{\counteruse{tcbcounter}\quad 习题}}{}
\addtcbstyle{tc-exercise}{boxsep = 5pt}
\exerprologue{习题前的一段文本}
\begin{exercise}+[color = LightSkyBlue](after skip = 2pc)[itemsep = 1ex]
@@ -1089,13 +1089,13 @@
\subsection{计数器}
\begin{commands}\noitemsep
\command{newcounter}[\marg{计数器}\oarg{父计数器}]\default{}
- \command{counteruse}[\sarg\oarg{父计数器}\darg{编号}\marg{计数器}\marg{内容}\oarg{分隔符}]
- 命令 \cs{newcounter} 是 \LaTeX 自带的创建计数器命令,命令 \cs{counteruse} 以一定的格式使用由它创建的计数器,将会以 \cs*{the}\meta{父计数器}\meta{分隔符}\cs*{the}\meta{计数器}\meta{内容} 输出当前内容。注意 \cs{counteruse} 仅具有\textbf{输出功能},并不会改变计数器原有的绑定关系。默认每使用一次命令 \meta{计数器} 的值增加 1,带有星号的命令使 \meta{计数器} 值保持不变,\meta{编号} 为 \code{arabic} 或 \code{alpha} 等形式,\meta{数值} 可以手动将 \meta{计数器} 设为指定值。
+ \command{counteruse}[\sarg\oarg{父计数器}\darg{编号}\marg{计数器}\oarg{分隔符}\darg{整数}]
+ 命令 \cs{newcounter} 是 \LaTeX 自带的创建计数器命令,计数器值输出命令 \cs{counteruse} 以一定的格式使用由它创建的计数器,将会以 \cs*{the}\meta{父计数器}\meta{分隔符}\cs*{the}\meta{计数器} 输出这种计数器的值。命令 \cs{counteruse} 仅具有\textbf{输出功能},并不会改变计数器原有的绑定关系。默认每使用一次命令 \meta{计数器} 的值增加 1,带有星号的命令使 \meta{计数器} 值保持不变,\meta{编号} 为 \code{arabic} 或 \code{alpha} 等形式,\meta{计数器} 的值也可以设为指定的 \meta{整数}。
在一定的场合下可能用到 \cs{counteruse} 命令,比如通过新建快捷命令在一些位置使用定理环境的计数器,使用 \cs{labelformat} 设置计数器的引用标签需添加 \code{eb@}:
\begin{ctexexam}
\labelformat{eb@theorem}{定理 #1}
- \newcommand{\theoremhead}[1]{定理 \counteruse[chapter]{theorem}{\hspace{1em}#1}}
+ \newcommand{\theoremhead}[1]{定理\counteruse[chapter]{theorem}\hspace{1em}#1}
\theoremhead{定理内容}\label{thm:theorem}
\end{ctexexam}
\end{commands}