CTAN Comprehensive TeX Archive Network

Directory macros/latex/contrib/l3kernel


3 Programming Conventions

Release 2022-01-21


The files of the l3kernel bundle provide a low-level API for 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 3 kernel and other advanced extensions are built. Special care has been taken so that they can be used within a context as regular packages.

While 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 l3kernel.

Programmers making use of l3kernel are strongly encouraged to subscribe to the -L mailing list (see below): announcements concerning the deprecation or modification of functions are made on the list.


The l3kernel bundle requires the 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 only works with the following engines:

  • pdf v1.40 or later
  • v0.99992 or later
  • Lua v1.10 or later
  • e-(u)p from mid-2012 onward

pdf v1.40 was released in 2007, and so any recent distribution supports l3kernel. Both and Lua 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 -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 3 is currently located on GitHub.

Please report specific issues with 3 code there; more general discussion should be directed to the -L list.

The Project

Development of 3 is carried out by The Project.

The development team can be contacted by e-mail: <latex-team@latex-project.org>; for general 3 discussion the -L list should be used.

Copyright (C) 1998-2012,2015-2022 The LaTeX Project
All rights reserved.

Download the contents of this package in one zip archive (12.3M).

l3kernel – 3 programming conventions

The l3kernel bundle provides an implementation of the 3 programmers’ interface, as a set of packages that run under . The interface provides the foundation on which the 3 kernel and other future code are built: it is an API for programmers. The packages are set up so that the 3 conventions can be used with regular packages.

Home pagehttp://www.latex-project.org/code.html
Bug trackerhttps://github.com/latex3/latex3/issues
Version 2022-01-21
LicensesThe Project Public License 1.3c
Copyright1990–2022 The Project
MaintainerThe Team
TDS archivel3kernel.tds.zip
Contained inTeX Live as l3kernel
MiKTeX as l3kernel
Pre release
See alsol3backend
Guest Book Sitemap Contact Contact Author