[latex3-commits] [git/LaTeX3-latex3-latex2e] ltnew33: Restructurung the issues into sections (9e45bc9a)

Frank Mittelbach frank.mittelbach at latex-project.org
Sun May 16 19:20:37 CEST 2021


Repository : https://github.com/latex3/latex2e
On branch  : ltnew33
Link       : https://github.com/latex3/latex2e/commit/9e45bc9a18635c033a28f6fea4e491153000806f

>---------------------------------------------------------------

commit 9e45bc9a18635c033a28f6fea4e491153000806f
Author: Frank Mittelbach <frank.mittelbach at latex-project.org>
Date:   Sun May 16 19:20:37 2021 +0200

    Restructurung the issues into sections


>---------------------------------------------------------------

9e45bc9a18635c033a28f6fea4e491153000806f
 base/doc/ltnews33.tex | 827 +++++++++++++++++++++++---------------------------
 1 file changed, 377 insertions(+), 450 deletions(-)

diff --git a/base/doc/ltnews33.tex b/base/doc/ltnews33.tex
index 7ab71d79..aaf2da64 100644
--- a/base/doc/ltnews33.tex
+++ b/base/doc/ltnews33.tex
@@ -55,9 +55,8 @@
 \fi
 
 %%CCC  Do we need a cite for source2e.pdf ?
-%%CCC  I have not done this yet: 
-%%     ADD the name for the new hook in selectfont
-%%CCC    also, are both this and the next entry really in 444?
+
+
 
 %%CCC Chris' hyphens!
 %%\showhyphens{parameters}
@@ -153,7 +152,7 @@ fixes that are outlined on the next pages. 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}.
-%%CCC  and coasses? -- FMi ???
+
 
 
 
@@ -161,48 +160,24 @@ sources~\cite{33:source2e}.
 \section{Extending the hook concept to paragraphs}
 
 Largely triggered by the need for better control of paragraph text
-processing, in particular when producing tagged PDF output, 
-we  have 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.
-
-%%CCC  Beside the 
-Besides the addition of 
-internal control points for %%CCC
-the exclusive use of the \LaTeX{}
-kernel, %%CCC
-we also implemented four public hooks that can be used %%CCC by
-in packages or documents %%CCC users 
-(via the normal %%CCC
-hook management declarations)  %%CCC
-to achieve special effects, etc.  %%CCC 
-%%CCC  to implement    manipulations
- %%CCC  that in the past were only
- %%CCC  removed stuff 
-Until now, such enhancements required redefinitions of \cs{everypar} or \cs{par}, %%CCC  
-which led to the 
-%%CCC with the
-usual issues %%CCC  that 
-since such changes %%CCC  would conflict 
-can easily conflict with changes %%CCC in 
-made by other packages.
-
-The documentation of %%CCC
-these new \enquote{paragraph hooks},
- together with a few examples, 
-is %%CCC provided 
-in \file{ltpara-doc.pdf} and, for those who want to study it,
-%%CCC 
-the (quite interesting) code %%CCC  is
-can be found in
-\file{ltpara-code.pdf}. Additionally, %%CCC it is 
-both of these files %%CCC 
-are included as part of the
-full kernel documentation in \file{source2e.pdf}.
+processing, in particular when producing tagged PDF output, we have
+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.
+
+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 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}.
 
 
 
@@ -213,14 +188,9 @@ 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}).
-%  %%CCC
-This concept of \enquote{generic hooks}  %%CCC concept 
-has now been extended to %%CCC add
-provide \hook{/before} and \hook{/after} hooks %%CCC  to 
-for any (document-level) command---in theory %%FMi at 
-%%CCC  that is.  
-at least.  %%CCC 
+\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---in theory at least.
 
 In practice, these new generic \hook{cmd} hooks, especially the
 \hook{cmd/.../after}, hooks may fail with commands that are too
