
标题
用行首的 # 表示标题,# 与文本要有一个空格,#的数量对应级别。
1 | # 一级标题 |
还可以在文本下方添加任意数量的 == 号来标识一级标题,或者 – 号来标识二级标题。
Markdown语法 HTML 预览效果
Heading level 1
===============
Heading level 1
Heading level 1
Heading level 2
—————
Heading level 2
Heading level 2
段落与换行
段落之间用空一行分隔。
若要在同一段内强制换行,在行尾加两个空格再回车,或使用行尾 \;很多环境也支持直接单个换行即换行。
不要用空格(spaces)或制表符( tabs)缩进段落。
几乎每个 Markdown 应用程序都支持两个或多个空格进行换行,称为 结尾空格(trailing whitespace) 的方式,但这是有争议的,因为很难在编辑器中直接看到空格,并且很多人在每个句子后面都会有意或无意地添加两个空格。由于这个原因,你可能要使用除结尾空格以外的其它方式来换行。幸运的是,几乎每个 Markdown 应用程序都支持另一种换行方式:HTML 的
标签。
为了兼容性,请在行尾添加“结尾空格”或 HTML 的
标签来实现换行。
还有两种其他方式我并不推荐使用。CommonMark 和其它几种轻量级标记语言支持在行尾添加反斜杠 () 的方式实现换行,但是并非所有 Markdown 应用程序都支持此种方式,因此从兼容性的角度来看,不推荐使用。并且至少有两种轻量级标记语言支持无须在行尾添加任何内容,只须键入回车键(return)即可实现换行。
✅ Do this
1 | 这是第一段。 |
强调与行内格式
| 效果 | 源码写法 |
|---|---|
| 斜体 | *文字* 或 _文字_ |
| 粗体 | **文字** 或 __文字__ |
| 粗斜体 | ***文字*** |
行内代码 |
`代码` |
~~文字~~ |
推荐使用*来达到斜体,粗体和粗斜体
转义字符
需要显示 Markdown 特殊字符本身时,在字符前加反斜杠 \,例如:\*、\#、\`、\[ 等。可转义的字符集合因实现略有差异。
| 效果 | 源码写法 |
|---|---|
| 这会变成斜体 | *这会变成斜体* |
| *这就不会斜体了* | \*这就不会斜体了\* |
列表
无序列表
行首使用 -、* 或 +,后接空格,再写内容。多级列表通过缩进表示层级(通常两个或四个空格)。
- 第一项
- 第二项
- 子项 A
- 子项 B
1 | - 第一项 |
有序列表
使用数字加点与空格:1. 、2. 。多数解析器会按书写顺序渲染序号,也有环境会自动重排。
- 第一步
- 第二步
- 第三步
1 | 1. 第一步 |
任务列表(GFM)
- 未完成
- 已完成
1 | - [ ] 未完成 |
链接与图片
行内式链接
1 | [链接文字](https://example.com) |
图片
语法与链接类似,前面加 !:

1 |  |
引用式图片:
1 | ![替代文字][img-id] |
行内代码与代码块
行内代码用一对反引号包裹:`printf`。
若代码内含反引号,可用更多反引号作为外层定界,或缩进代码块(部分解析器)。
围栏式代码块(Fenced code block):
1 | ```语言标识(可选) |
1 | 多行代码 |
语言标识(如 js、python、bash)常用于语法高亮,具体取决于渲染器。
引用
行首使用 > 表示引用,可多级嵌套:
1 | > 这是一级引用。 |
这是一级引用。
这是嵌套引用。
引用内仍可包含标题、列表、代码等块级元素(依解析器支持程度而定)。
分隔线
单独一行使用三个或更多 -、* 或 _(之间可含空格),例如:
1 | --- |
注意与 Setext 二级标题的 --- 区分:Setext 要求上一行是文字;若上一行为空,通常会被解析为分隔线。
表格(GFM)
用竖线 | 与短横线画表头与对齐方式:
rkdown 中如何设置表格内容居中
1 | | 左对齐 | 居中 | 右对齐 | |
第二行中的冒号决定列对齐;无冒号时依实现可能默认左对齐。
1 | graph TD |
1 | sequenceDiagram |
1 | gantt |
1 | pie |