カスタム Sphinx ドメイン内で、別のドメイン内の別のノードへの参照を作成したいと考えています。例えば:
.. py:class:: foo.bar
Lorem ipsum.
.. example:directive:: baz -> foo.bar
Sit amet, sit.
私example:directive::の「メソッド」はPython クラスであるbaztype の何かを返すと言います。foo.barそのため、それを他の説明と相互参照したいと思いpy:class:: foo.barます。
from sphinx.directives import ObjectDescription
class ExampleDescription(ObjectDescription):
def handle_signature(self, sig, signode):
# lots of parsing and node creation here
# parsed_annotation = "foo.bar"
signode += addnodes.desc_returns(parsed_annotation, parsed_annotation)
カスタム ドメイン内で、ディレクティブを解析して要素を構築していexampleますが、メソッドをサブクラス化することで、ドメイン内の相互参照でさえ問題なく動作しますsphinx.domains.Domain:resolve_xref。handle_signature後で別のドメインのノードに解決されるメソッドにノードをプログラムで挿入する方法がわかりません。どういうわけかインスタンス化する必要がありますsphinx.domains.python.PyXRefRoleか?
HTML で期待される結果は次のようになります。
<dl>
<dt>
<code>baz</code>
→
<a href="example.html#py.class.foo.bar">
<code>foo.bar</code>
</a>
</dt>
</dl>