Are l3kernel and l3packages present in most of the LaTeX distributions? Are they "stable enough"?

I am asking this because I am preparing a .tex document for a client. I have found convenient to use things like the xparse package or expl3 syntaxis. How likely is that the client will have problems to compile it (either now or in the future, in case the packages cease to be available or change substantially)? Should I avoid LaTeX3 by now and stick to LaTeX2e?

I'm pretty new both to this forums and to LaTeX3, so please let me apologize if the question is not appropriate in any way.

Thanks a lot in advance!

  • 8
    The package xparse introduces most commands as stable: At present, the functions in xparse which are regarded as “stable” are: (documentation of xparse page 1). Nov 16, 2013 at 13:50
  • 8
    And in the documentation to LaTeX3 you will find: While expl3 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 expl3. Nov 16, 2013 at 13:52
  • 2
    In my experience the question is if the packages are available already. At my university, for example, there's still a system-wide TeXlive 2009 installation being used (and they're in no hurry to upgrade ...) and using newer packages is a mess, especially on shared projects...
    – Jonathan
    Nov 19, 2013 at 21:49

2 Answers 2


The degree to which something is 'stable enough' will depend on your requirements. I'll answer by taking this situation in roughly the order of stability as I see it.

If you want 'will never change again', then plain TeX is probably your best bet. Knuth does still fix bugs periodically, but most things are now likely to be regarded as 'features' rather than bugs and so it's extremely likely that a document written in plain today will still work totally unchanged in tens of years (assuming TeX systems continue to be available).

The LaTeX2e kernel is also very unlikely to change further, and so is almost if not quite as stable as TeX itself. The team do fix bugs and do allow a bit more leeway than Knuth does, but even so it's extremely unlikely anything will change with LaTeX2e at the kernel level in a way that would require changes in documents.

There are some LaTeX packages one could reasonably decide to use which are also very stable and unlikely to see changes, either because they are no longer being actively developed or because the authors are careful to only change code related to genuine bugs or new, non-breaking, features. Obvious candidates are keyval, graphicx, etc.: probably there is actually quite a decent list, depending on your requirements.

In the case of the LaTeX3 packages l3kernel and l3packages, 'stable' does not extend as far as 'you will never have to make a change to a document using them', at least at this stage. What it means is that the team will not be making 'arbitrary' changes and will document/announce when this happens. Most of l3kernel is 'done', with the plans primarily focussed on addition of new functionality rather than altering existing code. However there are a few places where we know some change may be required, and that will be announced on the LaTeX-L mailing list and documented. Even within these changes, 'breaking' (non-back-compatible) alterations will be small in number, but there is at least one of them we still need to do.

In the case of xparse, \DeclareDocumentCommand and so on are 'stable' in the sense that they will only be augmented, not removed, but there could be some changes on the more esoteric functions (for example, there are questions centred on the g argument type).

Thus 'stable enough' depends on your use case. If you can live with 'will have to make very occasional changes based on documented and scheduled updates' then expl3 is entirely usable. (I and others use if routinely in packages.) On the other hand, if you want 'this code must work with no changes with all future releases of support code' then we are not quite there yet.

  • 1
    Excellent explanation Joseph! I'm wondering what you meant by ''assuming TeX continues to be available''. In other words, what would be the chances that TeX is no longer available?
    – doed
    Nov 16, 2013 at 20:54
  • 2
    @doed Well someone has to compile TeX for whatever OS you are using. Who is to say what might be the situation in 5, 10, 20, 50, ... year time.
    – Joseph Wright
    Nov 16, 2013 at 21:15

I'd say it depends on your client and what he/she intends to do with it. My experience has been that people are often not too happy to update/reconfigure their entire TeX distribution (or in some cases even operating system) only for some fancy package to work that's only needed for some elegant TeX-nerd trick. This becomes especially problematic if the TeX distribution is installed on some network where administrator privileges become an issue.

Having said this, and considering that until quite recently, TeXlive 2009 was still default on many linux systems, I'd advise you to stay clear of any features/packages added in, say, the last five years unless either your client is also a TeX-enthusiast or you know the system your files should compile on.

In other words, I'd advise you to avoid LaTeX3 for some more years, if you want to produce files that your "average" TeX user will be able to compile without compatibility issues.

  • 1
    BTW: if you want to avoid expl3 completely you must also avoid several packages such as fontspec and siunitx...
    – cgnieder
    Nov 19, 2013 at 22:35
  • 1
    Certainly you need to check what the client regards as 'standard'. If they are on a 'fixed' distribution then stability in a 'latest release' sense is not really an issue, as if you have no likelihood of an update in the target system then what happens elsewhere is irrelevant.
    – Joseph Wright
    Nov 20, 2013 at 7:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.