Sphinx ドキュメント ユーティリティの簡単な拡張機能があります (使用しているバージョンは Sphinx-1.1.3-py2.6 です)。Doug Hellmann によるこの優れた例と非常によく似ています。最終的な HTML にrel='bar'属性を追加するにはどうすればよいですか?鬼ごっこ?
これを行うにはいくつかの方法があるようですが、簡単な方法が見つかりませんでした。アドバイスやヒントをいただければ幸いです。
参照ノードは次の方法で作成されます。
node = nodes.reference(rawtext, utils.unescape(text),
internal=False,
refuri=ref,
classes=['foocss'],
rel='bar',
**options)
ただし、rel='bar'属性は、最終的な HTML マークアップから取り除かれます。ソースを調べてみると、 sphinx/writers/html.pyとHTMLTranslatorクラスにたどり着きました。以下は、visit_reference メソッドの一部です。
# overwritten
def visit_reference(self, node):
atts = {'class': 'reference'}
<snip>
if 'reftitle' in node:
atts['title'] = node['reftitle']
self.body.append(self.starttag(node, 'a', '', **atts))
追加の属性は処理されません。もしかしたら、他のパーツに交換できるかもしれません。その点で有用なものは見つかりませんでした。
だから、私はできる:
- 参照ノードのすべての機能を再実装するカスタム ノードを作成します。小さな追加のためのかなりの作業。
- sphinx/writers/html.pyの *visit_reference* メソッドを上書きします。より高速ですが、将来の Sphinx の更新に関しては悪いです。
- 事後 link タグに jQuery で rel 属性を追加します。まあ、きれいでもない。
明白でエレガントな解決策が欠けていると確信しています。
ありがとう!