目录

前言

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

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

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

reStructuredText

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

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

Markdown

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

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将追究其相关法律责任。


交流合作

如需交流咨询或商务合作请扫描下图微信二维码联系。