diff options
Diffstat (limited to 'macros/latex/doc/ltnews29.tex')
-rw-r--r-- | macros/latex/doc/ltnews29.tex | 479 |
1 files changed, 479 insertions, 0 deletions
diff --git a/macros/latex/doc/ltnews29.tex b/macros/latex/doc/ltnews29.tex new file mode 100644 index 0000000000..bd74b31bf9 --- /dev/null +++ b/macros/latex/doc/ltnews29.tex @@ -0,0 +1,479 @@ +% \iffalse meta-comment +% +% Copyright 2018 +% 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 +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 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\itshape(github issue#1 #2)}\par} + +\newcommand\sxissue[1]{\ifhmode\unskip\fi + \quad\penalty500\strut\nobreak\hfill + \mbox{\small\itshape\url(#1)}\par} + +\let\cls\pkg +\newcommand\env[1]{\texttt{#1}} + + +\publicationmonth{December} +\publicationyear{2018} + +\publicationissue{29} + +\begin{document} + +\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) 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{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 UTF-8 when using classic \TeX\ or +\hologo{pdfTeX}, see \textit{\LaTeX{} News~28}~\cite{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 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} and \cs{hwithstroke} necessary for + typesetting Maltese. +% + \sxissue{https://tex.stackexchange.com/q/460110} +\end{itemize} + + + +\subsection{Fixed \cs{verb*} and friends in \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., +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 (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 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 a \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 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 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 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 event 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{https://tex.stackexchange.com/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, 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{https://tex.stackexchange.com/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 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 \texttt{array} or \texttt{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{https://tex.stackexchange.com/q/459285} + + + +\section{Changes to packages in the 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{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}~\cite{amsldoc}. +\end{itemize} +They can be found on the website documentation page~\cite{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{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{ltnews28} + \emph{\LaTeX{} News, Issue 28}. + In: TUGboat, 39\#1, 2018.\\ + \rlap{\url{https://latex-project.org/news/latex2e-news/}} + +\bibitem{site-doc} + \emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\ + \url{https://latex-project.org/documentation/} + +\bibitem{site-pub} + \emph{\LaTeX{} Project publications on the \LaTeX{} Project Website}.\\ + \url{https://latex-project.org/publications/} + +\bibitem{amsldoc} American Mathematical Society and The \LaTeX3 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} + |