Markdown 和 reStructuredText

Markdown

Markdown 可以说是目前最流行的标记语言,Github 对它的支持很好,许多论坛、博客也支持这种语法。

我的博客从2011年6月11日开始使用 Markdown 写作,文章托管在 Github 上。在 Wordpress 中,我曾经采用 Markdown On Save 插件来实现 Markdown 的解析。现在,我写了一个 WPCMD 工具来实现博客更新,终于不再需要和 Workdpress 后台打交道。

标准的 Markdown 在没有扩展的情况下,是非常简单的,就算写个博客都嫌不够。

例如,标准的 Markdown 不支持脚注、不支持表格、也不支持 TOC ,而这些在博客写作中都是常用的功能。

虽然在 Markdown 中可以直接使用 HTML 语法来实现这些需求,但对于表格这种变态的实现来说,手写还不如不写吧。

正因为如此,Markdown 发展出许多扩展。例如 Markdown ExtraGitHub Flavored Markdown 以及 Mastering Markdown

Markdown On Save 使用的就是 Markdown Extra 这个扩展。

reStructuredText

开始学习 Python 之后,我又接触到 reStructuredText 这个标记语言。它是 Python 官方的文档写作语言,主要用于 Python 的文档写作,Python 还提供了一个 Docutils 实现它的解析。

reStructuredText 的复杂程度远远大于 Markdown 。而且,Python 官方文档使用了 sphinx 这个生成器来生成文档,它对 reSturcturedText 又进行了一定程度的扩展,使得其 语法 更加复杂。

当然,reStructuredText 的复杂也就意味着它更强大。表格、脚注、无所不在的链接、注释支持、内置的语法高亮都让其更加适合撰写 技术文档。当然,写博客也不在话下。

详细对比

常用轻量级标记语言对照 这篇文章是目前最好的对比文章。其中对比了 Markdown 、reStructuredText 、Textile 、 AsciiDoc 和 Org-mode 这五种常见的标记语言的特点和语法。

用这篇文章来作为 reStructuredText 的入门也不错,尤其是在熟悉 Markdown 的基础上。

其他标记语言

这个表列出了更多的标记语言:List of plain-text markup and tools ,维基百科上的 Comparison of document markup languages 一文也对这些语言进行了比较。

生成器

有文档标记语言,就必须有生成器。

Pandoc 是个异常强大的生成器,看看这张图就知道它有多牛B了:

pandoc diagram

我的博客在使用 Markdown 写作之前,还有 500 多篇文章使用的是 HTML。我用 Pandoc 将它们都转到了 Markdown 。虽然结果并不是非常完美,但也尚可接受。

这里有一篇关于生成器比较的文章可以一看: Comparison of documentation generators

这里有一篇 reStructuredText tool support 展示了各个语言的 rst 工具。