



起初,Markdown主要用于网络写作,随着时代的发展和技术的进步,人们对于Markdown的需求日益增多。从最初的写文章、记笔记,到如今的协作文档、知识管理、思维导图以及幻灯片制作等,Markdown的应用场景越来越多,能够满足的需求也越来越复杂。但其原生功能本身就有局限性,难以满足特定场景的精细需求,这直接推动了众多扩展语法的诞生。
Markdown的发展是一部不断满足写作者需求的创新史,如图2-5所示。
图2-5 Markdown演进历程
● 2004年 :由John Gruber发布的Markdown问世,为网络写作带来简洁高效的排版方式。
● 2006年 :Pandoc's Markdown由John MacFarlane发布。该版本对Markdown语法进行了额外的扩充和少量修正,使Markdown能够转换为更多种类的文件格式。Pandoc在文件转换领域的地位犹如“瑞士军刀”,极大地拓展了Markdown的应用范围。
● 2011年 :Fletcher T.Penney发布了MultiMarkdown(简称MMD)。MMD让Markdown可以转换为包括HTML/XHTML、LaTeX、OpenDocument、OPML在内的更多文件格式,进一步推动了Markdown的多元化应用。
● 2013年 :Michel Fortin发布了Markdown Extra。该版本最初使用PHP语言实现,新增了围栏代码块、具有id/class属性的元素、表格、任务列表、脚注、缩写等语法,为Markdown注入了更多实用功能。
● 2014年 :CommonMark规范项目启动,由Jeff Atwood和John MacFarlane主导开发,首个稳定版本于2017年发布。CommonMark致力于为人们提供一个标准的Markdown语法规范和参考实现,以解决语法碎片化的问题。
● 2017年 :GitHub正式发布了GFM(GitHub Flavored Markdown)。GFM遵循Common-Mark规范,新增了围栏代码块、表格、删除线、自动链接、Emoji和任务列表等语法,凭借GitHub的庞大用户群和影响力,GFM成为目前使用最为广泛的扩展语法之一。
随着Markdown被广泛使用,其扩展语法层出不穷,但由于John Gruber未对Markdown语法制定明确规范,非正式规范中的模糊之处让扩展语法逐渐偏离最初的参考实现,导致语法碎片化问题日益严重。同时,不同用户的写作习惯与编辑器的解析规则差异,使Markdown文本在不同编辑器上的解析效果可能大相径庭。例如,在A软件中编写的Markdown文档,放到B软件中时,渲染效果可能完全不同。
为解决这些问题,开发人员积极推动Markdown语法的标准化,CommonMark应运而生。它为Markdown提供了标准、明确的语法规范,以及一套全面的测试套件。开发者依据此规范,可以验证Markdown的实现结果,对其未来发展意义重大。经过多年的努力和持续的用户反馈,当前版本的CommonMark规范已相当完善,应用也非常广泛。众多网站及软件如GitHub、GitLab、Reddit、Stack Overflow、VS Code和Pandoc等均已支持CommonMark。
GFM是目前最流行的Markdown扩展语法。它由GitHub基于CommonMark开发,不仅继承了标准Markdown的所有优点,还扩展了包括表格、任务列表、删除线、围栏代码块、Emoji等实用功能,极大地增强了Markdown的表达力。GFM、CommonMark和Markdown的关系如图2-6所示。
图2-6 GFM、CommonMark和Markdown的关系
GFM的流行得益于GitHub的推动,凭借庞大的程序员用户群体对标准化协作工具的需求,以及程序员自身追求极致的精神,GFM成为技术文档和开源项目的主流格式,同时极大地普及了Markdown的应用。
Markdown从简单的网络写作排版工具,逐步演变为一个支持多种写作场景的生态系统。CommonMark的标准化努力和GFM的功能扩展,都为Markdown的广泛应用奠定了坚实的基础。
对于想要学习Markdown扩展语法的人来说,GFM一定是首选,它不仅功能全面,而且凭借GitHub的影响力,在众多软件和平台中得到了广泛兼容。