目录

restructuredtext-markdown.png

前言

reStructuredTextMarkdown 是两种标记语言 (Markup Languages),用于以文本的方式描述格式化文档(结构、内容、样式等),然后通过转换器转换为 HTML 、 PDF 、 CHM 等目标格式。

用文本描述格式化文档可追溯至二十世纪七十年代(1970s),代表作有 troffTex,用户主要是数学家、程序员。二十世纪九十年代(1990s)上网用户越来越多,人们在论坛、邮件中已不满足于以纯文本的方式进行交互,因此标记语言开始萌芽,如1998年诞生了 BBCode 。在标记语言的帮助下,人们可以用纯文本轻松表达粗体、斜体、颜色、列表等格式化信息,上网的生活越来越美好。

目前主流的标记语言有两个: reStructuredText 和 Markdown 。

reStructuredText

reStructuredText 出现在2002年,比 Markdown 早2年。作为 Python 项目技术文档的御用写作语言,它出生后的大部分时间只在 Python 圈赫赫有名,外界并不太知道它。直到2008年 Sphinx 项目发布,才让外界意识到 reStructuredText 原来也是文档写作的王者。

如今,一些大型项目将其用于项目文档写作,如 LinuxOpenCVLLVM 等。

Markdown

Markdown 出现在2004年,现在已经非常流行。开发者是技术作家 John Gruber (约翰·格鲁伯) 和英年早逝的计算机天才 Aaron Swartz (亚伦·斯沃茨)

john-gruber-and-aaron-swartz.png

Markdown 语法非常简单,这得益于它出生较晚,能够充分吸收前辈们的各种优点。Markdown现在是 StackOverflowRedditGithub简书 的默认标记语言。另外 有道云笔记印象笔记 都支持 Markdown 。目前流行的知识管理软件 Obsidian对Markdown的支持非常棒,它甚至可以将Markdown格式的笔记转换成思维导图,转化方法请参见 《用Obsidian将Markdown笔记转化为思维导图》

比较

reStructuredText 和 Markdown 都有丰富的工具链和实际应用,对于选择困难症的我们选谁更好呢?下面我们从简单性、统一性、扩展性几个方面综合比较一下。

简单性

Markdown 语法比 reStructuredText 语法简单易读。

比如标题:

Markdown 标题


# H1 标题
## H2 标题
### H3 标题
#### H4 标题
##### H5 标题
###### H6 标题
reStructuredText 标题


H1 标题
==========

H2 标题
----------

H3 标题
^^^^^^^^^^

H4 标题
::::::::::

H5 标题
**********

H6 标题
++++++++++

比如代码块:

Markdown 代码块

```python
import random

numbers = []
for i in range(10):
  numbers.append(random.random())

print(numbers)
```

reStructuredText 代码块

.. code-block:: python
 import random

 numbers = \[\]
 for i in range(10):
 numbers.append(random.random())

 print(numbers)

实事求是的说 Markdown 语法比 reStructuredText 语法简洁很多。

统一性

Markdown 有大量的衍生版,它们都支持最基本的 Markdown 语法,但又各自有所扩展。主要的衍生版有: CommonMarkGitHub Flavored Markdown (GFM)Markdown ExtraMultiMarkdownPandoc Markdown 。各种衍生版的语法有一部分是互不兼容的。由于技术原因和历史原因,短期内 Markdown 世界是无法统一的。

reStructuredText 不存在这个问题,到目前为止, reStructuredText 只有一个规范和一个活跃的规范实现 — docutils

扩展性

Markdown 衍生版众多的原因是它的核心设计没有考虑可扩展机制。当一个新的需求来临时,必须修改解析器,因此才有了现在这么多的 Markdown 孤岛。相反, reStructuredText 可通过 roledirective 进行扩展。通过注册,就能将扩展的功能添加到 reStructuredText , 并且reStructuredText 的核心能够以一致的方式调用扩展模块的代码。文档系统 Sphinx 和 静态网页生成器 Pelican 就是利用这种扩展机制实现的。

建议

reStructuredText 和 Markdown 各有长处,您可根据应用场景进行选择。

如果您关注可扩展性、文档间引用、文档搜索等功能, 可选择全面支持 reStructuredText 的 Sphinx 进行文档创作。

如果没有这些需求, Markdown是非常好的选择。对于部分自媒体作者和技术文章写作者,这两种语言可能都需要掌握。本文就是在 Sphinx 下用 reStructuredText 写的。

另外 Try pandoc! 网站提供了 reStructuredText 和 Markdown 的在线转换,有兴趣的朋友不妨一试。


官方公众号

💯本站文章同步发表在官方公众号 ReadingHere,关注公众号您将在第一时间了解本站最新文章和资讯。

❤️欢迎您关注本站官方公众号 ReadingHere


版权声明

本文由 ReadingHere 原创,未经 ReadingHere 授权不得转载、摘编。已经授权使用的,应在授权范围内使用,并注明来源: www.readinghere.com。违反上述声明者,ReadingHere 将追究其相关法律责任。