【发布时间】:2020-07-19 12:37:24
【问题描述】:
我想创建一个自定义 Directive,在其实现中使用现有指令(本示例中为 code-block)。
reStructuredText 中的手动等效项是:
.. mydirective:: py
.. code-block: py
print("Hello world")
但是,我希望在 my-directive 的定义中创建 code-block。我找到了一个为现有指令(如下)硬编码适当reStructuredText 的示例,但这取决于使用rST 的解析器。
class MyDirective(Directive):
has_content = True
def run(self):
# Do custom stuff...
# Use code-block Directive
new_content = [
'.. tab:: {}'.format(json.dumps(tab_args)),
' {}'.format(tab_name),
'',
' .. code-block:: {}'.format(lang),
]
if 'linenos' in self.options:
new_content.append(' :linenos:')
new_content.append('')
for idx, line in enumerate(new_content):
self.content.data.insert(idx, line)
self.content.items.insert(idx, (None, idx))
node = nodes.container()
self.state.nested_parse(self.content, self.content_offset, node)
return node.children
如何以独立于解析器的方式实现这一点?
【问题讨论】:
标签: python python-sphinx docutils