2016-09-27 156 views
2

我想創建一個將一個指令轉換爲另一個指令的替換(或類似)。是否可以用另一個指令代替一個指令

例如:

在我們的獅身人面像基於文檔中,我們使用Admonitions創造一定的說明和警告框。

然而,如果我們使用

.. note:: This is a Note 

框的標題是這是一個注意成爲第一款。

相比之下,這個指令

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

產生與所需的標題註釋框。

爲了讓其他編輯器更容易,我想創建一個替換,用第二個替換第一個。

在獅身人面像中可以做什麼嗎?

回答

2

是的,可以做到。您必須向Sphinx添加自定義指令。創建一個Python模塊(如mydirectives.py旁邊conf.py)下列要求:

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) 

必須有某種方式來添加標題爲好。也許你需要自己添加一個 標題節點。該文檔缺乏,最好看看 source for admonitions ,你會感受到docutils。

使用自定義文本節點,您應該可以編寫自己的註釋指令。

+0

謝謝。我會盡快看看它 –

相關問題