在 Sphinx 中创建交叉引用另一个域的节点

Creating a node cross-referencing another domain in Sphinx

提问人:deceze 提问时间:6/6/2016 最后编辑:deceze 更新时间:6/8/2016 访问量:310

问:

在自定义 Sphinx 域中,我想创建对不同域中另一个节点的引用。例如:

.. py:class:: foo.bar

   Lorem ipsum.

.. example:directive:: baz -> foo.bar

   Sit amet, sit.

我说我的“方法”返回某种类型的东西,这是一个 Python 类。因此,我想将其与其他描述进行交叉引用。example:directive::bazfoo.barpy: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)

在我的自定义域中,我正在解析我的指令并构建元素,一切都很好,甚至在我的域内交叉引用也可以通过子类化方法来工作。我只是不确定如何以编程方式在我的方法中插入一个节点,该节点后来解析为另一个域中的节点。我是否必须以某种方式实例化一个?examplesphinx.domains.Domain:resolve_xrefhandle_signaturesphinx.domains.python.PyXRefRole

HTML 中的预期结果如下所示:

<dl>
  <dt>
    <code>baz</code>
    →
    <a href="example.html#py.class.foo.bar">
      <code>foo.bar</code>
    </a>
  </dt>
</dl>
python-sphinx 文档库

评论


答: 暂无答案