Sphinxで本っぽいPDFを作成する (Windows)

電子書籍で書きたいことがあったので、本ぽいPDFを作れるので何かいいのがないかなと考えた結果、jupyter labで書くことにした。

書籍を作る話を読むと、Re:VIEWがいいぞという話がよく出てくるのだが、Rubyがよくわからないのでやめた。一方でPythonで計算する部分があるので、ExecutableなコードをPDFに載せたい。そう考えていると、JupyterとSphinxで本を書いたという記事を見つけた。慣れ親しんだjupyter labで本が書けるということ、書いたコードがそのまま実行できる(=コードのコピペが必要ない)のがとても魅力的だった。そこで、環境構築を始めることにした。

環境構築

今回参考にしたWebsiteは次のとおり。

まず、WindowsではあるがWSLのUbuntuで環境を構築する。WSLのインストールに関してはWindows 10でLinuxを使う(WSL2)を参考にするとよい。また、Pythonに関してはpyenvを使ってインストールし、venvで仮想環境を作ったとする。

まず、Sphinxとそれに関連するライブラリをインストールする。

pip install jupyterlab nbsphinx

Sphinxのプロジェクトを作成する。

sphinx-quickstart -q -p sample -a hoge -l ja --sep 

conf.pyを編集する


extensions = ['nbsphinx',
              'sphinx.ext.mathjax'
              ]

exclude_patterns = ['_build', '**.ipynb_checkpoints']

jupyter labで原稿を書いたら、index.rstにそのファイル名をtoctreeに追加しておく。この状態でmake htmlとすると、とりあえずhtmlは見れるようになる。しかしやりたいのはPDF作成なので、Tex Liveをインストールする。

sudo apt -y install texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended texlive-fonts-extra texlive-lang-japanese texlive-lang-cjk latexmk pandoc

conf.pyで紙のサイズをA5にする。

latex_docclass = {'manual': 'jsbook'}
latex_elements = {'papersize': 'a5paper'}

これができたら、とりあえずPDFは作れるようになる。

make latexpdf

WSLでjupyterを使う場合の注意

なぜかWSLのUbuntuのTerminalからjupyter labを立ち上げようとしても、ブラウザが立ち上がってこない。これは不便なので、設定を変える。

jupyter notebook --generate-config

これで~/.jupyter/jupyter_notebook_config.pyが作成されるので、下記の部分を変更してFalseにする。

c.NotebookApp.use_redirect_file = False

コメント