Markdown

Markdown是一种轻量级标记语言，创始人为約翰·格魯伯。它允许人们使用易读易写的纯文本格式编写文档，然后转换成有效的XHTML（或者HTML）文档。Markdown 1.0.1 readme source code 这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。

由於Markdown的輕量化、易讀易寫特性，並且對於圖片、圖表都有支援，目前許多網站都廣泛使用Markdown來撰寫說明文件或是用於論壇上發表訊息。如GitHub、Reddit、Discord、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书等，甚至还能被用來撰寫電子書。許多大語言模型的輸出也採用了Markdown的格式以支援簡單的排版需求（如小節、粗體、數學公式等）。

 历史 
約翰·格魯伯在2004年創造了Markdown語言，在語法上有很大一部分是跟亚伦·斯沃茨共同合作的。這個語言的目的是希望大家使用「易於閱讀、易於撰寫的純文字格式，並選擇性地轉換成有效的XHTML（或是HTML）」。

其中最重要的設計是可讀性，也就是說這個語言應該要能直接在字面上閱讀，而不用记忆格式化指令標記（像是RTF與HTML）。

因此，它是現行電子郵件標記格式的慣例，雖然它也借鑒了幾個早期的標記語言，如：、、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类型 。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。

它为Markdown添加了以下功能：

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

 示例 

 Markdown語法 由Markdown處理器產生的HTML  瀏覽器顯示效果-{zh-hant:# 一級標題

## 二級標題

段落以空白行分隔。

行末兩個空格  產生斷行。

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

水平線：

---

列表：

  * 張三
  * 李四
  * 王二

編號列表：

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

[連結](http://example.com)。

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

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

行間<abbr title="Hypertext Markup Language">HTML</abbr>亦受支援。;
zh-hans:# 一级标题

## 二级标题

段落以空白行分隔。

行末两个空格  产生断行。

文本属性：*斜体*、
**粗体**、`等宽字体Monospace`。

水平线：

---

列表：

  * 张三
  * 李四
  * 王二

编号列表：

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

[链接](http://example.com)。

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

> Markdown使用“>”字符来引用。

行间<abbr title="Hypertext Markup Language">HTML</abbr>亦受支持。;}--{zh-hant:<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使用「>」字元來引用。</p>
</blockquote>

<p>行間<abbr title="Hypertext Markup Language">HTML</abbr>亦受支援。</p>;
zh-hans:<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使用“>”字符来引用。</p>
</blockquote>

<p>行间<abbr title="Hypertext Markup Language">HTML</abbr>亦受支持。</p>;}-一级標題

二级標題

段落以空白行分隔。

行末兩個空格
產生斷行。

文本屬性：斜體、
粗體、-{}-等寬字型Monospace。

水平線：

列表：

 張三
 李四
 王二

編號列表：

 不論
 三七
 二十一

。

圖|link=|alt=icon

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 的支援度極高。
 MarkItDown - 一个Python库，用于将各种文件转换为Markdown，如PDF、PPT、Word等

 注释 

 参考文献 

 外部链接 
  for original John Gruber markup
Markdown Guide: Tools  – an independent source review of software that support Markdown

Category:标记语言
Category:轻量级标记语言