本頁使用了標題或全文手工轉換

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])
格式類型 標記式語言
延伸成 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日​(5年前)​(2014-10-25
最新版本
0.28
(2017年8月1日​(2年前)​(2017-08-01[17])
格式類型 Markup language
延伸自 Markdown
延伸成 GitHub Flavored Markdown
自由格式
網站 spec.commonmark.org

從2012年開始,包括Jeff Atwood和John MacFarlane在內的一群人啟動了標準化工作。[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 瀏覽器顯示效果
一级標題
=======

## 二级標題

段落以空白行分隔。

行末兩個空格  産生斷行。

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

水平線:

---

列表:

  * 張三
  * 李四
  * 王二

編號列表:

  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>等寬字型Monospace</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>
一級標題
二級標題

段落以空白行分隔。

行末兩個空格
產生斷行。

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

水平線:


列表:

  • 張三
  • 李四
  • 王二

編號列表

  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]
  • Visual Studio Code 對 Markdown 的支援度極高[41]

參考文獻[編輯]

  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]. 
  41. ^ Markdown and Visual Studio Code. 

外部連結[編輯]