提问人:deceze 提问时间:6/6/2016 最后编辑:deceze 更新时间:6/8/2016 访问量:310
在 Sphinx 中创建交叉引用另一个域的节点
Creating a node cross-referencing another domain in Sphinx
问:
在自定义 Sphinx 域中,我想创建对不同域中另一个节点的引用。例如:
.. py:class:: foo.bar
Lorem ipsum.
.. example:directive:: baz -> foo.bar
Sit amet, sit.
我说我的“方法”返回某种类型的东西,这是一个 Python 类。因此,我想将其与其他描述进行交叉引用。example:directive::
baz
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>
答: 暂无答案
评论