简介
  1. Markdown是什么?
    Markdown是一种轻量级标记语言,它以纯文本形式(易读、易写、易更改)编写文档,并最终以HTML格式发布。
    Markdown也可以理解为将以MARKDOWN语法编写的语言转换成HTML内容的工具。

  2. 为什么要使用它?
    它是易读(看起开舒服)、易写(语法简单)、易更改纯文本。处处体现着极简主义的影子。
    兼容HTML,可以转换为HTML格式发布。
    跨平台使用。
    越来越多的网站支持Markdown。
    更方便清晰的组织你的电子邮件。(Markdown-here, Airmail)
    摆脱Word(我不是认真的)。

  3. 谁创造了它?
    它由Aaron Swartz和John Gruber共同设计,Aaron Swartz就是那位于去年(2013年1月11日)自杀,有着开挂一般人生经历的程序员。他有着足以让你跪拜的人生经历:

Aaron Swartz

14岁参与RSS 1.0规格标准的制订。
2004年入读斯坦福,之后退学。
2005年创建Infogami,之后与Reddit合并成为其合伙人。
2010年创立求进会(Demand Progress),积极参与禁止网络盗版法案(SOPA)活动,最终该提案被撤回。
2011年7月19日,因被控从MIT和JSTOR下载480万篇学术论文并以免费形式上传于网络被捕。
2013年1月自杀身亡。

markdown
官方网站: https://daringfireball.net/projects/markdown/syntax

CommonMark
官方网站 http://commonmark.org/

GFM (GitHub Flavored Markdown)
官方网站 https://guides.github.com/features/mastering-markdown/

原生Markdown

Markdown语法最早由John Gruber于2004年创立。为了与后来的衍生markdoon语言区别,这里将其称为原生Markdown。虽然现在使用的Markdown与原生Markdown有所不同,但是衍生的众多Markdown语法也沿袭了很多原生Markdown的语法,学习原生的Markdown对学习Markdown大有帮助,特别是理解Markdown的理念。John Gruber在其个人主页中公布了详细的Markdown语法说明,随着Markdown的推广和传播,这份说明也被广泛传播和翻译,下面提供了相关的网址:
英文原文:http://daringfireball.net/projects/markdown
简体中文版:http://www.markdown.cn或http://wowubuntu.com/markdown
繁体中文版:http://markdown.tw

衍生Markdown

自从John Gruber2004年发布Markdown之后,Markdown进入了自由生长的状态,因为创始人John Gruber打自2004年之后就没有更新过Markdown。因为原生Markdown只是一个轻量级的标记语言,很多功能不具备。为了扩充Markdown的功能,很多Markdown拓展语法被开发出来,其中著名的有GFM、PHP Markdown Extra、MultiMarkdown、Pandoc Markdown等等

GFM

原生Markdown发布后,最早在程序员圈内流行。由于Markdown的易读易写,而且对程序员很友好(支持区块代码和行内代码),全球最大的代码托管平台Github引入了Markdown,并且对原生Markdown语法进行了拓展,这种衍生Markdown叫做Github Flavored Markdown,简称 GFM 。
与原生Markdown的主要不同:
采用围栏式(Fenced式)区块代码:在代码的上下一行用3个反引号```,可选择性定义代码语种,并支持代码高亮。
列表嵌套方法:改为每次嵌套缩进两个空格。
支持任务列表:在每个列表项目加入[ ],完成任务用 [x],如:- [x] 任务说明。
支持简单表格
|FirstHeader|SecondHeader|
|——————-|——————-||ContentCell|ContentCell||ContentCell|ContentCell|
注意:1)两侧的竖线|可以省略。2)第二行的每个单元格至少3个减号—-。3)可以修改每列文字对齐方式,方法| :—- | :—-: | —-: |。
支持使用emoji表情
删除线(新增):用两个波浪号~~紧密包裹文字。
还有部分语法专门为Github平台设计的,这里就省略了。详细的GFM说明见:https://help.github.com/categories/writing-on-github/

CommonMark

由于创始人自2004年Markdown诞生之后就没有更新过Markdown语法,众多的遗留问题没有得到解决,加上扩展语法的自由发展和Markdown编辑器的涌现,导致了很严重的方言和兼容性问题。因此有人希望对Markdown语法进行规整和统一,建立一套Markdown的语法规范,而CommonMark正是这样产物。CommonMark与一般的衍生语法不同,它的目的不是扩展Markdown的功能,而是解决原生markdown的遗留问题和方言问题,规范Markdown的书写,成为Markdown的标准。可惜此举得到Markdown创始人John Gruber的强力反对,所以至今CommonMark并没有得到广泛的认可。但是其实就CommonMark本身而言,它规范了Markdown的各项语法,有许多可取之处。CommonMark的语法说明是所有markdown语法说明中最长最详细的,优先问题、缩进问题、空行问题、嵌套问题等等容易出现语法冲突的地方都作了非常详细的说明。
与原生Markdown的主要不同:

  1. 定义了优先级别:区块语法的优先级别大于行内语法。
  2. 支持围栏式区块代码
  3. 支持1)作为有序列表的项目标记
  4. 支持 \作为换行符。
  5. 列表嵌套采用行首内容对齐,而非4个空格
  6. Setext式标题支持多行

CommonMark基本没有新增内容,主要式对语法规范进行说明,对理解Markdown很有帮助,就是需要一定的Markdown基础,而且英文文档有点长,不好啃动。
详细的语法说明:http://spec.commonmark.org/

本文转自 https://sspai.com/post/37270

Aaron Swartz和John Gruber 只是规定了基本语法,其它公司或机构在基本语法上又添加了新的语法。比较著名的有common mark和github的GFM。
我们平时使用的markdown编辑器实际上基本都支持这些语法。