📓

Jupyter NotebookのPDF出力をカスタマイズする

2024/04/19に公開

まずアルファベットのみ出力できるようにする

texlivepandocをインストールする。

日本語も出力できるようにする

このままでは日本語の出力ができません。テンプレートを編集する必要があります。テンプレートが存在するパスを調べるには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ファイル上部にタイトル、日付がありますが、これを変えたいと思います。

まず、main.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