



据 GitHub Flavored Markdown(GFM)官方文档介绍,Markdown是由约翰·格鲁伯(John Gruber)在亚伦·斯沃茨(Aaron Swartz)的帮助下开发,并在2004年发布的标记语言。
其设计灵感主要来源于纯文本电子邮件的格式,目标是让人们能够使用易读、易写的纯文本格式编写文档,而且这些文档可以转换为HTML(Hyper Text Markup Language,超文本标记语言)文档。
简单点说,Markdown就是由一些简单的符号(如 * /-> [] ()#)组成的用于排版的标记语言,其最重要的特点就是可读性强。
Markdown的基本语法,如下图所示。
可以说,Markdown相当于简化了的HTML,它只提供用户最常用的语法格式,更易读和易写,用户可以不必关心复杂的HTML标签,只专注于写作就行了。
使用Markdown和HTML实现相同效果的文档时,源码对比如下图所示。
当一些特殊需求(如设置图片的大小)无法通过现有的Markdown标记实现时,也可以使用HTML来实现。
起初Markdown主要用于网络写作,后来人们希望Markdown能够应用到更多的领域,如写书、记笔记、写文档、写幻灯片等。
由于Markdown本身功能有限,一些特定的需求和场景无法被满足,因此产生了许多扩展语法,这些语法在基础语法之上新增了如表格、任务列表、围栏代码块等功能。
· 2004年,Markdown发布,作者是John Gruber。
· 2006年,Pandoc's Markdown发布,作者是John MacFarlane。
此版本对Markdown语法有额外的扩充和些许修正,这使Markdown可以转换为更多的文件格式,Pandoc堪称文件转换领域的“瑞士军刀”。
· 2011年,MultiMarkdown(简称MMD)发布,作者是Fletcher T.Penney。
此版本让Markdown可以转换为更多的文件格式,包括HTML/XHTML、L A TEX、OpenDocument、OPML(Outline Processor Markup Language,大纲处理标记语言)。
· 2013年,Markdown Extra发布,作者是Michel Fortin。
此版本最初使用PHP语言实现,新增了围栏代码块、具有id/class属性的元素、表格、任务列表、脚注、缩写等功能。
· 2014 年,CommonMark 规范发布,主要作者是 Jeff Atwood 和 John MacFarlane。
CommonMark旨在为人们提供一个标准的Markdown语法规范和参考实现。
Markdown标准化工作开始于2012年,2014年9月,由于John Gruber反对在这一工作中继续使用“Markdown”这个名字,其被更名为CommonMark。
· 2017年,GitHub发布了GitHub Flavored Markdown,即GFM。
此版本遵循CommonMark规范,新增了围栏代码块、表格、删除线、自动链接、Emoji表情和任务列表等功能,是目前使用最广泛的版本。
由于不同版本的扩展语法太多,John Gruber对Markdown语法也没有指定明确的规范,在非正式规范中也存在一些含糊不清的地方,一些扩展语法慢慢偏离了最初的参考实现方式。另外,用户的写作习惯和编辑器的解析规则也不尽相同,这就导致Markdown文本在不同编辑器上解析时可能会出现一些问题。
这些问题促使一些机构和开发人员努力对Markdown语法进行标准化,CommonMark(http://commonmark.org/)就是这样一个产物。它为Markdown提出了一个标准的、明确的语法规范,以及一套全面的测试,根据此规范可以验证Markdown的实现结果,GitHub Flavored Markdown(GFM)遵循的就是CommonMark规范。
不过,John Gruber认为Markdown不应该完全标准化,因为不同的网站和用户有不同的需求,没有一种语法可以让所有人都满意。
目前最流行的扩展语法是GitHub Flavored Markdown,简称GFM,毕竟GitHub是全球最大的程序员“交友”网站。
GFM语法示例如下。
上述语法使用Typora编辑器渲染后的效果如下图所示。