为网页格式化Python代码
直到最近,我在blogspot.com上发布Python代码(空格很重要)时,使用的方式大概是这样的:
<div style="overflow-x: scroll ">
<table bgcolor="#ffffb0" border="0" width="100%" padding="4">
<tbody><tr><td><pre style=" hidden;font-family:monaco;">
my code here
</pre></table></div>
大约一周前,我发现我的帖子开始多出一些空行,结果所有的内容都是双倍行距。用简单的<pre>
标签就不行了(除了失去颜色),因为它也会导致双倍空行,而<code>
标签又会搞乱空格。我想我可以加上
*4——但这在HTML风格上是被不太赞成的。
对此的标准答案(就像在这里的SO上)是通过使用CSS来实现语法高亮(我对CSS不太了解),例如在之前的SO问题中讨论的 这里。我对这个的困扰是,所有这样的解决方案都需要从网上的服务器加载资源。但是如果(比如说五年后)那个资源不见了,代码的HTML版本就完全无法显示了。如果我懂JavaScript,我想我可能能解决这个问题。
至于颜色的问题其实很简单,可以通过使用<style>
标签和各种定义来解决。但解析代码就比较难了;至少我在尝试解析Python时没有取得太大进展。多行字符串特别麻烦。我可以选择忽略那些复杂的情况,只处理简单的。
TextMate有一个命令叫Create HTML from Document
。结果虽然内容比较多,但可以直接粘贴到帖子里。但是如果你有3段代码,那可能就得处理1000行左右的内容。而且这还是个文档,所以你得先剪切再粘贴。
有没有简单的Python解析器?更好的解决方案呢?
更新:我写了自己的语法高亮解析器。可能还有点小bug,但它非常简单,是个独立的解决方案。我把它发布在了 这里。Pygments也是个不错的选择。