Sphinxで文書を書いていて気になるのは、謎じゃない謎の空白だ。
これはあちこちで書かれていてそのための拡張とその改良版が用意されているが、自分の環境(Python2.6.6+Sphinx1.0.7)ではうごかなかった。
なんでかなーと調べてみるとtype(node.parent)が<type 'instance'>を返してたのでisinstanceで評価するようにしてみた。
def trunc_whitespace(app, doctree, docname): from docutils.nodes import Text, paragraph if not app.config.japanesesupport_trunc_whitespace: return for node in doctree.traverse(Text): if isinstance(node.parent, paragraph): newtext = node.astext() for c in "\n\r\t": newtext = newtext.replace(c, "") newtext = newtext.strip() node.parent.replace(node, Text(newtext)) def setup(app): app.add_config_value('japanesesupport_trunc_whitespace', True, True) app.connect("doctree-resolved", trunc_whitespace)
なんでかなーってのを調べるためにSphinxのソースコードを読み始めたりdocutilsのソースを読み始めたりしたけど、昨日あたりからかなり脱線し始めたのでとっとと成果物を残しておこう。
エキスパートPythonも読みなおそうっと