• TeX Live 2019 Upgrade—January 2020

Posted on January 23, 2020

Following swiftly on from our upgrade to TeX Live 2018 in September last year, we’re pleased to announce that we’ve now upgraded our LaTeX compile servers to make TeX Live 2019 available. Below you’ll find some notes on important changes in TeX Live 2019 together with some observations based on our own testing. From now on all new projects created will use TeX Live 2019!

Will my existing projects work as usual?

Yes! The upgrade to TeX Live 2019 will not affect your existing projects because those projects will continue to use the TeX Live image they were created with and should continue to work as normal.

How can I switch to TeX Live 2019 for existing projects?

If you want to transfer an existing project to TeX Live 2019 you can either make a clone of that project or contact us for support. Note that some projects will require changes once you switch to TeX Live 2019 from an older image. We’ve included some of the more common issues you might encounter later in this post.

What’s New in TeX Live 2019?

The official release notes for TeX Live 2019 are available from TUG. The LuaTeX engine now uses Lua 5.3 (read more on key changes in Lua 5.3), and for advanced users, you can now use the HarfBuzz text shaping engine with LuaLaTeX via the lualatex-dev binary. For those interested in TeX’s internals, many TeX engines in TeX Live 2019 now incorporate the \expanded primitive. You can also read more about TeX Live, and Overleaf’s Tex Live upgrade process.

Key Changes in TeX Live 2019

KOMA-Script classes and titlesec incompatibility

The KOMA-Script classes, i.e., scrbook, scrartcl, scrreprt, will now throw errors if the titlesec package is loaded. Instead, use the commands provided by the KOMA-Script classes (\setkomafont, \addtokomafont, \usekomafont) to customise sectional headings: see the “Text Markup” section in the KOMA-Script package documentation for further details.

The chemfig package has overhauled its styling options interface quite a bit! For example, where you had written \setatomsep{16pt} previously, you would now need to change this to \setchemfig{atom sep=16pt} in TeX Live 2019. See “The \chemfig macro” section in the chemfig package documentation for the full list of keys that can be used with the \setchemfig command.

To get old style figures with the opensans package, you’ll now have to write \usepackage[oldstyle,defaultsans]{opensans} in TeX Live 2019, instead of \usepackage[osfigures,defaultsans]{opensans} as in TeX Live 2018 and earlier.

droidmono package name change

If you had been using the droidmono package to make your project’s teletype (or monospaced) text typeset with the Droid Mono font, you may be surprised to see the error message that this package is no longer available. That’s because it’s been renamed to droidsansmono in TeX Live 2019, so change your \usepackage{droidmono} line to \usepackage{droidsansmono}.

\makeatletter, \makeatother in .sty and .cls files

This is of more interest to users who write their own package .sty or document class .cls files. The @ character is a special character in LaTeX. To quote from Alan Munn’s great answer:

In LaTeX class and package files [...] @ is treated as a normal letter (catcode 11) and this allows package writers to make macro-names with @. The advantage of this is that such macro names are automatically protected from regular users: since they cannot use @ as a normal letter, there is no accidental way for a user to override or change a macro that is part of the internal workings of a package.

In practical terms, if you need to modify a package internal macro that contains the @ symbol in its name, you will need to surround your modifications by these commands:

\makeatletter % changes the catcode of @ to 11

\makeatother % changes the catcode of @ back to 12

The commands should not be used within .sty and .cls files themselves as they may conflict with the catcode changes that occurs when package and class files are loaded.

Before this, if you do use \makeatletter and \makeatother in your own .sty or .cls files, nothing really bad would have happened. But now, in TeX Live 2019, they may indeed cause mysterious-sounding errors! Therefore it would be good to check for any \makeatletter and \makeatother in your .sty or .cls files, and remove them, to make sure they are compatible with TeX Live 2019.

pdfcprot package outdated

The pdfcpropt package is now obsolete and can cause all sorts of error messages. If you’re using (or authoring) a template that uses this package, replace it with microtype instead.

apa.bst package outdated

The apa.bst file is no longer distributed in TeX Live 2019, so new or cloned projects using \bibliographystyle{apa} will not have the references generated. If you want to continue using apa.bst, you will need to manually upload a copy to your project. You can find it here: http://mirrors.ctan.org/biblio/bibtex/contrib/misc/apa.bst

Nevertheless, apa.bst is very old (it was last updated in 1992). It may be more sustainable to use the apacite style and package instead, which is much more recent.

To do this, change
\usepackage{natbib}
to
\usepackage[natbibapa]{apacite}

and \bibliographystyle{apa}
to
\bibliographystyle{apacite}

And finally… HarfBuzz and Colour Emojis!

What is HarfBuzz?

HarfBuzz is a text shaping engine that takes a string containing a sequence of Unicode characters, plus a font (usually OpenType) and applies the font’s layout rules and features to that string.

A vital task performed by HarfBuzz is applying shaping and typographic rules appropriate to the particular script/language in which the text was written. It is widely used for shaping text written in languages that use complex scripts, such as Arabic, Devanagari amongst others.

The result of HarfBuzz’s work is a sequence of font glyph IDs, and positioning data, ready for typesetting. HarfBuzz can be used with LuaLaTeX: one current implementation is luahblatex, which is available as lualatex-dev in TeX Live 2019.

To use luahblatex with your Overleaf project, first set your project’s compiler to be LuaLaTeX, and then add a file named latexmkrc (without file extensions) containing the following line:

\$lualatex = 'lualatex-dev';

One fun application of HarfBuzz and luahblatex (lualatex-dev) is that you can now typeset coloured emojis in your LaTeX documents, using the Noto Color Emoji font!

\usepackage{fontspec} \newfontfamily{\NotoEmoji} {NotoColorEmoji.ttf}[Renderer=Harfbuzz]

Trying out colour emojis with Noto Color Emoji:

{\NotoEmoji \symbol{"1F343} \symbol{"1F338} }

Note that the Overleaf editor doesn’t currently support non-BMP unicode characters, so you can’t paste or type emojis directly into your code. Instead, you’ll have to use the respective emoji’s hex code.

Getting Help

We’ll be updating this blog post with resolutions or workarounds for any other issues that come up after the upgrade. If your project has stopped working, please contact our support team and include the link to your project, and we'll try to help.

Tags: