[latex3-commits] [latex3/latex2e] ltnews40: reformatting source (ea229df37)
github at latex-project.org
github at latex-project.org
Mon Oct 28 08:57:45 CET 2024
Repository : https://github.com/latex3/latex2e
On branch : ltnews40
Link : https://github.com/latex3/latex2e/commit/ea229df375de73707465c603349fee0cdddbeb28
>---------------------------------------------------------------
commit ea229df375de73707465c603349fee0cdddbeb28
Author: Frank Mittelbach <frank.mittelbach at latex-project.org>
Date: Mon Oct 28 08:57:45 2024 +0100
reformatting source
>---------------------------------------------------------------
ea229df375de73707465c603349fee0cdddbeb28
base/doc/ltnews40.tex | 334 +++++++++++++++++++++++++++-----------------------
1 file changed, 178 insertions(+), 156 deletions(-)
diff --git a/base/doc/ltnews40.tex b/base/doc/ltnews40.tex
index 22599f877..69c800180 100644
--- a/base/doc/ltnews40.tex
+++ b/base/doc/ltnews40.tex
@@ -141,7 +141,8 @@
\tubcommand{\input{tubltmac}}
\publicationmonth{November}
-\publicationyear{2024 --- DRAFT version for upcoming release}
+%\publicationyear{2024 --- DRAFT version for upcoming release}
+\publicationyear{2024}
\publicationissue{40}
@@ -161,48 +162,53 @@
\section{Engine support: important update}
-As detailed below, work is progressing on the Tagged PDF project. There are
-many drivers for this work, including legal changes in many places which will
-increasingly require well-tagged PDFs including full support for mathematics. As
-part of the work on this, we are looking at the technical abilities of the
-\TeX{} engines.
+As detailed below, work is progressing on the Tagged PDF
+project. There are many drivers for this work, including legal changes
+in many places which will increasingly require well-tagged PDFs
+including full support for mathematics. As part of the work on this,
+we are looking at the technical abilities of the \TeX{} engines.
With \XeTeX{}, it is impossible to reliably produce tagged PDFs due to
-engine limitations. The increasing importance of tagged PDFs means that this
-requires a move away from \XeTeX{}. We will continue to address issues with
-\XeTeX{} support in team-maintained \LaTeX{} code on a best-effort basis.
-No \emph{new} functionality will be added for \XeTeX{} by the \LaTeX{} team. It
-is likely that over time functionality may become more restricted, and users
-are urged to migrate \XeTeX{} documents to \LuaTeX{}.
-
-For \pdfTeX{}, tagging is available and we are able to support mathematics by
-including relevant \TeX{} source or by using externally-generated MathML.
-Only \LuaTeX{} is capable of \emph{automatic} generation of MathML as part of a
-\LaTeX{} run. Thus \pdfTeX{} continues to be supported for existing material,
-but for new documents, moving to \LuaTeX{} is recommended.
+engine limitations. The increasing importance of tagged PDFs means
+that this requires a move away from \XeTeX{}. We will continue to
+address issues with \XeTeX{} support in team-maintained \LaTeX{} code
+on a best-effort basis. No \emph{new} functionality will be added for
+\XeTeX{} by the \LaTeX{} team. It is likely that over time
+functionality may become more restricted, and users are urged to
+migrate \XeTeX{} documents to \LuaTeX{}.
+
+For \pdfTeX{}, tagging is available and we are able to support
+mathematics by including relevant \TeX{} source or by using
+externally-generated MathML. Only \LuaTeX{} is capable of
+\emph{automatic} generation of MathML as part of a \LaTeX{} run. Thus
+\pdfTeX{} continues to be supported for existing material, but for new
+documents, moving to \LuaTeX{} is recommended.
We cannot make statements about the support for other engines such as
-(u)p\TeX{}, as we don't use these programs nor have in depth knowledge of their
-functionalities. To the best of our knowledge, core \LaTeX{} works well with
-these engines, but if and to what extent tagging can be supported will remain
-to be seen. If relevant information becomes available to us we will provide an
-update in future editions of the \LaTeX{} newsletter.
+(u)p\TeX{}, as we don't use these programs nor have in depth knowledge
+of their functionalities. To the best of our knowledge, core \LaTeX{}
+works well with these engines, but if and to what extent tagging can
+be supported will remain to be seen. If relevant information becomes
+available to us we will provide an update in future editions of the
+\LaTeX{} newsletter.
\section{Switch to T1 as default encoding in documents using \cs{DocumentMetadata}}
-As it is well known the font encoding \texttt{OT1} supports only 128 characters and
-has various problems and quirks notably for languages different to English.
-Nevertheless \texttt{OT1} is the default encoding in \LaTeX{} and this can not be easily
-changed without affecting many documents as the \texttt{T1} version of the fonts have slightly different metrics.
+As it is well known the font encoding \texttt{OT1} supports only 128
+characters and has various problems and quirks notably for languages
+different to English. Nevertheless \texttt{OT1} is the default
+encoding in \LaTeX{} and this can not be easily changed without
+affecting many documents as the \texttt{T1} version of the fonts have
+slightly different metrics.
The introduction of the \cs{DocumentMetadata} command, which announces
-\emph{new} code and changes that can also affect the layout gives us now the
-opportunity to make this step. So with this version a use of
-\cs{DocumentMetadata} with (pdf)\LaTeX{} will setup \texttt{T1} as default
-font encoding\footnote{The Unicode engines will continue to use \texttt{TU}
-as encoding.}. To ensure that scalable fonts are used, the package
-\pkg{cm-super} has to be installed. Users who want to revert to the
-\texttt{OT1} encoding in their document can do so with
+\emph{new} code and changes that can also affect the layout gives us
+now the opportunity to make this step. So with this version a use of
+\cs{DocumentMetadata} with (pdf)\LaTeX{} will setup \texttt{T1} as
+default font encoding\footnote{The Unicode engines will continue to
+use \texttt{TU} as encoding.}. To ensure that scalable fonts are used,
+the package \pkg{cm-super} has to be installed. Users who want to
+revert to the \texttt{OT1} encoding in their document can do so with
\verb+\usepackage[OT1]{fontenc}+.
@@ -215,16 +221,19 @@ also row headers and to create cells that span more than one row.
\emph{write more details ...}
-The math module will automatically generate a MathML file and use it to
-attach MathML associated files to the structure if lua\LaTeX{} and
+The math module will automatically generate a MathML file and use it
+to attach MathML associated files to the structure if lua\LaTeX{} and
the \pkg{unicode-math} package are used and the \pkg{luamml} is found.
-This new feature can be disabled with \verb+\tagpdfsetup{math/mathml/luamml=false}+
-More details can be found in the documentation of \pkg{latex-lab-math}.
+This new feature can be disabled with
+\verb+\tagpdfsetup{math/mathml/luamml=false}+ More details can be
+found in the documentation of \pkg{latex-lab-math}.
-At \url{https://latex3.github.io/tagging-project/tagging-status/} we show the status of many \LaTeX{} Packages and Classes with respect to PDF tagging.
-We also started to improve tagging support in external packages. If the
-\texttt{firstaid} key is used in addition to the \texttt{phase-III} key
-basic commands of packages like \pkg{amsthm} and \pkg{fancyvrb} can now be used.
+At \url{https://latex3.github.io/tagging-project/tagging-status/} we
+show the status of many \LaTeX{} Packages and Classes with respect to
+PDF tagging. We also started to improve tagging support in external
+packages. If the \texttt{firstaid} key is used in addition to the
+\texttt{phase-III} key basic commands of packages like \pkg{amsthm}
+and \pkg{fancyvrb} can now be used.
\section{Handling paragraph continuation}
@@ -232,9 +241,9 @@ Already \LaTeX~2.09 offered some automatism to detect whether or not
text after a list or some other display environment is meant to be a
continuation of the current paragraph or should start a new one. The
document-level syntax for this is that a blank line after such an
-environment signals to \LaTeX{} that it should start a new paragraph; whilst
-no blank line signals that there should be no new paragraph and the
-text should be considered a continuation.
+environment signals to \LaTeX{} that it should start a new paragraph;
+whilst no blank line signals that there should be no new paragraph and
+the text should be considered a continuation.
Unfortunately, there are a number of cases where the original 2.09
approach failed, e.g., with
@@ -247,20 +256,19 @@ approach failed, e.g., with
the \meta{some text} incorrectly started a new paragraph. Bug reports
about this behavior can be traced back to the time \LaTeXe{} was
developed, e.g., one test file from 1992 has a note that the above
-case was unfortunately not resolvable despite some improvements made back
-then. The main cause of the issue (as you probably guessed) is that
-the mechanism failed whenever the environment was executed within a
-group (\texttt{\{...\}}, \cs{begingroup}/\cs{endgroup}, or
+case was unfortunately not resolvable despite some improvements made
+back then. The main cause of the issue (as you probably guessed) is
+that the mechanism failed whenever the environment was executed within
+a group (\texttt{\{...\}}, \cs{begingroup}/\cs{endgroup}, or
\cs{bgroup}/\cs{egroup} pair) that was closed before the next blank
line was reached.
-While most of the time this could be visually corrected by adding some
+While most of the time this could be visually corrected by adding some
explicit \cs{noindent}, the situation got worse when we tried to
implement tagged PDFs resulting in incorrect structures or worse.
We therefore made a new attempt to resolve this problem in every
-situation and this new solution is rolled out in the current
-release.
+situation and this new solution is rolled out in the current release.
\section{New or improved commands}
@@ -269,31 +277,33 @@ release.
The commands \cs{addvspace} and \cs{addpenalty} generated the famous
error message \enquote{Something's wrong--perhaps a missing \cs{item}}
-when they were encountered outside vertical mode. Most of the time this
-error was bogus and if not, then it was generated several times rather
-than once.
+when they were encountered outside vertical mode. Most of the time
+this error was bogus and if not, then it was generated several times
+rather than once.
Once upon a time (in \LaTeX{}~2.09) it was necessary that these
commands were used only in vertical mode, but with \LaTeXe{} in 1994,
we changed the internals but simply overlooked that this error message
-then had become useless. In this release, i.e.,~30 years too late, we have
-finally lifted the ban and from now on this error should only show
-up if there is indeed a missing \cs{item}.
+then had become useless. In this release, i.e.,~30 years too late, we
+have finally lifted the ban and from now on this error should only
+show up if there is indeed a missing \cs{item}.
%
\githubissue{1460}
\subsection{Change behavior of tagging sockets with two arguments}
-When calling tagging sockets with two arguments using \cs{UseTaggingSocket}
-when tagging is suspended previous versions of \LaTeXe{} dropped both arguments.
-This behavior has been changed to drop the first argument and preserve the second
-one instead, thereby allowing tagging sockets to be used to wrap existing content
-which should still appear in a non-tagging context.
-
-Since no tagging sockets currently provided by \LaTeXe{} use two arguments
-we do not expect this change to affect any existing documents, but if a custom
-tagging socket has been defined outside of the kernel it might need to be adapted
-be compatible with the new behavior.
+When calling tagging sockets with two arguments using
+\cs{UseTaggingSocket} when tagging is suspended previous versions of
+\LaTeXe{} dropped both arguments. This behavior has been changed to
+drop the first argument and preserve the second one instead, thereby
+allowing tagging sockets to be used to wrap existing content which
+should still appear in a non-tagging context.
+
+Since no tagging sockets currently provided by \LaTeXe{} use two
+arguments we do not expect this change to affect any existing
+documents, but if a custom tagging socket has been defined outside of
+the kernel it might need to be adapted be compatible with the new
+behavior.
%
\githubissue{1500}
@@ -302,19 +312,22 @@ be compatible with the new behavior.
\subsection{Avoiding keyval option clashes between classes and packages}
-In \LaTeX{} News~35~\cite{40:ltnews35} we introduced keyval option processing
-to the kernel. Following the standard for \LaTeXe{} options, keyval options
-given to the \cs{documentclass} line were treated as global and so parsed by
-every package. However, with keyvals, the likelihood of a name clash between a
-class-specific option and one used by a package is much higher than it is with
-simple strings. We have therefore refined the mechanism in the current release.
-
-When a class uses the kernel keyval processor, any options it recognizes are
-recorded and any packages using the keyval processor will then \emph{skip}
-these \enquote{global} options. To allow for the case where a class directly
-uses an option which should be global (for example \texttt{draft}), a new key
-property \texttt{.pass-to-packages} has been added. This can then be set to
-indicate that this key is not to be skipped. For example
+In \LaTeX{} News~35~\cite{40:ltnews35} we introduced keyval option
+processing to the kernel. Following the standard for \LaTeXe{}
+options, keyval options given to the \cs{documentclass} line were
+treated as global and so parsed by every package. However, with
+keyvals, the likelihood of a name clash between a class-specific
+option and one used by a package is much higher than it is with simple
+strings. We have therefore refined the mechanism in the current
+release.
+
+When a class uses the kernel keyval processor, any options it
+recognizes are recorded and any packages using the keyval processor
+will then \emph{skip} these \enquote{global} options. To allow for the
+case where a class directly uses an option which should be global (for
+example \texttt{draft}), a new key property \texttt{.pass-to-packages}
+has been added. This can then be set to indicate that this key is not
+to be skipped. For example
\begin{verbatim}
\DeclareKeys{
draft .if = {ifl at cls@draft},
@@ -322,19 +335,19 @@ indicate that this key is not to be skipped. For example
mode .store = \cls at mode
}
\end{verbatim}
-in a class would create two options, \texttt{draft} and \texttt{mode}. The
-\texttt{draft} option will be treated in the normal way by packages using
-keyvals, but they will ignore the \texttt{mode} option: it is effectively
-marked as \enquote{private} to the class.
+in a class would create two options, \texttt{draft} and
+\texttt{mode}. The \texttt{draft} option will be treated in the normal
+way by packages using keyvals, but they will ignore the \texttt{mode}
+option: it is effectively marked as \enquote{private} to the class.
%
\githubissue{1279}
\subsection{Improved error raised by empty hook}
-When using the hook management, both hook and label names (if specified)
-should be non-empty. Before empty hook and empty label both raised the
-same label-specific error.
+When using the hook management, both hook and label names (if
+specified) should be non-empty. Before empty hook and empty label both
+raised the same label-specific error.
\begin{verbatim}
! LaTeX hooks Error: Empty code label on line ....
Using 'top-level' instead.
@@ -348,24 +361,24 @@ This has now been improved. Now empty hook raises
\subsection{Provide counter representations for link targets}
-To create unique target names for links the package
-\pkg{hyperref} uses a special counter representation
-\verb+\theH+\meta{counter}. To ensure that this
-counter representation exists, \pkg{hyperref} redefined the
-commands \verb+\@definecounter+, \verb+\@addtoreset+
-and \verb+\refstepcounter+. This counter representation is also
-needed for the Tagged PDF project and and so these augmented command definitions
-have now been incorporated
-into the kernel.
-Thus from now on every \verb+\newcounter{+\meta{counter}\verb+}+ will not
-only define \verb+\the+\meta{counter} but also \verb+\theH+\meta{counter}.
+To create unique target names for links the package \pkg{hyperref}
+uses a special counter representation \verb+\theH+\meta{counter}. To
+ensure that this counter representation exists, \pkg{hyperref}
+redefined the commands \verb+\@definecounter+, \verb+\@addtoreset+ and
+\verb+\refstepcounter+. This counter representation is also needed for
+the Tagged PDF project and and so these augmented command definitions
+have now been incorporated into the kernel. Thus from now on every
+\verb+\newcounter{+\meta{counter}\verb+}+ will not only define
+\verb+\the+\meta{counter} but also \verb+\theH+\meta{counter}.
\subsection{Extending \cs{refstepcounter}}
-The package \pkg{hyperref} redefines since many years \verb+\refstepcounter+ and
-adds code that creates link targets. The kernel definition has now been extended
-with socket interfaces that will allow \pkg{hyperref} to avoid the redefinitions. The new interfaces are also used by the Tagged PDF code that needs target names to resolve
-references between structures.
+The package \pkg{hyperref} redefines since many years
+\verb+\refstepcounter+ and adds code that creates link targets. The
+kernel definition has now been extended with socket interfaces that
+will allow \pkg{hyperref} to avoid the redefinitions. The new
+interfaces are also used by the Tagged PDF code that needs target
+names to resolve references between structures.
\section{Bug fixes}
@@ -384,46 +397,48 @@ LaTeX Warning: Suspicious rollback/min-date
\end{verbatim}
In some cases this message showed a wrong file type, i.e.,
-\verb|document class '<pkgname>'| or \verb|package '<clsname>'|.
-This has now been corrected.
+\verb|document class '<pkgname>'| or \verb|package '<clsname>'|. This
+has now been corrected.
%
\githubissue{870}
\subsection*{Fix existence check of document environments}
-\cs{NewDocumentEnvironment} and friends define (or redefine) a document
-environment using the space-trimmed \meta{envname}, but the existence
-check for \meta{envname} was done without space trimming. Thus when the
-user-specified \meta{envname} consists of leading and/or trailing
-space(s), it may lead to erroneously silent environment declaration.
-For example, in
+
+\cs{NewDocumentEnvironment} and friends define (or redefine) a
+document environment using the space-trimmed \meta{envname}, but the
+existence check for \meta{envname} was done without space
+trimming. Thus when the user-specified \meta{envname} consists of
+leading and/or trailing space(s), it may lead to erroneously silent
+environment declaration. For example, in
\begin{verbatim}
\NewDocumentEnvironment{myenv}{}{begin}{end}
\NewDocumentEnvironment{ myenv }{}{begin}{end}
\end{verbatim}
the first line defines a new environment \env{myenv} but the second
-line would check existence for \env{ myenv } (which is not yet defined),
-then redefine \env{myenv} environment without raising any errors.
-This has now been corrected.
+line would check existence for \env{ myenv } (which is not yet
+defined), then redefine \env{myenv} environment without raising any
+errors. This has now been corrected.
%
\githubissue{1399}
\subsection{Handling of global keys with spaces}
If the global (class) options contained spaces around key names,
-\cs{ProcessKeyOptions} would fail to remove known keys from the
-list of unused global options and \cs{OptionNotUsed} would mistakenly
-add space-surrounded key names to that list.
-These has been corrected as a hotfix in patch level 1 of the November 2023
-release (but unfortunately not mentioned in~\cite{40:ltnews38}) and
-the current release, respectively.
+\cs{ProcessKeyOptions} would fail to remove known keys from the list
+of unused global options and \cs{OptionNotUsed} would mistakenly add
+space-surrounded key names to that list. These has been corrected as
+a hotfix in patch level 1 of the November 2023 release (but
+unfortunately not mentioned in~\cite{40:ltnews38}) and the current
+release, respectively.
%
\githubissue{1238}
\subsection{File list entries for rolled back packages/classes}
-When the rollback mechanism for packages and classes was introduced
-in 2018~\cite{40:ltnews28}, loading of the selected historic release
-was not recorded in the file list used by \cs{listfiles}.
-This has now been corrected so that the extended usage~\cite{40:ltnews39}
+
+When the rollback mechanism for packages and classes was introduced in
+2018~\cite{40:ltnews28}, loading of the selected historic release was
+not recorded in the file list used by \cs{listfiles}. This has now
+been corrected so that the extended usage~\cite{40:ltnews39}
\begin{verbatim}
\listfiles[hashes,sizes]
\end{verbatim}
@@ -443,31 +458,33 @@ preamble are possible again.
\section{Improvement to \XeTeX\ \cs{showhyphens}}
+
When using \cs{showhyphens} with \XeTeX, missing character warnings
-would be generated for any character not in Latin Modern. This has been
-corrected and the warnings are suppressed.
+would be generated for any character not in Latin Modern. This has
+been corrected and the warnings are suppressed.
%
\githubissue{1380}
\section{Avoid code duplication in rollback}
-When the kernel uses \cs{AddToHook} in a region that might be
-rolled back (which happens in a few places) and a document requests a
-rollback, then we have the situation that the hook already contains code to which we added the same
-(or slightly different) code during the
-rollback; this results in code duplication or, worse, in errors. This has
-now been corrected by dropping any such code chunk (if there is one) prior to
-adding the rollback code.
+When the kernel uses \cs{AddToHook} in a region that might be rolled
+back (which happens in a few places) and a document requests a
+rollback, then we have the situation that the hook already contains
+code to which we added the same (or slightly different) code during
+the rollback; this results in code duplication or, worse, in
+errors. This has now been corrected by dropping any such code chunk
+(if there is one) prior to adding the rollback code.
%
\githubissue{1407}
\section{Passing template keys using \cs{KeyValue}}
-With the move of the template code to the kernel, some internal efficiencies
-were also made. However, there was an oversight in how passing key values from
-one setting to another was implemented, meaning that using \cs{KeyValue} could
-result in an infinite loop. This has now been fixed.
+With the move of the template code to the kernel, some internal
+efficiencies were also made. However, there was an oversight in how
+passing key values from one setting to another was implemented,
+meaning that using \cs{KeyValue} could result in an infinite
+loop. This has now been fixed.
%
\githubissue{1486}
@@ -478,11 +495,11 @@ result in an infinite loop. This has now been fixed.
The implementation of \cs{dots} in \pkg{amsmath} has the feature that
it selects different dots depending on the symbol that follows: e.g.,
dots between commas would normally be on the baseline, while dots
-between binary or relational symbols would be raised. However, when symbols such
-as \cs{cong} were protected from expansion in moving arguments (so
-that they worked in places such as headings) it had the unfortunate
-side-effect that the \cs{dots} magic stopped working for them. This
-has now been corrected.
+between binary or relational symbols would be raised. However, when
+symbols such as \cs{cong} were protected from expansion in moving
+arguments (so that they worked in places such as headings) it had the
+unfortunate side-effect that the \cs{dots} magic stopped working for
+them. This has now been corrected.
%
\githubissue{1265}
@@ -494,11 +511,14 @@ has now been corrected.
\subsection{Modification to generation of the \file{.tex} from \pkg{fileerr}}
-The \pkg{fileerr} extraction has been modified to write \texttt{rename-to-empty-base.tex}
-rather than \texttt{.tex} to comply with an expected security change in \TeX{}~Live 2025.
-The \texttt{build.lua} file for the \pkg{tools} has been modified to rename \texttt{rename-to-empty-base.tex} to \texttt{.tex}
-after unpacking. However if using \textsf{docstrip} directly rather than using \textsf{l3build}
-or the unpacked zip file from \CTAN{}, the user must now rename the file and install as \texttt{.tex}.
+The \pkg{fileerr} extraction has been modified to write
+\texttt{rename-to-empty-base.tex} rather than \texttt{.tex} to comply
+with an expected security change in \TeX{}~Live 2025. The
+\texttt{build.lua} file for the \pkg{tools} has been modified to
+rename \texttt{rename-to-empty-base.tex} to \texttt{.tex} after
+unpacking. However if using \textsf{docstrip} directly rather than
+using \textsf{l3build} or the unpacked zip file from \CTAN{}, the user
+must now rename the file and install as \texttt{.tex}.
%
\githubissue{1412}
@@ -521,14 +541,15 @@ turned on.
\subsection{\pkg{longtable}: Extend caption type}
-The \pkg{longtable} has been extended and now provides the command \cs{LTcaptype}
-(stemming from the \pkg{ltcaption} package) to change
-the counter and caption type used by the \cs{caption} command from longtable.
-So with \verb+\renewcommand\LTcaptype{figure}+, a longtable will step the
-figure counter instead of the table counter and produce an
-entry in the list of figures. An empty definition, \verb+\renewcommand\LTcaptype{}+,
-will suppress increasing of the counter. This makes it easy to define an
-unnumbered variant of longtable:
+The \pkg{longtable} has been extended and now provides the command
+\cs{LTcaptype} (stemming from the \pkg{ltcaption} package) to change
+the counter and caption type used by the \cs{caption} command from
+longtable. So with \verb+\renewcommand\LTcaptype{figure}+, a
+longtable will step the figure counter instead of the table counter
+and produce an entry in the list of figures. An empty definition,
+\verb+\renewcommand\LTcaptype{}+, will suppress increasing of the
+counter. This makes it easy to define an unnumbered variant of
+longtable:
\begin{verbatim}
\newenvironment{longtable*}
{\renewcommand\LTcaptype{}\longtable}
@@ -557,7 +578,8 @@ to run their test suite against the current release of \LaTeX{} and
\begin{verbatim}
l3build check --dev
\end{verbatim}
-to run exactly the same tests using the development release of \LaTeX{}.
+to run exactly the same tests using the development release of
+\LaTeX{}.
%\section{Changes to files in the \pkg{cyrillic} category}
More information about the latex3-commits
mailing list.