% \iffalse meta-comment % % Copyright 2026 % The LaTeX Project and any individual authors listed elsewhere % in this file. % % This file is part of the LaTeX base system. % -—————————————— % % It may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c % of this license or (at your option) any later version. % The latest version of this license is in % https://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of LaTeX % version 2008 or later. % % This file has the LPPL maintenance status "maintained". % % The list of all files belonging to the LaTeX base distribution is % given in the file `manifest.txt'. See also `legal.txt' for additional % information. % % The list of derived (unpacked) files belonging to the distribution % and covered by LPPL is defined by the unpacking scripts (with % extension .ins) which are part of the distribution. % % \fi % Filename: ltnews43.tex % % This is issue 43 of LaTeX News. \NeedsTeXFormat{LaTeX2e}[2020-02-02] \documentclass{ltnews} %% Maybe needed only for Chris' inadequate system: \providecommand\Dash {\unskip \textemdash} %% NOTE: Chris' preferred hyphens! %% \showhyphens{parameters} %% \hyphenation{because} \usepackage[T1]{fontenc} \usepackage{lmodern,url,hologo} \usepackage{csquotes} \usepackage{multicol} \usepackage{color} \usepackage{amsmath} \providecommand\hook[1]{\texttt{#1}} \providecommand\meta[1]{$\langle$\textrm{\itshape#1}$\rangle$} \providecommand\option[1]{\texttt{#1}} \providecommand\env[1]{\texttt{#1}} \providecommand\Arg[1]{\texttt\{\meta{#1}\texttt\}} \providecommand\eTeX{\hologo{eTeX}} \providecommand\XeTeX{\hologo{XeTeX}} \providecommand\LuaTeX{\hologo{LuaTeX}} \providecommand\pdfTeX{\hologo{pdfTeX}} \providecommand\MiKTeX{\hologo{MiKTeX}} \providecommand\CTAN{\textsc{ctan}} \providecommand\TL{\TeX\,Live} \providecommand\githubissue[2][]{\ifhmode\unskip\fi \quad\penalty500\strut\nobreak\hfill \mbox{\small\slshape(% \href{https://github.com/latex3/latex2e/issues/\getfirstgithubissue#2 \relax}% {github issue#1 #2}% )}% \par\smallskip} % simple solution right now (just link to the first issue if there are more) \def\getfirstgithubissue#1 #2\relax{#1} % issues from the tagging-project: \providecommand\taggingissue[2][]{\ifhmode\unskip\fi \quad\penalty500\strut\nobreak\hfill \mbox{\small\slshape(% \href{https://github.com/latex3/tagging-project/issues/\getfirstgithubissue#2 \relax}% {tagging-project issue#1 #2}% )}% \par\smallskip} \providecommand\sxissue[1]{\ifhmode\unskip \else % githubissue preceding \vskip-\smallskipamount \vskip-\parskip \fi \quad\penalty500\strut\nobreak\hfill \mbox{\small\slshape(\url{https://tex.stackexchange.com/#1})}\par} \providecommand\gnatsissue[2]{\ifhmode\unskip\fi \quad\penalty500\strut\nobreak\hfill \mbox{\small\slshape(% \href{https://www.latex-project.org/cgi-bin/ltxbugs2html?pr=#1\%2F\getfirstgithubissue#2 \relax}% {gnats issue #1/#2}% )}% \par} \let\cls\pkg \providecommand\env[1]{\texttt{#1}} \providecommand\acro[1]{\textsc{#1}} \vbadness=1400 % accept slightly empty columns \let\finalpagebreak\pagebreak % for TUB (if they use it) \let\finalvspace\vspace % for document layout fixes \makeatletter % maybe not the greatest design but normally we wouldn't have subsubsections \renewcommand{\subsubsection}{% \@startsection {subsubsection}{2}{0pt}{1.5ex \@plus 1ex \@minus .2ex}% {-1em}{\@subheadingfont\colonize}% } \providecommand\colonize[1]{#1:} \makeatother % Undo ltnews's \verbatim@font with active < and > \makeatletter \def\verbatim@font{\normalsize\ttfamily} \makeatother %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \providecommand\tubcommand[1]{} \tubcommand{\input{tubltmac}} \publicationmonth{June} \publicationyear{2026 --- DRAFT version for upcoming release} \publicationissue{43} \begin{document} \maketitle {\hyphenpenalty=10000 \exhyphenpenalty=10000 \spaceskip=3.33pt \hbadness=10000 \tableofcontents} \setlength\rightskip{0pt plus 3em} \section{Introduction} % To write \section{News from the Tagged PDF project} \subsection{Improving tagging of floats} The tagging support code for floats has been overhauled. It now allows tagging support to be added to new float types like listings or tcolorboxes. By default float structures are deferred to the end of the document but it is now possible to switch this on and off and to output the floats in other places in the structure. More details can be found in \texttt{latex-lab-float.pdf}. \subsection{Setting the language in \cs{DocumentMetadata}} It is good practise to always set the main document language in \cs{DocumentMetadata} explicitly using the \texttt{lang} key: It is used to set the \texttt{/Lang} key in the PDF and its value can also be used by packages and classes to adapt locale settings. However, if there is no such setting then the code will use the main language as set by \pkg{babel} or \pkg{polyglossia}. If they are not used \texttt{lang=en} is applied as this has always been \LaTeX's default. When we introduced the \texttt{lang} key we added a warning to the log in such cases but feedback we received indicated that it caused concerns so now the fallback is applied silently. % \taggingissue{1115} \subsection{Revision of the block environments} \emph{to document: see \texttt{blocks-code.pdf} for extensive documentation} \subsection{Reimplementation of heading commands with templates} \emph{to document: see \texttt{latex-lab-sec-template.pdf} for extensive documentation} \section{New or improved commands} \subsection{Recovering instance values} In some cases, editing template instances requires knowing the existing instance values. To support this, we have added the expandable command \cs{InstanceValue}\texttt{\meta{type}\meta{instance}\meta{key}}, which returns the value if available; otherwise it returns empty if the key or instance does not exist. \subsection{Declaring alias counters} Theorem-like environments like lemmas and definitions often use the same counter for the numbering. This makes it difficult to create suitable prefixes when referencing. We have therefore added a new command \cs{newcounteralias} that allows to create an alias of a counter and so to use a counter under another name. The code is based on a similar command from the package \pkg{aliascnt}. The command \cs{newtheorem} in \LaTeX{} and also in \pkg{amsthm} has been changed to use \cs{newcounteralias}. This allows packages like \pkg{hyperref}, \pkg{zref-clever} and \pkg{cleveref} to correctly identify the environment. The following will now reference as wanted the lemma as \enquote{lemma 1} and not as \enquote{theorem 1}: \begin{verbatim} \documentclass{article} \newtheorem{theorem}{Theorem} \newtheorem{lemma}[theorem]{Lemma} \usepackage{zref-clever} \begin{document} \begin{lemma} \label{lem} ... \end{lemma} In \zcref{lem} we claim \ldots \end{document} \end{verbatim} \subsection{Optional argument for \env{picture}} The tagging code extends the \env{picture} environment to take a optional argument which can be used to add, e.g., an alternative description. This optional argument has now been added to the kernel version of the environment to make it easier for authors to write code compatible with tagged and untagged documents. If \cs{DocumentMetadata} is not used the optional argument is silently ignored. % \taggingissue{1172} \section{Code improvements} \subsection{Revision of handling of \enquote{no value} concept} The commands \cs{NewDocumentCommand}, etc., introduce the idea of differentiating an absent optional argument from one which is simply empty. When an argument is entirely empty, it is given the special \enquote{no value} marker. In previous releases, this was a deliberately-awkward set of character tokens, which are therefore hard to input accidentally. Whilst this allowed us to easily detect \enquote{no value}, it turns out there are places we want to be able to add such a value. This comes up particularly in creating templates for some parts of the document structure as part of the wider tagging project. We have therefore changed the approach to use a marker token, \cs{NoValue}, and updated the \cs{IfNoValue(TF)} test and relatives. This means you now \emph{can} type in an optional argument that is interpreted as \enquote{not present}, but this is not likely to happen by accident. \subsection{Revision of \cs{protected} status of functions in templates} As we use templates more widely, minor adjustments to the workflow are necessary. As part of this, we have adjusted templates such that keys declared as functions are stored with \cs{protected} status. \section{New or improved documentation} Adding new features to \LaTeX{} means writing new documentation. To date, each new source has had separate documentation, for example \texttt{lthooks-doc.pdf}. This is a convenient way for development to take place, particularly prior to code being stable. However, it makes it challenging to find information. We have therefore started to collect all of this information into a single document, currently called \texttt{latex-cmds.pdf}. The aim over time will be to include all of new features here. We also hope to collect up existing documentation in the longer-standing sources (going back to before \LaTeXe{}!). This is work in progress so we expect the document to grow and its structure (based on feedback and experience with it use) might change over over time. In particular, the current content is made up of files that were written to be read independently: as such, there is some duplication, suboptimal ordering and formatting variation. That will all be addressed over time, as we aim for a single coherent document. \section{Bug fixes} \subsection{Improve transparency of \cs{label}, \cs{index}, and friends} Commands such as \cs{label} or \cs{index} are supposed to be transparent with respect to surrounding spaces, i.e., spaces on both sides should not lead to several spaces in typeset text. This always worked reasonably well if there is only a single command. However, if there are several of them in a row one could end up with a spurious extra space. This has finally been corrected. % \githubissue{1910} \subsection{Global mappings for math script font families} The command \cs{DeclareMathScriptfontMapping} added in the previous release declares related font families used for scriptsize and scriptscriptsize mathematics. Previously this mapping was set locally, therefore it could not be used in \texttt{.fd} files. This has been corrected to apply globally like other font declarations. % \githubissue{1955} \section{Changes to packages in the \pkg{amsmath} category} \subsection{Treat \cs{dots} before \cs{xrightarrow} correctly} If one writes \verb=$ a \to \dots \to b $= the result is $ a \to \dots \to b $, i.e., \cs{dots} are treated as binary dots. If you replace \cs{to} with \cs{xrightarrow} then the dots suddenly become comma dots and you have to use \cs{bdots} to get the binary dots back. This has now been corrected for both \cs{xrightarrow} and \cs{xleftarrow}. % \githubissue{263} \subsection{Don't lose a qed symbol with \texttt{fleqn}} The \env{proof} environment of \pkg{amsthm} automatically puts a QED symbol at the end of a proof. Sometimes this is not the best place and in that situation that author can direct \LaTeX{} to place the symbol earlier by using \cs{qedhere} in an appropriate place. However, when the \texttt{fleqn} option was in force this didn't always work and the symbol got dropped in some cases. This has now been corrected. % \githubissue{783} %\subsection{A fix} %% Some text % %%\githubissue{XXXX} %\section{Changes to packages in the \pkg{graphics} category} \section{Changes to packages in the \pkg{tools} category} \subsection{Adjustment to the glue used by \pkg{longtable}} Recent \LaTeX{} releases produce ignored warnings about infinite glue shrinkage. The glue in \pkg{longtable} has been adjusted to only use a finite shrink component. % \githubissue{1907} \subsection{Hooks for \pkg{array} and \pkg{longtable}} We have added a number of hooks in the \pkg{array} package so that extension packages can add code at defined places without the need to overwrite internals of the \pkg{array} implementation. This will improve the maintenance of such packages because they will then not have to update when there are changes to \pkg{array} itself. The first package to make use of this is \pkg{fcolumn}. The same hooks are also available in \pkg{longtable} but only if \pkg{array} is also loaded; otherwise they are suppressed. In the future, i.e., if \cs{DocumentMetadata} is used at the start of new documents \pkg{array} is always loaded. \subsection{\pkg{varioref}: Several new variants for German} A number of options were added for German language variants, so that one can now select \texttt{austrian}, \texttt{naustrian}, \texttt{german}, \texttt{ngerman}, \texttt{swissgerman}, or \texttt{nswissgerman}. By default, they all lead to the same strings. % \githubissue{1952} \subsection{\pkg{varioref}: Updated default strings for Hungarian} The text strings for Hungarian have been corrected. At the same time a second option was added to select them, i.e., it is now possible to use either \texttt{magyar} or \texttt{hungarian} with identical results. % \githubissue{1977} %\section{Changes to files in the \pkg{cyrillic} category} \begin{thebibliography}{9}\frenchspacing %\fontsize{9.3}{11.3}\selectfont \bibitem{43:Lamport} Leslie Lamport. \newblock \emph{{\LaTeX}: {A} Document Preparation System: User's Guide and Reference Manual}. \newblock \mbox{Addison}-Wesley, Reading, MA, USA, 2nd edition, 1994. \newblock ISBN 0-201-52983-1. \newblock Reprinted with corrections in 1996. \bibitem{43:ltnews} \LaTeX{} Project Team. \emph{\LaTeXe{} news 1--42}. November, 2025. \url{https://latex-project.org/news/latex2e-news/ltnews.pdf} \end{thebibliography} \end{document}