diff options
author | Karl Berry <karl@freefriends.org> | 2018-04-06 21:33:45 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-04-06 21:33:45 +0000 |
commit | 588be4d1b7e254f46ac3c678ef1b3f38833f6491 (patch) | |
tree | c73b58d23db18c19737ff12c67e208fd7a89c4c6 /Master/texmf-dist/source/latex/base/ltnews28.tex | |
parent | c436d9d03043bac0aac83254a8f1a2a45e4aaafd (diff) |
latex2e (6apr18)
git-svn-id: svn://tug.org/texlive/trunk@47330 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/base/ltnews28.tex')
-rw-r--r-- | Master/texmf-dist/source/latex/base/ltnews28.tex | 365 |
1 files changed, 365 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/base/ltnews28.tex b/Master/texmf-dist/source/latex/base/ltnews28.tex new file mode 100644 index 00000000000..92c087e6b02 --- /dev/null +++ b/Master/texmf-dist/source/latex/base/ltnews28.tex @@ -0,0 +1,365 @@ +% \iffalse meta-comment +% +% Copyright 2017-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: ltnews28.tex +% +% This is issue 28 of LaTeX News. + +\documentclass{ltnews} +\usepackage[T1]{fontenc} + +\usepackage{lmodern,url,hologo} + +\providecommand\acro[1]{\textsc{#1}} +\providecommand\meta[1]{$\langle$\textit{#1}$\rangle$} + + +\publicationmonth{April} +\publicationyear{2018} + +\publicationissue{28} + +\begin{document} + +\maketitle +\tableofcontents + +\setlength\rightskip{0pt plus 3em} + +\section{A new home for \LaTeXe{} sources} + +In the past the development version of the \LaTeXe{} source files has +been managed in a Subversion source control system with read access +for the public. This way it was possible to download in an emergency +the latest version even before it was released to CTAN and made its +way into the various distributions. + +We have recently changed this setup and now manage the sources using +Git and placed the master sources on GitHub at +\begin{quote} +\url{https://github.com/latex3/latex2e} +\end{quote} +where we already store the sources +for \pkg{expl3} and other work. As before, direct write access is restricted +to \LaTeX{} Project Team members, but everything is publicly accessible +including the ability to download, clone (using Git) or checkout +(using SVN). More details are given in~\cite{Mittelbach:TB39-1}. + +\section{Bug reports for core \LaTeXe{}} + +For more than two decades we used GNATS, an open source bug tracking +system developed by the FSF. While that has served us well in the past +it started to show its age more and more. So as part of this move we +also decided to finally retire the old \LaTeX{} bug database and replace +it with the standard ``Issue Tracker'' available at Github. + +The 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} +and with further details also discussed in~\cite{Mittelbach:TB39-1}. + + +\section{UTF-8: the new default input encoding} + +The first \TeX{} implementations only supported reading 7-bit +\acro{ascii} files---any accented or otherwise ``special'' character +had to be entered using commands, if it could be represented at +all. For example to obtain an ``\"a'' one would enter \verb=\"a=, and to +typeset a ``\ss'' the command \verb=\ss=. Furthermore fonts at that +time had 128 glyphs inside, holding the \acro{ascii} characters, some +accents to build composite glyphs from a letter and an accent, and a +few special symbols such as parentheses, etc. + +With 8-bit \TeX{} engines such as \hologo{pdfTeX} this situation changed +somewhat: it was now possible to process 8-bit files, i.e., files that +could encode 256 different characters. However, 256 is still a fairly +small number and with this limitation it is only possible to encode a +few languages and for other languages one would need to change the +encoding (i.e., interpret the character positions 0--255 in a +different way). The first code points 0--127 were essentially normed +(corresponding to \acro{ascii}) while the second half 128--255 would +vary by holding different accented characters to support a certain set +of languages. + +Each computer used one of these encodings when storing or interpreting +files and as long as two computers used the same encoding it was +(easily) possible to exchange files between them and have them +interpreted and processed correctly. + +But different computers may have used different encodings and given +that a computer file is simply a sequence of bytes with no indication for +which encoding is intended, chaos could easily happen and has +happened. For example, the German word ``Gr\"o\ss e'' (height) entered on a +German keyboard could show up as ``Gr\v T\`ae'' on a different +computer using a different encoding by default. + +So in summmary the situation wasn't at all good and it was clear in +the early nineties that \LaTeXe{} (that was being developed to provide +a \LaTeX{} version usable across the world) had to provide a solution +to this issue. + +The \LaTeXe{} answer was the introduction of the \package{inputenc} +package~\cite{Mittelbach:Brno95} through which it is possible to +provide support for multiple encodings. It also allows to correctly +process a file written in one encoding on a computer using a different +encoding and even supports documents where the encoding changes +midway. + +Since the first release of \LaTeXe{} in 1994, \LaTeX{} documents that +used any characters outside \acro{ascii} in the source (i.e. any +characters in the range of 128--255) were supposed to load +\package{inputenc} and specify in which file encoding they were +written and stored. +% +If the \package{inputenc} package was not loaded then \LaTeX{} used a +``raw'' encoding which essentially took each byte from the input file +and typeset the glyph that happened to be in that position in the +current font---something that sometimes produces the right result but +often enough will not. + +In 1992 Ken Thompson and Rob Pike developed the UTF-8 encoding scheme +which enables the encoding of all Unicode characters within 8-bit sequences. +Over time this encoding has gradually taken over the world, +replacing the legacy 8-bit encodings used before. These days all major +computer operating systems use UTF-8 to store their files and it +requires some effort to explicitly store files in one of the legacy +encodings. + +As a result, whenever \LaTeX{} users want to use any accented +characters from their keyboard (instead of resorting to \verb=\"a= and +the like) they always have to use +\begin{verbatim} + \usepackage[utf8]{inputenc} +\end{verbatim} +in the preamble of their documents as otherwise \LaTeX{} will produce +gibberish. + +\subsection{The new default} + +With this release, the default encoding for \LaTeX\ files has been +changed from the ``fall through raw'' encoding to UTF-8 if used with +classic \TeX\ or \hologo{pdfTeX}. The implementation is essentially +the same as the existing UTF-8 support from +\verb|\usepackage[utf8]{inputenc}|. + +The \hologo{LuaTeX} and \hologo{XeTeX} engines always supported the +UTF-8 encoding as their native (and only) input encoding, so with +these engines \package{inputenc} was always a no-op. + +This means that with new documents one can assume UTF-8 input and it +is no longer required to always specify +\verb|\usepackage[utf8]{inputenc}|. But if this line is present it +will not hurt either. + + +\subsection{Compatibility} + +For most existing documents this change will be transparent: +\begin{itemize} +\item documents using only \acro{ascii} in the input file and + accessing accented characters via commands; +\item documents that specified the encoding of their file via an + option to the \package{inputenc} package and then used 8-bit + characters in that encoding; +\item documents that already had been stored in UTF-8 (whether or not + specifying this via \package{inputenc}). +\end{itemize} +Only documents that have been stored in a legacy encoding and used +accented letters from the keyboard \emph{without} loading +\package{inputenc} (relying on the similarities between the input used +and the T1 font encoding) are affected. + +These documents will now generate an error that they contain invalid +UTF-8 sequences. However, such documents may be easily processed by +adding the new command \verb|\UseRawInputEncoding| as the first line +of the file. This will re-instate the previous ``raw'' encoding +default. + +\verb|\UseRawInputEncoding| may also be used on the command line to +process existing files without requiring the file to be edited +\begin{verbatim} + pdflatex '\UseRawInputEncoding \input' file +\end{verbatim} +will process the file using the previous default encoding. + +Possible alternatives are reencoding the file to UTF-8 using a tool +(such as recode or iconv or an editor) or adding the line +\begin{flushleft} +\verb= \usepackage[=\meta{encoding}\verb=]{inputenc}= +\end{flushleft} +to the preamble specifying the \meta{encoding} that fits the file +encoding. In many cases this will be \texttt{latin1} or +\texttt{cp1252}. For other encoding names and their meaning see the +\package{inputenc} documentation. + +As usual, this change may also be reverted via the more general +\package{latexrelease} package mechanism, by speciying a release date +earlier than this release. + + +\subsection{BOM: byte order mark handling} + +When using Unicode the first bytes of a file may be a, so called, BOM +character (byte order mark) to indicate the byte oder used in the +file. While this is not required with UTF-8 encoded files (where the +byte order is known) it is nevertheless allowed by the standard and +some editors add that byte sequence to the beginning of a file. In the +past such files would have generated a ``Missing begin document'' +error or displayed strange characters when loaded at a later stage. + +With the addition of UTF-8 support to the kernel it is now possible to +identify and ignore such BOMs characters even before +\verb=\documentclass= so that these issues will no longer be showing +up. + + + +\section[A general rollback concept] + {A general rollback concept for packages and classes} + + In 2015 a rollback concept for the \LaTeX{} kernel was introduced. + Providing this feature allowed us to make corrections to the + software (which more or less didn't happen for nearly two decades) + while continuing to maintain backward compatibility to the highest + degree. + + In this release we have now extended this concept to + the world of packages and classes which was not covered + initially. As the classes and the extension packages have different + requirements compared to the kernel, the approach is different (and + simplified). This should make it easy for package developers to + apply it to their packages and authors to use when necessary. + + The documentation of this new feature is given in an article + submitted to TUGboat and also available from our + website~\cite{Mittelbach:TB39-2}. + + +\section[Integration of \pkg{remreset} and \pkg{chngcntr} packages] + {Integration of \pkg{remreset} and \pkg{chngcntr} packages + into the kernel} + +With the optional argument to \cs{newcounter} \LaTeX{} offers to +automatically reset counters when some counter is stepped, e.g., +stepping a \texttt{chapter} counter resets the \texttt{section} +counter (and recursively all other heading counters). However, what +was until now missing was a way to undo such a link between counters +or to link two counters after they have been defined. + +This can be now be done with \cs{counterwithin} and \cs{counterwithout}, +respectively. In the past one had to load the \pkg{chngcntr} package +for this. For the programming level we also added +\cs{@removefromreset} as the counterpart of the already existing +\cs{@addtoreset} command. Up to now this was offered by the +\pkg{remreset} package. + +\section{Testing for undefined commands} +\LaTeX\ packages often use a test \verb|\@ifundefined| to test if a command +is defined. Unfortunately this had the side effect of \emph{defining} +the command to \verb|\relax| in the case that it had no definition. + The new release uses a modified definition +(using extra testing possibilities available in \hologo{eTeX}. The new definition +is more natural, however code that was relying on the side effect of the +command being tested being defined if it was previously undefined may have to add +\verb|\let\|\meta{command}\verb|\relax|. + + +\section{Changes to packages in the tools category} + +\subsection{\LaTeX{} table columns with fixed widths} + +Frank published a short paper in +TUGboat~\cite{Mittelbach:TB38-2-213} on producing tables that have +columns with fixed widths. The outlined approach using column +specifiers ``\texttt{w}'' and ``\texttt{W}'' has now been integrated +into the \pkg{array} package. + +\subsection{Obscure overprinting with \pkg{multicol} fixed} + +A rather peculiar bug was reported on StackExchange for +\pkg{multicol}. If the column/page breaking was fully controlled by +the user (through \cs{columnbreak}) instead of letting the environment +do its job and if then more \cs{columnbreak} commands showed up on the +last page then the balancing algorithm was thrown off track. +As a result some parts of the columns did overprint each other. + +The fix required a redesign of the output routines used by +\pkg{multicol} and while it ``should'' be transparent in other cases +(and all tests in the regession test suite came out fine) there is the +off-chance that code that hooked into internals of \pkg{multicol} +needs adjustment. + + +\section{Changes to packages in the amsmath category} + +With this release of \LaTeX{} a few minor issues with \pkg{amsmath} +have been corrected. + +\subsection{Updated user's guide} + +Furthermore, \texttt{amsldoc.pdf}, the AMS user's +guide for the \pkg{amsmath} package~\cite{amsldoc}, has been updated +from version~2.0 to~2.1 to incorporate changes and corrections made +between 2016 and 2018. + + +\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://www.latex-project.org/publications/} + +\bibitem{Mittelbach:Brno95} Frank Mittelbach: + \emph{\LaTeXe{} Encoding Interface --- Purpose, concepts, and + Open Problems}. + Talk given in Brno June 1995. + \url{https://www.latex-project.org/publications/} + +\bibitem{Mittelbach:TB39-2} Frank Mittelbach: + \emph{A rollback concept for packages and classes}. + Submitted to TUGboat. + \url{https://www.latex-project.org/publications/} + +\bibitem{Mittelbach:TB38-2-213} Frank Mittelbach: + \emph{\LaTeX{} table columns with fixed widths}. + In: TUGboat, 38\#2, 2017. + \url{https://www.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} |