2016-08-07 7 views
0

Docutils document tree에서 title 노드가 섹션 내부 또는 문서 자체 내에 나타날 수 있습니다.문서 제목과 섹션 제목을 구분합니다.

내가 만드는 중 현재 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이 실제로 특수 문서 제목임을 어떻게 알 수 있습니까? 또는 title이 실제로 문서 수준에있는 것처럼 Docutils에 연결하여 section 제목과 쉽게 구별 할 수 있습니까?

답변

0

당신은 visit_sectiondepart_section을 추가 할 수 있습니다 reStructuredText를 들어

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 

명시 적으로 문서 제목과 자막을 지정하는 방법은 없습니다. 이 경우 :

  • 먼저 DocTitle
  • 당신은 그것을 찾기 위해 DocTitle에 의해 사용되는 알고리즘을 수행해야 적용 할 수 있습니다.
+0

확인해 보셨습니까? 내 경험에 따르면 같은 방식으로 실패 할 것입니다. 방문자는 '섹션'안에 문서 수준의 제목을 발견합니다. – bignose