@@ -243,144 +213,30 @@ 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 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}, is now used
-%%FMi to typeset
-when typesetting   %%FMi to seems wrong (it is only  additionally applied
-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{Shipping out a page while bypassing hooks}
 
-%%CCC  Moved later
-%%FMi \iffalse
-%%FMi %%CCC  \subsection{A note on file names with spaces, dots or UTF-8 characters}$$$
-%%FMi \subsection{File names with spaces, multiple dots or UTF-8 characters}
-%%FMi 
-%%FMi In one of the recent \LaTeX{} releases we improved the interface
-%%FMi for specifying file names so that they can now safely contain spaces
-%%FMi %%CCC  (as is common on Windows but also elsewhere), 
-%%FMi (as is common these days), %%CCC
-%%FMi more than one dot character, and also UTF-8 characters
-%%FMi outside the \acro{ascii} range. 
-%%FMi %%CCC  as well as names with several dots in it. 
-%%FMi In the past this was only possible by applying a special syntax
-%%FMi in the case of spaces, %%CCC not at all 
-%%FMi %%CCC  for most UTF-8 characters and
-%%FMi %%CCC  not in all circumstances for 
-%%FMi whilst file names with several dots often failed, 
-%%FMi as did most UTF-8 characters.
-%%FMi 
-%%FMi 
-%%FMi \subsubsection{Consequences for file names in \cs{include}}
-%%FMi %%CCC However, 
-%%FMi \TeX{} has a built-in rule saying that you can normally %%CCC
-%%FMi leave out the
-%%FMi extension if it is \texttt{.tex}. %%CCC  Because of that 
-%%FMi Thus \verb=\input{file}=
-%%FMi and   %%CCC  or 
-%%FMi \verb=\input{file.tex}= both load \file{file.tex} %%CCC 
-%%FMi (if it exists). 
-%%FMi While this is convenient most of the time, %%CCC 
-%%FMi it is a little
-%%FMi awkward in some scenarios (for example, when both \file{file} and
-%%FMi \file{file.tex} exist) and also when you manually try to 
-%%FMi implement %%CCC that 
-%%FMi the rule.
+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,
 %%FMi
-%%FMi \LaTeX{} therefore had one special syntax for \cs{include} and
-%%FMi \cs{includeonly}: they always expected that 
-%%FMi their arguments contains a
-%%FMi file name\footnote{In case of \cs{includeonly} a comma separated list of such names.} 
-%%FMi %%CCC  without its 
-%%FMi with no extension given, %%CCC  which
-%%FMi   so that it had to be\texttt{.tex}.  Thus, %zCCC 
-%%FMi  when you mistakenly wrote
-%%FMi \verb=\include{mychap.tex}= (for example, %%CCC when 
-%%FMi because you changed from \cs{input}
-%%FMi to \cs{include}),  %%CCC  somewhere), 
-%%FMi \LaTeX{} went ahead and looked for the
-%%FMi file \file{mychap.tex.tex} for inclusion and tried to write 
-%%FMi %%CCC support
-%%FMi internal (auxiliary) 
-%%FMi information to the file \file{mychap.tex.aux}.  The reason was that
-%%FMi \cs{include} had to construct both %%CCC physical 
-%%FMi of these file names from the given  %%CCC 
-%%FMi argument and it didn't bother to do %%CCC  something 
-%%FMi anything special %%CCC  about 
-%%FMi with the supplied 
-%%FMi extension \texttt{.tex}.
+the addition of background or foreground material to some or all
+pages.
 %%FMi  
-%%FMi %%CCC As a side effect of 
-%%FMi With the new implementation this has %%CCCnow 
-%%FMi changed: %%CCC and
-%%FMi %%CCC  the argument of \cs{include} now gets 
-%%FMi the extension \texttt{.tex}
-%%FMi now gets removed/ignored if it was %%CCC used. 
-%%FMi supplied.
-%%FMi %%CCC changed!
-%%FMi Thus \verb=\include{mychap.tex}= now 
-%%FMi no longer looks for \file{mychap.tex.tex} 
-%%FMi but loads
-%%FMi \file{mychap.tex} 
-%%FMi and uses \file{mychap.aux}.
-%%FMi %
-%%FMi \githubissue{486}
-%%FMi \fi
-
-\subsection{Ensure that \cs{AtEndDocument} is executed in vertical mode}
-
-
-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{385}
-
-
+%%FMi the addition of background or foreground material. 
+%%FMi  %%CCC to some or all pages. We now 
  
-\subsection{Allow extra space between name and address in \pkg{letter} class}
+We have now added a command,
+%%FMi currently
+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.
 
-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{427}
 
 \subsection{A new Lua callback in \pkg{ltshipout},
 for custom attributes}
@@ -392,46 +248,14 @@ Lua\TeX\ packages which flag (using, for example, attributes or
 properties) elements on a page in order to apply certain effects (such
 as the insertion of \enquote{color commands}) to these elements at
 shipout.
-%%FMi \iffalse  %%CCC
-%%FMi An example for this is the \pkg{luacolor}
-%%FMi package which could insert the color commands using this callback.
-%%FMi \fi
-
-\subsection{Improved copy\,\&\,paste support for \pdfTeX{} documents}
-
-When compiling with \pdfTeX{}, additional information is now added
-automatically to the PDF file in order to improve copying from, and
-searching in, text.
-
-This in particular 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} or the file \texttt{glyphtounicode.tex}.
 
