summaryrefslogtreecommitdiff
path: root/macros/latex-dev/base/ltnews36.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex-dev/base/ltnews36.tex')
-rw-r--r--macros/latex-dev/base/ltnews36.tex243
1 files changed, 227 insertions, 16 deletions
diff --git a/macros/latex-dev/base/ltnews36.tex b/macros/latex-dev/base/ltnews36.tex
index df72bc1d64..55de98628c 100644
--- a/macros/latex-dev/base/ltnews36.tex
+++ b/macros/latex-dev/base/ltnews36.tex
@@ -143,8 +143,72 @@
\section{Introduction}
+\emph{to be written}
+
+
+\subsection{Auto-detecting key--value arguments}
+
+To allow extension of the core \LaTeX{} syntax, \pkg{ltcmd} now supports
+a \texttt{={...}} modifier when grabbing arguments. This modifier instructs
+\LaTeX{} that the argument should be passed to the underlying code as
+a set of keyvals. If the argument does not \enquote{look like} a set
+of keyvals, it will be converted into a single key--value pair, with
+the argument to \texttt{=} specifying the name of that key. For
+example, the \cs{caption} command could be defined as
+\begin{verbatim}
+ \DeclareDocumentCommand\caption
+ {s ={short-text}+O{#3} +m}
+ {...}
+\end{verbatim}
+which would mean that if the optional argument does \emph{not}
+contain keyval data, it will be converted to a single keyval
+pair with the key name \texttt{short-text}.
+
+Arguments which begin with \texttt{=,} are always interpreted as
+keyvals even if they do not contain further \texttt{=} signs.
+Any \texttt{=} signs enclosed within \verb|$...$| or \verb|\(...\)|,
+i.e.~in inline math mode, are ignored, meaning that
+only \texttt{=} outside of math mode will generally cause
+interpretation as keyval material.
+
+In case the argument contains a \enquote{textual} \texttt{=} sign that
+is mistaken as key/value indicator you can hide it using a brace
+group as you would do in other places, e.g.,
+\begin{verbatim}
+\caption[{Use of = signs}]
+ {Use of = signs in optional arguments}
+\end{verbatim}
+However, because a \texttt{=} sign in math mode are already ignored, this
+should seldom be necessary.
+
+\subsection{Encoding subsets for \texttt{TS1} encoded fonts}
+
+The text companion encoding \texttt{TS1} is unfortunately not very
+faithfully supported in fonts that are not close cousins to the
+Computer Modern fonts. It was therefore necessary to provide the
+notion of \enquote{sub-encodings} on a per font basis. These
+sub-encodings are declared for a font family with the help of a
+\cs{DeclareEncodingSubset} declaration, see \cite{36:fntguide} for
+details.
+
+Maintainers of font bundles that include \texttt{TS1} encoded font
+files should add an appropriate declaration into the corresponding
+\texttt{ts1}\textit{family}\texttt{.fd} file, because otherwise the
+default subencoding is assumed, which is probably disabling too many
+glyphs that are actually available in the font.\footnote{The \LaTeX{}
+ format contains declarations for many font families already. This
+ was done in 2020 to quickstart the use of the symbols in the kernel,
+ but it is really the wrong place for such declarations. Thus, for
+ new fonts the declarations should be placed into the corresponding
+ \texttt{.fd} files.}
+%
+\githubissue{905}
+
+
+
\section{New or improved commands}
+
\section{Code improvements}
\subsection{Support for slanted small caps in the EC-fonts }
@@ -168,22 +232,161 @@ will give the expected result: {\fontfamily{cmr}
\subsection{EC sans serif at small sizes}
+
The EC (T1 encoded Computer Modern) sans serif fonts have errors at
-small sizes. (The medium weight is bolder and wider than the bold
-extended) The default \texttt{.fd} file has been adjusted to use a
-scaled 8pt font.
+small sizes: the medium weight is bolder and wider than the bold
+extended. This makes them unusable at these small sizes. The default
+\texttt{.fd} file has therefore been adjusted to use a scaled down 8pt
+font instead.
%
\githubissue{879}
+\subsection{Detect nested \texttt{minipage} environments}
+
+Nesting of \texttt{minipage} environments is only partially supported
+in \LaTeX{} and can lead to incorrect output, such as overfull boxes
+or footnotes appearing in the wrong place;
+see~\cite[p.~106]{36:Lamport}. However, until now there was no warning
+if that happpened. This has been changed and the environment now
+warns if you nest it in another \texttt{minipage} environment that
+already contains footnotes.
+%
+\githubissue{168}
+
+
+
+\subsection{\LuaTeX\ callback efficiency improvement}
+
+The mechanism for providing the
+\texttt{pre/post\_mlist\_to\_hlist\_filter} callbacks in \LuaTeX\ has
+been improved to make it more reusable and to avoid overhead if these
+callbacks are not used.
+%
+\githubissue{830}
+
+
+
+\subsection{Improve \pkg{l3docstrip} integration into \pkg{docstrip}}
+
+In 2020 we merged \pkg{l3docstrip.tex} into \pkg{docstrip.tex} to
+support the \texttt{\%\string<@@=\meta{module}\string>} syntax of
+\pkg{expl3}; see~\cite{36:ltnews32}. However, this support was
+incomplete, because it didn't cover \pkg{docstrip} lines of the form
+\texttt{\%<+...>} or \texttt{\%<-...>}. This was never noticed until
+now, because usually \texttt{\%<*...>} blocks are used. Now all lines
+in a \texttt{.dtx} file are subject to the \texttt{@@} replacement
+approach.
+%
+\githubissue{903}
+
+
+
+\subsection{Improve font series handling with incorrect \texttt{.fd} files}
+
+By convention, the font series value is supposed to contain no
+\texttt{m}, unless you refer to the \enquote{medium} series (which is
+represented by a single \texttt{m}). For example, one should write
+\texttt{c} for \enquote{medium weight, condensed width} and not
+\texttt{mc}. This was one of the many space-conserving methods
+necessary in the early days of \LaTeXe.
+
+Some older \texttt{.fd} files
+do not obey that convention but use \texttt{mc}, \texttt{bm}, etc., in
+their declarations. As a result, some font selection scheme
+functionality was not working when confronted with such \texttt{.fd}
+files. We have therefore augmented \cs{DeclareSymbolFont} and
+\cs{SetSymbolFont} to strip their series argument from any surplus
+\texttt{m} so that they do not unnecessarily trigger font
+substitutions. Regardless of this support such
+\texttt{.fd} files should get fixed by their maintainers.
+%
+\githubissue{918}
+
+
+
\section{Bug fixes}
+\subsection{Prevent \TeX{} from loosing a \cs{smash}}
+
+When \TeX{} is typesetting a fraction, it will rebox the material in
+either numerator or the denumerator depending on which is wider. If
+the repackaged part consists of a single box, that box gets new
+dimensions and if it was built using a \cs{smash} that effect vanishes
+(because a smash is nothing other than zeroing some box dimension,
+which now got undone). For example, in the line
+\begin{verbatim}
+\frac{1}{2} = \frac{1}{\smash{2^X}}
+ \neq \frac{100}{\smash{2^X}}
+\end{verbatim}
+the $2$ in the denominators was not always at the same vertical position, because
+the second \cs{smash} was ignored due to reboxing:
+\[
+\makeatletter
+\def\mathsm@sh#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh} % old definition
+\makeatother
+\newcommand*\drawbaseline{\rlap{\vrule width 60pt height 0.1pt depth 0pt }}
+\frac{1}{\drawbaseline2} = \frac{1}{\smash{2^X}} \neq
+\frac{100}{\smash{2^X}}
+\]
+The differences are subtle but noticeable. This is now corrected and the \cs{smash} is always
+honored. Thus now you get this output:
+\[
+\newcommand*\drawbaseline{\rlap{\vrule width 60pt height 0.1pt depth 0pt }}
+\frac{1}{\drawbaseline2} = \frac{1}{\smash{2^X}} \neq
+\frac{100}{\smash{2^X}}
+\]
+%
+\githubissue{517}
+
+
+\subsection{Resolve an issue with \cs{mathchoice} and \texttt{localalphabets}}
+
+The code for keeping a number of math alphabetcs local (introduced in
+2021; see~\cite{36:ltnews34}) used \cs{aftergroup} to do some cleanup actions after a
+formula had finished. Unfortunately, \cs{aftergroup} can't be used
+inside the arguments of the \cs{mathchoice} primitive and as a result one
+got low-level errors if the freezing happened in such a place. The
+implementation was therefore revised to avoid the \cs{aftergroup}
+approach altogether.
+%
+\githubissue{921}
+
+
+
\section{Changes to packages in the \pkg{amsmath} category}
+
\section{Changes to packages in the \pkg{graphics} category}
+\subsection{Fix a \cs{mathcolor} bug}
+
+The \cs{mathcolor} command intorduced in \cite{36:ltnews35} needs to
+scan for following sub and superscripts, but if it did so at the end
+of an alignment cell, e.g., in a \texttt{array} environment, the
+\texttt{\&} was evaluated too early causing some internal errors. This
+is now properly guarded for.
+%
+\githubissue{901}
+
+
+
\section{Changes to packages in the \pkg{tools} category}
+\subsection{\pkg{array}: Correctly identify single-line m-cells}
+
+Cells in m-columns that only contain a single line are supposed to
+behave like single-line p-cells and align at the same baseline. To
+test for the condition, \pkg{array} used to compare the height of the cell to
+the height of the strut used for the table rows. However, the height of that
+strut depends on the setting of \cs{arraystretch} and if you made this
+negative (or very large) the test came out wrong. Therefore, we now
+test against the height of a normal strut to ensure that single-line
+cells are correctly identified as such (unless their content is truly very
+tall, in which case aligning is pointless anyway).
+%
+\githubissue{766}
+
\medskip
@@ -199,22 +402,30 @@ scaled 8pt font.
% \emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\
% \url{https://latex-project.org/help/documentation/}
-%\bibitem{36:ltnews31} \LaTeX{} Project Team:
-% \emph{\LaTeXe{} news 31}.\\
-% \url{https://latex-project.org/news/latex2e-news/ltnews31.pdf}
+\bibitem{36:Lamport}
+Leslie Lamport.
+\newblock {\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{36:ltnews32} \LaTeX{} Project Team:
-% \emph{\LaTeXe{} news 32}.\\
-% \url{https://latex-project.org/news/latex2e-news/ltnews32.pdf}
+\bibitem{36:ltnews32} \LaTeX{} Project Team:
+ \emph{\LaTeXe{} news 32}.\\
+ \url{https://latex-project.org/news/latex2e-news/ltnews32.pdf}
-%\bibitem{36:ltnews33} \LaTeX{} Project Team:
-% \emph{\LaTeXe{} news 33}.\\
-% \url{https://latex-project.org/news/latex2e-news/ltnews33.pdf}
+\bibitem{36:ltnews34} \LaTeX{} Project Team:
+ \emph{\LaTeXe{} news 34}.\\
+ \url{https://latex-project.org/news/latex2e-news/ltnews34.pdf}
+
+\bibitem{36:ltnews35} \LaTeX{} Project Team:
+ \emph{\LaTeXe{} news 35}.\\
+ \url{https://latex-project.org/news/latex2e-news/ltnews35.pdf}
+
+\bibitem{36:fntguide} \LaTeX{} Project Team:
+ \emph{\LaTeXe{} font selection}.\\
+ \url{https://latex-project.org/help/documentation/}
-%\bibitem{36:ltnews34} \LaTeX{} Project Team:
-% \emph{\LaTeXe{} news 34}.\\
-% \url{https://latex-project.org/news/latex2e-news/ltnews34.pdf}
-%
%\bibitem{36:ltfilehook-doc} Frank Mittelbach, Phelype Oleinik, \LaTeX{}~Project~Team:
% \emph{The \texttt{\upshape ltfilehook} documentation}.\\
% Run \texttt{texdoc} \texttt{ltfilehook-doc} to view.