Sphinx/graphviz/rst2pdf 連合との戦いの記録

Python入門者がSphinxでドキュメントを書こうとしてgraphvizやrst2pdf連携関連の不具合などをレポートしつつきれいなPDF出力を目指す戦いの記録
6
tk0miya @tk0miya

sphinx.ext.graphviz は外部の dot ファイルを読み込むことは出来ないのか。画像みたいに読み込み可能にしたらいいのに。拡張機能ってどうやって作るんだろ。

2010-08-18 19:24:04
tk0miya @tk0miya

/usr/lib/pymodules/python2.6/sphinx/ext/ 以下に実装みっけ。Directive のサブクラスを作って run() メソッドを実装すればよいみたい。 RT @tk0miya: 拡張機能ってどうやって作るんだろ。 #sphinxjp

2010-08-18 20:16:37
tk0miya @tk0miya

あ、あと add_node() で変換する仕組みが必要みたいですね。ここに手を入れると PDF で graphviz 使うことも出来そう。 #sphinxjp

2010-08-18 20:21:02
tk0miya @tk0miya

sphinx 拡張作るのはしっかり構造を把握しないとダメだな。graphviz で外部ファイルを読むようにしたんだけど、一度 make html すると doctree がキャッシュされてしまっていて、外部ファイルを更新しても反映されない。 #sphinxjp

2010-08-20 11:19:47
tk0miya @tk0miya

外部ファイルのタイムスタンプを見るようにするにはself.state.document.settings.env.note_dependency(path) とかすればいいみたい。 #sphinxjp

2010-08-20 14:39:25
tk0miya @tk0miya

csv-table より list-table の方が書きやすいかな。概要みたいな長めのカラムがあると特に。list-table の難点は縦に長くなってしまうこととテキストとしての一覧性か。csv-table もテキストとしてはダメだけども。

2010-08-20 15:50:09
tk0miya @tk0miya

sphinx.ext.graphviz で外部ファイルを使うパッチ、もういらないみたい。残念。 http://bit.ly/bZExI1 #sphinxjp #zopeplonedev

2010-08-21 15:18:43
tk0miya @tk0miya

勘違い。まだ誰もいじってないみたいなのでパッチ投げておいた。 RT @tk0miya: sphinx.ext.graphviz で外部ファイルを使うパッチ、もういらないみたい。残念。 http://bit.ly/bZExI1 #sphinxjp #zopeplonedev

2010-08-21 15:55:05
tk0miya @tk0miya

graphviz の画像が pdf に出力されない問題を追って rst2pdf を漂流中。ぱっと見てわかる気がしない…

2010-08-21 16:37:24
tk0miya @tk0miya

む。pdfbuilder.py の中に visit_graphviz() があるな。あと sphinxnodes.py に HandleSphinxGraphviz ってのも。対応してるのにちゃんと動いてない??

2010-08-21 16:39:50
tk0miya @tk0miya

単なるバグじゃねーか > graphviz が pdf に出力されない問題

2010-08-21 18:12:43
tk0miya @tk0miya

rst2pdf/sphinxnodes.py の最後の方で render_dot() の引数を 'pdf' → 'png' に置き換えれば解決。

2010-08-21 18:17:58
tk0miya @tk0miya

偶然途中で ctrl+c して妙な pdf ファイルを発見したおかげで解決しました。結局 docutils の深淵はのぞききれなかった…

2010-08-21 18:20:01
tk0miya @tk0miya

今日の成果:(1) sphinx.ext.graphviz で外部ファイルを読むするパッチを投げました。 (2) sphinx-1.0.2 を debianize しました。 (3) graphviz + rst2pdf のバグを追跡しました。 #zopeplonedev

2010-08-21 18:23:00
tk0miya @tk0miya

分かった。pdf_extensions = ['vectorpdf'] って設定すれば、修正不要で graphviz の図を sphinx's pdf に埋め込めるのか!! 設定が分かりづらいだけでメリットがなさ過ぎる… #sphinxjp

2010-08-21 18:33:21
tk0miya @tk0miya

あかん…迷子になってる。pdf_extensions の設定内容を参照する方法が見当たらない。ちゃんと設定してないよ、っていう warning を出したいだけなので、ぼちぼち元気が出なくなってきた。

2010-08-22 12:21:08
tk0miya @tk0miya

そういえば image ディレクティブ使ってたら debian-logo.png without specifying size.Calculating based on image size at 300dpi とかってエラーが出た。未追跡。 #sphinxjp

2010-08-22 23:31:21
tk0miya @tk0miya

…ってググったらあっさり出てきた。rst2pdf のエラーで DPI を指定してないから怒られてるみたい。 http://bit.ly/atEWep #sphinxjp

2010-08-22 23:34:28
tk0miya @tk0miya

rst2pdf は vectorpdf の件もそうだけど、適切な設定がよくわからないのがいまいちだな。特に sphinx を使う人にとっては rst2pdf は意識してないからさらに厄介。誰かスタンダードな設定よろ。 #sphinxjp

2010-08-22 23:38:53
tk0miya @tk0miya

sphinx の出力する PDF の出来にはまだまだ満足できない。テーブルヘッダが文字化けしてたり、テンプレートのクオリティが今ひとつだったり。手のかけがいがあるなぁ。

2010-08-23 14:04:55
tk0miya @tk0miya

【募集】 綺麗にブロック図や画面仕様が書けるツール。ここまで sphinx(reST) + graphviz で書いてきたのでテキストベースで記述して出力できるとベター。今のところあきらめて Excel 使うぐらいしか選択肢がない…。 #sphinxjp

2010-08-23 14:07:30
tk0miya @tk0miya

todo directive を pdf に出力するとなんか線が重なったりしていまいち。style まわりで warning でてるから追っていく必要がありそう。 #sphinxjp

2010-08-23 16:06:09
tk0miya @tk0miya

む。目次ページに出ている内容と toctree の内容が違うね。これも調査対象か。PDF まわりは道のりが遠い。 #sphinxjp

2010-08-23 16:08:00
tk0miya @tk0miya

@shimizukawa rst2pdf は reportlab って pdf generator library を使ってるみたいですよ。 LaTeX ビルダー由来で持ってきた部分に "I dtill don't understand it" とか書いてあるけど(わら

2010-08-23 17:19:45
tk0miya @tk0miya

rst2pdf の style はどこに書けばいいんだ。todo_node ってスタイルを定義したいのだけども。sphinx.style に書けば良さそうなんだけど…

2010-08-23 17:39:55