使用Sphinx进行自定义语法突出显示

时间:2013-05-09 19:45:58

标签: python python-sphinx restructuredtext

我对创建可在Sphinx环境中使用的自定义语法高亮显示感兴趣。这可能吗?如果是这样我将如何去做呢?

1 个答案:

答案 0 :(得分:11)

背景

Sphinx(http://sphinx-doc.org/)在内部使用Pygments(http://pygments.org/)作为语法高位。 Pygments支持添加自定义语法高亮显示(词法分析器),如此处所述http://pygments.org/docs/lexerdevelopment/

使用示例

我会尝试在Pygments中定义一个新的自定义词法分析器,并在conf.py sphinx配置文件中初始化新的自定义词法分析器。一个可以帮助您入门的小例子:

from pygments.lexer import RegexLexer
from pygments import token
from sphinx.highlighting import lexers

class BCLLexer(RegexLexer):
    name = 'MYLANG'

    tokens = {
        'root': [
            (r'MyKeyword', token.Keyword),
            (r'[a-zA-Z]', token.Name),
            (r'\s', token.Text)
        ]
    }

lexers['MYLANG'] = BCLLexer(startinline=True)