diff options
Diffstat (limited to 'macros/latex/contrib/l3kernel/l3news12.tex')
-rw-r--r-- | macros/latex/contrib/l3kernel/l3news12.tex | 383 |
1 files changed, 0 insertions, 383 deletions
diff --git a/macros/latex/contrib/l3kernel/l3news12.tex b/macros/latex/contrib/l3kernel/l3news12.tex deleted file mode 100644 index f41e4b3690..0000000000 --- a/macros/latex/contrib/l3kernel/l3news12.tex +++ /dev/null @@ -1,383 +0,0 @@ -% Copyright 2019 The LaTeX3 Project -\documentclass{ltnews} - -\usepackage{csquotes} -\usepackage{hologo} -\usepackage{ragged2e} - -\PassOptionsToPackage{colorlinks}{hyperref} - -%%% wrong in ltnews.cls ... so some tmp fix here at the moment: -\makeatletter -\renewcommand{\subsubsection}{% - \@startsection - {subsubsection}{2}{\leftmargini}{-1.5ex \@plus -1ex \@minus -.2ex}% - {1sp}{\@subheadingfont}% -} -\makeatother - -\AtBeginDocument{% - \renewcommand*{\LaTeXNews}{\LaTeX3~News}% - \RaggedRight - \setlength\parindent{1em}% -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\publicationmonth{January} -\publicationyear{2020} -\publicationissue{12} - -% Avoid hyphenation of csnames -\makeatletter -\protected\edef\cs#1{% - \noexpand\path{\@backslashchar#1}% -} -\makeatother -\hyphenpenalty=10000 -\exhyphenpenalty=10000 -\hbadness=2500 - -\makeatletter -\renewcommand*\l@section[2]{% - \ifnum \c@tocdepth >\z@ - \addpenalty\@secpenalty - \addvspace{0.7em \@plus\p@}% reduce from 1.0em - \setlength\@tempdima{1.5em}% - \begingroup - \parindent \z@ \rightskip \@pnumwidth - \parfillskip -\@pnumwidth - \leavevmode \bfseries - \advance\leftskip\@tempdima - \hskip -\leftskip - #1\nobreak\hfil - \nobreak\hb@xt@\@pnumwidth{\hss #2% - \kern-\p@\kern\p@}\par - \endgroup - \fi} -\makeatother - -\newenvironment{compactitemize}% - {\begin{itemize}% - \setlength{\itemsep}{0pt}% - \setlength{\parskip}{0pt}% - \setlength{\parsep} {0pt}% - }% - {\end{itemize}} - - -\begin{document} - -\maketitle - -\tableofcontents - -\section{Introduction} - -There has been quite a gap since the last \emph{\LaTeX3 News} (Issue~11, -February 2018), and so there is quite a bit to cover here. Luckily, one of the -things there \emph{is} to cover is that we are using a more formalised approach -for logging changes, so writing up what has happened is a bit easier. -(By mistake \LaTeX3 News~11 itself did not get \emph{published} when written, but is -now available: we have kept the information it contains separate as it -is a good summary of the work that had happened in 2017.) - -Work has continued apace across the \LaTeX3 codebase in the last (nearly) two -years. A lot of this is ultimately focussed on making the core of \pkg{expl3} -even more stable: \emph{squeezing} out more experimental ideas, refining -ones we have and making it a serious option for core \LaTeX{} programming. - -As a result of these activities, the \LaTeX3 programming layer will be -available as part of the kernel of \LaTeXe{} from 2020-02-02 onwards, i.e., can -be used without explicitly loading \pkg{expl3}. See \emph{\LaTeX{} - News~31}~\cite{12:site-news} for more details on this. - -\section{New features in \pkg{expl3}} - -\subsection{A new argument specifier: \texttt{e}-type} - -During 2018, the team worked with the \TeX{} Live, \hologo{XeTeX} and -(u)p\TeX{} developers to add the \cs{expanded} primitive to \hologo{pdfTeX}{}, -\hologo{XeTeX} and (u)p\TeX{}. This primitive was originally suggested for -\hologo{pdfTeX}{} v1.50 (never released), and was present in \hologo{LuaTeX}{} -from the start of that project. - -Adding \cs{expanded} lets us create a new argument specifier: \texttt{e}-type -expansion. This is \emph{almost} the same as \texttt{x}-type, but is itself -expandable. (It also doesn't need doubled \verb|#| tokens.) That's incredibly -useful for creating function-like macros: you can ensure that \emph{everything} -is expanded in an argument before you go near it, with not an \cs{expandafter} -in sight. - -\subsection{New functions} - -New programming tools have appeared in various places across \pkg{expl3}. -The highlights are -\begin{compactitemize} - \item Shuffling of sequences to allow randomization - \item Arrays of integers and floating point values; these have constant-time - access - \item Functions to return values after system shell usage - \item Expandable access to file information, including file size, MD5 - hash and modification date -\end{compactitemize} - -For the latter, we have revised handling of file names considerably. There is -now support for finding files in expansion contexts (by using the -\cs{(pdf)filesize} primitive). Spaces and quotes in file names are now fully -normalised, in a similar manner to the approach used by the latest \LaTeXe{} -kernel. - -\subsection{String conversion moves to \pkg{expl3}} - -In addition to entirely new functions, the team have moved the -\pkg{l3str-convert} module from the \pkg{l3experimental} bundle into the -\pkg{expl3} core. This module is essential for dealing with the need to produce -UTF-16 and UTF-32 strings in some contexts, and also offers -built-in escape for url and PDF strings. - -\subsection{Case changing of text} - -Within \pkg{expl3}, the team have renamed and reworked the ideas from -\cs{tl_upper_case:n} and so on, creating a new module \pkg{l3text}. This is a -\enquote{final} home for functions to manipulate \emph{text}; token lists that -can reasonably be expected to expand to plain text plus limited markup, for -example emphasis and labels/references. Moving these functions, we have also -made a small number of changes in other modules to give consistent names to -functions: see the change log for full details. - -Over time, we anticipate that functions for other textual manipulation will be -added to this module. - -\section{Notable fixes and changes} - -\subsection{File name parsing} - -The functions for parsing file names have been entirely rewritten, partly as -this is required for the expandable access to file information mentioned above. -The new code correctly deals with spaces and quote marks in file names and -splits the path/name/extension. - -\subsection{Message formatting} - -The format of messages in \pkg{expl3} was originally quite text-heavy, the idea -being that they would stand out in the \texttt{.log} file. However, this made -them hard to find by a regular expression search, and was very different from -the \LaTeXe{} message approach. The formatting of \pkg{expl3} messages has been -aligned with that from the \LaTeXe{} kernel, such that IDE scripts and -similar will be able to find and extract them directly. - -\subsection{Key inheritance} - -A number of changes have been made to the inheritance code for keys, -to allow inheritance to work \enquote{as expected} in (almost) all -cases. - -\subsection{Floating point juxtaposition} - -Implicit multiplication by juxtaposition, such as \verb|2pi|, is now handled -separately from parenthetic values. Thus for example \verb|1in/1cm| is treated -as equal to \verb|(1in)/(1cm)| and thus yields \verb|2.54|, and \verb|1/2(pi+pi)| is -equal to \verb|pi|. - -\subsection{Changing box dimensions} - -\TeX{}'s handling of boxes is subtly different from other registers, and this -shows up in particular when you want to resize a box. To bring treatment of -boxes, or rather the grouping behavior of boxes, into line with other -registers, we have made some internal changes to how functions such as -\cs{box_set_wd:N} are implemented. This will be transparent for -\enquote{well-behaved} use cases of these functions. - -\subsection{More functions moved to stable} - -A large number of functions which were introduced as candidates have been -evaluated and moved to stable status. The team hopes to move all functions -in \pkg{expl3} to stable status, or move them out of the core, over the coming -months. - -\subsection{Deprecations} - -There have been two notable sets of deprecations over the past 18 months. -First, we have rationalised all of the \enquote{raw} primitive names to the -form \cs{tex_<name>:D}. This means that the older names, starting -\mbox{\cs{pdftex_...}}, \cs{xetex_...}, etc., have been removed. - -Secondly, the use of integer constants, which dates back to the earliest days -of \pkg{expl3}, is today more likely to make the code harder to read than -anything else. Speed improvements in engines mean that the tiny enhancements in -reading such constants are no longer required. Thus for example \cs{c_two} is -deprecated in favour of simply using \texttt{2}. - -In parallel with this, a number of older \texttt{.sty} files have been removed. -These older files provided legacy stubs for files which have now been -integrated in the \pkg{expl3} core. They have now had sufficient time to allow -users to update their code. - -\section{Internal improvements} - -\subsection{Cross-module functions} - -The team introduced the idea of internal module functions some time ago. Within -the kernel, there are places where functions need to be used in multiple -modules. To make the nature of the kernel interactions clearer, we have worked -on several aspects -\begin{compactitemize} - \item Reducing as far as possible cross-module functions - \item Making more generally-useful functions public, for example - scan marks - \item Creating an explicit cross-kernel naming convention for - functions which are internal but are essential to use in multiple - kernel modules -\end{compactitemize} - -\subsection{The backend} - -Creating graphics, working with color, setting up hyperlinks and so on require -backend-specific code. Here, backends are for example \texttt{dvips}, -\texttt{xdvipdfmx} and the direct PDF mode in \hologo{pdfTeX} and -\hologo{LuaTeX}. These functions are needed across the \LaTeX3 codebase and -have to be updated separately from the \pkg{expl3} core. To facilitate that, we -have split those sources into a separate bundle, which can be updated as -required. - -At the same time, the code these files contain is very low-level and is best -described as internal. We have re-structured how the entire set of functions -are referred to such that they are now internal for the area they implement, -for example image inclusion, box affine transformations, etc. - -\section{Better support for (u)p\texorpdfstring{\kern-.05em}{}\TeX{}} - -The developers behind (u)p\TeX{} (Japanese \TeX{}) have recently enhanced their -English documentation (see \url{https://github.com/texjporg/ptex-manual}). -Using this new information, we have been able to make internal adjustments to -\pkg{expl3} to better support these engines. - -\section{Options} - -A new option \texttt{undo-recent-deprecations} is now available for cases where -a document (or package) requires some \pkg{expl3} functions that have been -formally removed after deprecation. This is to allow \emph{temporary} -work-arounds for documents to be compiled whilst code is begin updated. - -The \enquote{classical} options for selecting backends (\texttt{dvips}, -\texttt{pdftex}, etc.)\ are now recognised in addition to the native key--value -versions. This should make it much easier to use the \pkg{expl3} image and color -support as it is brought up to fully-workable standards. - -\section{Engine requirements} - -The minimum engine versions needed to use \pkg{expl3} have been -incremented a little: -\begin{compactitemize} - \item \hologo{pdfTeX} v1.40 - \item \hologo{XeTeX} v0.99992 - \item \hologo{LuaTeX} v0.95 - \item $\varepsilon$-(u)p\TeX{} mid-2012 -\end{compactitemize} - -The team have also worked with the \hologo{XeTeX} and (u)p\TeX{} developers to -standardise the set of post-\eTeX{} utility primitives that are available: the -so-called \enquote{\hologo{pdfTeX} utilities}. These are now available in all -supported engines, and in time will all be \emph{required}. This primarily -impacts \hologo{XeTeX}, which gained most of these primitives in the 2019 -\TeX{} Live cycle. (Examples are the random number primitives and expandable -file data provision.) See \emph{\LaTeX{} News~31}~\cite{12:site-news} -for more. - -\section{Documentation} - -\subsection{News} - -The \emph{\LaTeX3 News} files were until recently only used to create -PDF files on the team website~\cite{12:site}. We have now -integrated those into the \pkg{l3kernel} (\pkg{expl3} core) -bundle. The news files cover all of \LaTeX3 files, as the core files -are always available. - -\subsection{ChangeLog} - -Since the start of 2018, the team have commenced a comprehensive -change log for each of the bundles which make up the \LaTeX3 code. -These are simple Markdown text files, which means that they can be displayed -formatted in web views. - -\section{Changes in \pkg{xparse}} - -A number of new features have been added to \pkg{xparse}. To allow -handling of the fact that skipping spaces may be required only in -some cases when searching for optional arguments, a new modifier -\texttt{!} is available in argument specifiers. This causes -\pkg{xparse} to \emph{require} that an optional argument follows -immediately with no intervening spaces. - -There is a new argument type purely for environments: \texttt{b}-type -for collecting a \cs{begin}\texttt{...}\cs{end} pair, i.e., collecting the body of -an environment. This is similar in concept to the \pkg{environ} package, -but is integrated directly into \pkg{xparse}. - -Finally, it is now possible to refer to one argument as the -default for another optional one, for example -\begin{verbatim} -\NewDocumentCommand{\caption}{O{#2} m} ... -\end{verbatim} - -\section{New experimental modules} - -A number of new experimental modules have been added within the -\pkg{l3experimental} bundle: -\begin{description} - \item[\pkg{l3benchmark}] Performance-testing system using the timing - function in modern \TeX{} engines - \item[\pkg{l3cctab}] Category code tables for all engines, not - just \hologo{LuaTeX} - \item[\pkg{l3color}] Color support, similar in interface to \pkg{xcolor} - \item[\pkg{l3draw}] Creation of drawings, inspired by \pkg{pgf}, but - using the \LaTeX3 FPU for calculations - \item[\pkg{l3pdf}] Support for PDF features such as compression, - hyperlinks, etc. - \item[\pkg{l3sys-shell}] Shell escape functions for file manipulation -\end{description} - -\section{\pkg{l3build} changes} - -The \pkg{l3build} tool for testing and releasing \TeX{} packages -has seen a number of incremental improvements. It is now available directly -as a script in \TeX{} Live and MiK\TeX{}, meaning you can call it simply -as -\begin{verbatim} -l3build <target> -\end{verbatim} -Accompanying this, we have added support for installing scripts and script -\texttt{man} files. - -There is a new \texttt{upload} target that can take a zip file and send it to -CTAN: you just have to fill in release information for \emph{this} -upload at the prompts. - -Testing using PDF files rather than logs has been heavily revised: -this is vital for work on PDF tagging. - -There is also better support for complex directory structures, including the -ability to manually specify TDS location for all installed files. This -is particularly targeted at packages with both generic and format-specific files -to install. - - -\begin{thebibliography}{9} - -\fontsize{9.9}{11.9}\selectfont - - -\bibitem{12:site} - \emph{\LaTeX{} Project Website}. - \hfil\break\url{https://latex-project.org/} - -\bibitem{12:site-news} - \emph{\LaTeXe{} release newsletters on the \LaTeX{} Project Website}. - \url{https://latex-project.org/news/latex2e-news/} - - -\end{thebibliography} - -\end{document} |