一、简介

Markdown是一种轻量级标记语言,它用简洁的语法代替排版,使我们专心于码字。它的目标是实现易读易写,成为一种适用于网络的书写语言。同时,Markdown支持嵌入html标签。

1. Markdown历史:

MarkdownJohn Gruber2004年创建。其中在语法上有很大一部分是跟Aaron Swartz共同合作的。

Aaron Swartz就是那位于2013年自杀,有着开挂一般人生经历的程序员。维基百科对他的介绍是:软件工程师、作家、政治组织者、互联网活动家、维基百科人

他有着足以让你跪拜的人生经历:

14岁参与RSS 1.0规格标准的制订。
2004年入读斯坦福,之后退学。
2005年创建Infogami,之后与Reddit合并成为其合伙人。
2010年创立求进会(Demand Progress),积极参与禁止网络盗版法案(SOPA)活动,最终该提案居然被撤回。
2011年7月19日,因被控从MITJSTOR下载480万篇学术论文并以免费形式上传于网络被捕。
2013年1月自杀身亡。

2. Markdown优势:

  1. 方便编辑。任何一个文本编辑器就可以编辑,连大家熟悉的Windows记事本也可以。让编写者专注于内容,而不是格式。是否有为了调整不听话的编辑器(好吧,我说的就是word)的格式而浪费大量时间的经历?
  2. 可以放到版本管理系统中,追踪历史变更。这对码农们来说太重要了,这样文档可以和程序代码一起放版本管理系统中了。如果你不清楚版本管理系统,只需要把它理解成可以永久追踪的修改历史记录即可(版本管理系统可以另开一篇文章了)。这样,多人协作编辑的时候,也不用担心文档被改坏了。

3. Markdown使用注意:

Markdown使用#+*等符号来标记, 符号后面必须跟上至少1个空格才有效!


二、标题

1. 用#标记

说明:
标题开头加上1~6个#,依次代表一级标题、二级标题…六级标题

1
2
3
4
5
6
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

效果:

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

2. 用=-标记

说明:
标题底下加上任意个=代表一级标题,-代表二级标题

1
2
3
4
5
一级标题
======

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

效果:

一级标题

二级标题


三、列表

1. 无序列表

说明:
使用-+*作为列表标记

1
2
3
4
5
6
7
8
9
10
11
- Red
- Green
- Blue

* Red
* Green
* Blue

+ Red
+ Green
+ Blue

效果:

  • Red
  • Green
  • Blue

2. 有序列表

说明:
使用数字加英文句点.来表示

1
2
3
1. Red
2. Green
3. Blue

效果:

  1. Red
  2. Green
  3. Blue

3. 列表嵌套

说明:
列表嵌套只需要在子列表选项的前面添加4个空格即可。

1
2
3
4
5
6
* 无序列表1
1. 有序列表1.1
2. 有序列表1.2
* 无序列表2
- 无序列表2.1
- 无序列表2.2

效果:

  • 无序列表1
    1. 有序列表1.1
    2. 有序列表1.2
  • 无序列表2
    • 无序列表2.1
    • 无序列表2.2

四、引用

说明:
引用以>来表示,引用中支持多级引用、标题、列表、代码块、分割线等常规语法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
> 这是一段引用    //在`>`后面有 1 个空格
>
> 这是引用的代码块形式 //在`>`后面有 5 个空格
>
> 代码例子(代码未放引用):
>
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

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

> #### 这是一个四级标题
>
> 1. 这是第一行列表项
> 2. 这是第二行列表项

效果:

这是一段引用 //在>后面有 1 个空格

这是引用的代码块形式    //在`>`后面有 5 个空格

代码例子(代码未放引用):

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

一级引用

二级引用

三级引用

这是一个四级标题

  1. 这是第一行列表项
  2. 这是第二行列表项

五、强调

说明:
两个*-代表加粗,一个*-代表斜体,~~代表删除。

1
2
3
4
5
6
7
*斜体文本* 或者 _斜体文本_

**加粗文本** 或者 __加粗文本__

***粗斜体文本*** 或者 ___粗斜体文本___

~~删除文本~~

效果:

斜体文本 或者_斜体文本_
加粗文本 或者 加粗文本
粗斜体文本 或者 粗斜体文本
删除文本


六、图片与链接

说明:
图片与链接的语法很像,区别在一个!

1
2
3
图片:![]()    ![图片文本(可忽略)](图片地址)

链接:[]() [链接文本](链接地址)

链接又分为行内式参考式自动链接

