直到最近,我在blogspot.com上发布Python代码 (whitespace matters),使用的是这样的方式。
<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>
标签会把空白处弄乱。 我想我可以直接添加
标准的答案(比如在SO上)是通过使用css(我对css了解不多)来实现语法着色或高亮,比如在之前的SO问题中讨论过的那样 此处. 我遇到的问题是,所有这些解决方案都需要从网络上的服务器加载资源。 但是如果(比如说5年后)这个资源消失了,html版本的代码就根本无法呈现。 如果我懂Javascript,我想我大概可以解决这个问题。
着色的问题本身是微不足道的,它可以通过使用 <style>
标签的各种定义。 但是解析是很难的,至少我自己尝试解析Python没有什么进展。 多行字符串是一个特别痛苦的问题。 我可以不理会那些难解的情况,只写简单的代码。
TextMate有一个命令 Create HTML from Document
. 结果相当啰嗦,但可以直接粘贴到帖子里。 但如果说你有3段代码,那么就有1000行左右。 当然这也是一个文档,所以你必须在粘贴前实际剪切。
有没有一个简单的Python解析器? 有更好的解决方案吗?
更新:我自己写了一个语法高亮的解析器。 也许还是有点bug,但它很简单,是一个自成一体的解决方案。 我把它贴出来了 此处. Pygments也是一个不错的选择。