diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex-dev/base/ltnews30.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex-dev/base/ltnews30.tex | 665 |
1 files changed, 665 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews30.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews30.tex new file mode 100644 index 00000000000..48d5959c6aa --- /dev/null +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews30.tex @@ -0,0 +1,665 @@ +% \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} + +% 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 is available in an upcoming 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, the 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 was necessary was to copy +the file \texttt{XeLaTeX.engine} to 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 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 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 huge 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 an \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 follow up 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{fcnylab} 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 this means a \cs{ref} command can no +longer be 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 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 +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}: Generate a font table as 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} 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 a \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} + +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 \texttt{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 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 user 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 jointly. 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} |