0

Docutils 文档树中,title节点可能出现在一个部分内,也可能出现在文档本身内。

对于我正在创建的特定 Docutils NodeVisitor,我需要能够区分当前title节点是文档的标题,还是位于文档中的几个部分之一:如果它实际上是整个文档的标题,我只想跳过这个标题并继续。

我本来希望能够在以下范围内做到这一点Visitor.visit_title

class DocumentTitleSkippingVisitor:

    # …

    def visit_title(self, node):
        document_node = section_node.parent
        if section_node is document_node:
            # This title is actually the document's top level title.
            raise self._docutils.nodes.SkipNode

但是,这不起作用:访问者在另一个section节点中遇到文档的顶级标题。正因为如此,上面的检查(正确)说的父节点title不是节点。document

我怎样才能知道,在 中NodeVisitortitle实际上是特殊文档标题?或者,我如何才能连接到 Docutils 以便title它实际上是在文档级别,以便更容易地将它与section标题区分开来?

4

1 回答 1

0

您可以添加visit_sectiondepart_section

class DocumentTitleSkippingVisitor:
    def __init__(self):
        self.in_section = False
    def visit_section(self, node):
        self.in_section = True
    def depart_section(self,node):
        self.in_section = False
    def visit_title(self, node):
        if self.in_section:
            pass # do something

对于 reStructuredText,无法明确指定文档标题和副标题。在这种情况下:

  • 您可以先申请DocTitle
  • 您应该按照DocTitle使用的算法来查找它。
于 2016-08-07T05:44:33.460 回答