1
0

Jupyter-Notebookの.ipynbファイルをコマンド1つでPDFに変換する方法

Last updated at Posted at 2023-10-04

背景

Jupyter Notebookは学術研究から業務のデータ分析まで幅広い場面で使用されています。その成果や分析結果を他者と共有する際、PDF形式はその汎用性と一貫した表示により非常に役立ちます。

本記事のメリット

Jupyter Notebookの.ipynbファイルを コマンド1つ でPDFに変換できるようになります。

環境構築

PDFに変換するための手順と必要なツールについて詳しく解説します。

1. Jupyter Notebookのセットアップ

.ipynbファイルを変換するためのツールをインストールするためにAnacondaが必要です。

インストール方法:

Anacondaの公式サイトから、、Anacondaをインストールします。
詳細は省きます。

2. ライブラリのインストール

nbconvert

nbconvertは、Jupyter Notebookの内容を様々なフォーマットに変換するための便利なツールです。

役割

  • ipynbファイルを静的なフォーマット(例: HTML, LaTeX, PDF)に変換します。
  • グラフやコード、マークダウンなどを適切に整形して出力します。

インストール

conda install nbconvert

pandoc

pandocは、ドキュメントコンバーターとして非常に人気があり、多様なフォーマット間での変換をサポートしています。特に、Jupyter NotebookとPDFの間での変換には、内部でpandocが利用されます。

役割

  • さまざまなマークアップフォーマット間での変換をサポートします。
  • .ipynbファイルを中間フォーマットに変換する際に、nbconvertと連携して動作します。

インストール

conda install pandoc

3. TeXのセットアップ

変換過程でPDFを生成するためには、 LaTeX (TeX) が必要となります。nbconvertは内部でLaTeXを使用してPDFファイルを作成します。

本記事ではTexのインストール方法は省きます。
こちらのサイトにとても詳しく載っているので参考にしてください。

4. templateの変更

.ipynbファイルに日本語を使用している場合、日本語が正しくpdfに変換できないためnbconvertの設定ファイルであるtemplateファイルの修正を行います。

nbconvertの設定ファイルの場所を探す

下記コマンドでnbconvertの設定ファイルがありそうなディレクトリを探します。

jupyter --path
結果
config:
    /Users/daiki/.jupyter
    /Users/daiki/.local/etc/jupyter
    /Users/daiki/anaconda3/etc/jupyter
    /usr/local/etc/jupyter
    /etc/jupyter
data:
    /Users/daiki/Library/Jupyter
    /Users/daiki/.local/share/jupyter
    /Users/daiki/anaconda3/share/jupyter
    /usr/local/share/jupyter
    /usr/share/jupyter
runtime:
    /Users/daiki/Library/Jupyter/runtime

data:の一覧のパスを探すといずれ見つかります。
私の環境(MacOS)では、 data:/Users/daiki/anaconda3/etc/jupyter/nbconvertでした。
nbconvertディレクトリの中に、 templates/latex が存在しているので移動してください。

~/anaconda3/share/jupyter/nbconvert/templates/latex

(私の環境の場合)上記の場所がカレントディレクトリです。
この latex ディレクトリの中にある index.tex.j2 というtemplateファイルの修正を行います。

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 -*))

.ipynbファイルをPDFに変換する方法

コマンドラインを利用して、直接NotebookファイルをPDFに変換します。
この方法は、自動化にも利用可能です。

手順

1. ターミナルやコマンドプロンプトを開きます。

2. 変換したい.ipynbファイルが存在するディレクトリに移動します。

cd your_.ipynb_directory

3. .ipynbファイルを変換します。

jupyter nbconvert --to pdf your_file.ipynb

上記のコマンドを実行すると、同じディレクトリに your_file.pdf という名前のPDFファイルが生成されます。

複数ファイルの一括変換

変換したい.ipynbファイルが複数ある場合、変改したいファイルを同じディレクトリに集めます。
そして、そのディレクトリ内で、下記コマンドを使用すると全ファイルが変換することができます。

jupyter nbconvert --to pdf *.ipynb

おまけ:その他の変換オプション

nbconvert は、 .ipynbファイル をPDFに変換するだけでなく、他の多くのフォーマットにも対応しています。
以下は、その一例です。

HTML:

jupyter nbconvert --to html your_file.ipynb

上記のコマンドを実行することで、 .ipynbファイル の内容をブラウザで閲覧可能な HTMLファイル に変換することができます。

Markdown:

jupyter nbconvert --to markdown your_file.ipynb

このコマンドを使用することで、 .ipynbファイルMarkdown形式 に変換し、GitHubなどでの共有や編集が容易になります。

その他にも、LaTeX、そしてスライド形式など、さまざまなフォーマットへの変換が可能です。変換オプションはnbconvertの公式ドキュメントを参照してください。

終わりに

いかがだったでしょうか。
今回はコマンドを用いたPDF変換方法を紹介しました。
こういう作業はいかに楽するかを考えるのことが大切ですね。

読んでいただきありがとうございました。

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0