% \iffalse meta-comment % % Copyright 2019 % The LaTeX3 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: ltnews31.tex % % This is issue 31 of LaTeX News. \documentclass{ltnews} \usepackage[T1]{fontenc} \usepackage{lmodern,url,hologo} \usepackage{csquotes} \providecommand\acro[1]{\textsc{#1}} \providecommand\meta[1]{$\langle$\textit{#1}$\rangle$} \providecommand\option[1]{\texttt{#1}} \providecommand\env[1]{\texttt{#1}} \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} \providecommand\sxissue[1]{\ifhmode\unskip\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#2}% {gnats issue #1/#2}% )}% \par} \let\cls\pkg \providecommand\env[1]{\texttt{#1}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \iffalse % only for TUB production \usepackage{graphicx} \makeatletter % Xe\TeX{} requires reflecting the first E, hence we complain if the % graphics package is not present. (For plain documents, this can be % loaded via Eplain.) Also, at Barbara's suggestion, if the current % font is slanted, we rotate by 180 instead of reflecting so there is at % least a chance to look ok. (The magic values here seem more or less % ok for \texttt{cmsl} and \texttt{cmti}.) % % \begin{macrocode} \def\tubreflect#1{% \@ifundefined{reflectbox}{% \TBerror{A graphics package must be loaded for \string\XeTeX}% }{% \ifdim \fontdimen1\font>0pt \raise 1.6ex \hbox{\kern.1em\rotatebox{180}{#1}}\kern-.1em \else \reflectbox{#1}% \fi }% } \def\tubhideheight#1{\setbox0=\hbox{#1}\ht0=0pt \dp0=0pt \box0 } \def\XekernbeforeE{-.125em} \def\XekernafterE{-.1667em} \DeclareRobustCommand{\Xe}{\leavevmode \tubhideheight{\hbox{X% \setbox0=\hbox{\TeX}\setbox1=\hbox{E}% \ifdim \fontdimen1\font>0pt \def\XekernbeforeE{0em}\fi \lower\dp0\hbox{\raise\dp1\hbox{\kern\XekernbeforeE\tubreflect{E}}}% \kern\XekernafterE}}} \def\XeTeX{\Xe\TeX} \def\XeLaTeX{\Xe{\kern.11em \LaTeX}} \fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \publicationmonth{February} \publicationyear{2020} \publicationissue{31} \begin{document} %\addtolength\textheight{4.2pc} % only for TUB \maketitle \tableofcontents \setlength\rightskip{0pt plus 3em} %\newpage \medskip \section{Introduction} This document is under construction \ldots \section{Primitive requirements} Since the finalisation of \eTeX{} in 1999, a number of additional `utility' primitives have been added to \pdfTeX{}. Several of these are broadly useful and have been requirements for \pkg{expl3} for some time, most notably \cs{pdfstrcmp}. Over time, a common set of these `post-\eTeX{}' primitives have been incorporated into \XeTeX{} and (u)p-\TeX{}; they were available in \LuaTeX{} already. A number of the additional primitives are needed to support new or improved functionality in \LaTeX{}. This is seen for example in improved UTF-8 handling, which uses \cs{ifincsname}. The following primitive functionality (which in \LuaTeX{} may be achieved using Lua code) will therefore be \emph{required} by the \LaTeX{} kernel after [INSERT DATE HERE]: \begin{itemize} \item \cs{expanded} \item \cs{ifincsname} \item \cs{ifpdfprimitive} \item \cs{pdfcreationdate} \item \cs{pdfelapsedtime} \item \cs{pdffiledump} \item \cs{pdffilemoddate} \item \cs{pdffilesize} \item \cs{pdflastxpos} \item \cs{pdflastypos} \item \cs{pdfmdfivesum} \item \cs{pdfnormaldeviate} \item \cs{pdfpageheight} \item \cs{pdfpagewidth} \item \cs{pdfprimitive} \item \cs{pdfrandomseed} \item \cs{pdfresettimer} \item \cs{pdfsavepos} \item \cs{pdfsetrandomseed} \item \cs{pdfshellescape} \item \cs{pdfstrcmp} \item \cs{pdfuniformdeviate} \end{itemize} For ease of reference, these primitives will be referred to as the `\pdfTeX{} utilities'. Engines which are fully Unicode-capable must all provide the following primitives \begin{itemize} \item \cs{Uchar} \item \cs{Ucharcat} \item \cs{Umathcode} \end{itemize} In particular, note that \cs{Umathcode} is used as a marker primitive for this capability. \section{Experiences with the \LaTeX\texttt{-dev} formats} \emph{write} In TeXLive 2020 the Lua\LaTeX{} format will use the new LuaHB\TeX{} engine, which is Lua\TeX{} with an embedded HarfBuzz library. HarfBuzz can be used by setting a suitable renderer in the font declaration. An interface for that is provided by \pkg{fontspec}. This additional font renderer will greatly improve the shaping of various scripts, which are currently handled correctly only by \XeTeX{}. To simplify the testing of the new engine, binaries have been added to MiKTeX and TeXLive 2019 and both have changed the Lua\LaTeX-dev format to use it. \section{Improved load-times for \pkg{expl3}} The \LaTeX3 programming layer, \pkg{expl3}, has over the past decade moved from being largely experimental to broadly stable. It is now used in a significant number of third-party packages, most notably \pkg{xparse} for defining interfaces in cases where no \pkg{expl3} code is \enquote{visible}. Most \LaTeX{} documents compiled using \XeTeX{} or \LuaTeX{} load \pkg{fontspec}, which is written using \pkg{expl3}. The \pkg{expl3} layer contains a non-trivial number of macros, and when used with the \XeTeX{} and \LuaTeX{} engines, it loads a large body of Unicode data. This means that even on a fast computer, there is a relatively large load time for using \pkg{expl3}. For this release, the team have made adjustments in the \LaTeXe{} kernel to pre-load a significant portion of \pkg{expl3} as the format is built. This is transparent at the user level, other than the significant decrease in document processing time: there will be no \enquote{pause} for loading Unicode data files. Loading of \pkg{expl3} in documents and packages can be done as usual; eventually, it will be possible to omit \begin{verbatim} \RequirePackage{expl3} \end{verbatim} entirely, but to support older formats, this is still recommended at present. \section{Other changes to the \LaTeX{} kernel} \emph{fixed gh198} \section{Changes to packages in the \pkg{tools} category} \emph{fixed gh190} \section{Changes to packages in the \pkg{amsmath} category} \section{Documentation updates} \begin{thebibliography}{9} %\fontsize{9.3}{11.3}\selectfont \bibitem{31:devformat} Frank Mittelbach: \emph{The \LaTeX{} release workflow and the \LaTeX{} dev formats}. In: TUGboat, 40\#2, 2019. \url{https://latex-project.org/publications/} \bibitem{31:fntguide} \LaTeX{} Project Team: \emph{\LaTeXe{} font selection}.\\ \url{https://latex-project.org/documentation/} \bibitem{31:site-doc} \emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\ \url{https://latex-project.org/documentation/} %\bibitem{31:site-pub} % \emph{\LaTeX{} Project publications on the \LaTeX{} Project Website}.\\ % \url{https://latex-project.org/publications/} \end{thebibliography} \end{document}