LATEX News
Issue 23, October 2015 (LATEX release 2015-10-01)

Contents
Enhanced support for LuaTEX
Names of LuaTEX primitive commands . . . . .
TEX commands for allocation in LuaTEX . . . .
Predefined Lua functions . . . . . . . . . . . .
Support for older releases and plain TEX . . . .
Additional LuaTEX support packages . . . . . .

1
1
2
2
2
2

More Floats and Inserts

2

Updated Unicode data2

Support for Comma Accent

2

Extended inputenc2Pre-release Releases

2

Updates in tools

2

Enhanced support for LuaTEXAs noted in LATEX News 22, the 2015/01/01 release of
LATEX introduced built-in support for extended TEXsystems.
The range of allocated register numbers (for example,for count registers) is now set according to theunderlying engine capabilities to 256, 32768 or 65536.
Additional allocators were also added for the facilities
added by ε-TEX (\newmark) and XETEX(\newXeTeXintercharclass). At that time, however,
the work to incorporate additional allocators for
LuaTEX was not ready for distribution.
The main feature of this release is that by default itincludes allocators for LuaTEX-provided features, suchas Lua functions, bytecode registers, catcode tables andLua callbacks. Previously these features have been
provided by the contributed luatex (Heiko Oberdiek)
and luatexbase (Élie Roux, Manuel Pégourié-Gonnard
and Philipp Gesang) packages. However, just as notedwith the etex package in the previous release, it isbetter if allocation is handled by the format to avoid
problems with conflicts between different allocation
schemes, or definitions made before a package-definedallocation scheme is enabled.
The facilities incorporated into the format with thisrelease, and described below, are closely modelled on
the luatexbase package and we thank the authors, andespecially Élie Roux, for help in arranging thistransition.
The implementation of these 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 luatexbase
package. However, as noted below, luatexbase is being
updated in line with this LATEX release to provide theprevious interface as a wrapper around the new
implementation, so we expect the majority of
documents using luatexbase to work without change.
Names of LuaTEX primitive commands
The 2015/01/01 LATEX release for the first time
initialised LuaTEX in latex.ltx if LuaTEX is being
used. Following the convention used in the contributed
lualatex.ini file used to set up the format for earlier
releases, most LuaTEX-specific primitives were definedwith names prefixed by luatex. This was designed tominimize name clashes but had the disadvantage thatnames did not match the LuaTEX manual, or the names
used in other formats, and produced some awkward
command names such as \luatexluafunction. From
this release the names are enabled without the luatex
prefix.
In practice this change should not affect many
documents; relatively few packages access the primitivecommands, and many of those are already set up towork with prefixed or unprefixed names, so that theywork with multiple formats.
For package writers, if you want to ensure that yourcode works with this and earlier releases, use unprefixednames in the package and ensure that they are definedby using code such as:\directlua{tex.enableprimitives("",tex.extraprimitives("omega", "aleph", "luatex"))}Conversely if your document uses a package relying on
prefixed names then you can add:
\directlua{tex.enableprimitives("luatex",tex.extraprimitives("omega", "aleph", "luatex"))}to your document.
Note the compatibility layer offered by the luatexbase
package described below makes several commands
available under both names.

LATEX News, and the LATEX software, are brought to you by the LATEX Project Team; Copyright 2015, all rights reserved.

As always, this change can be reverted using:\RequirePackage[2015/01/01]{latexrelease}at the start of the document.
TEX commands for allocation in LuaTEX
For detailed descriptions of the new allocationcommands see the documented sources in ltluatex.dtx
or chapter N of source2e; however, the following new
allocation commands are defined by default in LuaTEX:\newattribute, \newcatcodetable, \newluafunction
and \newwhatsit. In addition, the commands\setattribute and \unsetattribute are defined to
set and unset Lua attributes (integer values similar tocounters, but attached to nodes). Finally several
catcode tables are predefined: \catcodetable@initex,\catcodetable@string, \catcodetable@latex,\catcodetable@atletter.
Predefined Lua functions
If used with LuaTEX, LATEX will initialise a Lua table,luatexbase, with functions supporting allocation andalso the registering of Lua callback functions.
Support for older releases and plain TEX
The LuaTEX allocation functionality made available inthis release is also available in plain TEX and older
LATEX releases in the files ltluatex.tex andltluatex.lua which may be used simply by including
the TEX file: \input{ltluatex}. An alternative for old
LATEX releases is to use:
\RequirePackage[2015/10/01]{latexrelease}which will update the kernel to the current release,including LuaTEX support.
Additional LuaTEX support packages
In addition to the base LATEX release two packages havebeen contributed to the contrib area on CTAN. The
ctablestack package offers some commands to help
package writers control the LuaTEX catcodetablefunctionality, and the luatexbase package replaces thepreviously available package of the same name,providing a compatible interface but implemented overthe ltluatex code.

More Floats and Inserts
If ε-TEX is available, the number of registers allocatedin 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 etex package. Many classes andpackages that previously loaded this package no longer
do so. Unfortunately in some circumstances where apackage or class previously used the etex
\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 canalways be avoided by declaring inserts earlier, before
the registers below 256 are all allocated. However, it isbetter not to require packages to be re-ordered and insome cases the re-ordering is complicated due todelayed allocations in \AtBeginDocument.
In this release, a new implementation of \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 LuaTEX,64 thousand) insert allocations which is more thanenough for practical documents (by default, LATEX onlyuses two insert allocations).

Updated Unicode data
The file unicode-letters.def recording catcodes,upper and lower case mappings and other properties forUnicode characters has been regenerated using the data
files from Unicode 8.0.0.

Support for Comma Accent
The command \textcommabelow has been added to theformat. This is mainly used for the Romanian letters
S, s, T, t, . This was requested in latex/4414 in the LATEX
bug tracker.

Extended inputenc
The utf8 option for inputenc has been extended tosupport 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 andU+00ad are declared by default, and defined to be\nobreakspace and \- respectively.
The error message given on undefined UTF-8 input
characters now displays the Unicode number in U+hex
format in addition to showing the character.

Pre-release Releases
The patch level mechanism has been used previously toidentify 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 canbe identified with a banner such as
LaTeX2e <2015/10/01> pre-release-1
Internally this is identified as a patch release with anegative patch level.

Updates in tools
The multicol package has been updated to fix theinteraction with “here” floats that land on the same
page as the start or end of a multicols environment.

–2