LaTeX3 Programming Conventions
Release 2017/03/18 (r7019)
The files of the
l3kernel bundle provide a low-level API for TeX programmers with special syntax conventions, completely separating it from document level syntax. Hence, the commands provided are not intended for use at the document level nor for use in describing design layouts in document class files.
This API provides the foundation on which the LaTeX3 kernel and other advanced extensions are built. Special care has been taken so that they can be used within a LaTeX2ε context as regular packages.
l3kernel is still experimental, the bundle is now regarded as broadly stable. The syntax conventions and functions provided are now ready for wider use. There may still be changes to some functions, but these will be minor when compared to the scope of
Programmers making use of
l3kernel are strongly encouraged to subscribe to the LaTeX-L mailing list (see below): announcements concerning the deprecation or modification of functions are made on the list.
l3kernel bundle requires the ε-TeX extensions and additional functionality to support string comparisons, expandable character generation with arbitrary category codes (for Unicode engines) and PDF support primitives (where direct PDF generation is used). The bundle will therefore only work with the following engines:
- pdfTeX v1.40 or later
- XeTeX v0.9994 or later
- LuaTeX v0.70 or later
- e-(u)pTeX from mid-2012 onward
pdfTeX v1.40 was released in 2007, and so any recent TeX distribution will support
l3kernel. Both XeTeX and LuaTeX have developed more actively over the past few years, and for this reason only recent releases of these engines are supported.
(Engine developers should contact the team for detailed discussion about primitive requirements.)
Discussion concerning the approach, suggestions for improvements, changes, additions, etc. should be addressed to the list LaTeX-L.
You can subscribe to this list by sending mail to
with the body containing
subscribe LATEX-L <Your-First-Name> <Your-Second-Name>
The issue tracker for LaTeX3 is currently located on GitHub.
Please report specific issues with LaTeX3 code there; more general discussion should be directed to the LaTeX-L list.
The LaTeX3 Project
Development of LaTeX3 is carried out by The LaTeX3 Project. Currently, the team members are
- Johannes Braams
- David Carlisle
- Robin Fairbairns
- Morten Høgholm
- Bruno Le Floch
- Frank Mittelbach
- Will Robertson
- Chris Rowley
- Rainer Schöpf
- Joseph Wright
Former members of The LaTeX3 Project team were
- Michael Downes
- Denys Duchier
- Alan Jeffrey
- Thomas Lotze
- Martin Schröder
The development team can be contacted by e-mail: <firstname.lastname@example.org>; for general LaTeX3 discussion the LaTeX-L list should be used.
Copyright (C) 1998-2012,2015-2017 The LaTeX3 Project
All rights reserved.
Download the contents of this package in one zip archive (7.5M).
l3kernel – LaTeX3 programming conventions
The l3kernel bundle provides an implementation of the LaTeX3 programmers’ interface, as a set of packages that run under LaTeX 2e. The interface provides the foundation on which the LaTeX3 kernel and other future code are built: it is an API for TeX programmers. The packages are set up so that the LaTeX3 conventions can be used with regular LaTeX 2e packages.
All the files of the bundle are also available in the project’s Subversion (SVN) repository
|Version||SVN 7019 2017-03-18|
The LaTeX Project Public License 1.3|
|Copyright||1990–2017 The LaTeX Project|
|Maintainer||The LaTeX Team |
|Contained in||TeX Live as l3kernel|
|MiKTeX as l3kernel|
work done for the project to upgrade LaTeX|
macros to build a format
developing version of new software