zoukankan      html  css  js  c++  java
  • python: 用pygments给markdown文档染色

    首先你需要一个markdown解析器

    比如有常见的markdown和markdown2,其他的可以参考这个网站的评价

    我选择了mistune,自己继承写一个渲染的Renderer

    mistune的doc也有提及基本写法

    
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import mistune
    import sys
    from pygments import highlight
    from pygments.lexers import get_lexer_by_name
    from pygments.formatters import html
    
    class HighlightRenderer(mistune.Renderer):
        def block_code(self, code, lang):
            if not lang:
                return '
    <pre><code>%s</code></pre>
    ' % 
                    mistune.escape(code)
            lexer = get_lexer_by_name(lang, stripall=True)
            formatter = html.HtmlFormatter()
            return highlight(code, lexer, formatter)
    
    def main(argv):
        name = argv[0]
        md_name = '%s.md' % (name)
        outfile = '%s.html' % (name)
    
        with open(md_name) as mdfile:
            md_text = mdfile.read()
            rd = HighlightRenderer()
            markdown = mistune.Markdown(renderer=rd)
            html = markdown(md_text)
    
            # 为了避免中文乱码 以及添加高亮样式
            head_css = '<meta http-equiv="Content-Type"
            content="text/html; charset=utf-8" />
    '
            css_name = "code.css"
            code_css = '<link rel="stylesheet" href="' + css_name 
                + '" type="text/css"/>
    '
            code_css = head_css + code_css
    
            with open(outfile, 'w') as output:
                output.write(code_css + html)
    
    if __name__ == "__main__":
       main(sys.argv[1:])
    

    利用pygments的命令生成特定主题的css:

    pygmentize -f html -a .codehilite -S monokai > code.css

    之后运行这个python文件,假设markdown文件是data.md,运行 python solve.py data 即可

    具体还有什么样式可以在 pygments网站

  • 相关阅读:
    Ubuntu 16.04 swoole扩展安装注意!!!
    go mod使用指南
    基于gin框架-验证码demo
    go(基于gin开发提升效率)--Air
    go mod路径引入并代码提示
    golang在win10下安装问题(一)
    win10下beego安装注意坑(一)
    API统一管理平台-YApi
    vim编辑
    swool安装(centos7)
  • 原文地址:https://www.cnblogs.com/Rosebud/p/9763969.html
Copyright © 2011-2022 走看看