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

Python入門者がSphinxでドキュメントを書こうとしてgraphvizやrst2pdf連携関連の不具合などをレポートしつつきれいなPDF出力を目指す戦いの記録
6
tk0miya @tk0miya
sphinx.ext.graphviz は外部の dot ファイルを読み込むことは出来ないのか。画像みたいに読み込み可能にしたらいいのに。拡張機能ってどうやって作るんだろ。
tk0miya @tk0miya
/usr/lib/pymodules/python2.6/sphinx/ext/ 以下に実装みっけ。Directive のサブクラスを作って run() メソッドを実装すればよいみたい。 RT @tk0miya: 拡張機能ってどうやって作るんだろ。 #sphinxjp
tk0miya @tk0miya
あ、あと add_node() で変換する仕組みが必要みたいですね。ここに手を入れると PDF で graphviz 使うことも出来そう。 #sphinxjp
tk0miya @tk0miya
sphinx 拡張作るのはしっかり構造を把握しないとダメだな。graphviz で外部ファイルを読むようにしたんだけど、一度 make html すると doctree がキャッシュされてしまっていて、外部ファイルを更新しても反映されない。 #sphinxjp
tk0miya @tk0miya
外部ファイルのタイムスタンプを見るようにするにはself.state.document.settings.env.note_dependency(path) とかすればいいみたい。 #sphinxjp
tk0miya @tk0miya
csv-table より list-table の方が書きやすいかな。概要みたいな長めのカラムがあると特に。list-table の難点は縦に長くなってしまうこととテキストとしての一覧性か。csv-table もテキストとしてはダメだけども。
tk0miya @tk0miya
sphinx.ext.graphviz で外部ファイルを使うパッチ、もういらないみたい。残念。 http://bit.ly/bZExI1 #sphinxjp #zopeplonedev
tk0miya @tk0miya
勘違い。まだ誰もいじってないみたいなのでパッチ投げておいた。 RT @tk0miya: sphinx.ext.graphviz で外部ファイルを使うパッチ、もういらないみたい。残念。 http://bit.ly/bZExI1 #sphinxjp #zopeplonedev
tk0miya @tk0miya
graphviz の画像が pdf に出力されない問題を追って rst2pdf を漂流中。ぱっと見てわかる気がしない…
tk0miya @tk0miya
む。pdfbuilder.py の中に visit_graphviz() があるな。あと sphinxnodes.py に HandleSphinxGraphviz ってのも。対応してるのにちゃんと動いてない??
tk0miya @tk0miya
単なるバグじゃねーか > graphviz が pdf に出力されない問題
tk0miya @tk0miya
rst2pdf/sphinxnodes.py の最後の方で render_dot() の引数を 'pdf' → 'png' に置き換えれば解決。
tk0miya @tk0miya
偶然途中で ctrl+c して妙な pdf ファイルを発見したおかげで解決しました。結局 docutils の深淵はのぞききれなかった…
tk0miya @tk0miya
今日の成果:(1) sphinx.ext.graphviz で外部ファイルを読むするパッチを投げました。 (2) sphinx-1.0.2 を debianize しました。 (3) graphviz + rst2pdf のバグを追跡しました。 #zopeplonedev
tk0miya @tk0miya
分かった。pdf_extensions = ['vectorpdf'] って設定すれば、修正不要で graphviz の図を sphinx's pdf に埋め込めるのか!! 設定が分かりづらいだけでメリットがなさ過ぎる… #sphinxjp
tk0miya @tk0miya
あかん…迷子になってる。pdf_extensions の設定内容を参照する方法が見当たらない。ちゃんと設定してないよ、っていう warning を出したいだけなので、ぼちぼち元気が出なくなってきた。
tk0miya @tk0miya
そういえば image ディレクティブ使ってたら debian-logo.png without specifying size.Calculating based on image size at 300dpi とかってエラーが出た。未追跡。 #sphinxjp
tk0miya @tk0miya
…ってググったらあっさり出てきた。rst2pdf のエラーで DPI を指定してないから怒られてるみたい。 http://bit.ly/atEWep #sphinxjp
tk0miya @tk0miya
rst2pdf は vectorpdf の件もそうだけど、適切な設定がよくわからないのがいまいちだな。特に sphinx を使う人にとっては rst2pdf は意識してないからさらに厄介。誰かスタンダードな設定よろ。 #sphinxjp
tk0miya @tk0miya
sphinx の出力する PDF の出来にはまだまだ満足できない。テーブルヘッダが文字化けしてたり、テンプレートのクオリティが今ひとつだったり。手のかけがいがあるなぁ。
tk0miya @tk0miya
【募集】 綺麗にブロック図や画面仕様が書けるツール。ここまで sphinx(reST) + graphviz で書いてきたのでテキストベースで記述して出力できるとベター。今のところあきらめて Excel 使うぐらいしか選択肢がない…。 #sphinxjp
tk0miya @tk0miya
todo directive を pdf に出力するとなんか線が重なったりしていまいち。style まわりで warning でてるから追っていく必要がありそう。 #sphinxjp
tk0miya @tk0miya
む。目次ページに出ている内容と toctree の内容が違うね。これも調査対象か。PDF まわりは道のりが遠い。 #sphinxjp
tk0miya @tk0miya
@shimizukawa rst2pdf は reportlab って pdf generator library を使ってるみたいですよ。 LaTeX ビルダー由来で持ってきた部分に "I dtill don't understand it" とか書いてあるけど(わら
tk0miya @tk0miya
rst2pdf の style はどこに書けばいいんだ。todo_node ってスタイルを定義したいのだけども。sphinx.style に書けば良さそうなんだけど…
残りを読む(50)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?

ログインして広告を非表示にする
ログインして広告を非表示にする