The first LaTeX prerelease for 2020-10-01 is available for testing

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

This 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 problem beforehand, but such an undertaking is necessarily incomplete, which is why we ask for user testing.

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

Processing your documents with the prerelease 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.

Main features of the first prerelease for 2020-10-01

We have been quite busy (did Corona help?) and so already this first prerelease contains close to thirty smaller and larger fixes and enhancements. A full list 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 is also available from our website as LaTeX2e News Issue 32 draft.

In this post I only touch two of the most important topics, but many others are worth exploring too, so please check that documentation out.

Providing xparse as part of the format

In the previous release we added the LaTeX3 programming layer to the LaTeX format to improve the loading speed when packages using expl3 are used (such as fontspec or xparse). In the upcoming release we are now extending this support by integrating xparse so that the extended interface for defining document-level commands becomes available out of the box.

This enables users and most importantly package developers to easily define LaTeX commands with multiple optional arguments or other syntax features with ease. For details, check out the xparse documentation, e.g., via texdoc xparse.

Improving the font series handling

In the previous release we extended NFSS (the new font selection scheme) to better support modern fonts that offer different font faces, e.g., condensed, semi-bold, etc., and make them work seamlessly with each other. Experiences with the extended interface showed that for some use cases adequate support was still missing or that in special setups the algorithms sometimes selected a wrong font series value. These cases have now been resolved and additional support commands have been added. For example, with

\IfFontSeriesContextTF{〈context〉} {〈true code〉}{〈false code〉}

you can now define commands that behave differently depending on the current font series context. The 〈context〉 to check has to be specified as either bf or md. The command then chooses the 〈true code〉 or the 〈false code〉 based on where it is used (e.g., inside \textbf (or \bfseries) or not).

Outlook

We issue the first prerelease now in the hope that you will help by making sure that all the enhancements and fixes inside are safe and without any undesired side effects, so please help with the testing if you can.

We expect further extensions (currently under development) to be added in a second prerelease, in particular a general hook management system for LaTeX, so stay tuned.

Enjoy — Frank

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