📓
Jupyter NotebookのPDF出力をカスタマイズする
まずアルファベットのみ出力できるようにする
texlive
、pandoc
をインストールする。
日本語も出力できるようにする
このままでは日本語の出力ができません。テンプレートを編集する必要があります。テンプレートが存在するパスを調べるにはjupyter --paths
を実行してください。
config:
/home/compass/workspace/pdf-sample/.venv/etc/jupyter
/home/compass/.jupyter
/usr/local/etc/jupyter
/etc/jupyter
data:
/home/compass/workspace/pdf-sample/.venv/share/jupyter
/home/compass/.local/share/jupyter
/usr/local/share/jupyter
/usr/share/jupyter
runtime:
/home/compass/.local/share/jupyter/runtime
このうち、data:
に羅列されているパスのうち、どれかに./nbconvert/templates/latex/index.tex.j2
というファイルがあるため、これを編集します。私の環境では /home/compass/workspace/pdf-sample/.venv/share/jupyter/nbconvert/templates/latex/index.tex.j2
にありました。この中身を以下のように編集してください。
((=- Default to the notebook output style -=))
((*- if not cell_style is defined -*))
((* set cell_style = 'style_jupyter.tex.j2' *))
((*- endif -*))
((=- Inherit from the specified cell style. -=))
((* extends cell_style *))
%===============================================================================
% Latex Article
%===============================================================================
((*- block docclass -*))
- \documentclass[11pt]{article}
+ \documentclass[xelatex,ja=standard]{bxjsarticle}
((*- endblock docclass -*))
タイトル、日付、著者を変える
PDFファイル上部にタイトル、日付がありますが、これを変えたいと思います。
まず、VSCodeであればipynb
ファイルを右クリックし、"ファイルを開くアプリケーションの選択"をクリックし、"テキスト エディター"を選択します。VSCodeでなければipynb
ファイルをテキストエディタで開きます。中身はJSONになっているのですが、この中から"metadata"というキーを探します。私の環境では一番下に記述がありました。なお、"cells"の中にも"metadata"がありますが、こちらではありませんので注意してください。
このファイルを以下のように書き換えるとPDFのタイトル、日付、著者が書き換わります。
{
"cells": [
...
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.8"
},
- "title": "main"
+ "title": "タイトル",
+ "authors": [
+ {
+ "name": "Compass"
+ }
+ ],
+ "date": "1983年6月21日"
+ },
...
}
Discussion