電子書籍で書きたいことがあったので、本ぽいPDFを作れるので何かいいのがないかなと考えた結果、jupyter labで書くことにした。
書籍を作る話を読むと、Re:VIEWがいいぞという話がよく出てくるのだが、Rubyがよくわからないのでやめた。一方でPythonで計算する部分があるので、ExecutableなコードをPDFに載せたい。そう考えていると、JupyterとSphinxで本を書いたという記事を見つけた。慣れ親しんだjupyter labで本が書けるということ、書いたコードがそのまま実行できる(=コードのコピペが必要ない)のがとても魅力的だった。そこで、環境構築を始めることにした。
環境構築
今回参考にしたWebsiteは次のとおり。
- JupyterとSphinxで本を書いた
- Ubuntu 18.04 LTS で Sphinx の PDF をビルドする
- LaTeX customization
- Jupyter Notebook on WSL がブラウザで自動起動しない場合の対応方法
まず、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
コメント