区分文档标题与章节标题

时间:2016-08-07 04:59:25

标签: python docutils

Docutils document tree中,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节点。

如何在NodeVisitor内告诉title实际上是特殊文件标题?或者,我如何挂钩到Docutils以使title实际上处于文档级别,以便更容易将其与section标题区分开来?

1 个答案:

答案 0 :(得分:0)

您可以添加depart_sectionclass 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

<message t="{{TIME_STAMP}}" from="{{CONTACT_JID}}" 
    offline="{{OFFLINE}}" type="text" id="{{MESSAGE_ID}}" notify="{{NOTIFY_NAME}}">
        <media 
            latitude="52.52393" 
            type="location"
            longitude="13.41747"
            name="Location Name"
            url="http://www.foursquare.com/XXXX"
            encoding="raw"
        >{{THUMBNAIL_RAWDATA}}</media>
    </message>

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

  • 您可以先申请DocTitle
  • 您应该按照DocTitle使用的算法进行查找。