devlog

http://twitter.com/yusukei

Sphinxで日本語PDFを出力する

Sphinxを使ってlatexpdfでPDFを出力しようとしたところ、日本語でこけてしまいます。
でなんとかPDFを出せないものかと思って試行錯誤しました。

エラーが出ているのはpdflatexコマンドで起きています。
もともとpdflatexコマンドは日本語を通すのが大変そうなので、
とりあえずplatex->dvipdfmx経由でPDFを出力してみました。

こちらを参考にしてみました。
http://d.hatena.ne.jp/s_yano/20100921/1285048025

ここまでで、手動でPDFを作れるようになったので自動化したいな、と思います。
で、何はともあれ、毎回sphinx.styを書き換えるのは面倒なので、オリジナルを直接書き換えます。
オリジナルは

/Library/Python/2.6/site-packages/Sphinx-1.0.7-py2.6.egg/sphinx/texinputs

以下にsphinx.styがあったので直接書き換えました。

どこにあるのか分からない!って場合は
ターミナルで

# python
>>> import sphinx
>>> print sphinx


のようにすれば場所を探す時の参考になるかと思います。


これで毎回sphinx.styを書き換える必要がなくなったので、
あとはmakeコマンドからビルド出来るようにしたいです。

で、よくよくbuild/latex/Makefileをみてみると
all-pdf-ja
なんてものが定義されているじゃありませんか。
早速呼び出してみるとちゃんとPDFができあがります。

というわけで、あとは普段makeする場所にあるMakefile

latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
make -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."


とあるはずなので

latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
make -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."


と書き換えます。
これで無事にmake latexpdfでビルド出来るようになりました!


ちなみにこのMakefileも書き換えたい場合は

/Library/Python/2.6/site-packages/Sphinx-1.0.7-py2.6.egg/sphinx/quickstart.py

を書き換えればOKです。