diff options
Diffstat (limited to 'macros/latex-dev/base/ltnews36.tex')
-rw-r--r-- | macros/latex-dev/base/ltnews36.tex | 243 |
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. |