-%%FMi the above sounds as if ``in most cases things work without
-%%glyphtounicode but sometimes you need it ... which is wrong
-%%(sometimes you need cmap but glyphtounicode is now part of the
-%%kernel!
 
-%
-%%FMi \iffalse
-%%FMi %%CCC Since this has been integrated into the kernel, 
-%%FMi %%CCC
-%%FMi This means that most documents %%CCC should 
-%%FMi no
-%%FMi longer need to load the %%CCC 
-%%FMi package \pkg{cmap} or input 
-%%FMi %%CCC  
-%%FMi the file
-%%FMi \texttt{glyphtounicode.tex}.
-%%FMi \fi
-%
-\githubissue{465}
+\section{Updates to the font selection scheme}
 
 
 \subsection{A new hook in \cs{selectfont}}
 
-After \cs{selectfont} has changed the font, we now run a hook
-%%CCC Should be given a name: the hook ???? -- %%FMi it is ``selecfont'' (not needed imho) 
+After \cs{selectfont} has changed the font, we now run a hook (\hook{selectfont})
 so that packages can make final adjustments. This functionality was
 originally provided by the \pkg{everysel} package but our
 implementation is slightly different and uses the standard hook
@@ -452,68 +276,13 @@ may otherwise happen due to the order of declarations.
 
 
 
-\subsection{Allow \cs{nocite} in the preamble}
-
-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}
-
-\subsection{Shipping out a page while bypassing hooks}
-
-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,
-%%FMi
-the addition of background or foreground material to some or all
-pages.
-%%FMi  
-%%FMi the addition of background or foreground material. 
-%%FMi  %%CCC to some or all pages. We now 
- 
-We have now added a command,
-%%FMi currently
-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{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{Normalization of robust commands in file names}
-
-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 with the new normalization
-it looks for the file named \verb|sqrt {2}.tex|
-%%FMi
-(and reports a file not found failure instead).
-%
-\githubissue{481}
-
-
+\section{Handling file names}
 
 
-%%CCC  \subsection{A note on file names with spaces, dots or UTF-8 characters}
 
-\subsection{File names with spaces, multiple dots or UTF-8 characters}
+\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
@@ -528,19 +297,12 @@ as did most UTF-8 characters.
 
 \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.
+\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.
 
 \LaTeX{} therefore had one special syntax for \cs{include} and
 \cs{includeonly}: they always expected that 
@@ -577,8 +339,74 @@ and uses \file{mychap.aux}.
 
 
 
+\subsection{Normalization of robust commands in file names}
+
+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 with the new normalization
+it looks for the file named \verb|sqrt {2}.tex|
+%%FMi
+(and reports a file not found failure instead).
+%
+\githubissue{481}
+
+
+
+
+\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}
+
+
+
+
+\section{On characters \& encodings}
+
+
+
+\subsection{Improved copy\,\&\,paste support for \pdfTeX{} documents}
+
+When compiling with \pdfTeX{}, additional information is now added
+automatically to the PDF file in order to improve copying from, and
+searching in, text.
+
+This in particular 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} or the file \texttt{glyphtounicode.tex}.
+
+%%FMi the above sounds as if ``in most cases things work without
+%%glyphtounicode but sometimes you need it ... which is wrong
+%%(sometimes you need cmap but glyphtounicode is now part of the
+%%kernel!
+
+%
+%%FMi \iffalse
+%%FMi %%CCC Since this has been integrated into the kernel, 
+%%FMi %%CCC
+%%FMi This means that most documents %%CCC should 
+%%FMi no
+%%FMi longer need to load the %%CCC 
+%%FMi package \pkg{cmap} or input 
+%%FMi %%CCC  
+%%FMi the file
+%%FMi \texttt{glyphtounicode.tex}.
+%%FMi \fi
+%
+\githubissue{465}
+
+
+
 
-\subsection {Support for more Unicode characters}
+
+\subsection{Support for more Unicode characters}
 
 
 \LaTeX\ is quite capable of typesetting characters such as
@@ -595,37 +423,100 @@ directly instead of using \verb=\d{m}=, etc.
 
 
 
-\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 at begingroup} to be used in such places.
 
+\subsection{More ``dashes'' in encodings \texttt{OT1},
+  \texttt{T1} and \texttt{TU}}
 
-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 (depending on what is loaded in the document).
+When pasting in text from external sources, one can encounter these
+three Unicode characters
 %
-The kernel therefore now permanently adds these \enquote{color groups}.
+\texttt{"2011} (non-breaking hyphen),
+\texttt{"2012} (figure dash) and
+\texttt{"2015} (horizontal bar),
 %
-\githubissue{488}
-
+in addition to the more common 
+%
+\texttt{"2013} (en-dash) and \texttt{"2014} (em-dash).
+%
+In the past, these first three characters 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.
 
-\subsection{Execute \cs{par} at the end of \cs{marginpar} arguments}
+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.
 
-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.
+Additionally, with all engines, these characters can now be accessed
+with the command names \cs{textnonbreakinghyphen}, \cs{textfiguredash}
+and \cs{texthorizontalbar}, respectively.
+%
+\githubissue{404}
 
-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}.
+
+
+
+\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}
+
+
+
+
+\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}, is now used
+%%FMi to typeset
+when typesetting   %%FMi to seems wrong (it is only  additionally applied
+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}
+
 
 
 
