物理の駅 by onsanai

Physics Station → PhSt 質問・疑問・間違いの指摘は、コメントに書くか、直接伝えるときっと良いことがあります。主にWindows or Ubuntu用の記事です

Windows上のPython Jupyter LabでPDF出力したときの500 : Internal Server Error

PythonのJupyter Lab等でPDF出力するコマンドは、pandocを使ってLaTeXファイルを生成してから、それをXeLaTeXを通してPDF化するという手順を踏む。よって、まずはXeLaTeXにPathが通っていることが前提である。LaTeXのインストールについては、下記の記事を参考にして欲しい。

2019年度版 卒業論文・修士論文執筆用 LaTeX講習会資料 - 物理の駅 by onsanai

where xelatex でpathが帰ってくればXeLaTeXにPathが通っているわけだが、それでもPDFでExportすると、Windowsではエラーが帰ってくる。

f:id:onsanai:20191229195536p:plain

500 : Internal Server Error
The error was:

nbconvert failed: PDF creating failed, captured latex output:
Failed to run "xelatex .\notebook.tex -quiet" command:
This is XeTeX, Version 3.14159265-2.6-0.999991 (TeX Live 2019/W32TeX) (preloaded format=xelatex)
 restricted \write18 enabled.
entering extended mode
! Undefined control sequence.
<*> .\notebook
              .tex -quiet
? 
! Emergency stop.
<*> .\notebook
              .tex -quiet
No pages of output.
Transcript written on ?.

このエラーは、LinuxWindowsのPath指定の違いによるものである。修正方法は、Githubで議論中らしいが結論は出ていない。

github.com

対処療法としては、 \Lib\site-packages\nbconvert\exporters\pdf.py の98行目(当方の環境における)

        command = [c.format(filename=filename) for c in command_list]

        command = [c.format(filename=filename.replace("\\","/")) for c in command_list]

に変える良い。とりあえずコンパイルはできるようになる。

日本語が出力できない問題については次の記事を参考にして欲しい。

https://phst.hateblo.jp/entry/2019/12/30/000000