在ReST文档中使用pygments

  最近在整理个东西,本来想用LaTeX做的,但是想想它的代码高亮实在麻烦,而且默认的情况下只有黑白的,真的很难看的;而且最终发布是PDF,有时也不是很方便,所以考虑用网页的形式弄。不想为这玩意再架个服务器,想来想去,能用好的大概就是 reStructuredText 了。

  说是想到了reStructuredText,其实一开始是想自己写一个的,大概也不外乎是标记分析啥的,主要是想要 pygments 带的语法高亮,只是在网上找东西的时候,突然发现 pygments 已经支持了rst的编写,于是就打消了造轮子的想法。毕竟,现在能把文档整理出来是最重要的。但是用的时候碰到了点问题,它是通过rst的directive支持扩展的。一开始是通过easy_install的包没有那个rst-directive.py的文件,使用hg弄下来的代码里面才有;弄下来后紧接着就是安装directive。折腾了半天,直到今天才找到一个网页上有大概的步骤,照做,然后一切搞定。

  首先需要把那个rst-directive.py文件拷到docutils/parsers/rst/directives/下,然后再在那个directives目录下的__init__.py中加一行,’sourcecode’: (‘rst-directive’, ‘pygments_directive’), 至于加哪,就在类似的地方加吧,里面有一堆directives的,这样就算注册了,然后在rst文档中,就可以使用.. sourcecode这个directive了,rst会自动调用rst-directive中的pygments_directive来处理。

  这样处理还不行,因为pygments默认只是把程序通过词法分析器拆开后,归到一个一个的class下,还需要CSS才能生成带颜色的东西。在网上找它的CSS文件的时候,碰到了一个有用的命令:

pygmentize -S default -f html

这样它会在 stdout 输出CSS,直接重定向到文件即可。在rst2html中使用时,可以通过–stylesheet等参数设置使用的CSS,好像默认它会把这些CSS嵌入到网页中去,嗯。

  OK了,还是满不错的,代码好看多了,嗯 ^_^

This entry was posted in Happy coding. Bookmark the permalink.

One Response to 在ReST文档中使用pygments

  1. 半瓶墨水 says:

    呵呵代码发芽网就是拿Pygments做的。
    其实可以考虑到代码发芽网贴一下然后复制粘贴到blog,这样就有代码高亮了,有多种配色主题可供选择。比直接手工使用pygmentize舒服一点儿。

    比如我在百度空间贴的这一篇:
    http://hi.baidu.com/2maomao/blog/item/124fd31bfa6461d0ad6e7583.html

    代码发芽网网址:
    http://www.fayaa.com/code/

    完整的介绍:
    http://www.2maomao.com/blog/code-fayaa-beta/

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>