前言
reStructuredText 和 Markdown 是两种标记语言 (Markup Languages),用于以文本的方式描述格式化文档(结构、内容、样式等),然后通过转换器转换为 HTML 、 PDF 、 CHM 等目标格式。
用文本描述格式化文档可追溯至二十世纪七十年代(1970s),代表作有 troff 和 Tex,用户主要是数学家、程序员。二十世纪九十年代(1990s)上网用户越来越多,人们在论坛、邮件中已不满足于以纯文本的方式进行交互,因此标记语言开始萌芽,如1998年诞生了 BBCode 。在标记语言的帮助下,人们可以用纯文本轻松表达粗体、斜体、颜色、列表等格式化信息,上网的生活越来越美好。
目前主流的标记语言有两个: reStructuredText 和 Markdown 。
reStructuredText
reStructuredText 出现在2002年,比 Markdown 早2年。作为 Python 项目技术文档的御用写作语言,它出生后的大部分时间只在 Python 圈赫赫有名,外界并不太知道它。直到2008年 Sphinx 项目发布,才让外界意识到 reStructuredText 原来也是文档写作的王者。
如今,一些大型项目将其用于项目文档写作,如 Linux 、 OpenCV 、LLVM 等。
Markdown
Markdown 出现在2004年,现在已经非常流行。开发者是技术作家 John Gruber (约翰·格鲁伯) 和英年早逝的计算机天才 Aaron Swartz (亚伦·斯沃茨)。
Markdown 语法非常简单,这得益于它出生较晚,能够充分吸收前辈们的各种优点。Markdown现在是 StackOverflow、 Reddit 、 Github、 简书 的默认标记语言。另外 有道云笔记 、印象笔记 都支持 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 语法,但又各自有所扩展。主要的衍生版有: CommonMark 、 GitHub Flavored Markdown (GFM) 、 Markdown Extra 、 MultiMarkdown 、 Pandoc Markdown 。各种衍生版的语法有一部分是互不兼容的。由于技术原因和历史原因,短期内 Markdown 世界是无法统一的。
reStructuredText 不存在这个问题,到目前为止, reStructuredText 只有一个规范和一个活跃的规范实现 — docutils 。
扩展性
Markdown 衍生版众多的原因是它的核心设计没有考虑可扩展机制。当一个新的需求来临时,必须修改解析器,因此才有了现在这么多的 Markdown 孤岛。相反, reStructuredText 可通过 role 和 directive 进行扩展。通过注册,就能将扩展的功能添加到 reStructuredText , 并且reStructuredText 的核心能够以一致的方式调用扩展模块的代码。文档系统 Sphinx 和 静态网页生成器 Pelican 就是利用这种扩展机制实现的。
建议
reStructuredText 和 Markdown 各有长处,您可根据应用场景进行选择。
如果您关注可扩展性、文档间引用、文档搜索等功能, 可选择全面支持 reStructuredText 的 Sphinx 进行文档创作。
如果没有这些需求, Markdown是非常好的选择。对于部分自媒体作者和技术文章写作者,这两种语言可能都需要掌握。本文就是在 Sphinx 下用 reStructuredText 写的。
另外 Try pandoc! 网站提供了 reStructuredText 和 Markdown 的在线转换,有兴趣的朋友不妨一试。
💯本站文章同步发表在官方公众号 ReadingHere,关注公众号您将在第一时间了解本站最新文章和资讯。
❤️欢迎您关注本站官方公众号 ReadingHere。
本文由 ReadingHere 原创,未经 ReadingHere 授权不得转载、摘编。已经授权使用的,应在授权范围内使用,并注明来源: www.readinghere.com。违反上述声明者,ReadingHere 将追究其相关法律责任。