はじめに
SphinxのドキュメントをPDF出力するためにはLaTeXの環境構築が必要です。
筆者は学生の頃にLaTeXの環境構築で大変苦労した記憶があり、できればやりたくないです(今は簡単にインストールできるのかもしれないですが...)。
そこで、SphinxのDockerイメージを使用して、面倒な環境構築無しにSphinxのドキュメントをPDF出力してみます。
Dockerイメージのビルド
公式が出しているDockerイメージ sphinx-latexpdf を使います。
拡張機能を使用していない場合は、sphinx-latexpdfをそのまま使用して良いのですが、 myst_parser などの拡張機能を使用している場合は自分でDockerイメージをビルドする必要があります。
以下の例のように、requirements.txt と Dockerfile を作成します。
myst-parser>=4.0.1
FROM sphinxdoc/sphinx-latexpdf
WORKDIR /docs
ADD requirements.txt /docs
RUN pip3 install -r requirements.txt
以下のコマンドでDockerイメージをビルドします。
docker build . -t my-sphinx-latexpdf
PDFファイルの作成
以下のコマンドで、PDFファイルを作成します。
docker run --rm -v /path/to/document:/docs my-sphinx-latexpdf make latexpdf
以下のようなエラーが起きてしまいました。
! LaTeX Error: Unicode character サ (U+30B5) not set up for use with LaTeX.
このエラーは、conf.py に以下の1行を追加し、LaTeXのエンジンを変えることで回避できました。
latex_engine = 'uplatex'
諦めたこと
なぜか以下の画像のように、タイトルや章見出しのメタデータ(?)が文字化けしていました。
簡単に解決できなさそうだったので、またの機会に調べようと思います。
根本的な解決にはならないですが、GoogleChromeでPDFを開いて、[印刷] → [PDFに保存] をすると、保存されたPDFでは、タイトルや章見出しが消えるので文字化けは気にならなくなります(笑)
