The second 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 second pre-release for 2020-10-01

The first pre-release, distributed at the end of May, had the following two main features (beside bug fixes):

  • the functionality of the xparse package was added directly to the LaTeX kernel
  • LaTeX’s font series handling was improved

This second pre-release adds one major new component to LaTeX: a general hook management system to improve package interoperability and enable easier customization and extension of LaTeX.

A general hook management system for LaTeX

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. Thus 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 (for the final release they will be consolidated):

  • 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.

Other fixes and improvements

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 at 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.

Outlook

We expect to produce a third and final pre-release incorporating the user feedback we receive and consolidating some of the documentation. A few additional outstanding issues are expected to get fixed as well, but nothing major — the main functionality planned for the fall release is available already now with the second pre-release.

Please help with the testing

We are issuing this second 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 in October hits the streets.

Processing your documents with the pre-release is straight forward. 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 straight forward.

Enjoy — Frank

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