summaryrefslogtreecommitdiff
path: root/macros/latex-dev/doc/ltnews29.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex-dev/doc/ltnews29.tex')
-rw-r--r--macros/latex-dev/doc/ltnews29.tex526
1 files changed, 526 insertions, 0 deletions
diff --git a/macros/latex-dev/doc/ltnews29.tex b/macros/latex-dev/doc/ltnews29.tex
new file mode 100644
index 0000000000..1cc856aaed
--- /dev/null
+++ b/macros/latex-dev/doc/ltnews29.tex
@@ -0,0 +1,526 @@
+% \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\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
+\newcommand\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 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 \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{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{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 \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}
+