[TOC]
## 简介
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。
Markdown具有一系列衍生版本,用于扩展Markdown的功能(如表格、脚注、内嵌HTML等等),这些功能原初的Markdown尚不具备,它们能让Markdown转换成更多的格式
## 为什么我选择它(Markdown的优点)
* 专注你的文字内容而不是排版样式,安心写作。
* 轻松的导出 HTML、PDF 和本身的 .md 文件。
* 纯文本内容,兼容所有的文本编辑器与字处理软件。
* 随时修改你的文章版本,不必像字处理软件生成若干文件版本导致混乱。
* 可读、直观、学习成本低。
## 使用上的小问题
Markdown具有一系列的衍生版本,拥有多个版本的解析器和生成器,导致目前不同的Markdown工具集成了不同的功能(基础功能大致相同)。使用这些工具的时候要注意你要用的功能当前工具是否支持。
## 工具
* window: MarkdownPad、MarkPad
* IOS : Mou、Byword
* Web端:简书、看云、有道云笔记等
## 参考文档
* [Markdown官方语法文档(英文)] [note_url_1]
* [中文的语法文档] [note_url_cn]
[note_url_1]: http://daringfireball.net/projects/markdown/syntax
[note_url_cn]: http://www.appinn.com/markdown/
## 常用语法
### 段落与换行
段落与段落之间用一个以上的空行表示。
例如:
```
这是一个段落
这是一个段落
```
会被解释为:
```
<p>这是一个段落</p>
<p>这是一个段落</p>
```
不隔一个空行的换行,在一些编辑器中会被解释为换行,即插入一个`<br/>`标签;而在另外一些编辑器中则会被解释为插入一个空格,对于这种编辑器如果只是要换行,可在行尾加两个空格,即可段内换行。
---
### 粗体和斜体
可以使用星号`*`或下划线`_`指定粗体或者斜体。被`*`或`_`包住的字词会转成斜体。用`**`或`__`包住的则为粗体。你可以随便用你喜欢的样式,唯一的限制是,你用什么符号开启标签,就要用什么符号结束。
例如:
*这个是一个斜体的文字*
**这是一个粗体的文字**
_这是一个斜体的文字_
__这是一个粗体的文字__
*什么符号开启标签,什么符号结束_
强调也可以插在**文字**中间
_**粗体并斜体**_
如果有 * 空格 * 的话会被当成普通的符号
使用反斜杠\*直接插入\*星号
结果:
*这个是一个斜体的文字*
**这是一个粗体的文字**
_这是一个斜体的文字_
__这是一个粗体的文字__
*什么符号开启标签,什么符号结束_
强调也可以插在**文字**中间
_**粗体并斜体**_
如果有 * 空格 * 的话会被当成普通的符号
使用反斜杠\*直接插入\*星号
---
### 标题
Mark支持1~6级标题。通过在行首添加不同的`#`表示。你也可以选择类似闭合样式的标题方式,在行尾加入`#`,这只是为了美观。行尾的`#`不需要和行首的一样。标题级别由行首的`#`个数决定。
此外,1级标题和2级标题可以在标题下一行用底线的形式插入`=`(一级标题)或者`-`(二级标题)。任何数量的`=`和`-`都可以实现效果。
例如:
```
# 一级标题
一级标题2
=
## 二级标题
### 三级标题
###### 六级标题
```
结果:
# 一级标题
一级标题2
=
## 二级标题
### 三级标题
###### 六级标题
---
### 引用
在行首插入`> `表示引用
例如:
> 这是一个引用示例
结果:
```xml
<root>
<card type=""/>
</root>
```
> 这是一个引用示例
引用可以使用嵌套,只要根据层次加上不同数量的`>`
例如:
>> > 引用嵌套
结果:
>>> 引用嵌套
---
在引用中也可以使用其他的Markdown语法,包括标题、列表、代码段等。
例如:
> ## 这是一个标题。
>
> 1. 这是第一行列表项。
> 2. 这是第二行列表项。
>
> 以下是一个代码段:
>
> public function example():void
> {
> trace("this is a example");
> }
结果:
> ## 这是一个标题。
>
> 1. 这是第一行列表项。
> 2. 这是第二行列表项。
>
> 以下是一个代码段:
>
> public function example():void
> {
> trace("this is a example");
> }
---
### 有序列表和无序列表
#### 无序列表
无序列表使用`*`、`+`或`-`作为列表标记。
例如:
* 无序列表1
* 无需列表2
等同于
+ 无序列表1
+ 无序列表2
等同于
- 无序列表1
- 无序列表2
结果:
* 无序列表1
* 无序列表2
#### 有序列表
有序列表使用数字接一个英文的句号
例如:
1. 猫
2. 狗
3. 鸡
结果:
1. 猫
2. 狗
3. 鸡
注:在有序列表上使用的数字并不会影响输出的结果。
如果你写成:
3. 猫
1. 狗
9. 鸡
或者是:
1. 猫
1. 狗
1. 鸡
你都会得到完全相同的输出结果(建议有序列表第一个项目还是从1开始写起,因为有的平台的Markdown可能会支持有序列表的start属性)。
比如在有道云协作中的输出结果为:

而在看云中的输出结果为:

