summaryrefslogtreecommitdiff
path: root/macros/latex-dev/base/ltnews33.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex-dev/base/ltnews33.tex')
-rw-r--r--macros/latex-dev/base/ltnews33.tex1042
1 files changed, 621 insertions, 421 deletions
diff --git a/macros/latex-dev/base/ltnews33.tex b/macros/latex-dev/base/ltnews33.tex
index 7f23e9d853..88bce82055 100644
--- a/macros/latex-dev/base/ltnews33.tex
+++ b/macros/latex-dev/base/ltnews33.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright 2019-2020
+% Copyright 2019-2021
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,6 +33,16 @@
\NeedsTeXFormat{LaTeX2e}[2020-02-02]
\documentclass{ltnews}
+
+%%CCC Temporary definitions:
+\providecommand\Dash {\unskip ---}
+
+
+
+%% NOTE: Chris' preferred hyphens!
+%%\showhyphens{parameters}
+\hyphenation{because para-me-ters}
+
\usepackage[T1]{fontenc}
\usepackage{lmodern,url,hologo}
@@ -85,12 +95,25 @@
\vbadness=1400 % accept slightly empty columns
+\makeatletter
+% maybe not the greatest design but normally we wouldn't have subsubsections
+\renewcommand{\subsubsection}{%
+ \@startsection {subsubsection}{2}{0pt}{1.5ex \@plus 1ex \@minus .2ex}%
+ {-1em}{\@subheadingfont\colonize}%
+}
+\newcommand\colonize[1]{#1:}
+\makeatother
+
+\let\finalvspace\vspace % for document layout fixes
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\providecommand\tubcommand[1]{}
\tubcommand{\input{tubltmac}}
\publicationmonth{June}
-\publicationyear{2021 --- Draft Version}
+\publicationyear{2021} %% --- Draft Version 3p
\publicationissue{33}
@@ -109,15 +132,17 @@
\section{Introduction}
-The focus of the June 2020 release is to provide further important
-building blocks for producing reliable tagged PDF output in the future
-(see \cite{33:blueprint}), they are discussed in the next two
-sections. In addition we included a number of smaller enhancement and
-fixes that are outlined on the next pages. As usual, more detail can
-on individual changes can be found in the \texttt{changes.txt} files
-in the distribution and, of course, in the documented
-sources~\cite{33:source2e}.
+The focus of the June 2021 release is to provide further important
+building blocks for the future production of
+reliable tagged PDF output
+(see \cite{33:blueprint}); these enhancements
+are discussed in the next two
+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
+and, of course, in the documented sources~\cite{33:source2e}.
@@ -125,534 +150,716 @@ sources~\cite{33:source2e}.
Largely triggered by the need for better control of paragraph text
processing, in particular when producing tagged PDF output, we have
-extended the paragraph processing of \LaTeX{} so that the kernel gains
-control both at the start and the end of each paragraph. This is done
-in a manner that is (or should be) transparent to packages and user
-documents.
+changed \LaTeX{} so that the kernel gains control both at the start
+and at the end of each paragraph. This is done in a manner that is (or
+should be) transparent to both packages and documents.
-Beside the internal control points for exclusive use of the \LaTeX{}
-kernel we also implemented four public hooks that can be used by
-packages or user via the hook management declarations to achieve
-special effects or implement manipulations that in the past were only
-possible through redefinitions of \cs{everypar} or \cs{par} with the
-usual issue that such changes would conflict with changes in other
-packages.
+Besides the addition of internal control points for the exclusive use
+of the \LaTeX{} kernel, we also implemented four public hooks that can
+be used in packages or documents (via the normal hook management
+declarations) to achieve special effects, etc. Until now, such
+enhancements required redefinitions of \cs{everypar} or \cs{par},
+which led to the usual issues since such changes can easily conflict
+with changes made by other packages.
-The documentation of the hooks together with a few examples is
-provided in \file{ltpara-doc.pdf} and for those who want to study the
-(quite interesting) code is found in
-\file{ltpara-code.pdf}. Additionally it is included as part of the
-full kernel documentation in \file{source2e.pdf}.
+The documentation of these new \enquote{paragraph hooks}, together
+with a few examples, is in \file{ltpara-doc.pdf} and, for those who
+want to study it, the (quite interesting) code can be found in
+\file{ltpara-code.pdf}. Additionally, both of these files are included
+as part of the full kernel documentation in \file{source2e.pdf}.
\section{Extending the hook concept to commands}
-Up to now the hook management covered hooks for a few core areas, such
-as hooks for the \cs{shipout} process or those in the \env{document}
-environment, as well as generic hooks for file loading (helpful for
-patching) and for arbitrary environments (executed by \cs{begin} and
-\cs{end}).
+Up to now, hook management covered hooks for only a few core areas,
+such as the hooks for the \cs{shipout} process or those in the
+\env{document} environment, as well as some \enquote {generic} hooks,
+both for file loading (helpful for patching such files) and for
+arbitrary environments (the hooks executed within \cs{begin} and
+\cs{end}). This concept of \enquote{generic hooks} has now been
+extended to provide \hook{/before} and \hook{/after} hooks for any
+(document-level) command\Dash in theory at least.
-This has now been extended to add \hook{/before} and \hook{/after}
-hooks to any (document-level) command---in theory at that is. In
-practice the new generic \hook{cmd} hooks, especially the
-\hook{cmd/.../after} hooks may fail with commands that are too complex
-to be automatically patched and break them if the hook is filled with
-code. The restrictions are documented in \texttt{ltcmdhooks-doc.pdf}.
-However, given that these hooks are mainly meant for package
-developers to provide a better interoperability between different
-packages and between packages and the \LaTeX{} kernel, these
-restrictions are of minor importance: for commands where the mechanism
-can't be applied, one is in the same situation as before and for all
-others there will be a noticeable improvement. This is especially
-important for our big project providing accessible and tagged PDF
-output~\cite{33:blueprint}, because for this we will eventually have
-to patch many third-party packages and this is only feasible, if it can
-be done in controlled and standardized ways.
+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}.
+%
+However, given that these hooks are mainly meant for developers who
+wish to provide better interoperability between different packages,
+and between packages and the \LaTeX{} kernel, these restrictions are,
+we hope, of minor importance. Indeed, for commands where this
+mechanism can't be applied, one is in the same situation as before;
+and for all others there will be a noticeable improvement.
+These hooks will be especially important for our current project to
+provide accessible and tagged PDF output~\cite{33:blueprint} because
+we will eventually have to patch many third-party packages, and this
+must be done in controlled and standardized ways.
-\section{Other changes to the \LaTeX{} kernel}
-\subsection{Adjusting \env{itemize} labels with \cs{labelitemfont}}
+\section{Other hook business}
-The command \cs{labelitemfont} was in fact already introduced with the
-\LaTeX\ release 2020-02-02, but back then we forgot to describe it, so
-we do this now. Its purpose is to resolve some bad formatting issues
-with the \env{itemize} environment and at the same time make it easier
-to adjust its layout if necessary. What could happen in the past was the
-\env{itemize} labels, e.g., the \textbullet{}, would sometimes react to
-surrounding font changes and could suddenly change shape, for example
-to \textit{\textbullet}.
-
-Now \cs{labelitemfont} is applied to each
-label defaulting to \cs{normalfont} which will prevent this behavior.
-By choosing a different settings other effects can be achieved, for example
-\begin{verbatim}
- \renewcommand\labelitemfont
- {\normalfont\fontfamily{lmss}\selectfont}
- \renewcommand\labelitemfont
- {\rmfamily\normalshape}
-\end{verbatim}
-The first will take the symbols from Latin Modern Sans so that you get
-%
-\def\myfont#1{{\let\labelitemfont\empty\fontfamily{lmss}\selectfont#1}}
-%
-\myfont\labelitemi, \myfont\labelitemii, \myfont\labelitemiii\ and
-\myfont\labelitemiv, while the second variant freezes the font family
-and shape, but leave the series variable, so that an \env{itemize} in
-a bold context would show bolder symbols. Making it empty would give
-you the buggy old behavior back.
-%
-\githubissue{497}
+\subsection{Shipping out a page while bypassing hooks}
-\subsection{A note on file names with spaces, dots or UTF-8 characters}
+In the 2020 October release, several hooks were added to control the
+process of constructing and shipping out a page box: these support,
+for example, the addition of background or foreground material
+to some or all pages.
+
+
+We have now added a command, called \cs{RawShipout}, which does not do
+any rebuilding of the page box and so does not run most of these
+hooks. When using this new command, essential internal book-keeping
+is still carried out, such as updating the \texttt{totalpages} counter
+and adding \texttt{shipout/firstpage} or \texttt{shipout/lastpage}
+material when appropriate.
+
+
+\subsection{A new Lua callback in \pkg{ltshipout},
+for custom attributes}
+
+For use just before shipping out a page, there is now a \LuaTeX{}
+callback \texttt{pre\_shipout\_filter} to contain final adjustments to
+the box being shipped out. This is particularly useful for
+Lua\TeX\ packages which flag (using, for example, attributes or
+properties) elements on a page in order to apply effects (such as the
+insertion of \enquote{color commands}) to these elements at shipout.
+
+
+
+\section{Improved handling of file names}
+
+\subsection[File names with spaces, multiple dots or\\
+ \acro{utf-8} characters]
+ {File names with spaces, multiple dots or \acro{utf-8} characters}
In one of the recent \LaTeX{} releases we improved the interface
for specifying file names so that they can now safely contain spaces
-(as is common on Windows but also elsewhere), UTF-8 characters
-outside the \acro{ascii} range as well as names with several dots in
-it. In the past this was only possible by applying a special syntax
-(in cases of spaces), not at all for most UTF-8 characters and
-not in all circumstances for files with several dots.
-
-However, \TeX{} has a built-in rule saying that you can leave out the
-extension if it is \texttt{.tex}. Because of that \verb=\input{file}=
-or \verb=\input{file.tex}= both load \file{file.tex} if it
-exists. While this is convenient most of the time it is a little
-awkward in some scenarios (for example, when both \file{file} and
-\file{file.tex} exist) and also when you manually try to implement
-that rule.
+(as is common these days),
+more than one dot character, and also \acro{utf-8} characters
+outside the \acro{ascii} range.
+In the past this was only possible by applying a special syntax
+in the case of spaces,
+while file names with several dots often failed,
+as did most \acro{utf-8} characters.
-\LaTeX{} therefore had one special syntax for \cs{include} and
-\cs{includeonly}: they always expected that their arguments contains a
-file name\footnote{In case of \cs{includeonly} a comma separated list
- of such names.} without its extension, which had to be
-\texttt{.tex}. Thus when you mistakenly wrote
-\verb=\include{mychap.tex}= (for example, when you changed from \cs{input}
-to \cs{include} somewhere), \LaTeX{} went ahead and looked for the
-file \file{mychap.tex.tex} for inclusion and tried to write support
-information to the file \file{mychap.tex.aux}. The reason was that
-\cs{include} had to construct both physical file names from the
-argument and it didn't bother to do something special about the
-extension \texttt{.tex}.
-As a side effect of the new implementation this has now changed and
-the argument of \cs{include} now gets the extension \texttt{.tex}
-removed if it was used. Thus \verb=\include{mychap.tex}= now loads
-\file{mychap.tex} and no longer looks for \file{mychap.tex.tex}.
-%
-\githubissue{486}
+\subsubsection{Consequences for file names in \cs{include}}
+\TeX{} has a built-in rule saying that you can normally leave out the
+extension if it is \texttt{.tex}. Thus \verb=\input{file}= and
+\verb=\input{file.tex}= both load \file{file.tex} (if it exists).
+While this is convenient most of the time, it is a little awkward in
+some scenarios (for example, when both \file{file} and \file{file.tex}
+exist) and also when you manually try to implement the rule.
-\subsection{\cs{end}\texttt{\textbraceleft document\textbraceright}
- should always start in v-mode}
+\LaTeX{} therefore had one special syntax for \cs{include} and
+\cs{includeonly}: they always expected that
+their arguments contain a
+file name\footnote{In the case of \cs{includeonly}, a comma-separated list of such names.}
+with no extension given,
+ so that it had to be \texttt{.tex}. Thus,
+ when you mistakenly wrote
+\verb=\include{mychap.tex}= (for example,
+because you changed from \cs{input}
+to \cs{include}),
+\LaTeX{} went ahead and looked for the
+file \file{mychap.tex.tex} for inclusion and tried to
+use the file \file{mychap.tex.aux} for internal (auxiliary) information. The reason was that
+\cs{include} had to construct both
+of these file names from the given
+argument and it didn't bother to do
+anything special
+with the supplied
+extension \texttt{.tex}.
-Until now \verb=\end{document}= executed the code from the
-\cs{AtEndDocument} hook as its first action. This meant that it was
-executed in horizontal mode if the user left no empty line after the
-last paragraph. As a result one could get a spurious space added, for
-example, when that code contained a \cs{write} statement. This was
-fixed and now \cs{enddocument} first issues a \cs{par} to ensure that
-it always starts out in vertical mode.
+With the new implementation this has
+changed:
+the extension \texttt{.tex}
+now gets removed/ignored if it was
+supplied.
+Thus \verb=\include{mychap.tex}= now
+no longer looks for \file{mychap.tex.tex}
+but loads
+\file{mychap.tex}
+and uses \file{mychap.aux}.
%
-\githubissue{385}
+\githubissue{486}
-\subsection{Allow extra space between name and address in \pkg{letter} class}
+\subsection{Normalization of robust commands in file names}
-The \cs{opening} command in the \pkg{letter} class expects the
-name and address to be separated by \verb=\\= but it didn't allow to
-use an optional argument at this point to add some extra space after
-the name. The coding has now been slightly altered to allow for this.
+The handling of file names has been modified so that \verb|\string| is
+applied to normalize robust commands within the file name.
+Previously, for example, \verb|\input{\sqrt{2}}| would cause
+\LaTeX\ to loop indefinitely whereas with
+the new normalization
+it looks for the file named \verb|sqrt {2}.tex|
+(and therefore very likely reports ``file not found'').
%
-\githubissue{427}
+\githubissue{481}
-\subsection[Add a Lua callback to \pkg{ltshipout} to provide
- a uniform location for applying custom attributes]
- {Add a Lua callback to \pkg{ltshipout} to provide
- a uniform
- \mbox\quad location for applying custom attributes}
-Just before shipping out a page, a new \LuaTeX{} callback
-\texttt{pre\_shipout\_filter} is now called to allow final
-adjustments to the box to be shipped out. This is particularly for
-Lua\TeX\ packages which flag certain elements of the page (e.g. using
-attributes or properties) in order to apply certain effects to these
-elements at shipout. An example for this is the \pkg{luacolor}
-package which could insert the color commands using this callback.
+\subsection{Fix for \env{filecontents} with \acro{utf-8}
+ chars in the file name}
+Since a few releases back, the \env{filecontents} environment has
+allowed \acro{utf-8} characters in the file name. There was, however,
+a bug that would not allow \emph{over}writing a file with \acro{utf-8}
+characters in its name. This has been fixed and now
+\env{filecontents} allows any characters in the file name.
+%
+\githubissue{415}
-\subsection{Improved copy\,\&\,paste support for \pdfTeX{} documents}
-When compiling with \pdfTeX{}, additional information is added to the
-PDF file to improve copying from and searching in text. This especially
-allows ligatures to copy correctly from \pdfTeX{} generated PDF files in
-most cases.
-Since this has been integrated into the kernel, most documents should no
-longer need to load the \pkg{cmap} package or input \texttt{glyphtounicode}.
-%
-\githubissue{465}
+\section{Updates to the font selection scheme}
-\subsection{Provide a hook in \cs{selectfont}}
+\subsection{A new hook in \cs{selectfont}}
-After \cs{selectfont} has altered the font we run a hook so that
-packages can make final adjustments. This functionality was originally
-provided by the \pkg{everysel} package, the new implementation is
-slightly different and uses the standard hook management.
+After \cs{selectfont} has changed the font, we now run a hook (\hook{selectfont})
+so that packages can make final \mbox{adjustments}. This functionality was
+originally provided by the \pkg{everysel} package but our
+implementation is slightly different and uses the standard hook
+management.
%
\githubissue{444}
-\subsection{Delay change of font series and shape to \cs{selectfont} call}
+\subsection{Change of font series/shape delayed until \cs{selectfont}}
-With the NFSS extensions introduced in 2020 the font series and shape
-settings can be influenced by changes to the font family. The setting
-is therefore delayed until \cs{selectfont} is executed to avoid
-unnecessary or incorrect substitutions that may otherwise happen due
-to the order of declarations.
+With the NFSS extensions introduced in 2020, the font series and shape
+settings can be influenced by changes to the font family. The
+settings of these two are now therefore delayed until \cs{selectfont}
+is executed; this avoids unnecessary or incorrect substitutions that
+may otherwise happen due to the order of declarations.
%
\githubissue{444}
-\subsection{Allow \cs{nocite} in preamble}
+\section{Glyphs, characters \& encodings}
-A natural place for \verb=\nocite{*}= would be the preamble of the
-document, but for historical reasons \LaTeX{} issued an error message
-if it was placed there. From the new release on it is now allowed in
-the preamble.
+\subsection{Improved copy\,\&\,paste for \pdfTeX{} documents}
+
+When compiling with \pdfTeX{}, additional information
+(from the file \texttt{glyphtounicode.tex}) is now added automatically
+to the PDF file in order to improve copying from, and searching in,
+text.
+
+In particular, this allows the most common ligatures to be copied as
+intended from all generated PDF files without the need to explicitly
+load the package \pkg{cmap}.
%
-\githubissue{424}
+\githubissue{465}
-\subsection{Shipping out a page while bypassing hooks}
-In the 2020 October release several hooks were added to the page
-shipout process, e.g., to add some background or foreground material
-to some or all pages. We now also added a \cs{RawShipout} command that
-bypasses most of these hooks during the shipout. Some essential
-internal bookkeeping still takes place such as updating the
-\texttt{totalpages} counter or adding \texttt{shipout/firstpage} or
-\texttt{shipout/lastpage} material if the page happens to be the first
-or last.
-
-\subsection{Robust commands in filename arguments}
-The filename handling has been modified so that \verb|\string| is
-applied while normalizing robust commands while determining the file
-name. Previously \verb|\input{\sqrt{2}}| would cause \LaTeX\ to loop indefinitely.
-With the new behavior it accesses \verb|sqrt {2}.tex|.
-%
-\githubissue{481}
+\subsection{Support for more Unicode characters}
-\subsection[Additional support for Unicode characters from the
- Latin Extended Additional block]
- {Additional support for Unicode characters from the Latin\\
- \mbox\quad Extended Additional block}
\LaTeX\ is quite capable of typesetting characters such as
-\enquote{\d{m}}, but until now it lacked the Unicode mappings for some
-characters that are used to write Sanskrit words in Latin
-transliteration (as seen in books about yoga, Buddhist philosophy,
-etc.). These have now been added so that such characters can be
-entered directly instead of resorting to \verb=\d{m}= and so forth.
+\enquote{\d{m}}, but until now it could not access some Unicode
+characters from the Latin Extended Additional block. This meant that,
+for example, there were no Unicode mappings for some characters that
+are used to write Sanskrit words in Latin transliteration (as seen in
+books about yoga, Buddhist philosophy, etc.).
+%
+These characters have now been added so that they can be entered
+directly instead of using \verb=\d{m}=, etc.
%
\githubissue{484}
-\subsection{Always have color groups set up}
-To use color in \LaTeX{} certain constructs, especially boxes, need an
-extra layer of groups to ensure that the color setting does not
-\emph{escape} and continue outside the box when it shouldn't. To
-arrange for this the \LaTeX{} kernel defined a number of commands, e.g.,
-\cs{color@begingroup} to be used in such places. They have been
-initially no-ops and only the color packages redefined them to become
-real groups. This arrangement complicates the coding as one has to
-account for a group being there (or not there) depending of what is
-loaded in the document. So now the kernel already adds the groups.
+
+\subsection{More ``dashes'' in encodings \texttt{OT1},
+ \texttt{T1} and \texttt{TU}}
+
+When pasting in text from external sources, one can encounter these
+three Unicode characters
%
-\githubissue{488}
+\texttt{"2011} (non-breaking hyphen),
+\texttt{"2012} (figure dash) and
+\texttt{"2015} (horizontal bar),
+%
+in addition to the more common
+%
+\texttt{"2013} (en-dash) and \texttt{"2014} (em-dash).
+%
+In the past, these first three produced an error message when used
+with \pdfTeX{} (since they are not available in \texttt{OT1} or
+\texttt{T1} encoded fonts). They now typeset an approximation to the
+glyph: e.g., the ``figure dash'' is approximated by an en-dash.
+With Unicode engines they either work (when the glyph is contained in
+the selected Unicode font) or they typeset nothing, producing a
+``Missing character'' warning in the log file.
-\subsection{Execute \cs{par} at the end of \cs{marginpar} arguments}
+With all engines these characters can also now be accessed using the
+command names \cs{textnonbreakinghyphen}, \cs{textfiguredash} and
+\cs{texthorizontalbar}, respectively.
+%
+\githubissue{404}
-In preparation for tagged PDF it is important to properly tag all
-paragraphs and this requires running code at the beginning and end of
-each. At the end of a paragraph this is done inside the \cs{par}
-command, but the way \cs{marginpar} was coded, \LaTeX{} ended the
-marginal note without ever explicitly calling \cs{par}. This has now
-been changed.
-Another case where this issue caused problems was the \pkg{lineno}
-package where the last line was not numbered if the \cs{marginpar}
-ended without a \cs{par} in the document.
+\subsection{Poor man's \cs{textasteriskcentered}}
+
+The \cs{textasteriskcentered} symbol, used as part of the set of
+footnote symbols in \LaTeX{}, is assumed to be implemented by every
+font with the \texttt{TS1} encoding (when \pdfTeX{} is used) or with
+the \texttt{TU} encoding for the Unicode engines. That assumption is
+unfortunately not correct for all fonts since, for example, the
+\texttt{stix2} fonts don't provide this glyph. A result is that one
+gets missing glyph messages when using \cs{thanks}, etc.
+
+Therefore \cs{textasteriskcentered} now checks whether there is such a
+glyph and, if not, uses a normal \enquote{*}, but slightly enlarged
+and lowered. This may not be perfect in all cases, but it is
+certainly better than no glyph showing up.
%
-\githubissue{489}
+\githubissue{502}
+
+\subsection {The characters from \pkg{textcomp} are in the kernel}
+
+A couple of releases back, the functionality of the \pkg{textcomp}
+package was integrated into the \LaTeX{} kernel. Thus it is no longer
+necessary to load this package in order to access glyphs such as
+\cs{textcopyright}, \cs{texteuro} or \cs{textyen}.
+
+
+At this time the opportunity was also taken to bring some order to the
+chaos surrounding the question: \enquote{which glyphs from the
+ \texttt{TS1} encoding are available in a given font?}. This was
+done using an approach based on font families and collections, with
+the differing glyph coverage of the \enquote*{text symbols} being
+indicated by assigning to a font family or collection a ``sub-encoding
+number'' that indicates which glyphs from the \texttt{TS1} encoding are
+guaranteed to be available when using a font from that family or
+collection. This assignment ensures that \LaTeX{} always errs on the
+side of caution, possibly claiming that a glyph is not available even
+when it in fact is.
+
+\iffalse %%FMi but drop that
+
+The documented code for this can be found now in the file
+\file{lttextcomp.dtx} but we hope to publish a full explanation of
+the approach very soon now.
+
+\fi %% FMi potential drop
+
+
+
+\subsubsection
+ [A note on the history of ``text symbols'']
+ {A note on the history of ``text symbols'' and
+ the \texttt{TS1} encoding}
+
+
+The \enquote{text symbol encoding} (\texttt{TS1}) was originally
+designed at the Cork Conference as a companion to the \texttt{T1}
+encoding. In it various symbols that are not subject to hyphenation
+got assembled and the \pkg{textcomp} package was developed to make
+them accessible. Unfortunately the \TeX{} community was a bit too
+enthusiastic and included several symbols only available in a few
+\TeX{} fonts and some, such as the capital accents, not available at
+all but developed as part of the reference font implementation.
+
+In hindsight that was a very bad idea because it meant that other
+existing fonts (at the time) and later new fonts that got developed
+were unable to provide the full set of glyphs that made up the
+\texttt{TS1} encoding. For existing free PostScript fonts people
+took the extra effort and produced virtual fonts that faked (some) of
+the missing glyphs. But this was and is a time-consuming effort so it
+was done for only a few basic fonts. But even then, only some fonts
+included all glyphs from \texttt{TS1} so the \pkg{textcomp} already
+back then contained a long list, dividing fonts into 5 categories
+according to which glyphs were implemented and which were missing.
+
+
+When we recently integrated the functionality of the \pkg{textcomp}
+into the \LaTeX{} kernel
+many new free fonts had appeared and
+unfortunately the chaos around the question \enquote{which glyphs of
+ the \texttt{TS1} encoding are implemented by which font} had
+increased with it. Not only did one find many new holes, it was next to
+impossible to order the set of fonts into a reasonable set of
+sub-encodings that are contained in each other in a single sequence.
+
+In the end we decided on nine or ten sub-encodings with a reasonable
+number of fonts in each so that all fonts implemented all glyphs of the
+sub-encoding they got mapped to. Thus when typesetting with a font one
+could be sure that a command like \cs{textcopyleft} would either
+typeset the requested character (if the glyph was part of the
+sub-encoding the font belonged to) or it would raise an error, saying
+that the glyph is unavailable in that font. The mapping would ensure
+that \LaTeX{} always errs on the side of caution, because it might
+claim a glyph is unavailable even though in fact it is.\looseness-1
+
+For example, the old \texttt{pcr} (PostScript Courier) font (as well
+as most other older PS fonts) is mapped to sub-encoding 5 and
+therefore claims that \cs{textasciigrave} is unavailable even though
+in fact for Courier this is not true. If one uses such a font and this
+becomes an issue then there are a couple (suboptimal) possibilities.
+For one, one can alter the mapping of Courier and pretend that belongs
+to a fuller sub-encoding, e.g.
+\begin{verbatim}
+ \DeclareEncodingSubset{TS1}{pcr}{2}
+\end{verbatim}
+The downside is, that \LaTeX{} then believes other glyphs that are in fact
+unavailable are also there, so that it is important to check that the
+final document doesn't have some missing glyphs.
+
+An alternative is to pretend that \cs{textasciigrave} can always be
+taken from the \texttt{TS1} encoding (no questions asked):
+\begin{verbatim}
+ \DeclareTextSymbolDefault{\textasciigrave}{TS1}
+\end{verbatim}
+Again there is a danger that this is not true when it is used with a
+different font and would then generate a missing glyph.
+
+Finally, and possibly the best solution, if not impossible for other
+reasons, is to simply use a different font, for example, to use the
+\TeX{} Gyre Cursor font (a reimplementation of Courier with a
+much more complete glyph set).
-\subsection{Producing several footnote marks to one footnote}
+
+\section{New or improved commands}
+
+\subsection{Adjusting \env{itemize} labels with \cs{labelitemfont}}
+
+The command \cs{labelitemfont} was introduced already with the
+\LaTeX\ release 2020-02-02, but back then we forgot to describe it, so
+we do this now. Its purpose is to resolve some bad formatting issues
+with the \env{itemize} environment and also to make it easier to
+adjust the layout when necessary. What could happen in the past was
+that the \env{itemize} labels (e.g., the \textbullet{}) would
+sometimes react to surrounding font changes and could then suddenly
+change shape, for example to \textit{\textbullet}.
+
+This new command \cs{labelitemfont}, which defaults to \cs{normalfont},
+can be used to provide additional control in the typesetting of
+each label. Thus by choosing
+different settings other effects can be achieved. Here are two
+examples:
+\begin{verbatim}
+ \renewcommand\labelitemfont
+ {\normalfont\fontfamily{lmss}\selectfont}
+ \renewcommand\labelitemfont
+ {\rmfamily\normalshape}
+\end{verbatim}
+The first definition will take the symbols from the font Latin Modern
+Sans, so that you get
+%
+\def\myfont#1{{\let\labelitemfont\empty\fontfamily{lmss}\selectfont#1}}%
+%
+\myfont\labelitemi, \myfont\labelitemii, \myfont\labelitemiii\ and
+\!\!\myfont\labelitemiv\,; while the second variant freezes the font family
+and shape, but leaves the series as a variable quantity, so that an
+\env{itemize} in a bold context would show bolder symbols. Making
+\cs{labelitemfont} empty would give you back the buggy old behavior.
+%
+\githubissue{497}
+
+
+\subsection{Producing several marks for one footnote}
It is sometimes necessary to reference the same footnote several
-times, i.e., produce several footnote marks with the same number or
-symbol. This is now always possible by placing a \cs{label} into the
-\cs{footnote} and reference it with the command \cs{footref}
-elsewhere. This way marks referring to footnotes anywhere on the page
-(including those in \texttt{minipage}s) can be generated. In the past
-this command was only available with certain classes or when loading
-the \pkg{footmisc} package.
+times: i.e., to produce several footnote marks using the same number
+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).
+
+This \cs{footref} command has previously been available, but only when
+using certain classes or the \pkg{footmisc} package.
%
\githubissue{482}
+\subsection{Allow \cs{nocite} in the preamble}
-\subsection[Providing the raw option list of packages or documentclass
- to key/value handlers]
- {Providing the raw option list of packages or documentclass\\
- \mbox\quad to key/value handlers}
+A natural place for \verb=\nocite{*}= would be the preamble of the
+document, but for historical reasons \LaTeX{} issued an error message
+if it was placed there. This command is now allowed in the preamble.
+%
+\githubissue{424}
-\LaTeXe{} has always normalized space in option lists so\\
-\verb|\documentclass[ a4paper , 12pt ]{article}|\\
-processed the intended options \texttt{a4paper} and \texttt{12pt}.
-Unfortunately the mechanism used was designed for the simple option
-names of the standard option processing. Many classes and packages
-now use extended \emph{keyval} processing, however this white space
-normalization makes this difficult:
-\verb|[bb=1 2 3 4]|
-which might be expected to pass a bounding box of four numbers is
-normalized to \texttt{bb=1234} and
-\verb|[bb={1 2 3 4}]|\\
-which might be expected to quote the spaces results in low level \TeX{}
-parsing errors.
+\subsection{Made \cs{\textbackslash} generally robust}
+In 2018 most \LaTeX{} user-level commands were made robust, including
+the \cs{\textbackslash} command. However, \cs{\textbackslash} gets
+redefined in various environments and not all these cases were caught:
+such as, in particular, its use as the row delimiter in \env{tabular}
+structures. This has been corrected so that \cs{\textbackslash}
+should now be robust in all circumstances.
-For compatibility reasons, the standard option processing has not been
-changed however the original un-normalized package and class option lists
-are now saved. They are not used in the standard processing, however
-extended package option systems may use these \enquote{raw} option list
-macros if they are defined.
-The one change affecting the standard processing is that the low level
-error mentioned above is now avoided as values (any tokens to the
-right of an = sign) are removed from consideration from the
-\enquote{unused option list}. In this release \texttt{clip=true} and
-\texttt{clip=false} both contribute \texttt{clip} to the list of
-options that have been used.
+This change also fixed one anomaly present in the past:
+in a tabular preamble of the form
+\finalvspace*{-.3\baselineskip}
+\begin{quote}
+ \hspace*{-.15em}\verb={l=\texttt{\string>}\verb={\raggedright}p{10cm}r}= % stupid class
+\end{quote}
+\finalvspace*{-.3\baselineskip}
+a \cs{\textbackslash} in the second column would have the definition
+used within \cs{raggedright} and so it would not indicate the
+(premature) end of the \env{tabular}. Thus, for example,%
+\finalvspace*{-.3\baselineskip}
+\begin{quote}
+ \verb=a & b1 \\ b2 & c \\=
+\end{quote}
+\finalvspace*{-.3\baselineskip}
+was interpreted as a single row of the \env{tabular} (as intended),
+whereas
+\finalvspace*{-.3\baselineskip}
+\begin{quote}
+ \verb=a & \\ b2 & c \\=
+\end{quote}
+\finalvspace*{-.3\baselineskip}
+resulted in two rows! This happened because the \cs{\textbackslash}
+directly following the \verb=&= got interpreted while it still had the
+\enquote{end the row} meaning and not yet the \enquote{start a new
+ line within the second column} meaning.
+
+With \cs{\textbackslash} now being robust, the special scanning mode
+initiated by the \verb=&= ends immediately when this command is seen:
+the second column is therefore then started, which results in the
+\cs{\textbackslash} being interpreted as being within that column and
+hence as having its expected, within-column, meaning.
+
+We have restored consistency here: now both of the above lines
+produce a single \env{tabular} row.
+%
+As before, you can
+put \cs{raggedright}\cs{arraybackslash} in the \env{tabular}'s
+preamble for a column to ensure that \cs{\textbackslash} is always
+interpreted as a tabular row separator when used in that column. And
+you can use \cs{tabularnewline} to explicitly ask for a new table row,
+even when \cs{\textbackslash} has a different meaning within the
+current column.
%
-\githubissue{85}
+\githubissue{548}
-\subsection{Poor man's \cs{textasteriskcentered} if missing}
-The \cs{textasteriskcentered} symbol, used as part of the set of
-footnote symbols in \LaTeX{}, is assumed to be implemented by
-every font in the \texttt{TS1} encoding (when \pdfTeX{} is used) or
-in the \texttt{TU} encoding for the Unicode engines. Unfortunately,
-that assumption is not correct for all fonts, for example, for the
-\texttt{stix2} fonts don't offer the glyph, with the result that one
-gets missing glyphs when using \cs{thanks} etc.
-
-For that reason the definition for \cs{textasteriskcentered} was
-altered to check if there is a glyph in the right position and if not
-a normal \enquote{*} is used, slightly enlarged and lowered. That may
-not be perfect in all cases, but certainly better than nothing show
-up.
+\subsection{Allow extra space between name and address in \pkg{letter} class}
+
+The \cs{opening} command in the \pkg{letter} class expects the name
+and address to be separated by \verb=\\=, but it didn't allow the use
+of an optional argument to add some extra space after the name. The
+code has now been slightly altered to allow this.
%
-\githubissue{502}
+\githubissue{427}
-\subsection{Provide more ``dashes'' in encodings \texttt{OT1},
- \texttt{T1} and \texttt{TU}}
+\subsection{Additions to \cs{tracingall}}
-When pasting in text from external sources one sometimes encounters
-the Unicode characters
-%
-\texttt{"2011} (non-breaking hyphen),
-\texttt{"2012} (figure dash) and
-\texttt{"2015} (horizontal bar)
-%
-in addition to the common \texttt{"2013} (en-dash) and \texttt{"2014}
-(em-dash). In the past the first three characters produced an error
-message when used with \pdfTeX{}. Now they typeset an approximation
-(as they are unavailable in \texttt{OT1} or \texttt{T1} encoded fonts
-used by \pdfTeX{}), e.g., the figure dash is approximated by an en-dash.
+In July 2020 David Jones suggested an extension to \TeX{} engines,
+that added the possibility to set \cs{tracinglostchars}\texttt{=3} in
+order to generate an error message in case some character is missing
+from a font. In previous years, a warning about a missing character
+was silently printed to the \texttt{.log} file\linebreak
+(if $\cs{tracinglostchars}>0$) and to the terminal\linebreak
+ (if ${}>1$). This extension was added for \TL{} and \MiKTeX{}
+(except in Knuth's \TeX, of course),
+so that with $\cs{tracinglostchars}>2$ you now also get an
+error message for each missing glyph.
-In Unicode engines they either work (if contained in the selected
-Unicode font) or typeset nothing and produce a ``Missing character''
-warning in the log file.
+Later, in January 2021, Petr Olšák suggested yet another extension:
+a new primitive
+\mbox{parameter}
+%
+\cs{tracingstacklevels} that, when both it and \cs{tracingmacros} are
+positive, will add to the \mbox{tracing} information for each
+macro a visual indication (using dots) of
+its nesting level in the macro expansion stack.
-However, what works in all engines now, is to access the characters
-via the command names \cs{textnonbreakinghyphen}, \cs{textfiguredash}
-and \cs{texthorizontalbar}, respectively.
+These changes have both now been added to \LaTeX's debugging macros
+\cs{tracingall} and \cs{tracingnone}, so that these two new extensions
+are activated/deactivated as appropriate, so long as the \TeX{} engine
+supports them. An example document demonstrating these parameters is
+in the linked GitHub issue.
%
-\githubissue{404}
+\githubissue{524}
-\subsection{\env{filecontents} with \acro{utf-8} characters in file name}
-Since a few releases back, the \env{filecontents} environment allows writing a
-file with \acro{utf-8} characters in its name. However there was a bug that
-would not allow \emph{over}writing a file with \acro{utf-8} characters in the
-name. This has been fixed and now \env{filecontents} allows any characters in
-the file name.
-%
-\githubissue{415}
+\section{Code improvements}
+
+\subsection{Execute \cs{par} at the end of \cs{marginpar}}
+Previously, \LaTeX{} ended a \cs{marginpar} without ever explicitly
+calling \cs{par}. This command is now explicitly added because it is
+essential to the correct working of the paragraph hooks.
+Another case where this issue caused problems was the \pkg{lineno}
+package, where the last line was not numbered if the \cs{marginpar}
+ended without an explicit \cs{par}.
+%
+\githubissue{489}
-\subsection{Extending \pkg{latexrelease} to declare an entire module}
-In the 2020-10-01 release, \LaTeX's new hook management system was added to the
-kernel (see \cite{33:ltnews32}) and, as with all changes to the kernel, it was
-added to \pkg{latexrelease}, so that it is possible to roll back to a date where
-such module didn't exist yet, or roll forward from an older release and have the
-hook management system by loading the \pkg{latexrelease} package.
-However rolling back from a later release to the 2020-10-01 release didn't quite
-work because it would try to define all the commands from \pkg{lthooks} again,
-and that would result in errors, as usual with commands defined with
-\cs{newcommand} or in the case of \pkg{lthooks}, \cs{cs\_new:Npn}.
+\subsection{Execute \cs{AtEndDocument} hook in vertical mode}
-To solve this issue, now completely new modules can be defined in
-\pkg{latexrelease} using \cs{NewModuleRelease}
-and then when rolling back or forward it will know if the code
-of the module has to be read or completely ignored. More details can be
-found in the \pkg{latexrelease} documentation (\verb|texdoc latexrelease|).
+Until now \verb=\end{document}= executed the code from the
+\cs{AtEndDocument} hook as its first action. This meant that this
+hook was executed in horizontal mode if the user left no empty line
+after the last paragraph. As a result, one could get a spurious space
+added when, for example, that code contained a \cs{write}
+statement. This was fixed and now \cs{enddocument} first issues a
+\cs{par} to ensure that it always goes into vertical mode.
%
-\githubissue{479}
+\githubissue{385}
+\subsection{Color groups made permanent}
+
+The use of color in certain \LaTeX{} constructs, especially boxes,
+needs an extra layer of grouping to ensure that the color setting does
+not \emph{escape} and continue outside the box when it shouldn't.
+%
+To support this, the \LaTeX{} kernel defines a number of commands,
+e.g., \cs{color@begingroup} to be used in such places.
-\subsection{Small fix for rolling back prior to 2020-02-02}
-Whereas the \pkg{latexrelease} package can usually emulate an older \LaTeX{}
-kernel without much problem, rolling back to before the 2020-02-02 release
-didn't work properly because the management of the \cs{ExplSyntaxOn/Off} status
-for packages cannot be removed by the rollback without messing up catcodes after
-an \pkg{expl3}-based package is loaded. This has been fixed and now rollback is
-more careful not to leave \pkg{ExplSyntaxOn} after a package ends.
+Until now, these commands were initially set as no-ops and only the
+color packages redefined them to become real groups; this methodology
+complicates the coding as one has to account for a group being present
+or not (\mbox{depending} on what is loaded in the document).
%
-\githubissue{504}
+The kernel therefore now permanently adds these \enquote{color groups}.
+%
+\githubissue{488}
+\subsection{Provide the raw option list to key/value option handlers}
-\subsection[Add \cs{tracingstacklevels}
- and \cs{tracinglostchars}\texttt{=3} to \cs{tracingall}]
- {Add \cs{tracingstacklevels}
- and \cs{tracinglostchars}\texttt{=3}\\
- \mbox\quad to \cs{tracingall}}
+Before any further processing of the option list, the original
+(un-normalized, \enquote{raw} and unchanged) list of package or class
+options is now saved, as \cs{@raw@opt@...}; this list is not used by
+the standard option processing code but it is now available for use by
+extended class/package processing systems. Note that, for
+compatibility reasons, the standard option processing code has not
+been changed.
-In July 2020 David Jones suggested an extension to \TeX{} engines, that
-added the possibility to set \cs{tracinglostchars}\texttt{=3} to have an
-error in case some character is missing from a font. In previous years,
-the warning for a missing character would be silently printed to the
-\texttt{.log} file (if $\cs{tracinglostchars}>0$) and to the terminal
-(if ${}>1$). This extension was added for \TL{} and \MiKTeX{} (except
-in Knuth's \TeX, of course) and now with $\cs{tracinglostchars}>2$ you
-get an error on a missing glyph.
-Later, in January 2021, Petr Olšák suggested yet another extension, a
-new primitive parameter \cs{tracingstacklevels} that, when positive (and
-when \cs{tracingmacros} is also positive), will print a visual
-indication of the macro nesting level in \TeX's tracing information.
-Both these changes were incorporated to \LaTeX's debugging macros
-\cs{tracingall} and \cs{tracingnone}, so when you use them, the new
-extensions are automatically activated/deactivated if your \TeX{}
-distributions has a recent enough engine. An example document
-demonstrating these parameters is available in the linked GitHub issue.
+One
+aspect of this
+change does affect the standard \mbox{processing}: any tokens to the
+right of an \texttt{=}
+sign are \mbox{removed}
+from consideration
+when constructing
+the \enquote{\mbox{unused} option list}.
+For example, in
+this release \texttt{clip=true} and
+\texttt{clip=false} both contribute \texttt{clip} to the list of
+options that have been used.
%
-\githubissue{524}
+\githubissue{85}
-\subsection{Make \cs{\textbackslash} generally robust}
+\subsection{New for \pkg{latexrelease}\,: \cs{NewModuleRelease}}
+
+To explain the need for this new feature, we shall consider the
+following example: in the 2020-10-01 release, \LaTeX's new hook
+management system was added to the kernel (see \cite{33:ltnews32})
+and, as with all changes to the kernel, it was added to
+\pkg{latexrelease}; this made it possible to roll back to a date where
+this module didn't yet exist, or to roll forward from an older
+\LaTeX{} release to get the hook management system (by loading the
+\pkg{latexrelease} package).
+%
+However, this method of rolling back from a later release to the
+2020-10-01 release didn't quite work because it would try to define
+all the commands from \pkg{lthooks} again; and this would of course
+result in the expected errors from commands defined with
+\cs{newcommand} or (as in \pkg{lthooks}) \cs{cs\_new:Npn}.
+
+To solve such issues, we now provide \cs{NewModuleRelease} so that
+completely new modules can be defined using the facilities of
+\pkg{latexrelease} in such a way that, when rolling back or forward,
+the system will know whether the code of the new module has to be read
+or completely ignored. More details on this can be found in the
+\pkg{latexrelease} documentation (get this with
+\verb|texdoc latexrelease|).
+%
+\githubissue{479}
-In 2018 most \LaTeX{} user-level commands were made robust including
-\cs{\textbackslash}. However, \cs{\textbackslash} is redefined in
-various environments and not all cases were caught, in particular its use as row
-delimiter in \env{tablular} structures. This has now been corrected and
-\cs{\textbackslash} should be robust in all standard
-circumstances. Doing that also fixed one anomaly present in the past:
-in a tabular preamble of the form
-\begin{quote}
- \verb={l=\texttt{\string>}\verb={raggedright}p{10cm}r}= % stupid class
-\end{quote}
-a \cs{\textbackslash} in the second column would have the definition
-used by \cs{raggedright} and would not indicate the (premature) end of
-the \env{tabular}, e.g.,
-\begin{quote}
- \verb=a & b1 \\ b2 & c \\=
-\end{quote}
-would be a single row in that \env{tabular}. However, writing
-\begin{quote}
- \verb=a & \\ b2 & c \\=
-\end{quote}
-would give you two rows: due to the scanning process the
-\cs{\textbackslash} directly following the \verb=&= still had
-the \enquote{end the row} meaning and not the \enquote{start a new
- line in the second column} meaning.
-With \cs{\textbackslash} now robust, the scanning after \verb=&= ends
-when the command is seen and the second column is started and so now
-both lines above consistently produce a single \env{tabular} row.
+\subsection{Small fix for rolling back prior to 2020-02-02}
-As before, you can use \cs{raggedright} \cs{arraybackslash} in the
-\env{tabular} preamble to ensure that \cs{\textbackslash} is always
-interpreted as a row separator when used in the column or you could
-use \cs{tabularnewline} to explicitly ask for a new row even when
-\cs{\textbackslash} has a different meaning in the current column.
+Whereas the \pkg{latexrelease} package can usually emulate an older
+\LaTeX{} kernel without much problem, rolling back to before the
+2020-02-02 release didn't work properly: this is because the
+management of the \cs{ExplSyntaxOn/Off} status for packages (after an
+\pkg{expl3}-based package is loaded) cannot be removed by the rollback
+without messing up the catcodes. This has been fixed so that rollback
+is now more careful not to leave \cs{ExplSyntaxOn} after a package
+ends.
%
-\githubissue{548}
+\githubissue{504}
\section{Changes to packages in the \pkg{graphics} category}
-\subsection{Removed spurious warning for generic graphics rules}
+\subsection{Removed warning when loading graphics files}
-A previous release mistakenly caused a warning to appear when loading a graphics
-file with an unknown extension through a generic graphics rule. The warning
-would incorrectly say that the file was not found, whereas the file would be
-included correctly. The warning now doesn't show up in that case.
+A previous release sometimes mistakenly caused a (false) warning
+message to appear when \mbox{using} a generic graphics rule to find
+and load a graphics file with an unknown \mbox{extension}.
+%%CCC removing hyphenation here makes this one line longer.
+This warning would incorrectly say that the file was not found,
+whereas the file would in fact be correctly loaded. The warning now
+doesn't show up in that case.
%
\githubissue{516}
-\subsection{Fixed loading \texttt{gzip}ped PostScript graphics files}
+\subsection{Fixed loading of \texttt{gzip}ped
+ PostScript files}
-A previous release mistakenly changed the file searching mechanism and
-compressed graphics files would raise an error when being loaded with
-\cs{includegraphics}. This has been fixed and now \texttt{gzip}ped graphics
-load correctly.
+A previous release mistakenly changed the file searching mechanism so
+that compressed PostScript graphics files would raise an error when
+being loaded with \cs{includegraphics}. This has been fixed so that
+\texttt{gzip}ped graphics files now load correctly.
%
\githubissue{519}
-
\section{Changes to packages in the \pkg{tools} category}
-\subsection{\pkg{layout}: Support extra language options}
-The package now recognizes \texttt{japanese} and \texttt{romanian} as
+\subsection{\pkg{layout}: Added language options}
+
+This package now recognizes \texttt{japanese} and \texttt{romanian} as
language options.
%
\githubissue[s]{353 and 529}
@@ -660,71 +867,64 @@ language options.
\subsection{\pkg{array} and \pkg{longtable}: Make \cs{\textbackslash} generally robust}
-The fix for this issue was also applied to these packages, see above.
+The fix for this issue was also applied to these packages; see above.
%
\githubissue{548}
\subsection{\pkg{longtable}: General bug fix update}
-Minor update to \pkg{longtable} to fix bugs reported. Notably the
-possibility of incorrect page breaks if floats appear on the same page
-that a \env{longtable} starts. As this may affect page breaking in
-existing documents, a rollback to \pkg{longtable 4.13}
-(\file{longtable-2020-01-07.sty}) is supported.
+
+This is a minor update to the \pkg{longtable} package that fixes several
+reported bugs: notably the possibility of incorrect page breaks when
+floats appear on the page where a \env{longtable} starts. As this may
+affect page breaking in existing documents, a rollback to
+\pkg{longtable 4.13} (\file{longtable-2020-01-07.sty}) is supported.
%
\gnatsissue{tools}{2914 3396 3512}
-\githubissue{133 183 464}
+\githubissue{133 137 183 464 561}
-\subsection[\pkg{trace}: Add \cs{tracingstacklevels}
- and \cs{tracinglostchars}\texttt{=3} to \cs{traceon}]
- {\pkg{trace}: Add \cs{tracingstacklevels} and\\
- \mbox\quad \cs{tracinglostchars}\texttt{=3} to \cs{traceon}}
+\subsection{\pkg{trace}: Additions to \cs{traceon}}
-The enhancement mentioned earlier was also added to the \pkg{trace} package.
-%
-\iffalse
-The \cs{tracingstacklevels} and \cs{tracinglostchars} extensions
-mentioned earlier for \cs{tracingall} were also added for
-\cs{traceon} in the \pkg{trace} package, so if you're using that you
-can also benefit from these new debugging tools.
-\fi
-%
+The \cs{tracingstacklevels} and \cs{tracinglostchars} extensions to
+\cs{tracingall} (see above) were also added to \cs{traceon} in the
+\pkg{trace} package, so its users can also benefit from these new
+debugging possibilities.
%
\githubissue{524}
-
-
\subsection{\pkg{bm}: Better support for commands with optional arguments}
-Some uses of optional arguments that were supported by \cs{bm} stopped
-being supported (in 2004) when \cs{kernel@ifnextchar} was used
-internally by the format instead of \cs{@ifnextchar}. This update
-handles both versions of this command and restores the original
-behaviour.
-In addition package options for guiding the use of \enquote{poor man's
- bold} in fallback situations were added.
+Some uses of optional arguments in \cs{bm} stopped being supported (in
+2004) when \cs{kernel@ifnextchar} was used internally by the format
+instead of \cs{@ifnextchar}. This update handles both versions of this
+command and restores the original \mbox{behavior}.
+
+In addition, package options for guiding the use of \enquote{poor
+ man's bold} in fallback situations were added.
%
\githubissue{554}
-\section{Changes to packages in the \pkg{amsmath} category}
-%\subsection{\pkg{amsmath}: Make \cs{\textbackslash} generally robust}
-The fix for issue 548 was also applied in \pkg{amsmath}, see above.
+\section{Changes to packages in the \pkg{amsmath} category}
+
+The fix for issue 548 was also applied in \pkg{amsmath}; see above.
%
\githubissue{548}
-%\medskip
+
+
+\medskip
\begin{thebibliography}{9}
\fontsize{9.3}{11.3}\selectfont
\bibitem{33:blueprint} Frank Mittelbach and Chris Rowley:
- \emph{\LaTeX{} Tagged PDF — A blueprint for a large project}.\\
+ \emph{\LaTeX{} Tagged PDF \Dash A blueprint for a large project}.\\
\url{https://latex-project.org/publications/indexbyyear/2020/}
\bibitem{33:source2e}