summaryrefslogtreecommitdiff
path: root/macros/latex/base/ltnews30.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/base/ltnews30.tex')
-rw-r--r--macros/latex/base/ltnews30.tex668
1 files changed, 668 insertions, 0 deletions
diff --git a/macros/latex/base/ltnews30.tex b/macros/latex/base/ltnews30.tex
new file mode 100644
index 0000000000..cfc1430fb8
--- /dev/null
+++ b/macros/latex/base/ltnews30.tex
@@ -0,0 +1,668 @@
+% \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: ltnews30.tex
+%
+% This is issue 30 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{October}
+\publicationyear{2019}
+
+\publicationissue{30}
+
+\begin{document}
+
+%\addtolength\textheight{4.2pc} % only for TUB
+
+\maketitle
+\tableofcontents
+
+\setlength\rightskip{0pt plus 3em}
+
+%\newpage
+
+\medskip
+
+
+%%CCC Does it need an intro?
+%% \section{Introduction}
+
+%% This document is under construction \ldots
+
+
+\section{\LaTeX\texttt{-dev} formats now available}
+
+
+We know that many of you, especially developers and maintainers of
+important packages, have a strong interest in a stable \LaTeX{}
+environment.
+
+In order to keep \LaTeX{} very stable for users whilst allowing for
+further development to continue, we now have a development branch of
+\LaTeX{} on GitHub containing development code for the upcoming
+release. When this code is ready for wider consumption and testing, we
+generate a pre-release of \LaTeX{} from this development branch and make
+it available on \CTAN.
+
+For users of the \TL{} and \MiKTeX{} distributions it is therefore now
+straightforward to test their documents and code against the upcoming
+\LaTeX{} release with ease, simply by selecting a different program name
+(when using the command line) or by selecting a menu entry (after
+setting it up; see below).
+
+If you do this then the latest version of the \LaTeX{} development format
+will be used to process your document, allowing you to test the
+upcoming release with your own documents and packages. For example, if
+you run
+\begin{verbatim}
+ pdflatex-dev myfile
+\end{verbatim}
+then you will be greeted on the screen with something like \texttt{LaTeX2e
+ <2019-10-01> pre-release-2} (identifying the pre-release format)
+instead of the normal \texttt{LaTeX2e <2018-12-01>}. In this
+pre-release you will find the latest new features that we have
+developed.
+
+\subsection{Our hopes}
+
+We don’t expect everybody to start using the development formats to
+participate in testing, but we hope that people with a strong interest
+in a stable \LaTeX{} environment (especially developers and maintainers
+of important packages) will use the new facilities and help us to
+ensure that future public releases of \LaTeX{} do not (as has happened in
+the past) require some immediate patches because of issues that were
+not identified by our internal regression test suite or by other
+testing
+we do.
+
+Any issue identified when using the development format should
+preferably be logged as an issue on GitHub, following the procedure
+outlined on our website at \url{https://www.latex-project.org/bugs/}
+including the use of the \pkg{latexbug} package as described.
+
+Our bug reporting process normally states that issues involving
+third-party software are out of scope as we can’t correct external
+packages; see~\cite{30:Mittelbach:TB39-1}. However, in the particular
+case of the development format showing an incompatibility with a
+third-party package, it is fine to open an issue with us (in addition,
+please, to informing the maintainer of that package) so that we know
+about the problem and can jointly work on resolving it.
+
+\subsection{Details please \ldots}
+
+More details and some background information about the concepts and
+the process are available in an upcoming \textsl{TUGboat} article: \enquote{The
+ \LaTeX{} release workflow and the \LaTeX{} dev
+ formats}~\cite{devformat}.
+
+\subsection{Setting up menu items}
+
+While the command line call works out of the box if you have a recent
+\TL{} or \MiKTeX{} installation, its use within an integrated
+editing environment doesn’t at this point in time (maybe the
+developers of these editors will include it in the future). However,
+it is normally fairly simple to enable it as most (or even all?)\ of
+them provide simple ways to call your own setup. How this works in
+detail depends very much on the environment you use, so we can’t give
+much help here.
+
+But as an example: to provide an additional menu entry for
+\texttt{XeLaTeX-dev} on a MacBook all that is necessary is to copy
+the file \texttt{XeLaTeX.engine} to \texttt{XeLaTeX-dev.engine} and change the
+call from \texttt{xelatex} to \texttt{xelatex-dev} inside.
+
+
+
+
+\section{Improving Unicode handling in \pdfTeX{}}
+
+Perhaps the most important improvement in this release is
+even
+better support for \acro{utf}-8 characters when using \pdfTeX{}.\footnote{The
+ Japanese engines e-p\TeX{} and e-up\TeX{} can't use these features
+ yet as they don't support the primitive \cs{ifincsname}. Work is
+ under way to resolve this in the engines.}
+
+When using a \enquote{Unicode engine},
+any Unicode character (that is not acting as a command,
+i.e., is not \enquote{active})
+can be used as part of the
+\cs{label}/\cs{ref} mechanism or can be displayed in a message or
+written to a file. In 8-bit engines, however, this was severely
+restricted:
+essentially you had to limit yourself to using
+\acro{ascii} letters, digits and a few punctuation symbols. With the
+new release, most of these restrictions have been removed and you now
+can write labels such as
+\begin{verbatim}
+ \label{eq:größer}
+\end{verbatim}
+or use accented characters, etc., as part of a \cs{typeout} message.
+The only requirement remaining is that only those \acro{utf}-8 characters
+that are also available for typesetting can be used, i.e., only those
+characters for
+which adequate font support is loaded. Otherwise you will get an
+error message stating that
+the
+particular Unicode character is not set
+up for use with \LaTeX{}.
+
+Note, however, that the restrictions on what characters can be
+used in the names of commands have not changed.
+
+What is not possible when using
+an 8-bit engine such as \pdfTeX{} is to use
+characters other than \acro{ascii} letters as part of a command
+name. This is due to the fact that all other characters in such
+engines are not single character tokens, but in fact consist of a
+sequence of bytes and this is not supported in command names.
+
+\section{Improving file name handling in \pdfTeX{}}
+
+A related change is that file names used as part of \cs{input},
+\cs{includegraphics}, etc., commands
+can now contain any
+Unicode characters allowed by the file system in use,
+including spaces.
+In this case,
+ even characters that can't be typeset
+(due to lack of font support) can be used.
+
+
+\section{Improving the \env{filecontents} environment}
+
+The \env{filecontents} environment now supports an optional argument
+in which you can specify that it is allowed to \option{overwrite} an
+already existing file;
+ by default nothing is written if a file with the given name
+exists anywhere in the search tree. An alternative name for this
+option is \texttt{force}.
+Even then the environment will refuse to write
+to \cs{jobname}\texttt{.tex} to avoid clobbering its own input
+file. However, if you use a different extension on your input file you
+could still overwrite it (there is no way to test for that).
+
+There is also an
+option
+\option{nosearch},
+which specifies that only the current directory is
+examined for an existing file, not the whole \TeX{} inputs tree.
+This is useful if you want to write a
+local copy of a standard system file.
+Finally, \option{noheader} prevents writing a preamble to the file
+(this
+is the same as using the star form of the environment).
+
+Another change is that this
+environment is
+now allowed anywhere in the document,
+which means
+it provides everything (and more) of what the now obsolete
+\pkg{filecontents} package provided.
+
+
+
+\section{Making more user commands robust}
+
+In the early days of \LaTeX{} many commands were fragile, i.e., they
+needed \cs{protect} in front of them when used in places such as
+section headings and other \enquote{moving arguments}, etc.
+In \LaTeXe{} many of these commands were made robust,
+but still a fairly large number remained unnecessarily fragile.
+
+In this release of \LaTeX{} we have now
+made a lot more commands robust.
+There is a very small collection of commands that must stay fragile
+because their expansion (maybe partially) at just the right time is critical.
+Yet others are unlikely to ever be needed in a \enquote{moving argument}.
+
+Doing this for \cs{begin} and \cs{end} was rather tricky as the
+standard mechanism with \cs{DeclareRobustCommand} doesn't work here,
+at least not for \cs{end} as that needs to expand during typesetting
+without generating a \cs{relax} (from the \cs{protect}). Such a token
+would start a new row in table environments, such as \texttt{tabular},
+etc. Furthermore, some packages try to look into the definition of
+\cs{end} by expanding it several times. Thus expansion with
+\cs{expandafter} had to produce exactly the same result as before. But
+in the end we overcame that hurdle too, so now environments are
+automatically robust if used in places like headings or
+\verb=\typeout= and so forth.
+
+%%CCC do we need to say something about possible problems if other packages
+%% or documents have redefined commands whose robustness has changed?
+
+What hasn't been tackled yet is the redefinitions in \pkg{amsmath}:
+this package
+redefines a number of basic math constructs
+that are now robust, so that
+they become fragile again
+once the package is loaded.
+This area will be addressed in a followup release.
+%
+\githubissue{123}
+
+
+
+\section{Other changes to the \LaTeX{} kernel}
+
+\subsection{Guard against \cs{unskip} in tabular cells}
+
+If a \env{tabular} or \env{array} cell started with a
+command that started with an
+\cs{unskip}
+then centering the column broke
+ because the stretching glue
+ on the left got removed. The fix for this was to add
+ a minuscule, and hence unnoticeable, additional space after the stretching space:
+removing this extra space causes no problems.
+
+This change was also applied in the \pkg{array} package.
+
+\githubissue{102}
+
+
+\subsection{Fix Unicode table data}
+
+\texttt{U+012F} which is \enquote{i with ogonek} produced a
+\enquote{dotless i with ogonek} by mistake. This has been corrected.
+
+\githubissue{122}
+
+The Unicode slots \texttt{27E8} and \texttt{27E9} have been mapped to
+\cs{textlangle} and \cs{textrangle} which is the recommended mapping.
+In the past they raised a
+\\
+\LaTeX{} error.
+%
+\githubissue{110}
+
+When doing cut-and-paste from other documents or websites, f-ligatures and others ligatures
+might end up as
+single Unicode characters in your file. In the past those got rejected by \LaTeX{}.
+ We
+ now define those Unicode slots and map them back to the sequence of
+ individual characters constituting the ligature.
+If supported by the current font
+(which is normally the case) they
+are then reconstructed as ligatures and thus get typeset
+as desired.
+Otherwise they will come out as individual characters which
+is still better than an error message.
+
+\githubissue{154}
+
+
+\subsection{Improve \cs{InputIfFileExists}'s handling of file names}
+
+In rare circumstances it was possible that \cs{InputIfFileExists}
+would work incorrectly, e.g., a construction such as
+\begin{verbatim}
+\InputIfFileExists{foo}{\input{bar}}{}
+\end{verbatim}
+would not load the files \texttt{foo.tex} and \texttt{bar.tex} but
+would load \texttt{bar.tex} twice. This has been corrected.
+
+\githubissue{109}
+
+
+\subsection{Improve interface for cross-references}
+
+%%CCC should be 'provide' as they still exist. FMi - no they no longer do that
+The packages \pkg{fncylab} and \pkg{varioref} provided
+a slightly
+improved definition of \cs{refstepcounter} which allowed
+the internal
+\cs{p@..} commands to receive the counter value as an argument,
+instead of
+acting as a simple prefix. This supports
+more complex
+formatting of the value in the reference.
+
+
+These packages also provided
+the command \cs{labelformat} to help in the specification of
+such formatting in an easy way. For
+example, \verb=\labelformat{equation}{eq.~(#1)}= specifies that
+references to equations
+automatically come out as
+\enquote{eq.~(5)} or similar. As such a \cs{labelformat} declaration
+means a \cs{ref} command can no
+longer be successfully used at the start of a sentence, the packages also
+provided \cs{Ref} for such scenarios.
+
+Both of these commands, \cs{labelformat} and \cs{Ref},
+are now removed from the packages and instead made available in
+the kernel so there is no
+need to load additional packages.
+
+
+
+
+\subsection{Improve wording of a warning message}
+
+The kernel now says \enquote{Trying to load \ldots}
+instead of \enquote{Try loading \ldots} in one of its informal
+messages to match style of similar messages.
+%
+\githubissue{107}
+
+
+\subsection{Avoid bad side-effects of \cs{DeclareErrorFont}}
+
+As a side effect of setting up the error font for \acro{nfss}, this
+declaration also changed the current font size back to 10pt.
+In most
+circumstances that doesn't matter, because that declaration was meant
+to be used only during the format generation and not during
+a \LaTeX{} run.
+However, it has turned out to be
+used by some developers in other places
+(incorrectly in fact:
+e.g., inside some \texttt{.fd} files) where
+resetting the size causes
+havoc
+seemingly at random.
+The command has now changed to not produce such side effects.
+
+\gnatsissue{latex}{4399}
+
+
+
+\subsection{\pkg{nfssfont}: Make font table generation the default action}
+
+With the small file \texttt{nfssfont.tex} it is possible to produce
+font tables and other font tests
+in the style set up by Don Knuth.
+In nearly all cases
+a font table is wanted,
+so this action has been made the default.
+Now one can simply hit enter
+instead of having to write \verb=\table\bye=.
+
+
+\subsection{\pkg{trace}: Add package support in the kernel}
+
+The \pkg{trace} package implements the commands \cs{traceon}
+and \cs{traceoff} that work like
+\cs{tracingall} but skip
+certain code blocks that produce a lot of tracing output.
+%%CCC being of no interest to anyone!! -- FMi I love your encouragement
+This is useful when debugging, to suppress uninteresting tracing
+from, for example, loading a font.
+Code blocks that should not be traced
+need to be surrounded by the commands
+\cs{conditionally@traceoff} and \cs{conditionally@traceon}.
+
+The \LaTeX{} kernel now provides dummy definitions for these two
+commands so that package writers can use them in their packages
+regardless of \pkg{trace} being loaded or not.
+
+
+
+
+\section{Changes to packages in the \pkg{tools} category}
+
+\subsection{\pkg{array}: Warn if primitive column specifiers are overwritten}
+
+With \cs{newcolumntype} it is possible to define your own column
+specifiers for a \texttt{tabular} preamble; it is also possible to
+change existing ones. However, doing that for a primitive column
+specifier, such as \texttt{c}, is seldom a good idea, since then its
+functionality becomes unavailable.
+The package was therefore supposed
+to warn the user in this case, but due to a missing \cs{expandafter}
+in the code it never did---now it does.
+%
+\githubissue{148}
+
+
+\subsection{\pkg{multicol}: Introduce \texttt{minrows} counter for balancing}
+
+When there are only a few lines of text on a page at the end of a
+\env{multicols} environment,
+balancing the columns often looks rather odd: such as
+three columns each containing a single line. The balancing behavior
+can now be controlled through the counter \texttt{minrows}
+(default is~1) which specifies that,
+after balancing, there must be at least that many lines in the first column.
+Thus, if you set \texttt{minrows}
+to \texttt{2} then you
+would get a
+distribution of \texttt{2+1+0} lines and if set
+to three, the result
+would be
+\texttt{3+0+0} instead of the default \texttt{1+1+1}.
+
+What is most appropriate really depends on the circumstances, but this
+now gives you the tools to make local or global adjustments.
+
+
+\subsection{\pkg{varioref}: Better support for \pkg{cleveref}}
+
+The \pkg{varioref} package has been internally updated to provide
+better interfaces for packages such as \pkg{hyperref} and
+\pkg{cleveref}.
+
+It also
+has a new package option \option{nospace} that stops
+\pkg{varioref} from meddling with space in front of
+its commands. The
+original behavior was always somewhat problematical and it is
+suggested that
+all new documents
+use this option (which
+should really have been the default).
+
+Support was also added for the Arabic language through the option
+\option{arabic}.
+
+
+
+
+\subsection[\pkg{xr}: Support citations to bibliographies in\\ external documents]
+{\pkg{xr}: Support citations to bibliographies in external documents}
+
+The \pkg{xr} package can be used to cross-reference an external \LaTeX{}
+document.
+This means that even when a work is split over different documents (that
+need to be processed separately), \cs{ref} or \cs{pageref} can use labels from
+any document, creating links between them. This facility has now been extended
+so that \cs{cite} commands and
+their cousins can now also reference bibliographies in external
+documents; this feature was first provided in the package
+\pkg{xcite} by Enrico Gregorio.
+
+Note that for technical reasons \pkg{xr} doesn't work with
+\pkg{hyperref}. Use \pkg{xr-hyper} instead if you need the latter
+package.
+
+
+\section{Changes to packages in the \pkg{amsmath} category}
+
+\subsection{\pkg{amsmath}: Introduce \cs{overunderset} command}
+
+The \pkg{amsmath} package has always offered
+the commands \cs{overset} and
+\cs{underset} to produce binary operators with something set above or
+below. But sometimes one needs to put something above and something below:
+The newly added \cs{overunderset} makes this
+easily possible.
+
+
+
+\section{Documentation updates}
+
+There are a number of
+%small
+documentation updates in files
+on the documentation page of the project website~\cite{30:site-doc}.
+
+\subsection{Highlighting the standard \texorpdfstring{\acro{nfss}}{NFSS} codes for series}
+
+The \emph{Font Selection Guide}~\cite{fntguide} has been
+updated to strongly recommend that the standard codes should be used
+when providing font support. The reason for this recommendation is explained here.
+
+
+The font selection scheme uses a number of standard codes for
+\cs{fontseries} and \cs{fontshape} to ensure that different fonts are
+comparable, e.g., that you get a \enquote{light} weight if you specify
+\texttt{l} and \enquote{extra bold} when you write \texttt{eb},
+etc. Over the years people came up with a number of other creative
+short codes like \texttt{k}, \texttt{j}, \texttt{t} and others with
+the result that changing a font family required different codes and
+thus prevented users from easily mixing and matching different
+families.
+Some work has been undertaken to get back to a coherent scheme and
+all the font families supported through the program \texttt{autoinst}
+are now producing the standard codes again.
+
+
+\subsection{\LaTeX{} \texttt{base} and \texttt{doc} distribution reunited}
+
+For a long time the \LaTeX{} distribution available from \CTAN{} was
+split into several parts to allow them to be uploaded or downloaded
+separately. As this is these days more confusing than helpful we have
+recombined the base part with the documentation part (as both are
+anyway always updated together). Thus the package \texttt{latex-doc}
+is no longer separately available from \CTAN{} but contained in the
+\texttt{latex-base} distribution.
+
+
+\begin{thebibliography}{9}
+
+%\fontsize{9.3}{11.3}\selectfont
+
+\bibitem{30: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{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{fntguide} \LaTeX{} Project Team:
+ \emph{\LaTeXe{} font selection}.\\
+ \url{https://latex-project.org/documentation/}
+
+\bibitem{30:site-doc}
+ \emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\
+ \url{https://latex-project.org/documentation/}
+
+%\bibitem{30:site-pub}
+% \emph{\LaTeX{} Project publications on the \LaTeX{} Project Website}.\\
+% \url{https://latex-project.org/publications/}
+
+\end{thebibliography}
+
+\end{document}