有的时候会可能不小心产生列表
例如:
110. 这是一个报警电话号码
120. 这是一个急救电话号码
结果:
110. 这是一个报警电话号码
120. 这是一个急救电话号码
要避免这种状况可以在句号前面加上一个反斜杠:
110\. 这是一个报警电话号码
120\. 这是一个急救电话号码
结果:
110\. 这是一个报警电话号码
120\. 这是一个急救电话号码
---
### 表格
注意:原生的Markdown并没有制作表格的功能。不过现在大部分衍生出来的编辑器基本都具备这功能。
使用Markdown制作表格的示例如下:
```
|名字|性别|年龄|身高|
|---|:---:|---:|:---|
|小明|男|18|160|
|小王|男|21|161|
```
生成的表格如下:
|名字|性别|年龄|身高|
|---|:---:|---:|:---|
|小明|男|18|160|
|小王|男|21|161|
表格代码中`|---|` 决定了此列表格的对齐方式。
* `|---|` 默认方式对齐
* `|:---|` 左对齐
* `|:---:|` 居中对齐
* `|---:|` 右对齐
---
### 行内代码段和代码区域
#### 行内代码
单行的代码在代码的头部和尾部添加一个 `
例如:
```
这是一个单行代码块的示例:`trace("Hello World");`
```
这是一个单行代码块的示例:`trace("Hello World");`
#### 代码区域
有两种方式标记代码区域。一种是行首缩进四个空格或一个制表符就可以了,代码区域会一直持续到没有缩进的那一行或文件结尾。
除了缩进4个空格或者一个制表符外,还有一种为在代码开头上一行输入` ``` `或者` ~~~ ` ,在代码结尾下一行输入` ``` `或` ~~~ ` ,将代码包裹起来。
> 多行代码标签后面必须换行
例如:
```
···
public function example():void
{
trace("这是一个多行代码块的示例");
}
···
```
结果:
```
public function example():void
{
trace("这是一个多行代码块的示例");
}
```
---
### 分割线
你可以在一行中用三个以上的星号、减号、下划线来建立一个分割线。行内不能用其他东西。你也可以在星号或者减号中间插入空格。
以下每种写法都可以建立分割线:
***
* * *
---
-------------------
___
---
### 链接
Markdown支持两种形式的链接语法:行内式和参考式。
不管使用哪一种,链接文字都是用`[]`方括号来标记
#### 行内式
要建立一个行内式的链接,只要在方括号后面紧接圆括号并插入网址链接即可,如果还要加上链接的title文字,只要在网址后面,用双引号把title文字包起来。
例如:
链接到[百度](https://www.baidu.com"这是title文字")示例
结果:
链接到[百度](https://www.baidu.com"这是title文字")示例
#### 参考式
参考式的链接是在链接文字的方括号后面再接上一个方括号,而在第二个方括号里面填入用以辨识链接的标记。接着,你可以在文件的任意位置,把这个标记的链接内容定义出来。因为链接的定义可以放在文件中的任何地方,所以你可以把它放在文件的最后面,就像注解一样。
> 参考式链接在有的平台的编辑器上无法正常使用,如有道云协作
例如:
这是一个参考式[链接][link_1] 的示例
你可以在任意位置将这个标记的链接内容定义出来
你可以在任意位置将这个标记的链接内容定义出来
你可以在任意位置将这个标记的链接内容定义出来
你可以在任意位置将这个标记的链接内容定义出来
[link_1]: https://www.baidu.com/ "这是title文字"
结果:
这是一个参考式[链接][link_1]的示例
你可以在任意位置将这个标记的链接内容定义出来
你可以在任意位置将这个标记的链接内容定义出来
你可以在任意位置将这个标记的链接内容定义出来
你可以在任意位置将这个标记的链接内容定义出来
[link_1]: https://www.baidu.com/
#### 隐式链接标记功能
隐式链接标记功能可以让你省略指定链接标记,这种情况下,链接标记会等同于链接文字,要用隐式链接标记只需要在链接文字后面加上一个空的方括号即可。
例如:
这是一个链接到[百度][] 的例子。
[百度]: https://www.baidu.com/ "title"
---
### 插入图片
插入图片和链接很相似。也允许使用两种样式:行内式和参考式。
#### 行内式
``
例如:

结果:

#### 参考式
```
![代替文字][id]
[id]: 链接地址 "title"
```
例如:
![这是一张图片][img]
[img]: http://i1.piimg.com/567571/7d83a354ce3ed2a6.png
结果:
![这是一张图片][img]
[img]: http://i1.piimg.com/567571/7d83a354ce3ed2a6.png "title"
---
### 脚注
当我们在编写文档时,需要针对某些名词或者例子做出注释,比如说选自某本书或者文章等等,此时可以用到脚注功能。添加脚注只需要在想要加脚注的文字后面插上`[^脚注标记]`。然后你可以在文件任意位置将脚注内容写出来,脚注内容会显示在文件的最后。
> 注意:标注的Markdown中没有脚注,各个平台扩展的定义可能有所不同。
例如:
需要添加脚注的文字[^脚注01]
[^脚注01]: 这是一个脚注的注释
结果:
需要添加脚注的文字[^03]
[^03]: 这是一个脚注的注释
> ps:看云没有脚注所以看不到结果,附上别的平台工具的脚注效果图一张:

---
### 转义
markdown支持在以下字符前面插入反斜杠
```
\ 反斜线
` 反引号
* 星号
_ 底线
{} 花括号
[] 方括号
() 括弧
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号
```
插入之后,将不再解析这些字符,而是原样输出。
---
### 内联HTML
markdown 的语法简洁,但有其局限性,所以特意保留了内联html这种方式。任何html标签及其内容,都会原样输出到结果中。也就是说,标签中的星号等作为markdown结构的符号,以及构成html标签和实体的符号,都不会做任何转义。
例子:
```
<font color="red">颜色</font>文字示例
```
效果:
<font color="red">颜色</font>文字示例
