Markdown 是一種輕量級標記語言，創始人為約翰格魯伯。它允許人們使用易讀易寫的純文字格式編寫文件，然後轉換成有效的 XHTML（或者 HTML）文件。Markdown 101 readme source code 這種語言吸收了很多在電子郵件中已有的純文字標記的特性。 由於 Markdown 的輕量化、易讀易寫特性，並且對於圖片，圖表、數學式都有支援，目前許多網站都廣泛使用 Markdown 來撰寫說明檔案或是用於論壇上發表訊息。如 GitHub、Reddit、Discord、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、簡書等，甚至還能被用來撰寫電子書。 歷史 約翰格魯伯在 2004 年創造了 Markdown 語言，在語法上有很大一部分是跟亞倫斯沃茨共同合作的。這個語言的目的是希望大家使用「易於閱讀、易於撰寫的純文字格式，並選擇性地轉換成有效的 XHTML（或是 HTML）」。 其中最重要的設計是可讀性，也就是說這個語言應該要能直接在字面上閱讀，而不用記憶格式化指令標記（像是 RTF 與 HTML）。 因此，它是現行電子郵件標記格式的慣例，雖然它也借鑒了幾個早期的標記語言，如：、、reStructuredText。格魯伯也編寫了的 Perl 指令碼：Markdownpl，用於把 Markdown 語法編寫的內容轉換成有效的、結構良好的 XHTML 或 HTML 內容，並將左尖括號 和 號替換成它們各自的字元實體引用。它可以用作單獨的指令碼，Blosxom 和 Movable Type 的外掛又或者 BBEdit 的文字過濾器。Markdown 也已經被其他人用 Perl 和別的程式語言重新實現，其中一個 Perl 模組放在了 CPAN TextMarkdown 上。它基於一個 BSD 風格的許可證分發並可以作為幾個內容管理系統的外掛。 標準化 Markdown 已經成為典型的轉換為 HTML 的非正式規範和參考實現。隨著時間的推移，出現了許多 Markdown 實現。人們開發這些主要是由於在基本語法之上需要額外的功能 例如表格，腳註，定義列表（技術上的 HTML 描述列表）和 HTML 塊內的 Markdown。其中一些行為偏離了最開始的參考實現。與此同時，非正式規範中的一些含糊不清引起了人們的注意。這些問題促使 Markdown 解析器的一些開發人員努力實現標準化。 Babelmark 是一個可用於比較各種實現的輸出的工具，以促進關於如何以及是否應該闡明 Markdown 規範的某些模糊方面的討論。格魯伯認為不應完全標準化：不同的網站（和人們）有不同的需求。沒有一種語法可以讓所有人滿意。 2016 年 3 月釋出了 RFC 7763 和 RFC 7764。RFC 7763 從原始變體引入了 MIME 型別 。RFC 7764 討論並註冊了 MultiMarkdown、GitHub Flavored Markdown GFM、Pandoc、CommonMark 及 Markdown 等變體。 從 2012 年開始，包括 Jeff Atwood 和 John MacFarlane 在內的一群人啟動了標準化工作。一個社群網站現在旨在記錄可用於文件作者和開發人員的各種工具和資源，以及各種 Markdown 實現的實現者。 2014 年 9 月，格魯伯反對在這一工作中繼續使用 Markdown 這個名字，其被更名為 CommonMark。CommonMarkorg 釋出了規範、參考實現和測試套件的幾個版本，並計劃在 2018 年宣佈最終的 10 規範和測試套件。 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 屬性的元素 圍欄程式碼塊 表格 定義清單 腳註 縮寫 示例 Markdown 語法 由 Markdown 處理器產生的 HTML 瀏覽器顯示效果 一級標題 二級標題 段落以空白行分隔。 行末兩個空格 産生斷行。 文字屬性： 斜體 、 粗體 、等寬字型 Monospace。 水平線： 列表： 張三 李四 王二 編號列表： 1 不論 2 三七 3 二十一 連結httpexamplecom 圖Iconpicturespng icon Markdown 使用電郵用字元「」來引用。 行間 HTML 亦受支援。 一級標題 二級標題 段落以空白行分隔。 行末兩個空格 產生斷行。 文字屬性：斜體、 粗體、等寬字型 Monospace。 水平線： 列表： 張三 李四 王二 編號列表： 不論 三七 二十一 a hrefhttpexamplecom 連結 a。 img alt圖 titleicon srcIconpicturespng Markdown 使用電郵用字元「」來引用。 行間 HTML 亦受支援。 一級標題 二級標題 段落以空白行分隔。 行末兩個空格 產生斷行。 文字屬性：斜體、 粗體、等寬字型 Monospace。 水平線： 列表： 張三 李四 王二 編號列表： 不論 三七 二十一 。 Markdown 使用電郵用字元「」來引用。 行間 HTML 亦受支援。 實現 Markdown 的實現可用於十幾種程式語言；此外，許多平臺和框架都支援 Markdown。 例如，Markdown 外掛適用於每個主要的部落格平臺。 雖然 Markdown 是一種最小標記語言，並且使用普通文字編輯器進行讀取和編輯，但是有專門設計的編輯器可以預覽具有樣式的檔案，這些樣式可用於所有主要平臺。許多通用文字和程式碼編輯器都具有內置於其中的 Markdown 的語法高亮外掛，或者可用作可選下載。編輯器可以具有並排預覽視窗或直接以所見即所得的方式呈現程式碼。 原始碼文件生成器 Doxygen 支援 Markdown 的額外功能。 RStudio 是一個用於 R 的 IDE，為稱為 sundown 的 Markdown 變體提供了 C 包裝函式。 GitHub Flavored Markdown（GFM）忽略單詞中的下劃線，並新增語法高亮顯示、任務列表和表格。 Discount 一個 C 語言實現。 MarkAPL 是一個用 Dyalog APL 編寫的轉換器。它支援隔離塊，智慧排版，連結引用和特殊屬性，並可以生成目錄。 PHP Markdown 一個庫包，包含 PHP Markdown 解析器及其有額外功能的兄弟 PHP Markdown Extra。 Markdig 遵循 CommonMark 規範的NET 庫，包括一組擴充套件和使用者建立自己擴充套件的能力。 WP Githuber MD 一個 WordPress 外掛，實現了所見即所得的 Markdown 編輯器及增強語法。 Visual Studio Code 對 Markdown 的支援度極高。 參考文獻 外部連結 for original John Gruber markup Markdown Guide Tools an independent source review of software that support Markdown Category 標記語言 Category 輕量級標記語言