Markdown编辑器
站长自制自用的极简版Markdown编辑/预览工具
Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。
由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,目前许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。如GitHub、Reddit、Discord、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书等,甚至还能被用来撰写电子书。
历史
约翰·格鲁伯在2004年创造了Markdown语言,在语法上有很大一部分是跟亚伦·斯沃茨共同合作的。这个语言的目的是希望大家使用“易于阅读、易于撰写的纯文字格式,并选择性地转换成有效的XHTML(或是HTML)”。
其中最重要的设计是可读性,也就是说这个语言应该要能直接在字面上阅读,而不用记忆格式化指令标记(像是RTF与HTML)。
因此,它是现行电子邮件标记格式的惯例,虽然它也借鉴了几个早期的标记语言,如:Setext(英语:Setext)、Textile (markup language)(英语:Textile (markup language))、reStructuredText。格鲁伯也编写了的Perl脚本:Markdown.pl,用于把Markdown语法编写的内容转换成有效的、结构良好的XHTML或HTML内容,并将左尖括号<和&号替换成它们各自的字符实体引用。它可以用作单独的脚本,Blosxom和Movable Type的插件又或者BBEdit的文本过滤器。Markdown也已经被其他人用Perl和别的编程语言重新实现,其中一个Perl模块放在了CPAN(Text::Markdown)上。它基于一个BSD风格的许可证分发并可以作为几个内容管理系统的插件。
标准化
Markdown已经成为典型的转换为HTML的非正式规范和参考实现。随着时间的推移,出现了许多Markdown实现。人们开发这些主要是由于在基本语法之上需要额外的功能 - 例如表格,脚注,定义列表(技术上的HTML描述列表)和HTML块内的Markdown。其中一些行为偏离了最开始的参考实现。与此同时,非正式规范中的一些含糊不清引起了人们的注意。这些问题促使Markdown解析器的一些开发人员努力实现标准化。
Babelmark是一个可用于比较各种实现的输出的工具,以促进关于如何以及是否应该阐明Markdown规范的某些模糊方面的讨论。格鲁伯认为不应完全标准化:“不同的网站(和人们)有不同的需求。没有一种语法可以让所有人满意。”
2016年3月发布了RFC 7763和RFC 7764。RFC 7763 从原始变体引入了MIME类型 text/markdown。RFC 7764讨论并注册了MultiMarkdown、GitHub Flavored Markdown (GFM)、Pandoc、CommonMark及Markdown等变体。
从2012年开始,包括Jeff Atwood和John MacFarlane在内的一群人启动了标准化工作。一个社区网站现在旨在记录可用于文档作者和开发人员的各种工具和资源,以及各种Markdown实现的实现者。 2014年9月,格鲁伯反对在这一工作中继续使用“Markdown”这个名字,其被更名为CommonMark。CommonMark.org发布了规范、参考实现和测试包的几个版本,并计划在2018年宣布最终的1.0规范和测试包。
GFM
2017年,GitHub发布了基于CommonMark的GitHub Flavored Markdown(GFM)的正式规范。除了表格、删除线、自动链接和任务列表被GitHub规范作为扩展添加之外,它遵循CommonMark规范。 GitHub还相应地更改了其站点上使用的解析器,这要求更改某些文档 - 例如,GFM现在要求创建标题的哈希符号由空格字符分隔。
Markdown Extra
Markdown Extra是一种轻量级标记语言,基于在PHP(最初)、Python和Ruby中实现的Markdown。它添加了普通Markdown语法不具备的功能。内容管理系统支持Markdown Extra,例如Drupal,TYPO3和MediaWiki。
它为Markdown添加了以下功能:
HTML块内的Markdown标记
具有id / class属性的元素
围栏代码块
表格
定义清单
脚注
缩写