Markdown

维基百科,自由的百科全书
跳转至: 导航搜索

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

Markdown同时还是一个由Gruber编写的Perl脚本:Markdown.pl。它把用markdown语法编写的内容转换成有效的、结构良好的XHTML或HTML内容,并将左尖括号('<')和&号替换成它们各自的字符实体引用。它可以用作单独的脚本,BlosxomMovable Type的插件又或者BBEdit的文本过滤器.[1]

Markdown也已经被其他人用Perl和别的编程语言重新实现,其中一个Perl模块放在了CPAN(Text::Markdown)上。它基于一个BSD风格的许可证分发并可以作为几个内容管理系统的插件。[2][3]

语法示例[编辑]

这并不是一个详尽的语法介绍, 而且在多数情况下,对于同一个效果,会有不止一种实现的语法。请查看完整的Markdown语法获取更详细的信息。Markdown中一些特定的字符会被解析为格式化命令,但如果添加一个反斜杠('\')在那些有特殊意义的字符前面,那么字符将被理解为字面意义。举个例子,字符组合'\*'会作为一个星号输出,而不是理解为一个强调区段的开始。Markdown也不会转换任何放在区块级XHTML元素中的内容,因此在Markdown文档中可以把一段XHTML代码放置在区块级的XHTML标签中。

图片[编辑]

![Foo](http://www.baidu.com/aaa.png)

换行[编辑]

在文本中输入的换行会从最终生成的结果中删除,浏览器会根据可用空间自动换行。如果想强迫换行,可以在行尾插入至少两个空格。

强调[编辑]

*强调* 或者 _强调_  (示例:斜体)
**加重强调** 或者 __加重强调__ (示例:粗体)
***特别强调*** 或者 ___特别强调___ (示例:粗斜体)

代码[编辑]

要在Markdown中插入代码,你有两种选择。 一种是把代码用反引号(`)(键盘上Esc键下面的键)包起,例如:

夹杂着`一些代码`的文字内容,

又或者以制表符或至少四个空格缩进的行,例如:

        第一行代码
        第二行代码
        第三行代码

后面一种用法会让Markdown保留所有的空白字符——而与之相反,一般情况下,Markdown会删除所有换行和空格,打乱原有的缩进和排版。

列表[编辑]

 * 无序(没有编号的)列表中的一项
    * 一个子项,要以一个制表符或者4个空格缩进
 * 无序列表中的另一个项
 1. 有序(排好序,有编号的)列表中的一项
    - 一个子项,与起始处保持1个空格缩进
 - 有序列表中的另一个项

标题[编辑]

可以在标题内容前输入特定数量的井号('#')来实现对应级别的HTML样式的标题(HTML提供六级标题)。例如:

# 一级标题
#### 四级标题

一级和二级标题还有一种写法:

一级标题
===================

二级标题
--------------------

断行[编辑]

如果你真的想在Markdown中插入换行标签<br/>,你可以在行尾输入两个或以上的空格,然后回车。 这样插入换行十分麻烦,但是“每个换行都转换为<br/>”在 Markdown中并不合适,所以只在你确定你需要时手动添加。

引用[编辑]

引用只需要在被引用的内容段落开头加上右尖括号('>')即可。你可以选择只在开头加一个。也可以在每行前面都加一个,效果是一样的。

> 这一整段的内容都会作为一个HTML的引用元素。
引用元素是会自动优化排版的(reflowable,可回流)。
你可以任意地将引用的内容包含进来,然后所有这些都会
被解析成为单独一个引用元素。

上述内容会转换成以下HTML内容:

<blockquote><p>这一整段的内容都会作为一个HTML的引用元素。引用元素是会自动优化排版的(reflowable,可回流)。
你可以任意地将引用的内容包含进来,然后所有这些都会被解析成为单独一个引用元素。</p></blockquote>

引用可以嵌套。如果要在一个引用里插入一个引用,可以用两个('>')开头。依此类推,根据嵌套层次加相应数量的符号。

> 这是一个引用。这是第一行
这是第二行。
>> 这是一个嵌套的引用。这是第一行。
这是第二行
> 
> 外层引用的第三行。前面需要一个视觉上的空行表示内层嵌套的结束,空行前面的('>')可以有可以没有。

链接[编辑]

链接可以在行内插入:

[链接文字](链接地址)
例子: [Markdown](http://zh.wikipedia.com/wiki/Markdown)

另一种选择是,链接地址可以放在段落后面的脚注,前面放上链接引用标签区分。举例说,先在内容行内插入以下内容:

[链接文字][链接引用标签]

然后在段落的后面(或者文档的结尾)放上以下内容,就可以生成一个链接:

[链接引用标签]: 链接地址 "链接标题"

水平分割线[编辑]

要生成水平分割线,可以在单独一行里输入3个或以上的短横线、星号或者下划线实现。短横线和星号之间可以输入任意空格。以下每一行都产生一条水平分割线。

* * *
***
*****
- - -
---------------------------------------

Markdown的用户[编辑]

  • Apollo 使用Markdown格式化[4]
  • Bitbucket 提供Markdown作为编写项目README文档的其中一种标记语言。[5]
  • DIASPORA* 使用Markdown格式化用户发送的消息、评论和对话。[6]
  • Drupal 有一个Markdown插件[7], initiated in 2008. As of November 2011 it is in use on over 8000 Drupal sites world-wide.
  • GitHub 使用Markdown的一个方言版本来格式化评论、消息以及其它内容。[8][9] John Gruber has described this dialect as a "superior variant" for "situations like user-submitted comments".[10]
  • G+ Tweaks v1.1151, 一个往Google社交网站G+添加功能的 Greasemonkey 用户脚本。[11]
  • Instiki uses a Markdown extension to wiki syntax. The extended syntax is called Maruku.[12]
  • Moodle offers Markdown as a markup option.[13]
  • Posterous offers Markdown as a markup option.[14]
  • Reddit uses Markdown.[15]
  • Showoff uses Markdown to format slides of a presentation.[16]
  • Squarespace offers Markdown as a blog entry option.[17]
  • Stack Overflow and other Stack Exchange Network sites use a modified dialect of Markdown as its default formatting system.[18][19]
  • Tumblr allows Markdown edits to posts.[20]
  • Typecho 原生支持Markdown编辑器,实时预览. [21]
  • The WordPress plugin system utilizes a dialect of Markdown in "readme.txt" files submitted by developers, and has plugins for Markdown.[22]
  • Second Gear's Elements app for iPhone and iPad gained Markdown capability with its v2 around November of 2010.[23]
  • 图灵社区 使用markdown语法供用户写作电子书.
  • 简书 写作网站,支持 Markdown

编辑器[编辑]

作为一种小型标记语言,Markdown很容易阅读,也很容易用普通的文本编辑器编辑。另外也有一些编辑器专为Markdown设计,可以直接预览文档的样式。下面有一些编辑器可供参考:

  • Cmd Markdown Cmd Markdown 编辑阅读器,支持实时同步预览,区分写作和阅读模式,支持在线存储,分享文稿网址。
  • Dillinger.io 一个在线Markdown编辑器,提供实时预览以及到 GitHubDropbox 的拓展连接。
  • notepag 另一个在线Markdown编辑器,支持实时预览,提供临时网址和和密码,可以分享给其他人。
  • 简书 一个在线Markdown编辑器与阅读社区,支持实时预览,提供分享网址。
  • Mou, 一个Mac OS X上的Markdown编辑器。
  • MarkdownPad, a full-featured Markdown editor for Windows.
  • WMD, a Javascript "WYSIWYM" editor for Markdown (from AttackLab)
  • PageDown, 一个Javascript写的 "WYSIWYM"(所见即所得)Markdown编辑器 (来自 StackOverflow)
  • IPython Notebook 以ipython为后台,利用浏览器做IDE,支持MarkDown与LaTex公式。

实现版本[编辑]

由于Markdown的易读易写,很多人用不同的编程语言实现了多个版本的解析器和生成器。下面是一个按编程语言排序的实现列表。

C[编辑]

  • Sundown, 一个用C写的Markdown实现。
  • Discount, 一个Markdown标记语言的C语言实现版本。
  • peg-markdown, 一个用C写的,使用了PEG (parsing expression grammar)的Markdown实现。

Java[编辑]

  • MarkdownJ the pure Java port of Markdown.
  • pegdown, a pure-Java Markdown implementation based on a PEG parser
  • MarkdownPapers, Java implementation based on a JavaCC parser
  • Txtmark, another Markdown implementation written in Java

Lua[编辑]

  • markdown.lua, a Markdown implementation in Lua
  • Lunamark, a markdown to HTML and LaTeX converter written in Lua, using a PEG grammar

PHP[编辑]

其它[编辑]

参见[编辑]

注释[编辑]

外部链接[编辑]