From 745892fbddea56040139108277e728b53fd8fc11 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 28 May 2020 03:03:21 +0000 Subject: CTAN sync 202005280303 --- macros/latex-dev/base/ltnews32.tex | 406 ++++++++++++++++++++++++++++++++++++- 1 file changed, 397 insertions(+), 9 deletions(-) (limited to 'macros/latex-dev/base/ltnews32.tex') diff --git a/macros/latex-dev/base/ltnews32.tex b/macros/latex-dev/base/ltnews32.tex index bd1ebffb10..fdf8211ef0 100644 --- a/macros/latex-dev/base/ltnews32.tex +++ b/macros/latex-dev/base/ltnews32.tex @@ -43,6 +43,7 @@ \providecommand\meta[1]{$\langle$\textit{#1}$\rangle$} \providecommand\option[1]{\texttt{#1}} \providecommand\env[1]{\texttt{#1}} +\providecommand\Arg[1]{\texttt\{\meta{#1}\texttt\}} \providecommand\XeTeX{\hologo{XeTeX}} @@ -141,6 +142,51 @@ This document is under construction \ldots +\section{Providing \pkg{xparse} in the format} + +The official interface in the \LaTeXe{} kernel for creating +document-level commands has always been \cs{newcommand}. This was a +big step forward from \LaTeX~2.09. However, it was still very limited +in the types of command it can create: those taking at most one +optional argument in square brackets, then zero or more mandatory +arguments. Richer syntaxes required use of the \TeX{} \cs{def} +primitive along with appropriate low-level macro programming. + +The \LaTeX{} team started work on a comprehensive document-command +parser, \pkg{xparse}, in the late 1990s. In the past decade, the +experimental ideas it provides have been carefully worked through and +moved to a stable footing. As such, \pkg{xparse} is now used to define +a very large number of document and package commands. It does this by +providing a rich and self-consistent syntax to describe a wide range +interfaces seen in \LaTeX{} packages. + +The ideas developed in \pkg{xparse} are now sufficiently well-tested +that the majority can be transferred into the \LaTeX{} kernel. Thus +the following commands have been added +\begin{itemize} + \item \cs{NewDocumentCommand}, \cs{RenewDocumentCommand}, + \cs{ProvideDocumentCommand}, \cs{DeclareDocumentCommand} + \item \cs{NewExpandableDocumentCommand}, \cs{RenewExpandableDocumentCommand}, + \cs{ProvideExpandableDocumentCommand}, \cs{DeclareExpandableDocumentCommand} + \item \cs{NewDocumentEnvironment}, \cs{RenewDocumentEnvironment}, + \cs{ProvideDocumentEnvironment}, \cs{DeclareDocumentEnvironment} + \item \cs{BooleanTrue} \cs{BooleanFalse} + \item \cs{IfBooleanTF}, \cs{IfBooleanT}, \cs{IfBooleanF} + \item \cs{IfNoValueTF}, \cs{IfNoValueT}, \cs{IfNoValueF} + \item \cs{IfValueTF}, \cs{IfValueT}, \cs{IfValueF} + \item \cs{SplitArgument}, \cs{SplitList}, \cs{TrimSpaces}, + \cs{ProcessList}, \cs{ReverseBoolean} + \item \cs{GetDocumentCommandArgSpec} + \cs{GetDocumentEnvironmentArgSpec} +\end{itemize} + +Most, but not all, of the argument types defined by \pkg{xparse} are +now supported at the kernel level. In particular, the types +\texttt{g}/\texttt{G}, \texttt{l} and \texttt{u} are \emph{not} provided by +the kernel code; these are deprecated but still available by +explicitly loading \pkg{xparse}. All other argument types \emph{are} +now available directly within the \LaTeXe{} kernel. + \section{Other changes to the \LaTeX{} kernel} @@ -149,7 +195,7 @@ This document is under construction \ldots The \LaTeXe{} kernel defines the command \cs{symbol}, which allows characters to be typeset by entering their `slot number'. With the \LuaTeX{} and \XeTeX{} engines, these slot numbers can extend to very -large values to accomodate Unicode characters in the upper Unicode +large values to accommodate Unicode characters in the upper Unicode planes (e.g., bold mathematical capital A is slot number \texttt{"1D400} in hex or \texttt{119808} in decimal). The \XeTeX{} engine did not allow \cs{symbol} in math mode for values above @@ -158,23 +204,108 @@ $2^{16}$, and this limitation has now been lifted. \githubissue{124} +\subsection{Correct Unicode value of \cs{=y} (\=y)} + +The Unicode slot for \=y was incorrectly pointing to the slot for +\=Y. This has been corrected. +% +\githubissue{326} + +\subsection{Add support for Unicode soft hyphens} + +For a long time, the UTF-8 option for \pkg{inputenc} made the Unicode +soft hyphen character (U+00AD) an alias for the \LaTeX\ soft hyphen +\cs{-}. The Unicode engines \XeTeX{} and \LuaTeX{} behaved +different though: They either ignored U+00AD or interpreted it as an +unconditional hyphen. This inconsistency is fixed now and \LaTeX{} +always treats \texttt{U+00AD} as \cs{-}. +% +\githubissue{323} + + + +\subsection{Fix capital accents in Unicode engines} + +In Unicode engines the capital accents such as \cs{capitalcedilla}, +etc.\ have been implemented as trival short hands for the normal +accents (because other than Computer Modern virtually no fonts support +them), but that failed when \pkg{hyperref} got loaded. This has been +corrected. +% +\githubissue{332} + + + +\subsection{Support \pkg{calc} in various kernel commands} + +The \cs{hspace}, \cs{vspace}, \cs{addvspace}, \cs{\textbackslash} and +other commands simply passed their argument to a \TeX{} primitive to +produce the necessary space. As a result it was impossible to specify +anything other than a simple dimension value in such arguments. This +has been changed, so that now \pkg{calc} syntax is also supported with +these commands. +% +\githubissue{152} + +\subsection{Spaces in filenames of included files} + +File names containing spaces lead to unexpected results when used in +the commands \cs{include} and \cs{includeonly}. This has now been +fixed and the argument to \cs{include} can contain file name +containing spaces. Leading or trailing spaces will be stripped off +but spaces within the file name are kept. The argument to +\cs{includeonly}, which is a comma-separated list of files to process, +can also contain spaces with any leading and trailing spaces stripped +from the individual filenames while the spaces \emph{in} the file +names will remain intact. +% +\githubissue{217} + + + +\subsection{Set a non-zero \cs{baselineskip} in text scripts} + +As \cs{textsuperscript} and \cs{textsubscript} usually contain only a +few characters on a single line the \cs{baselineskip} was set to +zero. However, \pkg{hyperref} uses that value to determine the height +of a link box which consequently came out far too small. This has +been adjusted. +% +\githubissue{249} + + \subsection{Spacing issues when using \cs{linethickness}} In some circumstances the use of \cs{linethickness} introduced a spurious space that shifted objects in a \texttt{picture} environments to the right. This has been corrected. % -\githubissue{270} +\githubissue{274} + + + +\subsection{Better support for the legacy series default interface} + +In the initial implementation of \LaTeX's font selection scheme (NFSS) +changes to any default where always carried out by redefining some +commands, e.g., \cs{seriesdefault}. In 2019 we introduced various +extensions and with it new methods of customising certain parts of +NFSS, e.g., the recommended way for changing the series default(s) is +now through \cs{DeclareFontSeriesDefault}~\cite{32:ltnews31}. In this +release we improved the support for legacy documents using the old +method was improved to cover additional edge cases. +% +\githubissue[s]{306,315} -\subsection{Better support for uncommon font series defaults} +\subsection{Support for uncommon font series defaults} If a font family was set up with fairly unusual font series defaults, e.g., \begin{verbatim} -\renewcommand\ttdefault{lmvtt} -\DeclareFontSeriesDefault[tt]{md}{lm} -\DeclareFontSeriesDefault[tt]{bf}{bm} + \renewcommand\ttdefault{lmvtt} + \DeclareFontSeriesDefault[tt]{md}{lm} + \DeclareFontSeriesDefault[tt]{bf}{bm} \end{verbatim} then a switch between the main document families, e.g., \verb=\ttfamily...\rmfamily= did not always correctly continued @@ -185,6 +316,49 @@ been corrected. \githubissue{291} +\subsection{Checking the current font series context} + +Sometimes it is necessary to define commands that act differently when +used in bold context (e.g., inside \cs{textbf}. Now that it is +possible in \LaTeX{} to specify different \enquote{\texttt{bf}} +defaults based for each of the three meta families (\texttt{rm}, +\texttt{sf} and \texttt{tt}) via \cs{DeclareFontSeriesDefault}, it is +not any longer easy to answer the question \enquote{am I typsetting in + a bold context?}. To help with this problem a new command was provided: +\begin{quote} + \cs{IfFontSeriesContextTF}\Arg{context}\\ + \hspace*{4em} \Arg{true code}\Arg{false code} +\end{quote} +The \meta{context} can be either \texttt{bf} (bold) or \texttt{md} +(medium) and depending on whether or not the current font is +recognized as being selected through \cs{bfseries} or \cs{mdseries} +the \meta{true code} or \meta{false code} is executed. +As an example +\begin{verbatim} +\usepackage{bm} % (bold math) +\newcommand\vbeta{\IfFontSeriesContextTF{bf}% + {\ensuremath{\bm{\beta}}}% + {\ensuremath{\beta}}} +\end{verbatim} +This way you can write \cs{vbeta}\texttt{-isotopes} and if used in a +heading it comes out in a bolder version. +% +\githubissue{336} + + +\subsection{Avoid spurious package option warning} + +When a package is loaded with a number of options, say \texttt{X}, +\texttt{Y} and \texttt{Z}, and then later another loading attempt was +made with a subset of the options or no options, it was possible that +you got an error message that option \texttt{X} is not known to the +package. This obviously incorrect error was due to some timing issue +where the list of available options got lost prematurely. This has now +been fixed. +% +\githubissue{22} + + \subsection{Adjusting \texttt{fleqn}} In \pkg{amsmath} the \cs{mathindent} parameter used with the @@ -193,7 +367,7 @@ it to a value such as \texttt{1em minus 1em}, i.e., so the the normal indentation can be reduced in case of very wide math displays. This is now also supported by the \LaTeX{} standard classes. -In addition a compressable space between formula and equation number +In addition a compressible space between formula and equation number in the \texttt{equation} environment got added when the \texttt{fleqn} option is used so that a very wide formula doesn't bump into the equation number. @@ -201,6 +375,121 @@ equation number. \githubissue{252} +\subsection{Provide \cs{clap}} + +\LaTeX{} has inherited \cs{llap} and \cs{rlap} from plain \TeX{} +(zero-sized boxes whose content sticks out to the left or right, +respectively) but there isn't a corresponding \cs{clap} command that +centers the material. This missing command was added by several +addon packages, e.g., \pkg{mathtools}, and has now been added to the +kernel. + + +\subsection{Fix to legacy math alphabet interface} + +When using the \LaTeX{}~2.09 legacy math alphabet interface, e.g., +\verb=$\sf -1$= instead of \verb=$\mathsf{-1}$=, an extra math Ord atom +was added to the formula in case the math alphabet was used for the first +time. In some cases this math atom would change the spacing, e.g., +change the unary minus sign into a binary minus in the above example. This +has finally be fixed. +% +\gnatsissue{latex}{3357} + + + +\subsection{Added tests for format, package and class dates} + +To implement compatibility code or to ensure that certain features are +available it is helpful and often necessary to check the date of the +format or that of a package or class and execute different code based +on the result. For that \LaTeX\ only had some internal commands +(\cs{@ifpackagelater} and \cs{@ifclasslater}) for testting package or +class names but nothing really for testing the format date. For the +latter one had to resort to some obscure command \cs{@ifl@t@r} that, +given its cryptic name, was clearly never intended for use even in +package or class code. Furthermore, even the existing interface +commands where defective as they are testing for \enquote{equal or + later} and not for \enquote{later} as their names indicate. + +We have therefore introduced three new CamelCase commands as the +official interface for such tests +\begin{quote} + \cs{IfFormatAtLeastTF}\Arg{date}\\ + \hspace*{4em} \Arg{true code}\Arg{false code} +\end{quote} +and for package and class tests +\begin{quote} + \cs{IfClassAtLeastTF}\Arg{class name}\Arg{date}\\ + \hspace*{4em} \Arg{true code}\Arg{false code} \\ + \cs{IfPackageAtLeastTF}\Arg{package name}\Arg{date}\\ + \hspace*{4em} \Arg{true code}\Arg{false code} +\end{quote} +For compatibility reasons the legacy commands remain available, but we +suggest to replace them over time and use the new interfaces in new +code. +% +\githubissue{186} + + +\subsection{Avoid a problem with \cs{verb}} + +If a user typed \verb*=\verb !~! foo= instead of +\verb*=\verb!~! foo= by mistake, then surprisingly the result was +``\verb=!~!=foo'' without any warning or error. +% +What happened was that the +\verb*= = became the argument delimiter due to the rather complex +processing done by \cs{verb} to render verbatim. This now got +fixed and spaces directly following the command \cs{verb} or \cs{verb*} +are ignored as elsewhere. +% +\githubissue{327} + + +\subsection{Record the counter name stepped by \cs{refstepcounter}} + +\cs{refstepcounter} now stores the name of counter in \cs{\@currentcounter}. +This allows packages like \pkg{zref} and \pkg{hyperref} to store the name without +having to patch \cs{refstepcounter}. +% +\githubissue{300} + + +\subsection{Add support for Unicode soft hyphens} + +For a long time, the UTF-8 option for \pkg{inputenc} made the Unicode +soft hyphen character (U+00AD) an alias for the \LaTeX\ soft hyphen +\cs{-}. The Unicode engines \XeTeX{} and \LuaTeX{} behaved +different though: They either ignored U+00AD or interpreted it as an +unconditional hyphen. This inconsistency is fixed now and \LaTeX{} +always treats \texttt{U+00AD} as \cs{-}. +% +\githubissue{323} + + + +\subsection{Native Lua\TeX\ behaviour for \cs{-}} + +\LaTeX\ changes \cs{-} to add a discretionary hyphen even if \cs{hyphenchar} +is set to $-1$. This change is not necessary under Lua\TeX\ because in there +\cs{-} is not affected by \cs{hyphenchar} in the first place. Therefore this +behaviour has been changed to ensure that Lua\TeX's (language specific) +hyphenation characters are respected by \cs{-}. + + + +\subsection{Allow \cs{par} commands inside \cs{typeout}} + +\cs{typeout} used to choke when seeing an empty line or a \cs{par} +command in its argument. However, sometimes it is used to display +arbitrary user input or code (wrapped, for example, in +\cs{unexpanded}) which may contain explicit \cs{par} commands. This is +now allowed. +% +\githubissue{335} + + \section{Changes to packages in the \pkg{graphics} category} @@ -215,7 +504,7 @@ to the log file, because of a typo in the check. This has been corrected. \section{Changes to packages in the \pkg{tools} category} -\subsection{Support stretchable glue in \texttt{w}-columns} +\subsection{\pkg{array}: Support stretchable glue in \texttt{w}-columns} If stretchable glue, e.g., \cs{dotfill}, is used in \env{tabular} columns made with the \pkg{array} package, it stretches as it would in @@ -227,19 +516,118 @@ types in this respect. % \githubissue{270} +\subsection{\pkg{array}: Use math mode for \texttt{w} and + \texttt{W}-cells in \env{array}} + +The \texttt{w} and \texttt{W}-columns are LR-columns very similar to +\texttt{l}, \texttt{c} and \texttt{r}. It is therefore natural to +expect their cell content to be typeset in math mode instead of text +mode if they are used in an \env{array} environment. This has now +been adjusted. Note that this is a breaking change in version v2.5! +If you have used \texttt{w} or \texttt{W}-columns in older documents +either add \texttt{\detokenize{>{$}...<{$}}} for such columns or +remove the \texttt{\$} signs in the cells. Alternatively, you can roll +back to the old version by loading \pkg{array} with +\begin{verbatim} + \usepackage{array}[=v2.4] +\end{verbatim} +in such documents. +% +\githubissue{297} + +\subsection{\pkg{xr}: Support for spaces in filenames} +The commannd \cs{externaldocument}, provided by \pkg{xr}, now also +supports filenames with spaces, just like \cs{include} and +\cs{includeonly}. +% +\githubissue{223} \section{Changes to packages in the \pkg{amsmath} category} \subsection{Placement corrections for two accent commands} The accent commands \cs{dddot} and \cs{ddddot} (producing triple and -quatruple dot accents) moved the base character vertically in certain +quadruple dot accents) moved the base character vertically in certain situations if it was a single glyph, e.g., \verb=$Q \dddot{Q}$= were not at the same baseline. This has been corrected. % \githubissue{126} +\subsection{Fixes to \texttt{aligned} and \texttt{gathered}} + +The environments \texttt{aligned} and \texttt{gathered} have a +trailing optional argument to specify the vertical position of the +environment with respect to the rest of the line. Allowed values are +\texttt{t}, \texttt{b} and \texttt{c} but the code only tested for +\texttt{b} and \texttt{t} and assumed anything else is must be +\texttt{c}. As a result, a formula starting with a bracket group would +get mangled without warning---the group being dropped and interpreted +as a request for centering. After more than 25 years this has now been +corrected. If such a group is found a warning is given and the data is +processed as part of the formula. +% +\githubissue{5} + + +\section{Changes to the \pkg{babel} package} + +Multilingual typesetting has much evolved in the past years, and +\pkg{babel}, like \LaTeX{} itself, has followed the footsteps of +Unicode and the W3C consortiums to produce proper output in many +languages. + +Furthermore, the traditional model to define and select languages +(which can be called \enquote{vertical}), based on closed files, which +is still the preferred one in monolingual documents, is being extended +with a new model (which can be called \enquote{horizontal}) based on +\emph{services} provided by \pkg{babel}, which allows to define and +redefine locales with the help of simple |ini| files based on +key/value pairs. Babel provides about of 250 of these files, which +have been generated with the help of the Unicode Common Language Data +Repository. + +Thanks to the recent advances in \texttt{lualatex} and +\pkg{luaotfload}, babel currently provides \emph{services} for bidi +typesetting, line breaking for South East Asian and CJK scripts, +non-standard hyphenation (like ff to ff-f), alphabetic and additive +counters, automatic selection of fonts and languages based on the +script, etc. This means babel can be used to typeset such a variety of +languages as Russian, Arabic, Hindi, Thai, Japanese, Bangla, Amharic, +Greek, and many others. + +And since these \texttt{ini} files they are easily parsable, they can +serve as a source for other packages. + +For further details take a look at the \pkg{babel} +documentation~\cite{32:babel}. + + +\begin{thebibliography}{9} + +\fontsize{9.3}{11.3}\selectfont + +\bibitem{32:ltnews31} \LaTeX{} Project Team: + \emph{\LaTeXe{} news 31}.\\ + \url{https://latex-project.org/news/latex2e-news/ltnews31.pdf} + +\bibitem{32:site-doc} + \emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\ + \url{https://latex-project.org/help/documentation/} + +\bibitem{32:issue-tracker} + \emph{\LaTeX{} issue tracker}. + \url{https://github.com/latex3/latex2e/issues/} + +\bibitem{32:babel} + Javier Bezos and Johannes Braams. + \emph{Babel --- Localization and internationalization}.\\ + \url{https://www.ctan.org/pkg/babel} + +\end{thebibliography} + + + \end{document} -- cgit v1.2.3