Markdown 代码语法高亮

By liuzhijun, 2014-03-17, 分类: 默认

markdown

以前总结过一篇文章让markdown支持django1.6,由于Django1.6默认不支持markdown了,所以需要自己写过滤器。现在遇到一个新的麻烦是,代码块默认情况下没有任何高亮显示,看起来非常的单调。因此今天研究了一番。

python的markdown模块功能很完善,亮点是它还能支持扩展插件,CodeHilite就是用来做代码高亮扩展功能的。使用非常简单,

def md1(value):
    extensions = ["nl2br", "codehilite"]
    return mark_safe(markdown.markdown(force_unicode(value),
                                   extensions,
                                   safe_mode=True,
                                   enable_attributes=False))

其实就是把codehilite加入到extensions列表中去就可以了,此时由markdown渲染后文件的代码块所在的div标签会多了一个class属性class="codehilite"。但是事情还没完。代码还没有真正加上高亮。真正的高亮功能是由Pygments来完成的。

因此还要安装Pygments,安装方式也非常简单

pip install pygments

如果你人品和我一样差的话,需要去 Bitbucket下载他的源码才能完成安装。下载下来解压执行:

python setup.py install

顺利安装完成后,还缺少一样东西,既然是代码高亮的话,肯定是有CSS来驱动的,pygments默认是不带样式的。不过你可以借助它生成一个默认的css。

E:\>pygmentize -S default -f html > default.css

把default.css放到项目中去,此时就能看到高亮代码了。如果你不喜欢这个样式的话,pygments-css提供了很多样式供你选择。本站采用的github.css样式。


关注公众号「Python之禅」(id:vttalk)获取最新文章 python之禅