The third and final LaTeX pre-release for 2020-10-01 is available for testing

A few days ago we submitted a new LaTeX development format1 to CTAN and by now this should be available to all users using MiKTeX or TeX Live (on any operating system).

Main features of the final pre-release for 2020-10-01

In the previous pre-releases, distributed in May and July, the following main features (besides bug fixes) were made available:

  • The functionality of the xparse package was added directly to the LaTeX kernel.
  • LaTeX’s font series handling was improved.
  • A general hook management system was added to improve package interoperability and enable easier customization.

In this final prerelease we have fully integrated the hook management system (previously it was added at the end, overwriting earlier definitions in the kernel). In addition the following features were added:

  • The picture environent now supports dimensions (and not only numbers multiplied by \unitlength) in places where coordinates have to be specified. This is basically incorporating into the kernel the functionality of the picture.sty package by Heiko Oberdiek.
  • A \ShowCommand was added to show the definition of robust commands in an easy manner.
  • A \NewCommandCopy was added to allow making copies of robust commands (which can’t be done using \let).
  • docstrip and l3docstrip were merged so that one can now always use docstrip even with expl3-based sources.

Other fixes and improvements

There have been a larger number of smaller bug fixes and enhancements. A full list of all fixes and additions is given in a draft version of ltnews32, which you should be able to read by running

texdoc ltnews32

on the command line (or by any other means available with your operating system—somewhere there should be a file called ltnews32.pdf that you can open with a PDF reader). The draft version of this file is also available from our website as LaTeX2e News Issue 32 draft.

A general hook management system for LaTeX (the main feature of the 2020 fall release)

Most LaTeX users and package writers will know the handful of hooks that LaTeX has been offering until now, the most important one perhaps being \AtBeginDocument. These are important hooks, but they are far too few so that in many cases package developers had to directly patch the internals of LaTeX. This resulted in many problems.

With the new hook management system, LaTeX will get many more hooks that packages writers (and authors) can use to add code in a controlled and reliable way. New hooks have been added in a number of places by using the new system and more will follow over time. Available now are:

  • Hooks to add code before and after environments (formerly offered through the etoolbox package);
  • Hooks used when loading files, packages, or classes (similar to what the filehook package now provides);
  • Hooks in the page-building process (e.g., functionality previously available through packages such as atbegshi or atveryend and a few others).

The important point here is not so much that the functionality of these packages has been integrated into the LaTeX kernel, but that the hook management system provides a single structured way for different packages to reliably add and order code. This will resolve many of the inter-package interoperability issues which formerly could be resolved (if at all) only by loading the packages in a specific order, or by the use of complex and fragile code inside the packages to account for various scenarios in user documents.

The hook management system is currently described in these three documents:

  • texdoc lthooks — The description of the interfaces and the core hooks already added to the kernel.
  • texdoc ltshipout — The documentation of the hooks available during the page production process.
  • texdoc ltfilehook — hooks that can be used before or after a file gets loaded.

Outlook

We expect this to be the final pre-release matching the code that goes into the 2020-10-01 release, except for any bug fixes that are found between now and the release date.

Please help with the testing

We are issuing this final pre-release now in the hope that you will help us by making sure that all the enhancements and fixes we have provided are safe and that they do not have any undesired side effects, so please help with the testing if you can.

This development format allows you to test the upcoming LaTeX release scheduled for 2020-10-01 with your documents or packages. Such testing is particularly important for package maintainers to verify that changes to the core LaTeX haven’t introduced incompatibilities with existing code. We try to identify any such problems beforehand but such an undertaking is necessarily incomplete, which is why we are asking for user testing.

Besides developers, we also ask ordinary users to try out the new release, because the more people that test the new format, the higher the chances that any hidden problems are identified before the final release hits the streets.

Processing your documents with the pre-release is straightforward. All you have to do is to replace the invocation command by appending -dev to the executable, e.g., on the command line you would run

pdflatex-dev myfile    or    lualatex-dev myfile    or    xelatex-dev myfile

instead of using pdflatex, lualatex or xelatex. If you use an integrated editing environment, then it depends on the system how to configure it to use an alternative format; but in any case the necessary modification should be straightforward.

Enjoy — Frank

  1. The internal version number for this pre-release is LaTeX2e <2020-10-01> pre-release-8, the first 5 pre-releases just mirrored the patch releases we did for 2020-02-02.