% \iffalse meta-comment % % Copyright (C) 2018-2024 % 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: ltnews29.tex % % This is issue 29 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\XeTeX{\hologo{XeTeX}} \providecommand\LuaTeX{\hologo{LuaTeX}} \providecommand\pdfTeX{\hologo{pdfTeX}} \newcommand\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} % simple solution right now (just link to the first issue if there are more) \def\getfirstgithubissue#1 #2\relax{#1} \newcommand\sxissue[1]{\ifhmode\unskip\fi \quad\penalty500\strut\nobreak\hfill \mbox{\small\slshape(\url{https://tex.stackexchange.com/#1})}\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{December} \publicationyear{2018} \publicationissue{29} \begin{document} %\addtolength\textheight{4.2pc} % only for TUB \maketitle \tableofcontents \setlength\rightskip{0pt plus 3em} \bigskip \section{Introduction} The December 2018 release of \LaTeX{} is a maintenance release in which we have fixed a few bugs in the software: some are old, some newer, and they are mostly rather obscure. \section[Bug reports for core \LaTeXe{} and packages] {Bug reports for core \LaTeXe{} and packages maintained by the Project Team} In Spring 2018 we established a new issue tracking system (Github issues at \url{https://github.com/latex3/latex2e/issues}) for both the \LaTeX{} core and the packages maintained by the \LaTeX{} Project Team, with an updated procedure for how to report a bug or problem. Initial experience with this system is good, with people who report problems following the guidelines and including helpful working examples to show the problem---thanks for doing this. The detailed requirements and the workflow for reporting a bug in the core \LaTeX{} software is documented at \begin{quote} \url{https://www.latex-project.org/bugs/} \end{quote} with further details and discussion in~\cite{29:Mittelbach:TB39-1}. \section{Changes to the \LaTeX{} kernel} \subsection{UTF-8:\ updates to the default input encoding} In the April 2018 release of \LaTeX{} we changed the default encoding from 7-bit \acro{ascii} to \acro{utf}-8 when using classic \TeX\ or \hologo{pdfTeX}; see \textit{\LaTeX{} News~28}~\cite{29:ltnews28} for details. Now, after half a year of experience with this new default, we have made a small number of adjustments to further improve the user experience. These include: \begin{itemize} \item Some improvements when displaying error messages about \acro{utf}-8 characters that have not been set up for use with \LaTeX{}, or are invalid for some other reason; % \githubissue[s]{60, 62 and 63} % \item The addition of a number of previously missing declarations for characters that are in fact available with the default fonts, e.g., \cs{j} \enquote{\j} (0237), \cs{SS} \enquote{\SS} (1E9E), \verb=\k{}= \enquote{\k{ }} (02DB) and \verb=\.{}= \enquote{\.{ }} (02D9); \item Correcting the names for \cs{guillemetleft} \enquote{\guillemotleft} and \cs{guillemetright} \enquote{\guillemotright} in all encoding files. These correct names are in addition to the old (but wrong) Adobe names: Adobe mistakenly called them Guillemot, which is a sea bird. % \githubissue{65} % \item Added \cs{Hwithstroke} (\enquote{\Hwithstroke}) and \cs{hwithstroke} (\enquote{\hwithstroke}) necessary for typesetting Maltese. % \sxissue{q/460110} \end{itemize} \subsection{Fixed \cs{verb*} and friends in \texorpdfstring{\XeTeX}{XeTeX} and \LuaTeX{}} The original \cs{verb*} and \texttt{verbatim*} in \LaTeX{} were coded under the assumption that the position of the space character (i.e., \acro{ascii} 32) in a typewriter font contains a visible space glyph ``\verb*= =''. This is correct for \pdfTeX{} with the most used font encodings \texttt{OT1} and \texttt{T1}. However, this unfortunately does not work for Unicode engines using the \texttt{TU} encoding since the space character slot (\acro{ascii} 32) then usually contains a real (normal) space, which has the effect that \cs{verb*} produces the same results as \cs{verb}. The \cs{verb*} code now always uses the newly introduced command \cs{verbvisiblespace} to produce the visible space character and this command will get appropriate definitions for use with the different engines. With \pdfTeX{} it will simply use \cs{asciispace}, which is a posh name for ``select character 32 in the current font'', but with Unicode engines the default definition is \begin{verbatim} \DeclareRobustCommand\verbvisiblespace {\leavevmode {\usefont{OT1}{cmtt}{m}{n}\asciispace}} \end{verbatim} which uses the visible space from the font Computer Modern Typewriter, regardless of the currently chosen typewriter font. Internally the code ensures that the character used has exactly the same width as the other characters in the current (monospaced) font; thus, for example, code displays line up properly. It is possible to redefine this command to select your own character, for example \begin{verbatim} \DeclareRobustCommand\verbvisiblespace {\textvisiblespace} \end{verbatim} will select the ``official'' visible space character of the current font. This may look like the natural default, but it wasn't chosen as our default because many fonts just don't have that Unicode character, or they have one with a strange shape. % \githubissue[s]{69 and 70} \subsection{Error message corrected} Trying to redefine an undefined command could in a few cases generate an error message with a missing space, e.g., \verb=\renewcommand\1{...}= gave \begin{verbatim} LaTeX Error: \1undefined. \end{verbatim} This is now fixed. % \githubissue{41} \subsection{Fixed fatal link error with \pkg{hyperref}} If an \cs{href} link text gets broken across pages, \pdfTeX{} and \LuaTeX{} will generate a fatal error unless both parts of the link are internally at the same boxing level. In two-column mode that was not the case if one of the pages had spanning top floats. This has now been changed so that the error is avoided. % \githubissue{94} \subsection{Avoid page breaks caused by invisible commands} Commands like \cs{label} or \cs{index} could generate a potential page break in places where a page break was otherwise prohibited, e.g., when used between two consecutive headings. This has now been corrected. If for some reason you really want a break and you relied on this faulty behavior, you can always add one using \cs{pagebreak}, with or without an optional argument. % \githubissue{81} \subsection{Prevent spurious spaces when reading table of contents data} When table of contents data is read in from a \texttt{.toc} file, the new-line character at the end of each line is converted by \TeX{} to a space. In normal processing this is harmless (as \TeX{} is doing this input reading whilst in vertical mode and each line in the file represents a single line (paragraph) in the table of contents. If, however, this is done in horizontal mode, which is sometimes the case, then these spaces will appear in the output. If you then omit some of the input lines (e.g., because you do not display \acro{toc} data below a certain level), then these spaces accumulate in the typeset output and you get surprising, and unwanted, gaps inside the text. The new code now adds a \texttt{\%} sign at the end of problematic lines in the \texttt{.toc} file so that \TeX{} will not generate such spaces that may survive to spoil the printed result. As some third party packages have augmented or changed the core \LaTeX{} functionality in that area (for example, by adding additional arguments to the commands in \acro{toc} files) the code uses a conservative approach and the \texttt{\%} signs are added only when certain conditions are met. Therefore some packages might require updates if they want to benefit from this correction, especially if they unconditionally overwrite \LaTeX{}'s \cs{addcontentsline} definition. % \githubissue{73} \subsection{Prevent protrusion in table of contents lines} In \TeX{}'s internal processing model, paragraph data is one of the major data structures. As a result, many things are internally modeled as paragraphs even if they are not conceptually ``text paragraphs'' in the traditional sense. In a few cases this has some surprising effects that are not always for the better. One example is standard \acro{toc} entries, where you have heading data followed by some dot leaders and a page number at the right, produced, for example, from this: \begin{quote} \contentsline {subsection}{Error message corrected}{2}{section*.7} \end{quote} The space reserved for the page number is of a fixed width, so that the dots always end in the same place. Well, they did end in the same place until the advent of protrusion support in the \TeX{} engines. Now, with the \pkg{microtype} package loaded, it is possible that the page number will protrude slightly into the margin (even though it’s typeset inside a box) and as a result this page number box gets shifted. With enough bad luck this can get you another dot in the line, sticking out like the proverbial sore thumb, as exhibited in the question on StackExchange that triggered the correction. \LaTeX{} now takes care that there will be no protrusion happening on such lines, even if it is generally enabled for the whole document. % \sxissue{q/172785} \subsection{Start L-R mode for \cs{thinspace} and friends} In \LaTeX{}, commands that are intended only for paragraph (L-R) mode are generally careful to start paragraph mode if necessary; thus they can be used at the start of a paragraph without surprising and unwanted consequences. This important requirement had been overlooked for a few horizontal spacing commands, such as \cs{thinspace} (a.k.a.\ ``\cs{,}''), and for some other support commands such as \cs{smash} or \cs{phantom}. Thus they ended up adding vertical space when used at the beginning of a paragraph or, in the case of \cs{smash}, creating a paragraph of their own. This has now been corrected, and a corresponding update has been made to the \pkg{amsmath} package, in which these commands are also defined. % \githubissue[s]{49 and 50} \subsection{Guarding \cs{pfill} in \pkg{doc}} For presenting index entries pointing to code fragments and the like, the \pkg{doc} package has a \cs{pfill} command that generates within the index a line of dots leading from the command name to the page or code line numbers. If necessary it would automatically split the entry over two lines. That worked well enough for a quarter century, but we discovered recently that it is broken inside the \cls{ltugboat} class, where it sometimes produces bad spacing within continuation lines. The reason turned out to be a redefinition of the \LaTeX{} command \cs{nobreakspace} (\verb=~=) inside the class \cls{ltugboat}, which removed any preceding space (and thus unfortunately also removed the dots on the continuation line). While one can argue that this is a questionable redefinition (if only done by a single class and not generally), it has been in the class so long that changing it would certainly break older documents. So instead we now guard against that removal of space. % \githubissue[s]{25 and 75} \section{Changes to packages in the \pkg{tools} category} \subsection{Sometimes the \pkg{trace} package turned off too much} The \pkg{trace} package is a useful little tool for tracing macro execution: it hides certain lengthy and typically uninteresting expansions resulting from font changes and similar activities. However, it had the problem that it also reset other tracing settings such as \cs{showoutput} in such situations, so that you couldn't use \cs{showoutput} in the preamble to get symbolic output of all the pages in the document. This has now been corrected. \subsection{Update to \pkg{xr}} The \pkg{xr} package has been updated so that the code that reads the \texttt{.aux} file has been made more robust. It now correctly ignores conditionals (added by \pkg{hyperref} and other packages) rather than generating low level parsing errors. \sxissue{a/452321} \subsection{Column data for \env{multicols*} sometimes vanished} In certain situations involving \env{multicols*}, when there are more explicit \cs{columnbreak} requests than there are columns on the current page, data could vanish due to the removal of an internal penalty marking the end of the environment. This has been corrected by explicitly reinserting that penalty if necessary. % \githubissue{53} \subsection{Extension to \cs{docolaction} in \pkg{multicol}} The \cs{docolaction} command can be used to carry out actions depending on the column you are currently in, i.e., first, any inner one (if more than two) or last. However, if the action generates text then there is the question: is this text part of the current column or the one after? That is, on the next run, do we test before or after it, to determine in which column we are? This is now resolved as follows: if you use \cs{docolaction*} any generated text by the chosen action is considered to be after the test point. But if you use the command without the star then all the material it generates will be placed before the test point to determine the current column, i.e., the text will become part of the current column and may affect the test result on the next run. \subsection{Prevent color leak in \pkg{array}} In some cases the color used inside a \env{tabular} cell could ``leak out'' into the surrounding text. This has been corrected. % \githubissue{72} \subsection{Support fragile commands in \env{array} or \env{tabular} column templates} The preamble specifiers \texttt{p}, \texttt{m} and \texttt{b} each receives a user supplied argument: the width of the paragraph column. Normally that is something harmless, like a length or a simple length expression. But in more complicated settings involving the \pkg{calc} package it could break with a low-level error message. This has now been corrected. % \sxissue{q/459285} \section{Changes to packages in the \pkg{amsmath} category} The changes in the kernel made for \cs{thinspace}, \cs{smash}, etc.\ (see above) have been reflected in the \pkg{amsmath} package code, so that loading this package doesn't revert them. % \githubissue[s]{49 and 50} \section{Website updates} \subsection{Publications area reorganized and extended} To help readers to find relevant information in more convenient and easy ways, the area of the website covering publications by the \LaTeX{} Project Team was reorganized and extended (many more abstracts added). We now provide the articles, talks and supplementary data structured both by year and also by major topics~\cite{29:site-pub}. Feel free to take a look. \subsection{Japanese translations of the user's guide} Yukitoshi Fujimura has kindly translated into Japanese two documents that are distributed with standard \LaTeX{}. These are: \begin{itemize} \item \LaTeXe{} for authors; \item User's Guide for the \pkg{amsmath}~Package~\cite{29:amsldoc}. \end{itemize} They can be found on the website documentation page~\cite{29:site-doc}. You will now also find there a typeset version of the full \LaTeXe{} source code (with index etc.\@) and a number of other goodies. \begin{thebibliography}{9} \bibitem{29:Mittelbach:TB39-1} Frank Mittelbach: \emph{New rules for reporting bugs in the \LaTeX{} core software}. In: TUGboat, 39\#1, 2018. \url{https://latex-project.org/publications/} \bibitem{29:ltnews28} \emph{\LaTeX{} News, Issue 28}. In: TUGboat, 39\#1, 2018.\\ \rlap{\url{https://latex-project.org/news/latex2e-news/}} \bibitem{29:site-doc} \emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\ \url{https://latex-project.org/documentation/} \bibitem{29:site-pub} \emph{\LaTeX{} Project publications on the \LaTeX{} Project Website}.\\ \url{https://latex-project.org/publications/} \bibitem{29:amsldoc} American Mathematical Society and The \LaTeX\ Project: \emph{User's Guide for the \texttt{amsmath} Package} (Version 2.1). April 2018. Available from \url{https://www.ctan.org} and distributed as part of every \LaTeX{} distribution. \end{thebibliography} \end{document}