Markdown 最全语法

Markdown 是一种纯文本格式的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。一份 Markdown 文档可以很方便的导出为 HTML 、Word、图像、PDF、Epub 等多种格式的文档,非常便于文章的发布。
Markdown 具有一系列衍生版本,不同版本之间基本兼容,但在一些语法和渲染效果上略有差别,另外不同的编辑器显示效果也会有区别。
本篇文章尽量全的介绍 Markdown 的各个语法,但有些编辑器可能不支持其中某些语法。本文内容是根据 Markdown 的语法文档和一些其它资料整理得到,内容也会不断的更新。

标题

Markdown标题有几种写法 ("atx", "atx_closed", "setext") :
第一种 ("atx") 是在想要设置为标题的文字前面加 #,这种写法支持六级标题,注意要在 # 和文字之间加至少一个空格:

# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

第二种 ("setext") 是在想要设置为标题的文字下面用多个 = 和 - 分隔,这种写法只能写到二级标题,= 和 - 的个数没有限制,只要大于一个就可以:

一级标题
==========
二级标题
----------

第三种 ("atx_closed") 是在想要设置为标题的文字前后都加 #,这种写法也支持六级标题,注意要在文字和前后的 # 之间加至少一个空格:

# 一级标题 #
## 二级标题 ##
### 三级标题 ###
#### 四级标题 ####
##### 五级标题 #####
###### 六级标题 #######

标题的三种写法可以混用,但为了保持统一性,不建议混用,但用第二种写法写到二级标题后,还可以使用第一种或第三种写法继续写后面的标题。

段落和换行

Markdown 中用一个或多个空行划分不同的段落(空行的含义就只要是看起来是空行就行了,即使包含了空格或者水平制表符等空白符也是空行),普通段落不应该使用缩进。
关于换行,Markdown 并不会将段落的每个换行都转换为 <br /> 标签,如果确实需要在行尾输入 <br /> 标签,只需要在行尾加两个及以上的空格,然后换行。

强调

倾斜

倾斜是在文字左右用一个 *(星号)或 _(下划线)包起来,文字与星号或下划线之间没有空格:

*倾斜*  _倾斜_

会得到:

倾斜 倾斜

加粗

加粗是在文字左右用两个 *(星号)或 _(下划线)包起来,文字与星号或下划线之间没有空格:

**加粗**  __加粗__

会得到:

加粗 加粗

加粗倾斜

加粗倾斜是在文字左右用三个 *(星号)或 _(下划线)包起来,文字与星号或下划线之间没有空格:

***加粗倾斜***   ___加粗倾斜___

会得到:

加粗倾斜 加粗倾斜

删除线

删除线是在文字左右用两个 ~~ 包起来,文字与 ~~ 之间没有空格:

~~删除线~~

会得到:

删除线

脚注

脚注是对文本的补充说明,格式如下:

面朝大海,春暖花开[^脚注]

[^脚注]: 海子

会得到:

面朝大海,春暖花开[1]

注意:

  1. 这里有些编辑器会自动给脚注进行编号,整篇文档从 1 开始编号,但有的编辑器会直接显示脚注的名字;
  2. 脚注的定义与脚注的内容至少隔一行,也可以将整篇文档的脚注统一写在文档结尾处,编辑器会自动把脚注的内容放到文档的最后。

引用

用法是在文字前面加一个 >,注意 > 是英文格式下的右尖括号,括号和文字之间至少有一个空格:

> 面朝大海,春暖花开。

会得到:

面朝大海,春暖花开。

引用是一个区块,可以放很多东西,如标题、列表、代码块等等:

> ## 二级标题
> * 无序列表

会得到:

二级标题

  • 无序列表

引用可以多层嵌套,多层嵌套时,多个 > 是不需要连在一起的,只需要在同一行就可以:

> 引用一
>> 引用二
>>> 引用三

会得到:

引用一

引用二

引用三

列表

列表分为 有序列表 和 无序列表。

无序列表

无序列表可以用 *、+、- 创建,三个符号可以混用,但建议上下文统一,符号和文字之间加至少一个空格或水平制表符:

* 无
- 序
+ 列
* 表

会得到:

有序列表

有序列表用数字和点来创建,需要注意的是数字后面只能是英文的点,且点和文字之间至少加一个空格,另外有序列表的序号是根据第一行的数字确定的,后面的数字序号对于最终生成 HTML 是没有影响的. 比如下面的列表创建时序号是乱的,但创建后序号会显示为 2. 3. 4. 5. (这一点很多编辑器会自动更正或填充),点和文字之间加至少一个空格或水平制表符:

2. 有
2. 序
3. 列
3. 表

会得到:

列表嵌套

列表可以嵌套使用,只需要在上一级和下一级之间打两个空格即可(或者一个水平制表符)(有的语法需要三个空格或四个空格),有序列表和无序列表可以互相嵌套:

* 1
  * a
  * b
* 2
  1. a
  2. B

会得到:

  • 1
    • a
    • b
  • 2
    1. a
    2. B

如果列表项中包含引用,引用标记 > 需要缩进,如果列表项中有代码块,代码块需要双倍缩进,例如:

* 孔子说过:  
  > 毋意,毋必,毋固,毋我。

会得到:

  • 孔子说过:

    毋意,毋必,毋固,毋我。

另外,如果一个列表项里包含多个段落,那么每个段落都需要缩进,缩进量与第一段一致(用空格或制表符):

* 段落一

  段落二

会得到:

  • 段落一

    段落二

任务列表

任务列表通过无序列表和中括号 [] 来定义,中括号中间加 x 表示完成:

* [ ] 任务1
* [ ] 任务2
* [x] 任务3已完成

会得到:

  • 任务1
  • 任务2
  • 任务3已完成

代码块

单行代码用一个 `(反引号)包起来,或者行前加四个空格或一个水平制表符:

`a=1`

用反引号可以在行内显示代码,如:

如果`a=1`,`b=2`,那么`a+b=3`

会得到:

如果a=1b=2,那么a+b=3

多行代码用三个 `(反引号)包起来,反引号单独一行,或者在每行代码前加四个空格或一个水平制表符:

```
a=1
b=2
```

会得到:

a=1
b=2

反引号后面可以写注释,这样可以给代码块添加相应语言的代码高亮,例如:

```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```

会得到:

require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html

水平线

水平线可以由 *、 - 、_(星号,减号,下划线)这三个符号的至少三个表示,注意至少要三个,且不需要连续,中间有空格也可以,但生成水平线的符号必须独占一行:

***
-    -   -
_ _ _

会得到:




链接

Markdown 支持两种链接形式: 内联 和 引用 。
内联:

[链接名](链接地址 “链接title” )

链接title 是可选的内容,是当指针停留在链接处时显示的内容;
引用:

[链接名][链接id]
[链接id]: 链接地址 “链接title”
[链接id]: 链接地址 '链接title'
[链接id]: 链接地址 (链接title)

链接id 有三种定义方式(如上),定义时冒号后面加一个以上的空格或水平制表符;
链接id 可以包含字母, 数字, 空格, 和标点符号,字母不是大小写敏感的,链接id 的定义可以在文章的任意位置,一般直接放在引用位置的下面;
链接名也可以包含字母, 数字, 空格, 和标点符号,链接名 和 链接id 的中括号间可以有空格;

引用的链接形式中可以隐含链接名称,可以忽略 链接id,这时 链接名 本身被用于 链接id。引用 链接id 时只用一对空的中括号就可以了,
例如, 要链接 "Google" 这个词到 google.com 网站, 只用这样写:

[Google][]

同时这样定义 链接id:

[Google]: http://google.com/

另外,也可以将网址直接用 <>(尖括号)包起来,也可以显示为链接,甚至直接写出网址也显示为链接:

<http://www.baidu.com>

图片

图片跟链接格式类似,也有 内联 和 引用 两种形式,只不过在图片名前要加 !(英文叹号)。
内联:

![图片名](图片地址 "图片title")

引用:

![图片名][图片id]

[图片id]:图片地址 “图片title”

图片名 是指显示在图片下方的描述文字,可选;图片title 是当指针停留在图片上时显示的内容,可选。
Markdown 没有语法指定图片尺寸,如果需要指定图片尺寸, 可以使用 HTML <img> 标签。

反斜杠转义

Markdown 中可以使用反斜杠转义 Markdown 语法符号为字面量。Markdown 为以下字符提供反斜杠转义:

\\   backslash(反斜杠)
\`   backtick(反引号)
\*   asterisk(星号)
\_   underscore(下划线)
\{\}  curly braces(花括号)
\[\]  square brackets(方括号)
\(\)  parentheses(圆括号)
\#   hash mark(井号)
\+   plus sign(加号)
\-   minus sign (hyphen)(减号)
\.   dot(点)
\!   exclamation mark(惊叹号)

以上这些符号在前面加反斜杠后就会显示本身的字面形式,而不会作为 Markdown 的语法符号。

表格

| 表头 | 表头  | 表头 |
| :---- | :---: | ---: |
| 靠左 | 居中 | 靠右 |
| 内容 | 内容  | 内容 |

会得到:

表头 表头 表头
靠左 居中 靠右
内容 内容 内容

第二行分割表头和内容,-(减号) 有一个就行,也可以多加几个使其对齐,文字默认居左,- 两边加 :(冒号)表示文字居中,- 右边加 : 表示文字居右,原生语法两边的 | 必须加,但目前大多数语法两边的 | 不加也可以,不同的解释器显示的表格会有所区别。

应用 HTML 标签

可以直接在 Markdown 文档里应用 HTML 标签,以达到更好的表现效果,但不同的编辑器可能支持的标签会有区别。

上、下标

上、下标可以通过 HTML 的 <sup><sub> 标签实现:

这是<sup>上标</sup>文本
这是<sub>下标</sub>文本

会得到:

这是上标文本
这是下标文本

倾斜、加粗、下划线

倾斜、加粗、下划线可以通过 HTML 的 <i><b><u> 标签实现:

<i>倾斜</i>
<b>加粗</b>
<i><b>倾斜加粗</b></i>
<u>下划线</u>

高亮标记

高亮标记可以通过 HTML 的 <mark> 标签实现:

<mark>高亮标记</mark>

键盘文本

键盘文本可以通过 HTML 的 <kbd> 标签实现:

<kbd>键盘文本</kbd>

按钮

按钮可以通过 HTML 的 <button> 标签实现:

<button type="button">按钮</button>

注意需要指明 type 属性。

一些规范

  • MarkDown 文件均使用 .md 作为后缀
  • 标题与紧贴的上下正文使用空行隔开,# 号和文字之间一个空格连接
  • 整篇文章标题格式要统一
  • 普通文本换行,使用行末尾两个空格触发
  • 定义列表时上下文使用一致的符号,缩进也要统一
  • 列表块前后整行隔开
  • 代码块前后整行隔开

本文介绍的 Markdown 语法不同的衍生版本或不同的解释器会有所区别,有些会不支持,有些可能需要一些扩展工具才能实现。

参考

参考1


  1. 海子

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容