@@ -652,6 +543,178 @@ using certain classes or the \pkg{footmisc} package.
 
 
 
+
+
+\subsection{Allow \cs{nocite} in the preamble}
+
+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}
+
+
+
+
+
+\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.
+
+
+This change 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 within \cs{raggedright} and so it would not indicate the
+(premature) end of the \env{tabular}.  Thus, for example,
+\begin{quote}
+   \verb=a & b1 \\ b2 & c \\=
+\end{quote}
+was interpreted as a single row of the \env{tabular} (as intended),
+whereas
+\begin{quote}
+   \verb=a &    \\ b2 & c \\=
+\end{quote}
+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.
+
+So now both
+of the above lines %%CCC consistently %%FMi I like consistently
+produce a single \env{tabular} row.
+
+As before, you can 
+%%FMi no unnecessary quotes
+%%FMi put `\cs{raggedright} \cs{arraybackslash}' 
+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{548}
+
+
+
+
+\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{427}
+
+
+
+\subsection{Additions to \cs{tracingall}}
+
+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 (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), so that with $\cs{tracinglostchars}>2$ you now also get an
+error message for each missing glyph.
+
+Later, in January 2021, Petr Olšák suggested yet another extension: 
+a new primitive
+%%FMi (avoid hyphenation)
+\mbox{parameter}
+%
+\cs{tracingstacklevels} that, when both it and \cs{tracingmacros} are
+positive, will
+%%FMi add %%CCC print a visual
+visualize
+the current macro nesting level
+%%FMi to
+within %%FMi in, as part of ?
+the tracing information.
+
+Both these changes have 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{524}
+
+
+
+
+\section{Code improvements}
+
+
+\subsection{Execute \cs{par} at the end of \cs{marginpar} arguments}
+
+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{Ensure that \cs{AtEndDocument} is executed in vertical mode}
+
+
+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{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 at begingroup} to be used in such places.
+
+
+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 (depending on what is loaded in the document).
+%
+The kernel therefore now permanently adds these \enquote{color groups}.
+%
+\githubissue{488}
+
+
+
+
 %%CCC  All new! Maybe needs a different (url) ref.
 %%FMi lots of changes -> David to review
 
@@ -714,57 +777,6 @@ documented sources~\cite{33:source2e}.
 
 
 
-\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{502}
-
-
-
-\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
-%
-\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 characters 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.
-
-Additionally, with all engines, these characters can now be accessed
-with the command names \cs{textnonbreakinghyphen}, \cs{textfiguredash}
-and \cs{texthorizontalbar}, respectively.
-%
-\githubissue{404}
-
-
-
-
 %%FMi \subsection{Extending \pkg{latexrelease} to declare an entire module}
 \subsection{Extend \pkg{latexrelease} to declare entire modules}
 
@@ -811,95 +823,10 @@ ends.
 \githubissue{504}
 
 
-\subsection {Additions to \cs{tracingall}}
-
-
-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 (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), so that with $\cs{tracinglostchars}>2$ you now also get an
-error message for each missing glyph.
-
-Later, in January 2021, Petr Olšák suggested yet another extension: 
-a new primitive
-%%FMi (avoid hyphenation)
-\mbox{parameter}
-%
-\cs{tracingstacklevels} that, when both it and \cs{tracingmacros} are
-positive, will
-%%FMi add %%CCC print a visual
-visualize
-the current macro nesting level
-%%FMi to
-within %%FMi in, as part of ?
-the tracing information.
-
-Both these changes have 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{524}
-
-
-\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{tablular}
-structures.  This has been corrected so that \cs{\textbackslash}
-should now be robust in all circumstances.
-
-%%CCC  !!  Fix me!  %%FMi what does this refer to?
 
-This change 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 within \cs{raggedright} and so it would not indicate the
-(premature) end of the \env{tabular}.  Thus, for example,
-\begin{quote}
-   \verb=a & b1 \\ b2 & c \\=
-\end{quote}
-was interpreted as a single row of the \env{tabular} (as intended),
-whereas
-\begin{quote}
-   \verb=a &    \\ b2 & c \\=
-\end{quote}
-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.
 
-So now both
-of the above lines %%CCC consistently %%FMi I like consistently
-produce a single \env{tabular} row.
 
-As before, you can 
-%%FMi no unnecessary quotes
-%%FMi put `\cs{raggedright} \cs{arraybackslash}' 
-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{548}
 
 
 





More information about the latex3-commits mailing list.