毎月開催している桜井進のPython・UNIX教室ではJupyter Notebookファイルをテキストにしています
受講生にはhoge.ipynbと全セル出力したhoge.pdfを配付するので
hoge.ipynbをhoge.pdfに変換します
以下の方法がわかるまでは印刷からPDF出力する方法を用いてきましたが
印刷レイアウトがイマイチでした
ようやくNotebook 7.0.0がリリースされました
これを機にnbconvertとjupyterで日本語PDF変換できるようにするための方法を探りました
Jupyter Notebookファイル hoge.ipynbをPDFに変換する方法は2つ
ターミナルから
$ jupyter nbconvert hoge.ipynb --to pdf
jupyterから
File -> Save and Export Notebook As… -> PDF
どちらもLaTeX経由でPDFに変換するので
TeX Live等がインストールされていることが必須です
デフォルトでは日本語は通りません
それぞれの設定ファイルを編集して日本語が通るようにします
設定ファイルの場所を調べる
$ jupyter --path
config:
/Users/sakuraisusumu/.jupyter
/Users/sakuraisusumu/.local/etc/jupyter
/Users/sakuraisusumu/.pyenv/versions/3.11.4/etc/jupyter
/usr/local/etc/jupyter
/etc/jupyter
data:
/Users/sakuraisusumu/Library/Jupyter
/Users/sakuraisusumu/.local/share/jupyter
/Users/sakuraisusumu/.pyenv/versions/3.11.4/share/jupyter
/usr/local/share/jupyter
/usr/share/jupyter
runtime:
/Users/sakuraisusumu/Library/Jupyter/runtime
dataに示されたディレクトリを1つずつ調べて
index.tex.j2
base.tex.j2
を探します
jupyter nbconvert の設定ファイル
~/.pyenv/versions/3.11.4/share/jupyter/nbconvert/templates/latex/index.tex.j2
これを開いて次のように書き換えます
%===============================================================================
% Latex Article
%===============================================================================
((*- block docclass -*))
\documentclass[xelatex,ja=standard]{bxjsarticle}
((*- endblock docclass -*))
jupyter の設定ファイル
~/.pyenv/versions/3.11.4/share/jupyter/nbconvert/templates/latex/base.tex.j2
これを開いて14行目を次のように書き換えます
((=- Latex base template (must inherit)
This template builds upon the abstract template, adding common latex output
functions. Figures, data_text,
This template defines defines a default docclass, the inheriting class should
override this.-=))
((*- extends 'document_contents.tex.j2' -*))
%===============================================================================
% Abstract overrides
%===============================================================================
((*- block header -*))
((* block docclass *))\documentclass[xelatex,ja=standard]{bxjsarticle}((* endblock docclass *))
MacOSでは以上の変更で日本語出力OK
ubuntu 22.04では、以上の設定ではダメで
/Users/sakuraisusumu/.local/share/jupyter
の2つのファイルの変更で日本語出力OKでした
これでどちらの方法でも日本語PDFが出力されるようになります