2016-09-27 1 views
2

하나의 지시문을 다른 것으로 변환하는 대체 (또는 유사)를 만들고 싶습니다. 예를 들어하나의 지시문을 다른 것으로 대체 할 수 있습니까?

:

우리의 스핑크스 기반 문서에서, 우리는 특정주의 및 경고 상자를 만들 Admonitions를 사용합니다. 우리가

.. note:: This is a Note 

를 사용하는 경우

그러나 상자의 제목은이는 첫 번째 단락이되는 참고에게 있습니다 참고입니다. 이에

이 지정

.. admonition:: This is a Note 
    :class: note 

원하는 타이틀 메모 박스를 생성한다.

다른 편집자가 쉽게 만들 수 있도록 첫 번째를 두 번째로 대체하는 대체를 만들고 싶습니다.

스핑크스로 할 수있는 일이 있습니까?

답변

2

예, 가능합니다. 스핑크스에 사용자 정의 지시문을 추가해야합니다.

import os 
import os.path 
import re 
import subprocess 

import docutils.core 
import docutils.nodes 
import docutils.parsers.rst 

class AbstractDirective(docutils.parsers.rst.Directive): 
    has_content = True 
    required_arguments = 0 
    optional_arguments = 0 
    option_spec = {} 
    final_argument_whitespace = False 

    node_class = docutils.nodes.container 

    def run(self): 
     self.assert_has_content() 
     text = '\n'.join(self.content) 
     admonition_node = self.node_class(rawsource=text) 
     self.state.nested_parse(self.content, self.content_offset, 
           admonition_node) 
     admonition_node.set_class("abstract") 
     return [admonition_node] 


def setup(app): 
    app.add_directive('abstract', AbstractDirective) 

뿐만 아니라 제목을 추가 할 수있는 방법이 있어야합니다 다음에 (mydirectives.py 다음 conf.py에 같은) 파이썬 모듈을 만듭니다. 아마도 타이틀 노드를 직접 추가해야 할 것입니다. 설명서가 부족합니다. source for admonitions 을 살펴보고 docutils에 대한 느낌을 갖습니다.

사용자 지정 텍스트 노드를 사용하면 자신의 노트 지시문을 작성할 수 있습니다.

+0

감사합니다. 나는 시간이 있 자마자 그것을 볼 것입니다. –