Hatena::ブログ(Diary)

chofutaroメモ

2014-11-09

SphinxでBlockdiagをPDF化するにはUbuntuが良いと思いました

| 09:38

Sphinxで作成した文書はHTMLPDFで利用したくて、Ubuntu下では成功させることができました。残念ながらWindows下では成功させられませんでした。

環境

問題

Windows 7上でSphinx+blockdiagを使って作成した文書をPDFに変換したくていろいろ試しましたが、私はダメでした。TeX化で失敗?しているように見えますが正確なところは判りません。

解決(代替方法)

Windowsで作業するのをあきらめて、Ubuntuで実行することにしました。

以下のパッケージはインストール済みという前提です。

$ sudo apt-add-repository ppa:texlive-backports/ppa
$ sudo aptitude update
$ sudo aptitude upgrade
$ sudo aptitude install texlive-base texlive-lang-cjk texlive-fonts-recommended

$ wget http://ipafont.ipa.go.jp/ipafont/IPAfont00303.php
$ unzip IPAfont00303.zip 
$ cd IPAfont00303/
$ sudo mkdir /usr/share/fonts/truetype/ttf-ipa-font
$ sudo cp ipa*.ttf /usr/share/fonts/truetype/ttf-ipa-font
$ fc-cache -fv

$ sudo pip install blockdiag
$ sudo pip install sphinxcontrib-blockdiag
$ sudo pip install sphinxcontrib-actdiag
$ sudo pip install sphinxcontrib-nwdiag
$ sudo pip install sphinxcontrib-seqdiag

conf.py(編集部分だけ抜粋):

language = 'ja'
latex_docclass = {'manual': 'jsbook'}

extensions += ['sphinxcontrib.blockdiag', 'sphinxcontrib.seqdiag', 'sphinxcontrib.nwdiag', 'sphinxcontrib.actdiag']
blockdiag_fontpath = '/usr/share/fonts/truetype/ttf-ipa-font/ipagp.ttf'
blockdiag_antialias = True
seqdiag_fontpath = blockdiag_fontpath
seqdiag_antialias = True
nwdiag_fontpath = blockdiag_fontpath
nwdiag_antialias = True
actdiag_fontpath = blockdiag_fontpath
actdiag_antialias = True

つまづき(原因不明だが)

実は、上記の手順ですんなりうまくいったわけではありません。環境依存だと思いますが、以下のようなエラーなってblockdiagが使えませんでした。

sphinx:

$ make html
sphinx-build -b html -d build/doctrees   source build/html
Making output directory...
Running Sphinx v1.2.3
loading translations [ja]... done
loading pickled environment... done
building [html]: targets for 1 source files that are out of date
updating environment: 0 added, 0 changed, 0 removed
looking for now-outdated files... none found
preparing documents... done
WARNING: dot code u'blockdiag admin {\n  top_page -> config -> config_edit -> config_confirm -> top_page;\n}': failed to load png image driver

writing additional files... genindex search
copying static files... done
copying extra files... done
dumping search index... done
dumping object inventory... done
build succeeded, 1 warning.

Build finished. The HTML pages are in build/html.

blockdiag単体:

$ blockdiag sample.diag
ERROR: unknown format: PDF

この問題は、reportlabのバージョンを変えたり、再インストールしてみたりしているうちに解消していました。残念ながら何が原因で、何が効果があったのか?判りません。下記の履歴だけを見るとblockdiagを再インストールしたら解消したように見えますが、この前にもblockdiagは再インストールしているんです。

sudo pip install reportlab -U
sudo pip install reportlab==2.6 -U
sudo pip uninstall blockdiag
sudo pip install blockdiag -U

結果オーライとしておきます。

トラックバック - http://d.hatena.ne.jp/chofutaro/20141109/1415493505
リンク元
Connection: close