expl3, LaTeX3, LaTeX2e, and TeX

First, it's worth remembering that LaTeX3 is a long-term project and has the goal of creating a stand-alone set up. However, at this stage that is not what we have: expl3 is the main 'product' of the team. The expl3 language is the programming layer for LaTeX3, but is usable as a LaTeX2e package. The latter point is important: to get work moving forward, the team need people to actually use the code, and that means making it work with current documents. Note that there are LaTeX3 products beyond expl3, most obviously xparse.

  1. expl3 is set up as a stand-alone language which is implemented by first renaming all of the TeX primitives (see l3names.dtx) then using these to bootstrap the language. When loaded as a LaTeX2e package, there are some places that the mechanisms of the format are important (for example the register allocator), and they are therefore used. (expl3 is TeX-based in the same way as plain TeX or LaTeX2.)

  2. The aim is that eventually expl3 will be entirely self-documented. However, at present this is not the case. One way or another, one does need to be familiar with fundamental TeX concepts such as tokenisation, expansion, etc. Depending on what the aim of the code written is, one may also need other LaTeX2e knowledge: for example, if you want to use expl3 to work with different fonts, you will at present need to use the LaTeX2e NFSS.

  3. As stated at the start of this answer, the long term goal of the team is to create a stand-alone product. However, this will only be worthwhile if users can migrate to it. Much of the ongoing development work is therefore focussed on 'LaTeX3-in-2e', that is to say package code which can be used with LaTeX2e. Some of that is somewhat 'experimental' (as it does not 'play nicely' with the full set of LaTeX2e packages: see e.g. xgalley) while large parts are entirely self-contained (expl3, xparse). Over time the team are implementing a wide range of ideas for expl3/LaTeX3: for example, I am currently (August 2017) working on image inclusion.

Finally, some parts of the code (expl3) can be used in formats other than LaTeX whilst other parts (xparse, xgalley) cannot as they rely to some extent on LaTeX2e concepts. Much of the code could be made entirely generic but there are questions about the usefulness of this: most TeX users use LaTeX2e, and those who use other formats probably do not want to use these types of libraries.


  1. No, it only uses primitives.
  2. No and not yet decided.
  3. Yes and not yet decided.

You can dump a format from the current expl3 but it will just do nothing because it doesn't provide basic things like an output routine. If you are already running some format (Plain TeX, LaTeX2e, ConTeXt, lollipop, etc) you can input the expl3 macro package and use everything it provides.


I think you are asking whether there exists a format which has expl3 preloaded, to which the answer is no.

Tags:

Latex3

Expl3