summaryrefslogtreecommitdiff
path: root/macros/latex/base/ltnews29.tex
blob: a5732eada9bb56491a292a0d7c0e900d6018b0f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
% \iffalse meta-comment
%
% Copyright (C) 2018-2021
% 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
\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 ``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 \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}