Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Problem in Converting Jupyter notebook to pdf

When I want to save Jupyter notebook as a pdf file, I receive the following error:

nbconvert failed: PDF creating failed, captured latex output:
This is XeTeX, Version 3.14159265-2.6-0.99999 (TeX Live 2018/W32TeX) (preloaded format=xelatex)
 restricted \write18 enabled.
entering extended mode
! Undefined control sequence.
<*> .\notebook
              .tex
? 
! Emergency stop.
<*> .\notebook
              .tex
No pages of output.
Transcript written on ?.
like image 384
xuan Avatar asked Nov 07 '22 23:11

xuan


1 Answers

This is due to an unfortunate incompatibility between Windows and Unix-like systems. Jupyter creates a temporary notebook.tex document in the current directory and then calls XeTeX to compile this document.

XeTeX tries to parse the command line with roughly the following algorithm after being called:

  1. XeTeX <arg1> <arg2> ...
  2. Check if <arg1> is a .tex file,

    a) if it is a file compile it

    b) if it not a file assume this is the start of an actual document given on the command line

On Unix-like systems ./notebook.tex is parsed by XeTeX into current_directory/notebook.tex which exists and is then compiled. On Windows systems the command line because of the different directory separator is .\notebook.tex which XeTeX does not recognize as a file and therefore tries and fails to parse as a LaTeX document.

A temporary remedy (could break other things) is to change the build directory in pdf.py from nbconvert (line 66) from

writer = Instance("nbconvert.writers.FilesWriter", args=(), kw={'build_directory': '.'})

to

writer = Instance("nbconvert.writers.FilesWriter", args=(), kw={'build_directory': ''})

like image 98
Alexander Avatar answered Nov 14 '22 23:11

Alexander