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 '\n<pre><code>%s</code></pre>\n' % \
                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" />\n'
        css_name = "code.css"
        code_css = '<link rel="stylesheet" href="' + css_name \
            + '" type="text/css"/>\n'
        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网站

 

转载于:https://www.cnblogs.com/Rosebud/p/9763969.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值