0

Docutils ドキュメント ツリーでは、セクションtitle内またはドキュメント自体内にノードが発生する場合があります。

NodeVisitor私が作成している特定の Docutils について、現在のtitleノードがドキュメントのタイトルなのか、それともドキュメント内のいくつかのセクションの 1 つにあるのかを区別できるようにする必要があります。それが実際にドキュメント全体のタイトルである場合は、このタイトルをスキップして先に進みます。

私は内でこれを行うことができると思っていたでしょう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が実際に特別なドキュメントのタイトルであることをどのように確認できますか? titleまたは、タイトルとより簡単に区別するために、実際にドキュメント レベルになるように Docutils にフックするにはどうすればよいsectionですか?

4

1 に答える 1

0

visit_section次を追加できますdepart_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 の場合、ドキュメントのタイトルとサブタイトルを明示的に指定する方法はありません。この場合:

于 2016-08-07T05:44:33.460 に答える