《MarkDown语法规范 - GFM扩展语法》预览
GFM (GitHub Flavored Markdown) 标准语法
首行缩进(行首空两格)的表示方法,非标准Markdown语法要求,不在GFM语法范畴。Markdown的设计初衷就是为了简洁,标准Markdown不推荐。
<p style="text-indent: 2em;">首行缩进(行首空两格)的表示方法,非标准Markdown语法要求,不在GFM语法范畴。Markdown的设计初衷就是为了简洁,标准Markdown不推荐。</p>
这是GitHub Flavored Markdown (GFM) 标准语法,供其他MarkDown编辑器使用参考

请不要删除这个文档,你可以从这里找到需要的帮助信息。
什么是 Markdown?
Markdown 是一种轻量级的标记语言。它允许人们使用易读易写的纯文本格式编写文档,并支持图片、图表、数学公式等,然后转换成有效的 HTML 文档。Batata采用 GitHub Flavored Markdown 语法(简称 GFM),并支持一些扩展语法。
为了方便导航,我们在这里插入本文档目录:
目录
0 目录
[TOC] 或者 [toc]
1 标题
- 标准Markdown最高支持六级标题,一级标题在行首使用一个
#,二级标题使用两个##,以此类推。 - 使用
===表示高阶标题,使用---表示次阶标题。
1#和标题之间记得有个空格哦。
2====和----表示标题时,大于等于2个都可以表示,与分割线区别是分割线前面要空一行。语法如下:
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
一级标题
===
二级用标题
---
2 文本强调
使用 ** 或者 __ 表示粗体。
使用 * 或者 _ 表示斜体。
使用==表示 高亮
使用~~表示 删除
*,= 或 _ 的后面不要跟空格
**粗体**用于表示粗体*斜体*用于表示斜体~~删除线~~用于表示删除线
3 脚注
用法
正文中引用脚注[^1]和[^note]。
定义脚注内容:
[^1]: 这是第一个数字脚注的内容
[^note]: 这是命名脚注,支持**加粗**等行内格式
[^id]引用按首次出现顺序自动编号为上标链接[^id]:脚注内容 定义从正文移除,统一汇总到文末(带回链 ↩)- 定义内容支持行内 Markdown
示例
我们可以在这里插入一个命名脚注 1。
4 引用
使用 > 表示引用, >> 表示引用里面再套一层引用,依次类推。
如果 > 和 >> 嵌套使用的话,从 >> 退到 > 时,必须之间要加一个空格或者 > 作为过渡,否则默认为下一行和上一行是同一级别的引用。如示例所示。
引用标记里可以使用其他标记,如:有序列表或无序列表标记,代码标记等。
示例
> 这是一级引用
>> 这是二级引用
>>> 这是三级引用
> 这是一级引用
效果:
这是一级引用
这是二级引用
这是三级引用
这是一级引用
5 链接
[链接标题](http://www.acemark.net)
输出:链接标题
自动链接:
<https://apps.apple.com/app/id1472328263>
<user@example.com>
https://apps.apple.com/app/id1472328263
user@example.com
6 图片
如果想要显示一张网络图片,方式和普通链接类似,但需要在前面加一个!符号。

# 指定大小
{width=640px}
{width=60%}
# 居中
<center>
{width=60%}
</center>
注意:<center>前后要空一行,否则不生效。

7 表格
通过下面的标记,就可以输出一份表格
有边框表格
| 标题1 | 标题2 | 标题3 |
|------|-------|------|
| 内容1 | 内容2 | 内容3 |
| 内容4 | 内容5 | 内容6 |
无边框表格
标题1 | 标题2 | 标题3
------|-------|------
内容1 | 内容2 | 内容3
内容4 | 内容5 | 内容6
对齐方式:
Heading | Heading | Heading
:----- | :----: | ------:
Left | Center | Right
Left | Center | Right
输出表格:
- 有边框表格
| 标题1 | 标题2 | 标题3 |
|---|---|---|
| 内容1 | 内容2 | 内容3 |
| 内容4 | 内容5 | 内容6 |
- 无边框表格
| 标题1 | 标题2 | 标题3 |
|---|---|---|
| 内容1 | 内容2 | 内容3 |
| 内容4 | 内容5 | 内容6 |
- 对齐方式:
| Heading | Heading | Heading |
|---|---|---|
| Left | Center | Right |
| Left | Center | Right |
8 列表
有序列表
1. 2. 3.用来标识有序列表项。例如:
1. 第一项
2. 第二项
输出结果:
- 第一项
- 第二项
无序列表
+、*、-都可以用来标识无序列表项。例如:
+ 项目1
* 项目2
- 项目3
输出结果:
- 项目1
- 项目2
- 项目3
嵌套列表
无序嵌套列表
无序列表的嵌套很简单,你只需要在子列表的每一项前增加额外的缩进(通常是四个空格或者一个制表符)。
- 一级列表
- 二级列表
- 三级列表
- 四级列表
- 三级列表
- 二级列表
有序嵌套列表
有序列表的嵌套方法与无序列表类似,也是在子列表的每一项前增加额外的缩进。
- 一级列表
- 二级列表1
- 二级列表2
- 三级列表1
- 四级列表
- 四级列表
- 四级列表
- 三级列表2
- 三级列表1
- 一级列表
混合嵌套列表
- 一级列表
- 二级列表1
- 二级列表2
- 三级列表1
- 四级列表
- 四级列表
- 四级列表
- 三级列表2
- 三级列表1
- 一级列表
TODO 标记
- [ ] 未完成
- [X] 已完成
输出结果:
- [ ] 未完成
- [X] 已完成
注意事项
确保在Markdown编辑器中正确地使用空格或制表符进行缩进。不同的Markdown解析器对缩进的处理可能略有不同,但大多数都接受四个空格或一个制表符作为标准。
在某些Markdown变种或特定渲染环境中,你可能需要使用四个空格而不是一个制表符来实现一致的渲染效果。例如,GitHub和一些Markdown解析器推荐使用四个空格进行缩进。
在写作时,保持一致的缩进风格可以提高Markdown文档的可读性和兼容性。
9 代码
- 反引号代码块:用两个位于行首的
```包裹表示; - 缩进代码块:用四个空格或者一个 Tab 表示缩进代码块,8个空格或者2个Tab表示进一步缩进;
- 不管反引号还是缩进代码块代码块,前后分别空一行才能正确解析渲染。
- 行内代码:格式
行内代码
缩进代码示例
这是一个普通的段落。
支持几十种代码高亮。例如:
代码块示例
PHP
require_once "Parsedown.php";
$parsedown = new Parsedown();
echo $parsedown->text("# Hello Markdown!");
Go
```go
func Fibonacci(n int) int {
if n <= 1 {
return n
}
return Fibonacci(n-1) + Fibonacci(n-2)
}
```
输出:
func Fibonacci(n int) int {
if n <= 1 {
return n
}
return Fibonacci(n-1) + Fibonacci(n-2)
}
JavaScript
```javascript
function Fibonacci(num) {
if (num <= 1) return 1;
return Fibonacci(num - 1) + Fibonacci(num - 2);
}
```
输出:
function Fibonacci(num) {
if (num <= 1) return 1;
return Fibonacci(num - 1) + Fibonacci(num - 2);
}
Lua
```lua
local function Fibonacci(n)
local function doFibonacci(n, ret1, ret2)
if (n <= 1) then
return ret2
end
return doFibonacci(n - 1, ret2, ret1 + ret2)
end
return doFibonacci(n, 1, 1)
end
```
输出:
local function Fibonacci(n)
local function doFibonacci(n, ret1, ret2)
if (n <= 1) then
return ret2
end
return doFibonacci(n - 1, ret2, ret1 + ret2)
end
return doFibonacci(n, 1, 1)
end
10 数学公式
支持 LaTeX 语法的数学公式。例如
$$
f(x) = a x^2 + b x + c
$$
会输出一个抛物线方程
而下面这个表达式
$$
F(\omega)=\int_{-\infty}^{+\infty} {f(t)e^{-i\omega t}dt}
$$
会输出一个傅里叶变换积分方程
要输出矩阵也很简单,只需要
$$
\begin{bmatrix}
1 & x & x^2 \\
1 & y & y^2 \\
1 & z & z^2 \\
\end{bmatrix}
$$
便可得到想要的效果
公式也可以显示在行内。例如 $f(x)=kx+b$ 就会输出 f(x)=kx+b,这是一个显示在行内的直线方程。
11 换行
- 标准语法要求在行尾添加两个空格或者换行符代表换行
- 部分MarkDown工具可以自动处理回车为换行,无标准换行要求。如Typro,AceMark等, FlashNode调用Parsedown支持自定义设置:$pd->setBreaksEnabled(true); marked.js默认支持GFM 模式,默认已启用(marked.setOptions({ gfm: true, breaks: true }))
标准换行示例如下:
这行的行尾有两个空格
这是一个新行。
12 分割线
使用 --- 或者 *** 或者变体* * * 表示水平分割线,显示效果相同。
- 只要
*或者-大于等于三个就可组成一条平行线。 - 使用
---作为水平分割线时,要在它的前后都空一行,防止---被当成标题标记的表示方式。
示例
Markdown 分割线本质是 HTML <hr> 标签,基础语法仅支持横线,具体样式(粗细、颜色、圆角)需通过 CSS 定制。
- 基础写法(生成标准横线)
以下三种写法效果相同,均要求独占一行且符号数量 ≥3个:
---(减号,最推荐,简洁通用)***(星号)___(下划线,注意避免与标题语法冲突)- 变体:符号间可加空格,如
- - -或* * *,渲染效果一致 。
- 自定义样式(需嵌入 HTML/CSS)
原生 Markdown 无法直接改变颜色或粗细,需在支持 HTML 的编辑器中插入<style>或内联样式:
- 修改粗细:
<hr style="border-top: 3px solid 000;"> - 修改颜色:将
000替换为任意颜色代码(如4ade80)。 - 修改圆角/渐变:
<div style="border-top: 4px solid 4ade80; border-radius: 4px; margin: 32px 0;"></div>注:部分平台(如 GitHub)会过滤自定义 CSS,仅显示默认灰色细线 。
- 关键注意事项
- 前后留空:分割线前后必须各空一行,否则可能无法渲染或被误解析为文本 。
- YAML 冲突:在静态站点生成器(如 Hugo/Hexo)中,文档开头的
---可能被识别为 Front Matter 分隔符,需确保上下文正确 。 - 平台差异:Typora、Obsidian 等本地编辑器支持 CSS 美化;网页端(如知乎、CSDN)通常仅显示默认样式 。
- 这是命名脚注内容。
↩