1
2
3
4
5
6
7
8
9
10
这是行内式链接:[ConnorLin's Blog](http://connorlin.github.io)。

这是参考式链接:[ConnorLin's Blog][url],其中url为链接标记,可置于文中任意位置。
[url]: http://connorlin.github.io/ "ConnorLin's Blog"
链接标记格式为:[链接标记文本]: 链接地址 链接title(可忽略)

这是自动链接:直接使用'<>'括起来<http://connorlin.github.io>

这是图片:![][avatar]
[avatar]: https://connorlin.github.io/images/avatar.jpg

效果:

这是行内式链接:ConnorLin’s Blog

这是参考式链接:[ConnorLin’s Blog][url],其中url为链接标记,可置于文中任意位置。
[url]: http://connorlin.github.io/ “ConnorLin’s Blog”
链接标记格式为:[链接标记文本]: 链接地址 链接title(可忽略)

这是自动链接:直接使用<>括起来http://connorlin.github.io

这是图片:![][avatar]
[avatar]: https://connorlin.github.io/images/avatar.jpg


七、代码

说明:
代码分为行内代码和代码块。

1
2
3
4
5
行内代码使用 `代码` 标识,可嵌入文字中

代码块使用4个空格或```标识

代码语法高亮在```后面加上空格和语言名称即可

八、表格

表格对齐格式

  • 居左::----
  • 居中::----:或-----
  • 居右:----:
1
2
3
4
5
6
|标题|标题|标题|
|:---|:---:|---:|
|居左测试文本|居中测试文本|居右测试文本|
|居左测试文本1|居中测试文本2|居右测试文本3|
|居左测试文本11|居中测试文本22|居右测试文本33|
|居左测试文本111|居中测试文本222|居右测试文本333|

效果:

标题 标题 标题
居左测试文本 居中测试文本 居右测试文本
居左测试文本1 居中测试文本2 居右测试文本3
居左测试文本11 居中测试文本22 居右测试文本33
居左测试文本111 居中测试文本222 居右测试文本333

九、分隔线

说明:
在一行中用三个以上的*-_来建立一个分隔线,行内不能有其他东西。也可以在符号间插入空格。

1
2
3
4
5
***
---
___

* * *

效果:




十、换行


十一、脚注(注解)

说明:
使用[^]来定义脚注

1
2
3
这是一个脚注的例子[^1]

[^1]: 这里是脚注

效果:

这是一个脚注的例子[1]


十二、高级技巧

1. HTML元素

不在Markdown涵盖范围之内的标签,都可以直接在文档里面用HTML撰写。 目前支持的HTML元素有:

1
<kbd> <b> <i> <em> <sup> <sub> <br>

示例:

1
2
3
4
5
6
7
使用 <kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>Del</kbd> 来重启电脑   
<b>加粗的字体</b>
<i>斜体字</i>
<em>强调文本</em>
这个文本包含<sup>上标</sup>文本
这个文本包含<sub>下标</sub>文本
使用 br 元素<br>在文本中<br>换行

效果:

使用 Ctrl + Alt + Del 来重启电脑
加粗的字体
斜体字
强调文本
这个文本包含上标文本
这个文本包含下标文本
使用 br 元素
在文本中
换行

字体

1
2
<font face="微软雅黑" color="red" size="6">字体及字体颜色和大小</font>
<font color="#0000ff">字体颜色</font>

效果:

字体及字体颜色和大小
字体颜色

文本对齐方式

1
2
3
<p align="left">居左文本</p>
<p align="center">居中文本</p>
<p align="right">居右文本</p>

效果:

居左文本

居中文本

居右文本

下划线

1
<u>下划线文本</u>

效果:

下划线文本

2. 转义

Markdown使用了很多特殊符号来表示特定的意义,如果需要显示特定的符号则需要使用转义字符,Markdown使用反斜杠转义特殊字符。
Markdown支持对以下特殊符号的转义:

1
2
3
4
5
6
7
8
9
10
11
12
\   反斜线
` 反引号
* 星号
_ 下划线
{} 花括号
[] 方括号
() 小括号
# 井字号
+ 加号
- 减号
. 英文句点
! 感叹号

示例:

1
2
**文本加粗** 
\*\* 正常显示星号 \*\*

效果:

文本加粗
** 正常显示星号 **

3. 数学公式

当你需要在编辑器中插入数学公式时,可以使用两个美元符$$包裹TeXLaTeX格式的数学公式来实现。提交后,问答和文章页会根据需要加载Mathjax对数学公式进行渲染

示例:

1
2
3
4
5
6
7
8
$$
\mathbf{V}_1 \times \mathbf{V}_2 =
\begin{vmatrix}
\mathbf{i} & \mathbf{j} & \mathbf{k} \\
\frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\
\frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 \\
\end{vmatrix}
$$

效果:

V1×V2=ijkXuYu0XvYv0\mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \\ \frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\ \frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 \\ \end{vmatrix}


  1. 这里是脚注 ↩︎