% \iffalse meta-comment
%
% Copyright (C) 1993-2025
% 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
%    http://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: ltnews20.tex
%
% This is issue 20 of LaTeX News.

\documentclass{ltnews}

\usepackage[T1]{fontenc}

\usepackage{lmodern,url}

\publicationday{27}
\publicationmonth{June}
\publicationyear{2011}

\publicationissue{20}

\providecommand\pkg[1]{\texttt{#1}}
\providecommand\cls[1]{\texttt{#1}}
\providecommand\option[1]{\texttt{#1}}
\providecommand\env[1]{\texttt{#1}}
\providecommand\file[1]{\texttt{#1}}

\begin{document}

\maketitle

\section{Scheduled \LaTeX\ bug-fix release}

This issue of \LaTeX~News marks the first bug-fix release of
\LaTeXe\ since shifting to a new build system in 2009.
Provided sufficient changes are made each year, we expect to
repeat such releases once per year to stay in sync with \TeX\ Live.
Due to the excitement of \TeX's $2^5$-th birthday last year,
we missed our window of opportunity to do so for 2010.
This situation has been rectified this year!

\section{Continued development}

The \LaTeXe\ program is no longer being actively developed, as any
non-negligible changes now could have dramatic backwards compatibility
issues with old documents. Similarly, new features cannot be added to
the kernel since any new documents written now would then be
incompatible with legacy versions of \LaTeX.

The situation on the package level is quite different though. While
most of us have stopped developing packages for \LaTeXe{} there are
many contributing developers that continue to enrich \LaTeXe{} by
providing or extending add-on packages with new or better
functionality.

However, the \LaTeX\ team certainly recognises that there are
improvements to be made to the kernel code; over the last few years we
have been working on building, expanding, and solidifying the
\textsf{expl3} programming layer for future \LaTeX\ development. We
are using \textsf{expl3} to build new interfaces for package
development and tools for document design. Progress here is
continuing.

\section{Release notes}

In addition to a few small documentation fixes, the following changes
have been made to the \LaTeXe\ code; in accordance with the philosophy
of minimising forwards and backwards compatibility problems, most of
these will not be noticeable to the regular \LaTeX\ user.

\paragraph{Font subsets covered by Latin Modern and \TeX\ Gyre}

The Latin Modern and \TeX\ Gyre fonts are a modern suite of families based
on the well-known Computer Modern and `PostScript 16' families with many additional
characters for high-quality multilingual typesetting.%
\footnote{%
  See their respective TUGboat articles for more information:\\
  \url{http://www.tug.org/TUGboat/tb24-1/jackowski.pdf}\\
  \url{http://www.tug.org/TUGboat/tb27-2/tb87hagen-gyre.pdf}%
}

Information about their symbol coverage in the \verb|TS1| encoding is now included
in \pkg{textcomp}'s default font definitions.


\paragraph{Redefinition of \cs{enddocument}}

Inside the definition of \verb=\end{document}= the \texttt{.aux} file
is read back in to resolve cross-references and build the table of
contents etc. From 2.09 days this was done using \verb=\input= without
any surrounding braces which could lead to some issues in boundary
cases, especially if \verb=\input= was redefined by some package. It
was therefore changed to use \LaTeXe{}'s internal name for this
function. As a result, packages that modify \verb=\enddocument= other
than through the officially provided hooks may need to get updated.

\paragraph{Small improvement with split footnotes in \pkg{ftnright}}

If in the first column there is more than a full column worth of
footnote material the material will be split resulting in footnotes
out of order. This issue is now at least detected and generates an
error but the algorithm used by the package is unable to gracefully
handle it in an automated fashion (some alternatives for resolving the
problem if it happens are given in the package documentation).

\paragraph{Improvement in \file{xspace} and font-switching}

The \file{xspace} package provides the command \verb|\xspace|
which attempts to be clever about inserting spaces automatically
after user-defined control sequences.
An important bug fix has been made to this command to correct its
behaviour when used in conjunction with font-switching commands
such as \verb|\emph| and \verb|\textbf|.
Previously, writing
\begin{verbatim}
  \newcommand\foo{foo\xspace}
  ... \emph{\foo}  bar baz
  ... \emph{\foo}, bar baz
\end{verbatim}
would result in an extraneous space being inserted after `foo' in
both cases; this has now been corrected.


\paragraph{RTL in \file{multicol}}

 The 1.7 release of \file{multicol} adds support for languages that
 are typeset right-to-left. For those languages the order of the
 columns on the page also needs to be reversed---something that wasn't
 possible in earlier releases.

The new feature is supported through the
commands \verb|\RLmulticolcolumns| (switching to right-to-left typesetting)
and \verb|\LRmulticolcolumns| (switching to left-to-right typesetting) the
latter being the default.

\paragraph{Improve French \file{babel} interaction with \file{varioref}}

 Extracting and saving the page number turned out to be a source of
 subtle bugs. Initially it was done through an \verb"\edef" with a
 bunch of \verb"\expandafter" commands inside. This posed a problem if
 the page number itself contained code which needed protection (e.g.,
 pr/4080) so this got changed in the last release to use
 \verb"\protected@edef". However, that in turn failed with Babel (bug
 report/4093) if the label contained active characters, e.g., a ``:''
 in French. So now we use (after one failed attempt pr/4159) even more
 \verb"\expandafter" commands and \verb"\romannumeral" trickery to
 avoid any expansion other than what is absolutely required---making
 the code in that space absolutely unreadable.
\begin{verbatim}
  \expandafter\def\expandafter#1\expandafter{%
  \romannumeral
    \expandafter\expandafter\expandafter
  \z@
  \expandafter \@cdr
  \romannumeral
    \expandafter\expandafter\expandafter
  \z@
  \csname r@#2\endcsname\@nil}%
\end{verbatim}
Code like this nicely demonstrates the limitations in the programming
layer of \LaTeXe{} and the advantages that \textsf{expl3} will offer
on this level.

\end{document}
