Undo XeTeX char classes when patching an older kernel
[latex2e.git] / trunk / doc / ltnews23.tex
blob149bd1a74bb3177cb5afcf019e1e237d6ec0d0a3
1 % \iffalse meta-comment
3 % Copyright 2015
4 % The LaTeX3 Project and any individual authors listed elsewhere
5 % in this file.
7 % This file is part of the LaTeX base system.
8 % -------------------------------------------
10 % It may be distributed and/or modified under the
11 % conditions of the LaTeX Project Public License, either version 1.3c
12 % of this license or (at your option) any later version.
13 % The latest version of this license is in
14 % http://www.latex-project.org/lppl.txt
15 % and version 1.3c or later is part of all distributions of LaTeX
16 % version 2005/12/01 or later.
18 % This file has the LPPL maintenance status "maintained".
20 % The list of all files belonging to the LaTeX base distribution is
21 % given in the file `manifest.txt'. See also `legal.txt' for additional
22 % information.
24 % The list of derived (unpacked) files belonging to the distribution
25 % and covered by LPPL is defined by the unpacking scripts (with
26 % extension .ins) which are part of the distribution.
28 % \fi
29 % Filename: ltnews23.tex
31 % This is issue 23 of LaTeX News.
33 \documentclass{ltnews}
34 \usepackage[T1]{fontenc}
36 \usepackage{lmodern,url,hologo}
38 \makeatletter % -- provide command introduced in new release
39 % so this typesets with an old format
41 % Check we are not in the preamble of a composite document
42 \def\@tempa{\@latex@error{Can be used only in preamble}\@eha}
43 \ifx\DeclareTextCommandDefault\@tempa
44 \else
45 \DeclareTextCommandDefault\textcommabelow[1]
46 {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex
47 \hbox{\check@mathfonts\fontsize\ssf@size\z@
48 \math@fontsfalse\selectfont,}\hidewidth}\egroup}
49 \fi
50 \makeatother
52 \publicationmonth{October}
53 \publicationyear{2015}
55 \publicationissue{23}
57 \begin{document}
59 \maketitle
61 \tableofcontents
63 \section{Enhanced support for \hologo{LuaTeX}}
65 As noted in \LaTeX\ News 22, the 2015/01/01 release of \LaTeX{}
66 introduced built-in support for extended \TeX\ systems.
68 The range of allocated register numbers (for example, for count
69 registers) is now set according to the underlying engine capabilities
70 to 256, 32768 or 65536. Additional allocators were also added for the
71 facilities added by \hologo{eTeX} (\verb|\newmark|) and \hologo{XeTeX}
72 (\verb|\newXeTeXintercharclass|). At that time, however, the work to
73 incorporate additional allocators for \hologo{LuaTeX} was not ready for
74 distribution.
76 The main feature of this release is that by default it includes
77 allocators for \hologo{LuaTeX}-provided features, such as Lua
78 functions, bytecode registers, catcode tables and Lua callbacks.
79 Previously these features have been provided by the contributed
80 \package{luatex} (Heiko Oberdiek) and \package{luatexbase}
81 (\'{E}lie Roux,
82 Manuel P\'{e}gouri\'{e}-Gonnard and Philipp Gesang)
83 packages. However, just as
84 noted with the \package{etex} package in the previous release, it is
85 better if allocation is handled by the format to avoid problems with
86 conflicts between different allocation schemes, or definitions made
87 before a package-defined allocation scheme is enabled.
89 The facilities incorporated into the format with this release, and
90 described below, are closely modelled on the \package{luatexbase}
91 package and we thank the authors, and especially \'{E}lie Roux, for
92 help in arranging this transition.
94 The implementation of these \hologo{LuaTeX} features has been
95 redesigned to match the allocation system introduced in the 2015/01/01
96 \LaTeX\ release, and there are some other differences from the previous
97 \package{luatexbase} package. However, as noted below,
98 \package{luatexbase} is being updated in line with this \LaTeX\ release
99 to provide the previous interface as a wrapper around the new
100 implementation, so we expect the majority of documents using
101 \package{luatexbase} to work without change.
103 \subsection{Names of \hologo{LuaTeX} primitive commands}
105 The 2015/01/01 \LaTeX\ release for the first time initialised
106 \hologo{LuaTeX} in \textsf{latex.ltx} if \hologo{LuaTeX} is being
107 used. Following the convention used in the contributed
108 \textsf{lualatex.ini} file used to set up the format for earlier
109 releases, most \hologo{LuaTeX}-specific primitives were defined with
110 names prefixed by \texttt{luatex}. This was designed to minimize name
111 clashes but had the disadvantage that names did not match the
112 \hologo{LuaTeX} manual, or the names used in other formats, and
113 produced some awkward command names such as \verb|\luatexluafunction|.
114 From this release the names are enabled without the \texttt{luatex}
115 prefix.
117 In practice this change should not affect many documents; relatively
118 few packages access the primitive commands, and many of those are
119 already set up to work with prefixed or unprefixed names, so that they
120 work with multiple formats.
122 For package writers, if you want to ensure that your code works with
123 this and earlier releases, use unprefixed names in the package and
124 ensure that they are defined by using code such as:
125 \begin{verbatim}
126 \directlua{tex.enableprimitives("",
127 tex.extraprimitives(
128 "omega", "aleph", "luatex"))}
129 \end{verbatim}
130 Conversely if your document uses a package relying on prefixed names
131 then you can add:
132 \begin{verbatim}
133 \directlua{tex.enableprimitives("luatex",
134 tex.extraprimitives(
135 "omega", "aleph", "luatex"))}
136 \end{verbatim}
137 to your document.
139 Note the compatibility layer offered by the \package{luatexbase} package
140 described below makes several commands available under both names.
142 As always, this change can be reverted using:\\
143 \verb|\RequirePackage[2015/01/01]{latexrelease}|\\
144 at the start of the document.
148 \subsection{\TeX\ commands for allocation in \hologo{LuaTeX}}
149 For detailed descriptions of the new allocation commands see the
150 documented sources in \textsf{ltluatex.dtx} or chapter N of
151 \textsf{source2e}; however, the following new allocation commands are
152 defined by default in \hologo{LuaTeX}:
153 \verb|\newattribute|,
154 \verb|\newcatcodetable|,
155 \verb|\newluafunction| and
156 \verb|\newwhatsit|.
157 In addition, the commands \verb|\setattribute| and
158 \verb|\unsetattribute| are defined to set and unset Lua attributes
159 (integer values similar to counters, but attached to nodes). Finally
160 several catcode tables are predefined:
161 \verb|\catcodetable@initex|,
162 \verb|\catcodetable@string|,
163 \verb|\catcodetable@latex|,
164 \verb|\catcodetable@atletter|.
166 \subsection{Predefined Lua functions}
167 If used with \hologo{LuaTeX}, \LaTeX\ will initialise a Lua table,
168 \textsf{luatexbase}, with functions supporting allocation and also
169 the registering of Lua callback functions.
171 \subsection{Support for older releases and plain \TeX}
172 The \hologo{LuaTeX} allocation functionality made available in this
173 release is also available in plain \TeX\ and older \LaTeX\ releases
174 in the files \textsf{ltluatex.tex} and \textsf{ltluatex.lua} which may be
175 used simply by including the \TeX\ file: \verb|\input{ltluatex}|.
176 An alternative for old \LaTeX\ releases is to use:\\
177 \verb|\RequirePackage[2015/10/01]{latexrelease}|\\
178 which will update the kernel to the current release, including
179 \hologo{LuaTeX} support.
181 \subsection{Additional \hologo{LuaTeX} support packages}
182 In addition to the base \LaTeX\ release two packages have been
183 contributed to the \textsf{contrib} area on CTAN. The
184 \package{ctablestack} package offers some commands to help package
185 writers control the \hologo{LuaTeX} \textsf{catcodetable}
186 functionality, and the \package{luatexbase} package replaces the
187 previously available package of the same name, providing a compatible
188 interface but implemented over the \package{ltluatex} code.
190 \section{More Floats and Inserts}
191 If \hologo{eTeX} is available, the number of registers allocated in
192 the format to hold floats such as figures is increased from 18 to 52.
194 The extended allocation system introduced in 2015/01/01 means that in
195 most cases it is no longer necessary to load the \package{etex}
196 package. Many classes and packages that previously loaded this package
197 no longer do so. Unfortunately in some circumstances where a package
198 or class previously used the \package{etex} \verb|\reserveinserts|
199 command, it is possible for a document that previously worked to
200 generate an error ``no room for a new insert''. In practice this error
201 can always be avoided by declaring inserts earlier, before the
202 registers below 256 are all allocated. However, it is better not
203 to require packages to be re-ordered and in some cases the re-ordering
204 is complicated due to delayed allocations in \verb|\AtBeginDocument|.
206 In this release, a new implementation of
207 \verb|\newinsert| is used which allocates inserts from the previously
208 allocated float lists once the classical register allocation has run
209 out. This allows an extra 52 (or in \hologo{LuaTeX}, 64~thousand)
210 insert allocations which is more than enough for practical documents
211 (by default, \LaTeX\ only uses two insert allocations).
213 \section{Updated Unicode data}
216 The file \textsf{unicode-letters.def} recording catcodes, upper and
217 lower case mappings and other properties for Unicode characters has
218 been regenerated using the data files from Unicode~8.0.0.
220 \section{Support for Comma Accent}
221 The command \verb|\textcommabelow| has been added to the format.
222 This is mainly used for the Romanian letters
223 \textcommabelow{S}\textcommabelow{s}\textcommabelow{T}\textcommabelow{t}.
224 This was requested in latex/4414 in the \LaTeX\ bug tracker.
226 \section{Extended \package{inputenc}}
227 The \texttt{utf8} option for \package{inputenc} has been extended to support
228 the letters s and t with comma accent,
229 U+0218\,--\,U+021b. Similarly circumflex w and y U+0174\,--\,U+0177 are defined.
230 Also U+00a0 and U+00ad are declared by default, and defined to be
231 \verb|\nobreakspace| and \verb|\-| respectively.
233 The error message given on undefined UTF-8 input characters
234 now displays the Unicode number
235 in U+\textit{hex} format in addition
236 to showing the character.
238 \section{Pre-release Releases}
239 The patch level mechanism has been used previously to identify \LaTeX\
240 releases that have small patches applied to the main release, without
241 changing the main format date.
243 The mechanism has now been extended to allow identification of
244 pre-release versions of the software (which may or may not be released
245 via CTAN) but can be identified with a banner such as\\
246 {\catcode`\<=13 \def<{\string<} \catcode`\>=13 \def>{\string>}%
247 \verb|LaTeX2e <2015/10/01> pre-release-1|}\\
248 Internally this is identified as a patch release with a negative patch
249 level.
251 \section{Updates in tools}
253 The \package{multicol} package has been updated to fix the interaction
254 with ``here'' floats that land on the same page as the start or end of
255 a \textsf{multicols} environment.
257 \end{document}