热门问题
时间线
聊天
视角
Markdown
轻量级标记语言,常用于书写自述(README)文件 来自维基百科,自由的百科全书
Remove ads
Markdown是一种轻量级标记语言,创始人为約翰·格魯伯。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。[4]这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。
由於Markdown的輕量化、易讀易寫特性,並且對於圖片,圖表、數學式都有支援,目前許多網站都廣泛使用Markdown來撰寫說明文件或是用於論壇上發表訊息。如GitHub、Reddit、Discord、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书等,甚至还能被用來撰寫電子書。
Remove ads
历史
約翰·格魯伯在2004年創造了Markdown語言,在語法上有很大一部分是跟亚伦·斯沃茨共同合作的。這個語言的目的是希望大家使用「易於閱讀、易於撰寫的純文字格式,並選擇性地轉換成有效的XHTML(或是HTML)」。
其中最重要的設計是可讀性,也就是說這個語言應該要能直接在字面上閱讀,而不用记忆格式化指令標記(像是RTF與HTML)。
因此,它是現行電子郵件標記格式的慣例,雖然它也借鑒了幾個早期的標記語言,如:Setext、Textile (markup language)、reStructuredText。格魯伯也编写了的Perl脚本:Markdown.pl,用於把Markdown语法编写的内容转换成有效的、结构良好的XHTML或HTML内容,并将左尖括号<
和&
号替换成它们各自的字符实体引用。它可以用作单独的脚本,Blosxom和Movable Type的插件又或者BBEdit的文本过滤器[4]。Markdown也已经被其他人用Perl和别的编程语言重新实现,其中一个Perl模块放在了CPAN(Text::Markdown)上。它基于一个BSD风格的许可证分发并可以作为几个内容管理系统的插件[8][9]。
Remove ads
Markdown已经成为典型的转换为HTML的非正式规范[10]和参考实现。随着时间的推移,出现了许多Markdown实现。人们开发这些主要是由于在基本语法之上需要额外的功能 - 例如表格,脚注,定义列表(技术上的HTML描述列表)和HTML块内的Markdown。其中一些行为偏离了最开始的参考实现。与此同时,非正式规范中的一些含糊不清引起了人们的注意[11]。这些问题促使Markdown解析器的一些开发人员努力实现标准化。
Babelmark[12][13]是一个可用于比较各种实现的输出的工具,以促进关于如何以及是否应该阐明Markdown规范的某些模糊方面的讨论。[14]格魯伯认为不应完全标准化:“不同的网站(和人们)有不同的需求。没有一种语法可以让所有人满意。”[15]
2016年3月发布了RFC 7763和RFC 7764。RFC 7763 从原始变体引入了MIME类型 text/markdown
。RFC 7764讨论并注册了MultiMarkdown、GitHub Flavored Markdown (GFM)、Pandoc、CommonMark及Markdown等变体。[16]
从2012年开始,包括Jeff Atwood和John MacFarlane在内的一群人启动了标准化工作。[17]一个社区网站现在旨在记录可用于文档作者和开发人员的各种工具和资源,以及各种Markdown实现的实现者。[18] 2014年9月,格魯伯反对在这一工作中继续使用“Markdown”这个名字,其被更名为CommonMark。[19][20]CommonMark.org发布了规范、参考实现和测试套件的几个版本,并计划在2018年宣布最终的1.0规范和测试套件。[21]
Remove ads
2017年,GitHub发布了基于CommonMark的GitHub Flavored Markdown(GFM)的正式规范。[22]除了表格、删除线、自动链接和任务列表被GitHub规范作为扩展添加之外,它遵循CommonMark规范。 [23]GitHub还相应地更改了其站点上使用的解析器,这要求更改某些文档 - 例如,GFM现在要求创建标题的哈希符号由空格字符分隔。
Markdown Extra是一种轻量级标记语言,基于在PHP(最初)、Python和Ruby[24]中实现的Markdown。它添加了普通Markdown语法不具备的功能。内容管理系统支持Markdown Extra,例如Drupal[25],TYPO3[26]和MediaWiki[27]。
它为Markdown添加了以下功能:
- HTML块内的Markdown标记
- 具有id / class属性的元素
- 围栏代码块
- 表格[28]
- 定义清单
- 脚注
- 缩写
示例
Remove ads
实现
Markdown的实现可用于十几种编程语言;此外,许多平台和框架都支持Markdown。[29] 例如,Markdown插件适用于每个主要的博客平台。[30]
虽然Markdown是一种最小标记语言,并且使用普通文本编辑器进行读取和编辑,但是有专门设计的编辑器可以预览具有样式的文件,这些样式可用于所有主要平台。许多通用文本和代码编辑器都具有内置于其中的Markdown的语法高亮插件,或者可用作可选下载。编辑器可以具有并排预览窗口或直接以所见即所得的方式呈现代码。
- 源代码文档生成器Doxygen支持Markdown的额外功能。[31]
- RStudio是一个用于R的IDE,为称为sundown的Markdown变体提供了C++包装函数。[32]
- GitHub Flavored Markdown(GFM)忽略单词中的下划线,并添加语法高亮显示、任务列表[33]和表格[34]。
- Discount – 一个C语言实现。[35][36]
- MarkAPL是一个用Dyalog APL编写的转换器。它支持隔离块,智能排版,链接引用和特殊属性,并可以生成目录。[37]
- PHP Markdown - 一个库包,包含PHP Markdown解析器及其有额外功能的兄弟PHP Markdown Extra。[38]
- Markdig - 遵循CommonMark规范的.NET库,包括一组扩展和用户创建自己扩展的能力。
- WP Githuber MD - 一个WordPress 插件,实现了所见即所得的 Markdown 编辑器及增强语法。[39]
- Visual Studio Code 對 Markdown 的支援度極高[40]。
- MarkItDown - 一个Python库,用于将各种文件转换为Markdown,如PDF、PPT、Word等[41]
Remove ads
参考文献
外部链接
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads