% \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: ltnews44.tex
%
% This is issue 44 of LaTeX News.

\NeedsTeXFormat{LaTeX2e}[2020-02-02]
\DocumentMetadata{tagging=on,pdfstandard=ua-2,tagging-setup={math/setup=mathml-SE}}
\documentclass{ltnews}
\usepackage{lua-unicode-math}

%% Maybe needed only for Chris' inadequate system:
\providecommand\Dash {\unskip \textemdash}

%% NOTE: Chris' preferred hyphens!
%% \showhyphens{parameters}
%% \hyphenation{because}


\usepackage{url,hologo}

\usepackage{csquotes}
\usepackage{multicol}
\usepackage{color}

\providecommand\hook[1]{\texttt{#1}}

\providecommand\key[1]{\texttt{#1}}
\providecommand\keyvalue[1]{\texttt{#1}}

\providecommand\struct[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{November}
\publicationyear{2026  --- DRAFT version for upcoming release}
%\publicationyear{2026}

\publicationissue{44}

\begin{document}

\maketitle
{\hyphenpenalty=10000 \exhyphenpenalty=10000 \spaceskip=3.33pt \hbadness=10000
\tableofcontents}


\setlength\rightskip{0pt plus 3em}

\section{Introduction}

\emph{to write}

\section{News from the Tagged PDF project}

\emph{Point to talks about accessibility given at Calgary}

\subsection{Tags for paragraphs}

Most of the time a \emph{paragraph} just consists of a number of
sentences without any further structure. However, it is also possible
that it has a more complicated structure, e.g., it may contain a quote
or a list with some text before or after, all belonging to the same
paragraph. For example
\begin{verbatim}
  Don Knuth sends a warm welcome from afar
  and writes:
  \begin{quote}
    \sffamily Happy TeX'ing in Calgary
  \end{quote}
  This is what we did!
\end{verbatim}
To model this in the PDF structure, \LaTeX{} surrounds the whole
paragraph with a \struct{semantic-para} tag and inside individual text
blocks with their own tags, i.e., in the above example the text
\texttt{Don ... writes:} and the text \texttt{This is ...!} each with
a \struct{text-block} tag and the quote with a \struct{quote}
tag\footnote{Note that HTML does not have the context of a semantic
paragraph and would mark the text before and after the quote each with
a \struct{P} and thus effectively claiming that they are individual
paragraphs while in reality they form together a single paragraph.},
so you end up with
\begin{verbatim}
 <semantic-para>
  <text-block>
    Don Knuth sends a warm welcome from afar
    and writes:
  </text-block>
  <quote>
   <text-block>
      Happy TeX'ing in Calgary
   </text-block>
  </quote>
  <text-block>
    This is what we did!
  <text-block>
 <semantic-para>
\end{verbatim}

Initially, we called these paragraph-related tags \struct{text-unit}
(now \struct{semantic-para}) and \struct{text} (now
\struct{text-block}) but the original names were difficult to
understand, so we changed them now.

We also introduced the \struct{text-fragment} tag for use inside
\struct{text-block}s if there is a need for a sub-structure.


\subsection{Provide an \key{order} key mechanism for templates}

Templates often have to typeset several items of textual data (from
keys and/or from template arguments) with slight variations from
instance to instance, e.g., the ordering and the separation between
the items might differ or in other cases only a subset of the items
are present (or supported). For example, a theorem-like environment
typically wants to have a fixed title, a number, some punctuation, and
possibly a note (provided through document input). However, one design
might ask for \enquote{Lemma 3.2 (note)}, the next for \enquote{3.2
  Lemma. (note)}, and another for \enquote{3.2 Lemma \textit{note}.}
with a different ordering and a punctuation somewhere or not.

We have now provided code to support this in a general way, e.g.,
templates can offer an \enquote{order} key in which the designer
specifies the data items and their separation. Tagging support is
automatically provided. The documentation is currently available via
\texttt{texdoc latex-lab-template}. This will be moved to
\texttt{lttemplate} in the kernel in due course.

\subsection{Use the \key{order} key mechanism for theorem-like environments and proofs}

The theorem-like templates have been rewritten to make use of the new
\key{order} key mechanism.  As a result a number of keys got replaced
with new (more standardized) ones. Thus, for \key{title},
\key{number}, \key{note}, and \key{punct} there are now keys for
customization with the names \key{title-decls}, \key{number-decls}, etc., as
well as \key{title-format}, \key{number-format} and so on that expect
an argument.

The default for the \key{order} key in theorem-like environments is
\begin{verbatim}
  order={title,separator-1,number,
         separator-2,note,punct}
\end{verbatim}
To put the number first or the punctuation directly after the
number simply switch the names in the comma list around.

Also note that two distinct separator items are supported (both
defaulting to a space), which means that one can easily alter one or
both spaces individually simply by setting the keys \key{separator-1}
and/or \key{separator-2} on the instance.

The default for \key{order} in proofs is slightly simpler because proofs aren't
numbered so that the template has no \key{number}, \key{number-decls}
or \key{number-format} keys and consequently there can be at most a single
separator:
\begin{verbatim}
  order={title,separator,note,punct}
\end{verbatim}

This also means proofs can now have a note (which is an extension to \pkg{amsthm})
which could be given as
\begin{verbatim}
  \begin{proof}[note={my note}]
\end{verbatim}
By default the setting of the \key{note-format} key surrounds the note with parentheses.



\subsection{Fix a color leakage in theorem-like environments}

If the \key{body-decls} key was given a color specification then that
color leaked back into the caption of that theorem, because placing
the caption was delayed until a paragraph got started by which time
the body declarations were already in force.\footnote{Color in \TeX{}
is different to, say, font attributes: if you have already placed some
text in a box it still reacts to the current color when the box is
placed into the document. In contrast, font changes would have no
effect whatsoever at this point.} This was fixed as part of
the \key{order} key rewrite.
%
\taggingissue[s]{1225 and 1350}


\subsection{Revisiting the para-handling logic for block environments}

In \LaTeX{}, block environments like \env{itemize} or \env{quote}
typically scan for a following empty line and if there is none then
text following the environment is expected to belong to the current
semantic paragraph and continues it, e.g., gets no paragraph
indentation or anything else that signals the start of a new semantic
paragraph.

In some situations or for some types of block environments (such as
theorem-like environments) this behavior is not wanted. We have
therefore added a new boolean template key \key{standalone} which
if set to \keyvalue{true} causes the environment to surround itself with
implicit \cs{par} commands mimicking the effect of explicit empty lines
in the source.

We took the opportunity to also fix a couple of subtle problems with
the mechanism so that it hopefully works better in a few unusual
situations.
%
\taggingissue[s]{1402 and 1415 among others}



\subsection{Replaced \key{legacy-code} key in blockenv template}

The blockenv template had a \key{legacy-code} key, used to support
some legacy setup for the generic \env{list} environment and for the
\env{verbatim} extension offered by the \cls{ltugboat} class where
you can write \verb=\begin{verbatim}[\small]= to get a verbatim
display in a smaller font size.

However, if the \env{verbatim} was directly preceded by text the
content of the key was evaluated while still being in horizontal
mode. In that case the \cs{small} changed not only the verbatim
display but, as a side effect, also altered the \cs{baselineskip} of
the preceding text. This has been corrected by providing two keys:
\key{early-legacy-code} which is evaluted near the start of the
template, possibly still in horizontal mode (used by \env{list}) and
\key{late-legacy-code} which is evaluted after returning to
vertical mode (used by \env{verbatim}).
%
\taggingissue{1503}



\subsection{Make \cs{item}\texttt{[]} produce an empty item label}

After switching to key/value support in \cs{item} a side effect was
that an empty optional argument was understood as an empty key/value
list and not as a request for replacing the generated item label with
an empty one. This has now been changed for better compatibility with
existing usage.
%
\taggingissue{1557}


\subsection{Use the \key{order} key mechanism for heading commands}

In \LaTeX{} release 2026-06-01 we provided a reimplementation of
heading commands using templates. The initial set of templates had
only limited flexibility, modeling layouts closely related to those from
the standard \LaTeX classes. As a consequence, they used keys such as
\key{number-title-sep} to define the space between heading number and
title on the assumption that both are placed exactly in that order.

We have now written new extended the templates to allow for reordering
of heading elements and more flexible spacing between them, but in
that scenario such keys do no longer make sense and therefore have
been replaced with more generic keys such as \key{separator-a},
\key{separator-b}, etc. not taking a length value but accepting
general code.


If you have defined instances using the first template version
then you can (for now) continue to use them simply by changing the
template names in your instance declarations from \meta{name} to
\meta{name}\texttt{-v1}, e.g., you have to change from
\begin{verbatim}
 \DeclareInstance
     {heading}{chapter}{display} {...}
 \DeclareInstance{headformat}
     {heading}{chapter}{display} {...}

 \DeclareInstance{heading}
     {section}{hang} { ... }
 \DeclareInstance{headformat}
     {section}{hang} { ... }
 ...
\end{verbatim}
  to 
\begin{verbatim}
 \DeclareInstance
     {heading}{chapter}{display-v1} {...}
 \DeclareInstance{headformat}
     {heading}{chapter}{display-v1} {...}

 \DeclareInstance{heading}
     {section}{hang-v1} { ... }
 \DeclareInstance{headformat}
     {section}{hang-v1} { ... }
 ...
\end{verbatim}
No other changes are necessary for now. However, going forward
you should switch to the extended templates because the
\texttt{-v1} templates will eventually be dropped. 
%
How to upgrade to the new templates is explained in \texttt{texdoc
  latex-lab-sec-template}.


\subsection{Support \key{force-unnumbered} key in heading templates}

\emph{to write}
%
\taggingissue{1473}



\subsection{Support \key{placement=ragged} in heading templates}

The \key{placement} key in heading templates was augmented to support the value
\keyvalue{ragged} in addition to \keyvalue{page}, \keyvalue{top}, and
\keyvalue{normal}. This key value works like \keyvalue{normal} (i.e., the heading
can appear anywhere on the page) but if the heading happens to trigger a page
break then the previous page will be set \enquote{raggedbottom} and
not spread out to fill the page in the \cls{book} or \cls{report}
classes. This is useful on pages that do not have a lot of
stretchability in the first place and thus the space between
paragraphs is used for stretching which often looks ugly.

It can either be specified on the instance level by setting the
\key{placement} key to \keyvalue{ragged} or for individual headings in
the document by setting it in the optional argument to the heading.
%
\githubissue{1844}


\subsection{Heading templates now support column spanning}

In twocolumn documents top-level headings usually start on a new page
and span both columns. In \LaTeXe{} this was hardwired and headings
such as \cs{chapter} showed this behavior. In the new template-based
implementation this is now more flexible and one sets this
independently from forcing a new page by setting the key
\key{column-spanning} to \keyvalue{true} (default for \cs{chapter})
or \keyvalue{false} (default for other headings).  Thus
\begin{verbatim}
  \section[column-spanning=true]{title}
\end{verbatim}
generates a one-off \cs{section} heading that spans both columns. Due
to the way the \LaTeX{} output routine is currently implemented that
automatically also starts a new page, i.e., one can't generate
spanning headings in the middle of a page (that can only be done with
the \pkg{multicol} package at the moment). That restriction may be
lifted when the output routine is redefined.
%
\taggingissue{1436}





\subsection{Heading template instances for AMS classes}

\emph{to write, including \cs{AddPunct}}
%
\taggingissue{1477}


\subsection{Package \pkg{fncychap} is now tagging compatible}

The \pkg{fncychap} packages defines half a dozen chapter layouts that
can be selected through options to the package. The layouts can
then be further customized through a serious of commands defined by
the package. Due to its age and the fact that it overwrote various
internals, the resulting chapter headings were not usable when
producing a tagged and accessible document.

We have now provided a simple template with appropriate tagging
support (but without any customization keys) that makes use of the
code in the package and this way supports all the heading designs
offered by the package as well as the customization possibilities
provided by the package. With these fairly minor adjustments the
package is now compatible with tagging and can be used when making
accessible documents.
%
Because of the customization possibilities that allow for arbitrary
rewrites we have to make the tagging support fairly general to cover
such variants. There is a downside to this: in several designs we end up
with a number of empty \texttt{heading-fragment} structures. While this
is allowed and doesn't do any harm (other than resulting in some
unnecessary processing by the PDF reader) it is not as elegant as a
solution with standard templates would be.
%
\taggingissue{570}




\subsection{\cs{newlist} failed for \texttt{description} lists}

The emulation of \pkg{enumitem}'s \cs{newlist} declaration failed when
the source list was \texttt{description}. This has now been corrected.
%
\taggingissue{1518}


\subsection{Storing more titles for named references}

When using the \pkg{nameref} package it is possible to reference the names of theorems (as given by the optional argument) and to reference the optional argument of items of description lists. \pkg{nameref} made this possible by patching the internal commands of theorems and lists. These patches no longer worked with the new theorem and list code when \cs{DocumentMetadata} is used. This has now been repaired: Theorems and items with optional arguments will update \cs{@currentlabelname} and so allow \cs{label} to store this value for later reference. Items will also store the optional argument in \cs{@currentlabel} and so \cs{ref} will reference this value:
\begin{verbatim}
\begin{enumerate}
\item First item 
\item[1b] \label{item}
\end{enumerate}
\ref{item} % gives now 1b
\end{verbatim}
\taggingissue{1538}

\section{New or improved commands}

\subsection{Testing if a certain template is defined}

To better support the declaration of template instances we now provide the
conditional \cs{IfTemplateExistsTF} (and its \texttt{T} and \texttt{F}
variants) so that it is possible to take different actions depending
on whether or not a certain template is declared.





\section{Code improvements}

\subsection{Support for \cs{UseName} in template key bindings}

We have extended the logic in the key-binding argument for
\cs{DeclareTemplateCode}, such that you can use the keyword
\texttt{name} here (in addition to \texttt{global}) without any
performance impact when using templates. This allows automatic
variable creation with \enquote{awkward} characters, most notably
\texttt{-} and numerals. Of course, such variables then also need to
be referred to via \cs{UseName} or some equivalent method in the code,
so this is only useful if there is a pressing need for such special
names.

\subsection{Further removal of \enquote{fake math} from the kernel}

In the previous release, we removed most use of \enquote{fake math}
(math mode not denoting a formula but used for positioning or
manipulating text material) from the kernel~\cite{44:ltnews}. The use
of \cs{underline} in text mode was missed in that update: this has now
been addressed.



\section{Bug fixes}

\subsection{Avoid problems with page breaks in the middle of
  verbatim-like environments}

The fix we announced in \LaTeX{} News~41~\cite[p.\,116]{44:ltnews} was
incomplete: we missed out resetting the \cs{catcode} of comma. This
was now corrected.
%
\githubissue{2056}



\subsection{Support nested requests for class or package target dates}

If one loads a package with
\cs{usepackage}\texttt{\{\meta{package}\}[=\meta{date}]} then this
means the package version current at \meta{date} should be loaded.
For document classes \cs{documentclass} offers the same interface.
Inside a package or a class a developer can produce conditional code
that depends on the requested target date (if any) by using the
command \cs{IfTargetDateBefore}, see \cite{44:rollback} for an article
on this functionality.

Unfortunately, using the the optional argument on one package had
effects on the behavior of \cs{IfTargetDateBefore} in all following
code, i.e., it was not confined to that package code for which this
request was made. This has now been corrected.
%
\githubissue{828}


\section{Changes to packages in the \pkg{amsmath} category}

\subsection{Drop special handling for \LuaTeX\ in \cs{genfrac}}

The \cs{genfrac} command relies on engine functionality to place delimiters
around fractions in traditional \TeX\ engines but emulated this functionality
in \XeTeX\ and \LuaTeX. For \LuaTeX\ this emulation was broken and is not
needed and interferes with tagging, therefore it has been removed.
%
\githubissue{432}

%\section{Changes to packages in the \pkg{graphics} category}

%\section{Changes to packages in the \pkg{tools} category}

%\section{Changes to files in the \pkg{cyrillic} category}

\section{Documentation changes}

\subsection{Tagging \LaTeX{} News}

We have adjusted the sources for \emph{\LaTeX{} News} (including this news!) to
enabling tagging (PDF/UA-2) automatically. This applies to the combined
newsletters and each individual file. This is part of our effort to make all
\LaTeX{} documentation accessible over time.

\subsection{US Spelling}

We have (finally) decided that standardizing the spelling in the \LaTeX{}
sources to use US-English is the realistic position.\footnote{None of the native
English speakers on the team are from the US!} This means that the
documentation better aligns with the code. Note that idiom may still be more
varied: this is harder to adjust than spelling.

\begin{thebibliography}{9}\frenchspacing

%\fontsize{9.3}{11.3}\selectfont

\iffalse
  
\bibitem{44: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.

\fi

\bibitem{44:ltnews} \LaTeX{} Project Team.
  \emph{\LaTeXe{} news 1--44}. November, 2026.
  \url{https://latex-project.org/news/latex2e-news/ltnews.pdf}

\bibitem{44:rollback} Frank Mittelbach
  \emph{A rollback concept for packages and classes}. \textsl{TUGboat} 39:2, 2018.
  \url{https://latex-project.org/publications/2018-FMi-TUB-tb122mitt-version-rollback.pdf}
  
\end{thebibliography}

\end{document}
