我想弄清楚是否有办法嵌套 Sphinx 扩展指令。我有一些运行良好的自定义节点类型,但我希望生成的 HTML 具有更大的灵活性。
这是我想要实现的目标的示例:
假设我有一个指令,可以创建一个触发一些 JavaScript 的文本框和按钮。这工作正常 - 我可以将其放入我的 reST 文件中:
.. myDirective:: name
:opt1: val
content
现在,我希望能够在输出中使用 jQuery 创建选项卡式界面。我有一个节点类型,可以创建发生这种情况所需的原始 HTML/JavaScript。
我希望能够做的是为选项卡节点提供 1 个或多个 myDirective(或其他指令)实例,并将每个实例放入另一个选项卡中。像这样的东西:
..tabbedInterface::
.. myDirective:: name1
:op1: val1
content
.. myDirective:: name2
:op1: val1
content
显然这是一个非常具体的情况,但这通常是我想要完成的 - 嵌套指令。
配置块扩展可能会帮助您: https://github.com/fabpot/sphinx-php/blob/master/sensio/sphinx/configurationblock.py
来自:http://symfony.com/doc/2.0/contributing/documentation/format.html#configuration-blocks
.. configuration-block::
.. code-block:: yaml
# Configuration in YAML
.. code-block:: xml
<!-- Configuration in XML //-->
.. code-block:: php
// Configuration in PHP
SphinxDirective.parse_content_to_nodes()
方法来处理指令内容中的 rst 。 它避免了直接使用 self.state.nested_parse(self.content, self.content_offset, node)
,如其他答案中链接的那样。