本页使用了标题或全文手工转换

Markdown

维基百科,自由的百科全书
跳到导航 跳到搜索
Markdown
Markdown-mark.svg
互联网媒体类型 text/markdown[1]
统一类型标识 net.daringfireball.markdown
开发者 John Gruber (in collaboration with Aaron Swartz on the syntax)
初始版本 2004年3月19日​(15年前)​(2004-03-19[2][3]
最新版本
1.0.1
(2004年12月17日​(14年前)​(2004-12-17[4])
格式类型 Markup language
延伸成 MultiMarkdown, Markdown Extra, CommonMark[5]
自由格式 yes[6]
网站 daringfireball.net/projects/markdown

Markdown是一种轻量级标记语言,创始人为約翰·格魯伯英语:John Gruber)。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”。[4]这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。

由於Markdown的輕量化、易讀易寫特性,並且對於圖片,圖表、數學式都有支援,目前許多網站都廣泛使用 Markdown 來撰寫說明文件或是用於論壇上發表訊息。例如:GitHub、reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge等。甚至Markdown能被使用來撰寫電子書

历史[编辑]

John Gruber 在 2004 年創造了 Markdown 語言,在語法上有很大一部分是跟亞倫·斯沃茨(Aaron Swartz)共同合作的。這個語言的目的是希望大家使用「易於閱讀、易於撰寫的純文字格式,並選擇性的轉換成有效的XHTML(或是HTML)」。 其中最重要的設計是可讀性,也就是說這個語言應該要能直接在字面上的被閱讀,而不用被一些格式化指令標記(像是RTF與HTML)。 因此,它是現行電子郵件標記格式的慣例,雖然它也借鑒了很多早期的標記語言,如:Setext、Texile、reStructuredText。Gruber也编写了的Perl脚本:Markdown.pl,用於把markdown语法编写的内容转换成有效的、结构良好的XHTML或HTML内容,并将左尖括号<&号替换成它们各自的字符实体引用。它可以用作单独的脚本,BlosxomMovable Type的插件又或者BBEdit的文本过滤器[4]。Markdown也已经被其他人用Perl和别的编程语言重新实现,其中一个Perl模块放在了CPAN(Text::Markdown)上。它基于一个BSD风格的许可证分发并可以作为几个内容管理系统的插件[7][8]

标准化[编辑]

Markdown已经成为典型的转换为HTML的非正式规范[9]和参考实现。随着时间的推移,出现了许多Markdown实现。人们开发这些主要是由于在基本语法之上需要额外的功能 - 例如表格,脚注,定义列表(技术上的HTML描述列表)和HTML块内的Markdown。其中一些行为偏离了最开始的参考实现。与此同时,非正式规范中的一些含糊不清引起了人们的注意[10]。这些问题促使Markdown解析器的一些开发人员努力实现标准化。

Babelmark[11][12]是一个可用于“[比较]各种实现的输出”的工具,以“促进关于如何以及是否应该阐明markdown规范的某些模糊方面的讨论。”[13]Gruber认为不应完全标准化:“不同的网站(和人们)有不同的需求。没有一种语法可以让所有人满意。“[14]

2016年3月发布了RFC 7763和RFC 7764。RFC 7763 从原始变体引入了MIME类型 text/markdown。RFC 7764讨论并注册了 MultiMarkdown, GitHub Flavored Markdown (GFM), Pandoc, CommonMark, and Markdown 等markdown变体.[15]

CommonMark[编辑]

CommonMark
Markdown-mark.svg
扩展名 .md, .markdown[1]
互联网媒体类型 text/markdown; variant=CommonMark[5]
统一类型标识 uncertain[16]
UTI结构 public.plain-text
开发者 John MacFarlane, open source
初始版本 2014年10月25日​(4年前)​(2014-10-25
最新版本
0.28
(2017年8月1日​(20個月前)​(2017-08-01[17])
格式类型 Markup language
延伸自 Markdown
延伸成 GitHub Flavored Markdown
自由格式
网站 spec.commonmark.org

从2012年开始,包括Jeff Atwood和John MacFarlane在内的一群人启动了Atwood的标准化工作。[18] 一个社区网站现在旨在“记录可用于文档作者和开发人员的各种工具和资源,以及各种markdown实现的实现者 “。[19] 2014年9月,Gruber反对在这一工作中继续使用”Markdown“这个名字,其被更名为CommonMark。[20][21] CommonMark.org发布了规范、参考实现和测试套件的几个版本,以及 “[计划]在2018年宣布最终的1.0规范和测试套件。”[22]

GFM[编辑]

2017年,GitHub发布了基于CommonMark的GitHub Flavored Markdown(GFM)的正式规范。[23]除了表格、删除线、自动链接和任务列表被GitHub规范作为扩展添加之外,它遵循CommonMark规范。 [24]GitHub还相应地更改了其站点上使用的解析器,这要求更改某些文档 - 例如,GFM现在要求创建标题的哈希符号由空格字符分隔。

Markdown Extra[编辑]

Markdown Extra是一种轻量级标记语言,基于在PHP(最初)、Python和Ruby[25]中实现的Markdown。它添加了普通Markdown语法不具备的功能。内容管理系统支持Markdown Extra,例如Drupal[26],TYPO3[27]和MediaWiki[28]

它为Markdown添加了以下功能:

  • HTML块内的markdown标记
  • 具有id / class属性的元素
  • 围栏代码块
  • 表格[29]
  • 定义清单
  • 脚注
  • 缩写

示例[编辑]

使用Markdown語法的文本 由Markdown處理器產生的HTML 瀏覽器顯示的文本
標題
=======

## 次標題

段落以空白行分隔。

行末兩個空格  産生斷行。

文本屬性:_斜體_、
**粗體**、`等寬字型`。

水平線:

---

列表:

  * 張三
  * 李四
  * 王二麻子

編號列表:

  1. 不論
  2. 三七
  3. 二十一

[連結][示例]。

  [示例]: http://example.com

![](Icon-pictures.png "icon")

> Markdown使用電郵用字元「>」來引用。

行間<abbr title="Hypertext Markup Language">HTML</abbr>亦受支援。
<h1>標題</h1>

<h2>次標題</h2>

<p>段落以空白行分隔。</p>

<p>行末兩個空格<br />
產生斷行。</p>

<p>文本屬性<em>斜體</em><strong>粗體</strong><code>等寬字型</code></p>

<p>水平線:</p>

<hr />

<p>列表:</p>

<ul>
<li>張三</li>
<li>李四</li>
<li>王二麻子</li>
</ul>

<p>編號列表:</p>

<ol>
<li>不論</li>
<li>三七</li>
<li>二十一</li>
</ol>

<p><a href="http://example.com">連結</a></p>

<p><img alt="圖" title="icon" src="Icon-pictures.png" /></p>

<blockquote>
<p>Markdown使用電郵用字元「&gt;」來引用。</p>
</blockquote>

<p>行間<abbr title="Hypertext Markup Language">HTML</abbr>亦受支援。</p>
標題
次標題

段落以空白行分隔。

行末兩個空格
產生斷行。

文本屬性:斜體粗體等寬字型

水平線:


列表:

  • 張三
  • 李四
  • 王二麻子

編號列表

  1. 不論
  2. 三七
  3. 二十一

連結

icon

Markdown使用電郵用字元「>」來引用。

行間HTML亦受支持。

实现[编辑]

Markdown的实现可用于十几种编程语言;此外,许多平台和框架都支持Markdown。[30] 例如,Markdown插件适用于每个主要的博客平台。[31]

虽然Markdown是一种最小标记语言,并且使用普通文本编辑器进行读取和编辑,但是有专门设计的编辑器可以预览具有样式的文件,这些样式可用于所有主要平台。许多通用文本和代码编辑器都具有内置于其中的Markdown的语法高亮插件,或者可用作可选下载。编辑器可以具有并排预览窗口或直接以所见即所得(what you see is what you get)的方式呈现代码。

  • 源代码文档生成器Doxygen支持Markdown的额外功能。[32]
  • RStudio是一个用于R的IDE,为称为sundown的markdown变体提供了C ++包装函数。[33]
  • GitHub Flavored Markdown(GFM)忽略单词中的下划线,并添加语法高亮显示,任务列表[34]和表格[35]
  • Discount – 一个C语言实现。[36][37]
  • MarkAPL是一个用Dyalog APL编写的转换器。它支持隔离块,智能排版,链接引用和特殊属性,并可以生成目录。[38]
  • PHP Markdown - 一个库包,包含PHP Markdown解析器及其有额外功能的兄弟PHP Markdown Extra。[39]
  • Markdig - 遵循CommonMark规范的.NET库,包括一组扩展和用户创建自己扩展的能力。
  • WP Githuber MD - 一个WordPress 插件,实现了所见即所得的 Markdown 编辑器及增强语法。[40]

外部链接[编辑]


参考文献[编辑]

  1. ^ 1.0 1.1 RFC 7763 - The text/markdown Media Type
  2. ^ Swartz, Aaron. Markdown. Aaron Swartz: The Weblog. 2004-03-19. 
  3. ^ Gruber, John. Daring Fireball: Markdown. Daring Fireball. [2014-04-25]. (原始内容存档于2004-04-02). 
  4. ^ 4.0 4.1 4.2 Markdown 1.0.1 readme source code Daring Fireball - Markdown. 17-Dec-2004. 
  5. ^ 5.0 5.1 RFC7764 – Guidance on Markdown: Design Philosophies, Stability Strategies, and Select Registrations
  6. ^ Markdown: License. Daring Fireball. [2014-04-25]. 
  7. ^ MarsEdit 2.3 ties the knot with Tumblr support - Ars Technica. [2009-08-11]. 
  8. ^ Review: Practical Django Projects - Ars Technica. [2009-08-11]. 
  9. ^ https://daringfireball.net/projects/markdown/syntax
  10. ^ GitHub Flavored Markdown Spec. github.github.com. 
  11. ^ Babelmark 2 - Compare markdown implementations. Johnmacfarlane.net. [2014-04-25]. 
  12. ^ Babelmark 3 - Compare Markdown Implementations. github.io. [2017-12-10]. 
  13. ^ Babelmark 2 - FAQ. Johnmacfarlane.net. [2014-04-25]. 
  14. ^ Gruber, John [@gruber]. @tobie @espadrine @comex @wycats Because different sites (and people) have different needs. No one syntax would make all happy. (推文). 4 September 2014 –通过Twitter. 
  15. ^ Markdown Variants. IANA. 2016-03-28 [2016-07-06]. 
  16. ^ UTI of a CommonMark document. 
  17. ^ CommonMark specification. 
  18. ^ Atwood, Jeff. The Future of Markdown. CodingHorror.com. 2012-10-25 [2014-04-25]. 
  19. ^ Markdown Community Page. GitHub. [2014-04-25]. 
  20. ^ Standard Markdown is now Common Markdown. Jeff Atwood. [2014-10-07]. 
  21. ^ Standard Markdown Becomes Common Markdown then CommonMark. InfoQ. [2014-10-07]. 
  22. ^ CommonMark. [20 Jun 2018] (英语). The current version of the CommonMark spec is complete, and quite robust after a year of public feedback … but not quite final. With your help, we plan to announce a finalized 1.0 spec and test suite in 2018. 
  23. ^ GitHub Flavored Markdown Spec. 
  24. ^ A formal spec for GitHub Flavored Markdown. GitHub Engineering. [16 Mar 2017]. 
  25. ^ Fortin, Michel. PHP Markdown Extra. Michel Fortin website. 2018 [2018-12-26]. 
  26. ^ Markdown editor for BUEditor. 4 December 2008. 
  27. ^ Markdown for TYPO3 (markdown_content). extensions.typo3.org. 
  28. ^ Extension:MarkdownExtraParser - MediaWiki. www.mediawiki.org. 
  29. ^ PHP Markdown Extra. Michel Fortin. 
  30. ^ W3C Community Page of Markdown Implementations. W3C Markdown Wiki. [24 March 2016]. 
  31. ^ Markdown THrowdown – What happens when FOSS software gets corporate backing. Ars Technica. 2014-10-05. 
  32. ^ Doxygen Manual: Markdown support. Stack.nl. 2014-04-21 [2014-04-25]. 
  33. ^ jjallaire; e.a. Markdown.cpp. GitHub project RStudio. 2015-06-30 [2016-07-07]. 
  34. ^ Writing on GitHub. help.github.com. GitHub, Inc. [9 July 2014]. 
  35. ^ GitHub Flavored Markdown. github.com. [29 March 2013]. 
  36. ^ Discount - a C implementation of the Markdown markup language. [2014-11-01]. 
  37. ^ David Parsons. DISCOUNT. GitHub. 2016-05-28 [2016-07-07]. 位于Open Hub英语Open Hubdiscount 
  38. ^ Markdown converter written in Dyalog APL.. 
  39. ^ PHP Markdown. [2016-03-01]. 
  40. ^ Markdown Editor. [2018-12-15].