17

I updated my TeXlive distribution a couple times in the past week, and now I get this error when I include package expl3 (or any other package that includes it, such as fontspec). Before the updates it was working fine. Am I missing any package that should be installed? I tried searching for l3backend-pdfmode.def, but I found no results.

\documentclass{article}
\usepackage{expl3}
\begin{document}
Hi
\end{document}
λ lualatex a
This is LuaTeX, Version 1.10.0 (TeX Live 2019) 
 restricted system commands enabled.
(./a.tex
LaTeX2e <2018-12-01>

luaotfload | main : initialization completed in 0.042 seconds
(/opt/texlive/2019/texmf-dist/tex/latex/base/article.cls
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class
(/opt/texlive/2019/texmf-dist/tex/latex/base/size10.clo))
(/opt/texlive/2019/texmf-dist/tex/latex/l3kernel/expl3.sty
(/opt/texlive/2019/texmf-dist/tex/latex/l3kernel/expl3-code.tex)

! LaTeX Error: File `l3backend-pdfmode.def' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: def)

Enter file name: 
! Emergency stop.
<read *> 

l.282   }

 379 words of node memory still in use:
   2 hlist, 1 rule, 1 dir, 3 kern, 1 glyph, 4 attribute, 48 glue_spec, 4 attrib
ute_list, 1 write nodes
   avail lists: 2:9,3:3,4:1,5:2,7:2,9:2
!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on a.log.
  • 5
    The code has been moved to a dedicated package. Install the l3backend package. – Ulrike Fischer Jul 8 at 9:18
  • That works. I tried to tlmgr search l3backend but I forgot that it only searches locally by default, and I did not find anything. – Claudio Jul 8 at 9:33
  • May I ask how you update your texlive? Whenever I update I also get all the new packages, and thus aren't missing stuff like this module split. – daleif Jul 8 at 17:01
  • @daleif tlmgr update --all, possibly also tlmgr update --self if it complains. However, this was a minimal installation, so maybe that package should have been pulled in by some collection that was not installed (I am assuming, I am not sure how tlmgr works exactly) – Claudio Jul 8 at 19:52
  • That might explain it (that it was missing from a collection) as I always install everything – daleif Jul 8 at 19:53
16

Since the July 1st, 2019 release of the LaTeX3 kernel, the driver-specific code contained in the l3backend module was moved to a dedicated package in CTAN, and now l3backend is a dependency of l3kernel.

The description of l3backend on CTAN says:

The func­tions here are de­fined dif­fer­ently de­pend­ing on the en­gine in use. As such, these are dis­tributed sep­a­rately from l3k­er­nel to al­low this code to be up­dated on an in­de­pen­dent sched­ule.

So if you updated l3kernel only without installing l3backend as well you'll get an error like this:

($TEXMFROOT/texmf-dist/tex/latex/l3kernel/expl3-code.tex)

! LaTeX Error: File `l3backend-<driver-name>.def' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: def)

Enter file name: 

and the solution is to install the missing l3backend package.

  • The package was already installed but I still get the error... I'm using texlive 2019 on Linux... – Taekwondavide Jul 17 at 15:01
  • 1
    @Taekwondavide If l3backend is correctly installed the error should disappear. How did you install the package? What happens if you type tlmgr info l3backend in a terminal? – Phelype Oleinik Jul 17 at 19:57
  • 1
    @Taekwondavide Did you update with tlmgr update --all? If you didn't, try it: it should update all packages and install missing ones. Does kpsewhich -a l3backend-pdfmode.def return something? If nothing works, I suggest you ask a new question, more people will see it :-) – Phelype Oleinik Jul 18 at 20:52
  • 1
    @Taekwondavide Hm... try running mktexlsr to generate the filename database for kpathsea. Run kpsewhich -a l3backend-pdfmode.def again after that. – Phelype Oleinik Jul 18 at 23:14
  • 1
    @Taekwondavide Great :D I don't use the --gui much, so I don't know what it does, but apparently it didn't (for some reason) run mktexlsr after updating. mktexlsr generates the filename database which kpsewhich uses to locate the files in TeXLive. I imagined this was the problem after you said the file was there but kpsewhich didn't find it (just parroting for future readers: I'm afraid this problem will keep happening for some time :-). – Phelype Oleinik Jul 18 at 23:37
14

For Windows:

  1. Open the MikTeX Console
  2. Check for Update
  3. Updates > Update Now
  4. Search l3backend package
  5. Install the package
  • 2
    This is exactly what I was looking for. :D – Octfx Jul 12 at 8:42
  • 1
    Solved it for me perfectly. Thanks! – liamcomp Aug 22 at 14:54
  • When I update, I get something went wrong while checking for update. Invalid argument: path="C:\Users\id917977\AppData\Local\MiKTeX\2.9\miktex/data/le\df2c24cb21984fa85003c1ecc818ff83.fndb" – aan Sep 25 at 13:27
  • Does adding \usepackage{l3backend} to the preamble of your document tell MikTeX what it should be looking for to avoid manual package installation? – rbrignall Nov 5 at 10:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.