一、为什么要学习 Markdown?

  1. 语法简练,上手迅速
  2. 纯文本、轻量级
  3. 支持协作开发
  4. 所想即所得
  5. 跨平台、高兼容
  6. 使用广泛

二、Markdown 语法

2.1 标题

使用多个 # 的方式实现标题,Markdown 支持 1 ~ 6 级标题,6级标题以上将不会被识别。

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

2.2 粗体、斜体、删除、分割线、更改颜色

使用单个 * 号包裹文字,实现斜体的效果:

1
*这是斜体效果*

使用两个 * 号包裹文字,实现粗体的效果:

1
**这是粗体效果**

使用两个 ~ 号包裹文字,实现删除的效果:

1
~~这是删除效果~~~

使用连续三个短横线 - 实现添加分割线:

1
---

Markdown 不支持文字更改颜色,如需支持,请使用 HTML 标签,例如红色:

1
<font color="red">红色</font>

2.3 有序列表、无序列表

使用数字加+ . 加空格实现有序列表:

1
2
3
1. 水果
2. 蔬菜
3. 肉类

使用短横线 - 加空格实现无序列表:

1
2
3
- 北京
- 南京
- 上海

如果想实现多级列表,子列表应保持与父列表2个或4个空格缩进

1
2
3
4
5
6
7
- 北京
- 昌平
- 海淀
- 南京
- 秦淮
- 浦口
- 上海

2.4 表格

  1. 表格第一行为表头,通过 | 分割每一列,在 | 中间填写表头信息。

  2. 表格第二行为表格信息,使用 | 分割列,每两个 | 中间使用 -填充。

    1. 默认表格居中对齐
    2. - 左侧添加: 将该列左对齐
    3. - 右侧添加: 将该列右对齐
  3. 从第三行开始为表格体信息。

1
2
3
|列1|列2|列3|
|:-|-|-:|
|a|b|c|

Tips:表格每个单元格内不支持换行,如果需要换行,请使用 <br> 标签。

2.5 超链接、图片、视频

使用如下方式实现超链接:

1
[文字描述](链接网址)

Tips: Markdown 超链接不支持新窗口打开,如需要,请使用 <a target="_blank"> 实现。

使用如下方式实现插入图片:

1
![图片描述](图片网址)

Tips: Markdown 图片不支持居中对齐、调整大小,如需要,请使用:

<img src="图片网址" alt="图片描述" width="80%" height="80%">

建议 widthheight 建议只设置一个,避免图片拉伸。

Markdown 本身是不支持视频的,但是我们可以通过 HTML 的 Iframe 来实现,在大部分的视频网站中,通过点击视频下方的获取嵌入代码,并将其粘入 Markdown 中即可。

Tips:视频自适应大小在 Markdown 中的实现比较复杂,受限于 Iframe 的特性,一般需要通过调整渲染的样式或其他途径来实现。例如在 Hexo 中调整主题的样式实现,或在 Gitbook 中按转换视频插件。

2.6 块与引用

使用 > 实现块级引用,一般用于引用其他出处内容。

1
>鲁迅曾今说过:...

块引用也支持多级嵌套,例如二级嵌套:

1
2
>这是一级块引用
>>这是二级块引用

Tips: 块引用中多段文字不支持空行,如需添加空行,请使用<br>

使用反单引号包裹文字,实现行内引用,一般用于名词,例如:

1
`Nginx` 是一个。。。

Markdown 支持插入代码块,使用三个反单引号加要高亮的语言名包裹代码块实现。

1
2
3
public static void main(String[] args) {
sout("Hello World!");
}

Tips: 具体支持哪些语言由 Markdown 解析引擎来决定,但是常用的语言均支持

3.7 数学公式

绝大部分 Markdown 解释引擎支持 Mathjax 数学公式,详细的使用说明可以参考文章:https://blog.csdn.net/qq_36148847/article/details/79419814,这里只列出常见的符号。

使用 \frac{}{}表示除法,使用 \ast 表示乘号,例如:

1
f(x) = \frac{a+b}{a \ast b}

渲染结果为:

f(x)=a+babf(x) = \frac{a+b}{a \ast b}

使用 ^_ 分别表示上标和下标,使用 \sum_{}^{}表示求和符号,例如:

1
\sum_{n=1}^{n<10} n^2 + 2

渲染结果为:

n=1n<10n2+2\sum_{n=1}^{n<10} n^2 + 2

3.8 目录

Markdown 原生不支持目录,但是绝大部分的 Markdown 引擎都支持,一般使用 [toc] 实现,少部分使用 @[toc] 实现。

3.9 首行缩进

Markdown 本身不支持首行缩进,因此在中文模式下可以使用 &emsp; 实现空出一个中文字符,例如:

1
&emsp;&emsp;首行缩进两个字符

3.10 更多用法

Markdown 还支持更多功能,例如制作流程图、甘特图等,但上手难度大,与传统方式相比优势不大,因此看个人喜好而定。

三、CommonMarkdown

Markdown 于2004年被开发,至今已经有几十种转HTML的实现方式。由于早期缺少规范,各个解释器各自为战,所以可能出现你编写的Markdown在有的解释器上能够渲染,有的无法渲染。

雪上加霜的是,Markdown没有语法错误的说法,所以你可能无法即时的发现错误,导致文档不能体现跨平台的优点。

CommonMark 就是一个强定义规范,包含Markdown创始人参与,规范严格,基本适应所有的编辑器。