sphinx1.6でpdf出力できないのは私の設定ミスでしたその2
今度は、html出力時に動作がおかしい
“language = ‘ja‘“だとsphinxcontrib.tikzの出力がエラーになる。
仕方がないので、makefileに以下のような記述を追加してエラーを回避。
# html出力でlanguageがjaだとTikZ Extentionがエラーを吐く。理由は不明。
html: Makefile makeBB
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -Dlanguage='en'
# こっちは素直にbbを作ってからコンパイル
latexpdf: Makefile makeBB
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
# TikZ使用時にxbbがないエラーを回避するために、画像ファイルにはxbbを作成しておく。
# (macPortでインストールした場合は、自動でxbbを生成しない設定らしい)
makeBB:
find ./source -name \*.png -or -name \*.jpg -or -name \*.pdf \
| while read theFile; do extractbb $$theFile; done
latexもpythonもわかっていないので、原因は不明。
原因の予想
- sphinx1.6のLaTeXBuilder出力の方法がlatexmkを使うように変更になった。 (http://www.sphinx-doc.org/en/stable/builders.html#sphinx.builders.latex.LaTeXBuilder)
2. sphinxcontrib.tikzの中ではconfig.latex_engineで設定されているlatexを使っている。 (https://bitbucket.org/philexander/tikz/src/36f13083d61e91eb7cfea6f1ed959118749e371c/sphinxcontrib/tikz.py?at=master&fileviewer=file-view-default#tikz.py-245)
- sphinxcontrib.tikzの記述がlatexmkと衝突するような記述になっているかもしれない。
対策
makeファイルを変更する対策は小手先の対策すぎる。
私の目的には、tikzは強力すぎるのでもう少し単純な描画言語で画像にマークアップしたい。
sphinxcontrib.tikzのコードを修正するか、新たにextensionを作るかで迷う。
どっちらにしても、pythonは読み書きできないのでこれから勉強する必要がある。