【发布时间】:2011-10-31 09:03:06
【问题描述】:
直到最近,我使用以下方式将 Python 代码(空格很重要)发布到 blogspot.com:
<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> 标签是不好的(除了失去颜色)b/c 它还会导致双换行符,而<code> 标签与空格混淆。我想我可以添加 &nbsp;*4 --- 但这是 HTML 风格之神不赞成的。
对此的标准答案(就像在 SO 上一样)是通过使用 css 获得语法着色或突出显示(我不太了解),例如在之前的 SO 问题 here 中讨论过.我遇到的问题是所有此类解决方案都需要从网络上的服务器加载资源。但是,如果(比如 5 年后)该资源消失了,则代码的 html 版本将根本不会呈现。如果我知道 Javascript,我想我可能会解决这个问题。
着色问题本身是微不足道的,可以通过使用具有各种定义的<style>标签来解决。但是解析很难;至少我在尝试自己解析 Python 方面没有取得太大进展。多行字符串是一种特别的痛苦。我可以忽略困难的情况并编写简单的代码。
TextMate 有一个命令Create HTML from Document。结果相当罗嗦,但可以粘贴到帖子中。但是如果你有 3 个代码段,那么它就像 1000 行之类的。当然它是一个文档,所以你必须在粘贴之前实际剪切。
有没有简单的 Python 解析器?更好的解决方案?
更新:我编写了自己的语法高亮解析器。可能还是有点问题,但它非常简单且是一个独立的解决方案。我发布了它here。 Pygments 也是一个不错的选择。
【问题讨论】: