Markdown语法小记
2016-08-23 / 聂明照   

Markdown(百度百科:Markdown)是一种轻量级的标记语言,语法简洁明了,易学易写,非常适合于编写结构化文档。Markdown的语法和HTML很类似,都是“文本+标记”的形式,文本表示内容,标记表示结构和排版。和HTML不同的是,Markdown的语法要简单的多,只涵盖纯文本可以涵盖的范围,所用的标记也只对应HTML标记中有关文本内容的部分。但Markdown的语法是兼容HTML的,也就是说,可以直接在Markdown文档中插入任何HTML内容,插入的HTML内容将得到与在HTML文档中相同的呈现效果。Markdown文档的扩展名为.md,可以使用任意文本编辑器(如记事本)打开和编辑。但要看到Markdown文档的呈现效果,则需要使用MarkdownPad等Markdown解析器。当然,也有许多在线Markdown解析器可供使用。

基本语法

区块元素

段落

  • 两个空行之间的连续文本行构成一个段落。空行指行内没有文本,但可以包含空格和制表符。连续文本行指行间没有空行。
  • 段落内的文本不会产生换行,换行符将被转换为空格。如果要使段落内产生换行,需要在换行符前加至少两个空格。
1
2
Markdown是一种轻量级的  
标记语言。

标题

  • 类SETEXT形式使用=(一级标题)和- (二级标题)标记,底线形式,至少一个。
1
2
3
4
一级标题
===
二级标题
---
  • 类ATX形式使用#标记,行首形式,可以有一到六个,几个就是几级标题,和文本间要有空格。
1
2
3
4
5
6
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

引用

  • 使用>标记,行首形式,只需一个,可以每行都加,也可以只在每个段落第一行加,和文本间要有空格。
  • 可以嵌套其它Markdown标记,包括另一层引用。
1
2
3
4
5
6
7
8
> 这是第一层引用
> > 这是第二层引用
> # 这是引用中的标题
> * 这是引用中的列表
> 下面是引用中的代码块
>
> code is here!
>

列表

  • 无序列表使用*+-标记,行首形式,只需一个,和文本间要有空格。
1
2
* 第一条
* 第二条
  • 有序列表使用数字加.来标记,行首形式,只需一个,和文本间要有空格,数字的序列并不会影响生成的列表序列。
1
2
1. 第一条
2. 第二条
  • 可以嵌套其它Markdown标记,包括另一层列表。
  • 要取消显示为有序列表,可以将.改为\.
1
2
3
4
5
1. 第一条
* 第一条
* 第二条
2. 第二条
3\. 第三条

代码块

  • 使用缩进四个空格或一个制表符来标记,行首形式,每一行都要缩进,区块前后都要有至少一个空行。
1
2
code is here!
code is here!

分隔线

  • 使用*-_标记,底线形式,至少三个。
1
2
3
*****
-----
_____

区段元素

超链接

  • 行内式使用[Text](URL "Title")的形式来标记,其中,Text为链接文本,URL为链接网址,Title为链接标题,Title不是必须的。
1
这是一个[超链接](https://www.baidu.com/ "示例链接")。
  • 参考式使用[Text][ID]的形式来标记,其中,Text为链接文本,ID为识别符,识别符不区分大小写。然后需要在文档另外任意位置定义链接内容,使用[ID]: URL "Title"的形式来标记,其中,ID为识别符,URL为链接网址,Title为链接标题,Title不是必须的。也可以省略识别符,直接使用链接文本当作识别符。
1
2
这是一个[超链接][A]。
[A]: https://www.baidu.com/ "示例链接"
  • 自动链接使用<>标记,中间直接包含链接网址即可。
1
这是一个<https://www.baidu.com/>。

强调

  • 使用* *_ _标记,中间包含的文本会显示为斜体,和文本间不能有空格。
1
这里需要*强调*。
  • 使用** **__ __标记,中间包含的文本会显示为加粗,和文本间不能有空格。
1
这里需要**强调**。

代码

  • 使用` `标记,中间可以包含行内代码,和文本间不能有空格。
1
这里是代码`code`。

图片

  • 语法和超链接的相同,也分为行内式和参考式两种,唯一不同为需要在[Text]前加一个!
  • 不支持指定图片的大小,如有需求要使用HTML中的<img>标记。
1
这里是一幅![图片](https://www.baidu.com/img/bd_logo1.png "示例图片")

字符转义

  • 使用\来插入在Markdown语法中有特殊作用的字符。这些字符有\`*_{}[]()#+-.!
1
转义一些字符:\\、\`、\*等。

扩展语法

删除线

  • 使用~~ ~~标记,为区段元素,中间包含的文本会显示有删除线,和文本间不能有空格。
1
这是一些~~删除文本~~。

高亮代码块

  • 使用三个`加代码名称标记,为区块元素,底线形式。与基本语法的代码块颇不同,无需缩进,代码块文本前后各以三个`为一行,代码名称可以省略。
1

表格

  • 使用|标记分割不同的单元格,使用-标记分割表头和其它行,标记数量不限,为区块元素,底线形式。为了美观,可以添加多个空格进行对齐。
  • 使用:标记配合-标记来设置单元格内容对齐方式。:----为左对齐,:---:为居中对齐,----:为右对齐,默认为左对齐。
  • 可以嵌套其它Markdown区段元素标记。
1
2
3
4
| left | center | right |
| :--- | :----: | ----: |
| aaaa | bbbbbb | ccccc |
| *a* | *b* | *c* |

任务列表

  • 大多数Markdown解析器都未实现此元素。
  • 主要用来显示总体中的选择情况。
1
2
3
4
5
6
- [ ] A
- [x] B
- [x] B1
- [x] B2
- [x] B3
- [ ] C

后记

Markdown发展到现在,在不同的解析器中产生了一些不同的标准,显示的效果也会有差异,但大都涵盖了上述语法。在使用不同的Markdown解析器前,最好先看一下该解析器的说明文档,了解它使用哪些标准,会支持哪些Markdown语法。

本文遵循 CC BY-NC-SA 4.0 许可协议
本文链接:http://www.niemingzhao.top/2016/08/23/Markdown语法小记/