- Posted on January 23, 2020
TeX Live 2019 Upgrade—January 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 thetitlesec
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.chemfig
package updatesThe 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 thechemfig
package documentation for the full list of keys that can be used with the\setchemfig
command.opensans
package updatesTo 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 changeIf 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 filesThis 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.If your project uses
babel
and you suddenly get errors…Try adding the
shorthands=off
option when loading the babel package, or add\PassOptionsToPackage{shorthands=off}{babel}
before your\documentclass{...}
line.pdfcprot
package outdatedThe
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 withmicrotype
instead.apa.bst
package outdatedThe
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.bstNevertheless,
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 aslualatex-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 namedlatexmkrc
(without file extensions) containing the following line:$lualatex = 'lualatex-dev';
What About The Colour Emojis?
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.