LATEX3 News
Issue 2, June 2009

TEX Live and the expl3 code

Some specifics

TEX Live 2009 is almost upon us, and the LATEX3 teamhave been readying a new release of the experimental LATEX3 code for this. Very dramatic changes haveoccurred since the last public release of the code in
TEX Live 2008; no backwards compatibility has been
maintained (as warned in the beginning of the documentation) but we believe the changes made are allmuch for the better. Almost every single part of expl3
has been scrutinized, resulting in a far more coherent
code base.
The expl3 code is now considered to be much morestable than it was before; a comprehensive test suitehas been written that helps to ensure that we don’t
make any mistakes as we change things in the future.
In the process of writing the test suite, many minor
bugs were fixed; we recommend such test suites for all
similar developmental projects! Some small underlying
changes are still expected in the expl3 code, but major,
disruptive, changes aren’t planned.

Morten Høgholm will be presenting the recent changes
in much more detail at tug 2009. Here are some quick
specifics for those interested. New code written andbroad changes made to the expl3 modules:

Planned updates
Until now, the last update to ctan of the expl3 bundle
was for TEX Live 2008. Now that work on the codeis happening on a semi-steady basis, we plan to keep
updates rolling out to ctan more frequently. This willallow anyone who wishes to experiment with the newcode to use the TEX Live or MiKTEX updaters to install a recent version without having to ‘check out’ thesvn repository and install the packages manually.

New members
We didn’t say anything about it in the last status update, but Joseph Wright and Will Robertson are now
members of the LATEX Team. They have been working
fairly exclusively on the expl3 code.
It’s worth repeating that LATEX 2ε is essentiallyfrozen in order to prevent any backwards compatibility
problems. As desirable as it is to benefit from the newfeatures offered by new engines XeTEX and LuaTEX, wecannot risk the stability of production servers runningolder versions of LATEX 2ε which will inevitably end up
processing documents written into the future.
LATEX3 will not be inheriting the same restraints, sostay tuned.

More logical function names Many function
names that were hold-outs from the TEX naming system have been changed to fit into the more logicalscheme of expl3; e.g., \def:Npn and \let:NN are now\cs_set:Npn and \cs_set_eq:NN.
Defining functions and conditionals Much thought
was put into new ways to define functions and conditionals with a minimum of code. See \cs_set:Nn and\prg_set_conditional:Nnn.
Smart comparisons Comparisons can be mademuch more easily now, with familiar notation such
as \intexpr_compare_p:n{ #1+3 != \l_tmpa_int }.
Data from variables A new function argument specifier V has been added for extracting information fromvariables of different types, without needing to know
the underlying variable structure. Some other tidy-ups
on the argument specifiers offered, partially as a resultof the addition of this new one.
l3msg New module to deal with communication between LATEX3 code and the user (info messages, warnings, and errors), including message filtering partiallyinspired by the silence package.

The next six months
Having overhauled the expl3 code, we now plan to perform an analogous process with the foundations of thexpackages. These are the higher-level packages thatwill provide the basic needs such as control of the pagelayout and rich document-level interaction with theuser. As the groundwork for this layer of the document
processing matures, we will be able to start building
more packages for a LATEX3 kernel; these packages will
also be usable on top of LATEX 2ε and serve as broadly
customisable templates for future document design.
As gaps in the functionality offered by expl3 arefound (in some cases, we know that they exist already),
the programming layer will be extended to support ourneeds. In other cases, wrappers around TEX functions
that can be more usefully handled at a higher level will
be written.

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

In terms of what we’re planning to work on next,
three xpackages will take the focus of our attention.
xbase ‘xbase’ is actually two packages: xparse andtemplate. These contain code for, respectively, defining new document commands (such that a user woulduse; e.g., \section, \makebox, . . . ) and for handlingkeyval lists for user input and document specification.
xparse was presented at tug 19991 and Lars Hellströmwrote some notes on template in 20002 . Functionality
coverage for these packages is good but concepts need agood “airing”. There are various approaches taken for
keyval input, some more recent than the template code,
so there are some alternatives to evaluate.
galley2 Sophisticated handling for constructing paragraphs and other document elements. Morten spoke on
this at tug 20083 . Design needs to be revisited aftersome stress testing.
xor This is the LATEX3 output routine for splitting thegalley into page and sub-page sized chunks. Ideas andcode need work to move to “production ready” status.
Early developments with this package were publishedby Frank in 20004 .
Expect to hear again from us at Christmas. If you’d
like to discuss any of these ideas, please join us on thelatex-l mailing list5 .

1 http://www.latex-project.org/papers/tug99.pdf
2 http://www.latex-project.org/papers/template-notes.pdf
3 http://river-valley.tv/the-galley-module/
4 http://www.latex-project.org/papers/xo-pfloat.pdf
5 http://www.latex-project.org/code.html