% \iffalse meta-comment % % Copyright (C) 2015-2024 % 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: ltnews23.tex % % This is issue 23 of LaTeX News. \documentclass{ltnews} \usepackage[T1]{fontenc} \usepackage{lmodern,url,hologo} \makeatletter % -- provide command introduced in new release % so this typesets with an old format % Check we are not in the preamble of a composite document \def\@tempa{\@latex@error{Can be used only in preamble}\@eha} \ifx\DeclareTextCommandDefault\@tempa \else \DeclareTextCommandDefault\textcommabelow[1] {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex \hbox{\check@mathfonts\fontsize\ssf@size\z@ \math@fontsfalse\selectfont,}\hidewidth}\egroup} \fi \makeatother \publicationmonth{October} \publicationyear{2015} \publicationissue{23} \providecommand\pkg[1]{\texttt{#1}} \providecommand\cls[1]{\texttt{#1}} \providecommand\option[1]{\texttt{#1}} \providecommand\env[1]{\texttt{#1}} \providecommand\file[1]{\texttt{#1}} \begin{document} \maketitle \tableofcontents \section{Enhanced support for \hologo{LuaTeX}} As noted in \LaTeX\ News 22, the 2015/01/01 release of \LaTeX{} introduced built-in support for extended \TeX\ systems. The range of allocated register numbers (for example, for count registers) is now set according to the underlying engine capabilities to 256, 32768 or 65536. Additional allocators were also added for the facilities added by \hologo{eTeX} (\verb|\newmark|) and \hologo{XeTeX} (\verb|\newXeTeXintercharclass|). At that time, however, the work to incorporate additional allocators for \hologo{LuaTeX} was not ready for distribution. The main feature of this release is that by default it includes allocators for \hologo{LuaTeX}-provided features, such as Lua functions, bytecode registers, catcode tables and Lua callbacks. Previously these features have been provided by the contributed \pkg{luatex} (Heiko Oberdiek) and \pkg{luatexbase} (\'{E}lie Roux, Manuel P\'{e}gouri\'{e}-Gonnard and Philipp Gesang) packages. However, just as noted with the \pkg{etex} package in the previous release, it is better if allocation is handled by the format to avoid problems with conflicts between different allocation schemes, or definitions made before a package-defined allocation scheme is enabled. The facilities incorporated into the format with this release, and described below, are closely modelled on the \pkg{luatexbase} package and we thank the authors, and especially \'{E}lie Roux, for help in arranging this transition. The implementation of these \hologo{LuaTeX} features has been redesigned to match the allocation system introduced in the 2015/01/01 \LaTeX\ release, and there are some other differences from the previous \pkg{luatexbase} package. However, as noted below, \pkg{luatexbase} is being updated in line with this \LaTeX\ release to provide the previous interface as a wrapper around the new implementation, so we expect the majority of documents using \pkg{luatexbase} to work without change. \subsection{Names of \hologo{LuaTeX} primitive commands} The 2015/01/01 \LaTeX\ release for the first time initialised \hologo{LuaTeX} in \file{latex.ltx} if \hologo{LuaTeX} is being used. Following the convention used in the contributed \file{lualatex.ini} file used to set up the format for earlier releases, most \hologo{LuaTeX}-specific primitives were defined with names prefixed by \texttt{luatex}. This was designed to minimize name clashes but had the disadvantage that names did not match the \hologo{LuaTeX} manual, or the names used in other formats, and produced some awkward command names such as \verb|\luatexluafunction|. From this release the names are enabled without the \texttt{luatex} prefix. In practice this change should not affect many documents; relatively few packages access the primitive commands, and many of those are already set up to work with prefixed or unprefixed names, so that they work with multiple formats. For package writers, if you want to ensure that your code works with this and earlier releases, use unprefixed names in the package and ensure that they are defined by using code such as: \begin{verbatim} \directlua{tex.enableprimitives("", tex.extraprimitives( "omega", "aleph", "luatex"))} \end{verbatim} Conversely if your document uses a package relying on prefixed names then you can add: \begin{verbatim} \directlua{tex.enableprimitives("luatex", tex.extraprimitives( "omega", "aleph", "luatex"))} \end{verbatim} to your document. Note the compatibility layer offered by the \pkg{luatexbase} package described below makes several commands available under both names. As always, this change can be reverted using:\\ \verb|\RequirePackage[2015/01/01]{latexrelease}|\\ at the start of the document. \subsection{\TeX\ commands for allocation in \hologo{LuaTeX}} For detailed descriptions of the new allocation commands see the documented sources in \file{ltluatex.dtx} or chapter N of \file{source2e}; however, the following new allocation commands are defined by default in \hologo{LuaTeX}: \verb|\newattribute|, \verb|\newcatcodetable|, \verb|\newluafunction| and \verb|\newwhatsit|. In addition, the commands \verb|\setattribute| and \verb|\unsetattribute| are defined to set and unset Lua attributes (integer values similar to counters, but attached to nodes). Finally several catcode tables are predefined: \verb|\catcodetable@initex|, \verb|\catcodetable@string|, \verb|\catcodetable@latex|, \verb|\catcodetable@atletter|. \subsection{Predefined Lua functions} If used with \hologo{LuaTeX}, \LaTeX\ will initialise a Lua table, \texttt{luatexbase}, with functions supporting allocation and also the registering of Lua callback functions. \subsection{Support for older releases and plain \TeX} The \hologo{LuaTeX} allocation functionality made available in this release is also available in plain \TeX\ and older \LaTeX\ releases in the files \file{ltluatex.tex} and \file{ltluatex.lua} which may be used simply by including the \TeX\ file: \verb|\input{ltluatex}|. An alternative for old \LaTeX\ releases is to use:\\ \verb|\RequirePackage[2015/10/01]{latexrelease}|\\ which will update the kernel to the current release, including \hologo{LuaTeX} support. \subsection{Additional \hologo{LuaTeX} support packages} In addition to the base \LaTeX\ release two packages have been contributed to the \textsf{contrib} area on CTAN. The \pkg{ctablestack} package offers some commands to help package writers control the \hologo{LuaTeX} \texttt{catcodetable} functionality, and the \pkg{luatexbase} package replaces the previously available package of the same name, providing a compatible interface but implemented over the \pkg{ltluatex} code. \section{More Floats and Inserts} If \hologo{eTeX} is available, the number of registers allocated in the format to hold floats such as figures is increased from 18 to 52. The extended allocation system introduced in 2015/01/01 means that in most cases it is no longer necessary to load the \pkg{etex} package. Many classes and packages that previously loaded this package no longer do so. Unfortunately in some circumstances where a package or class previously used the \pkg{etex} \verb|\reserveinserts| command, it is possible for a document that previously worked to generate an error ``no room for a new insert''. In practice this error can always be avoided by declaring inserts earlier, before the registers below 256 are all allocated. However, it is better not to require packages to be re-ordered and in some cases the re-ordering is complicated due to delayed allocations in \verb|\AtBeginDocument|. In this release, a new implementation of \verb|\newinsert| is used which allocates inserts from the previously allocated float lists once the classical register allocation has run out. This allows an extra 52 (or in \hologo{LuaTeX}, 64~thousand) insert allocations which is more than enough for practical documents (by default, \LaTeX\ only uses two insert allocations). \section{Updated Unicode data} The file \file{unicode-letters.def} recording catcodes, upper and lower case mappings and other properties for Unicode characters has been regenerated using the data files from Unicode~8.0.0. \section{Support for Comma Accent} The command \verb|\textcommabelow| has been added to the format. This is mainly used for the Romanian letters \textcommabelow{S}\textcommabelow{s}\textcommabelow{T}\textcommabelow{t}. This was requested in latex/4414 in the \LaTeX\ bug tracker. \section{Extended \pkg{inputenc}} The \option{utf8} option for \pkg{inputenc} has been extended to support the letters s and t with comma accent, U+0218\,--\,U+021b. Similarly circumflex w and y U+0174\,--\,U+0177 are defined. Also U+00a0 and U+00ad are declared by default, and defined to be \verb|\nobreakspace| and \verb|\-| respectively. The error message given on undefined UTF-8 input characters now displays the Unicode number in U+\textit{hex} format in addition to showing the character. \section{Pre-release Releases} The patch level mechanism has been used previously to identify \LaTeX\ releases that have small patches applied to the main release, without changing the main format date. The mechanism has now been extended to allow identification of pre-release versions of the software (which may or may not be released via CTAN) but can be identified with a banner such as\\ {\catcode`\<=13 \def<{\string<} \catcode`\>=13 \def>{\string>}% \verb|LaTeX2e <2015/10/01> pre-release-1|}\\ Internally this is identified as a patch release with a negative patch level. \section{Updates in tools} The \pkg{multicol} package has been updated to fix the interaction with ``here'' floats that land on the same page as the start or end of a \env{multicols} environment. \end{document}