mobile wallpaper 1
mobile wallpaper 2
mobile wallpaper 3
mobile wallpaper 4
3084 字
8 分钟
Markdown 教程
2026-08-19

本文根据 emn178/markdown 整理并翻译为中文,主要用于 Markdown 语法学习与博客写作参考。

原作者:emn178
原文:Markdown

Markdown 教程#

这是一篇 Markdown 示例文章,展示了如何编写 Markdown 文件。本文介绍了 Markdown 的核心语法以及扩展语法(GMF)。

块级元素#

段落与换行#

段落#

HTML 标签:<p>

使用一个或多个空行来分隔段落。

(只包含空格制表符的行也会被视为空行。)

代码:

这是第一段,
会显示为同一个段落。
这是第二段。

预览:


这是第一段, 会显示为同一个段落。

这是第二段。


换行#

HTML 标签:<br />

在一行的末尾添加两个或更多空格即可实现换行。

代码:

这一行不会和下一行
显示在同一行。

预览:


这一行不会和下一行
显示在同一行。


标题#

Markdown 支持两种标题写法:Setext 和 ATX。

Setext#

HTML 标签:<h1><h2>

使用**等号(=)短横线(-)**作为标题下划线,分别表示 <h1><h2>

代码:

这是一级标题
=============
这是二级标题
-------------

预览:


这是一级标题#

这是二级标题#


ATX#

HTML 标签:<h1><h2><h3><h4><h5><h6>

在行首使用 1~6 个井号(#),分别对应 <h1><h6>

代码:

# 这是一级标题
## 这是二级标题
###### 这是六级标题

预览:


这是一级标题#

这是二级标题#

这是六级标题#

此外,也可以在 ATX 风格的标题末尾添加井号作为“闭合”。

闭合部分的井号数量不需要与开头的井号数量一致

代码:

# 这是一级标题 #
## 这是二级标题 ##
### 这是三级标题 ######

预览:


这是一级标题#

这是二级标题#

这是三级标题#


引用#

HTML 标签:<blockquote>

Markdown 使用类似电子邮件的 > 符号来表示引用。

如果引用内容较长,建议手动换行,并在每一行前面添加 >

代码:

> 这是一个包含两个段落的引用示例。这是一段用于展示 Markdown 引用效果的文本。
> 你可以在引用中包含较长的内容,并在每一行前面添加 >。
> 这样可以让引用的结构更加清晰。
>
> 这是引用中的第二个段落。Markdown 会根据空行将它们识别为两个不同的段落。
> 你可以继续在这里添加更多内容。

预览:


这是一个包含两个段落的引用示例。这是一段用于展示 Markdown 引用效果的文本。 你可以在引用中包含较长的内容,并在每一行前面添加 >。 这样可以让引用的结构更加清晰。

这是引用中的第二个段落。Markdown 会根据空行将它们识别为两个不同的段落。 你可以继续在这里添加更多内容。


Markdown 允许一种更简洁的写法:对于一个手动换行的段落,只需要在第一行前面添加 >

代码:

> 这是一个包含两个段落的引用示例。这是一段用于展示 Markdown 引用效果的文本。
你可以继续书写内容,而不需要在每一行前面添加 >。
这样可以让引用的代码更加简洁。
> 这是第二个段落。你只需要在新段落的第一行添加 >。
后面的内容可以直接继续书写。

预览:


这是一个包含两个段落的引用示例。这是一段用于展示 Markdown 引用效果的文本。 你可以继续书写内容,而不需要在每一行前面添加 >。 这样可以让引用的代码更加简洁。

这是第二个段落。你只需要在新段落的第一行添加 >。 后面的内容可以直接继续书写。


引用可以嵌套,也就是说,可以在引用中继续添加引用。

只需要增加 > 的层级即可。

代码:

> 这是第一层引用。
>
> > 这是嵌套的第二层引用。
>
> 回到第一层引用。

预览:


这是第一层引用。

这是嵌套的第二层引用。

回到第一层引用。


引用中也可以包含其他 Markdown 元素,包括标题、列表和代码块。

代码:

> ## 这是一个标题。
>
> 1. 这是第一个列表项。
> 2. 这是第二个列表项。
>
> 下面是一段示例代码:
>
> return shell_exec("echo $input | $markdown_script");

预览:


这是一个标题。#

  1. 这是第一个列表项。
  2. 这是第二个列表项。

下面是一段示例代码:

return shell_exec("echo $input | $markdown_script");

列表#

Markdown 支持有序列表(编号列表)和无序列表(项目符号列表)。

无序列表#

HTML 标签:<ul>

无序列表可以使用星号(*)加号(+)短横线(-)

代码:

* 红色
* 绿色
* 蓝色

预览:


  • 红色
  • 绿色
  • 蓝色

以下写法与上面的效果相同:

代码:

+ 红色
+ 绿色
+ 蓝色

以及:

代码:

- 红色
- 绿色
- 蓝色

有序列表#

HTML 标签:<ol>

有序列表使用数字加句点表示:

代码:

1. 第一项
2. 第二项
3. 第三项

预览:


  1. 第一项
  2. 第二项
  3. 第三项

有时候,写普通文本时可能会意外触发有序列表,例如:

代码:

1986. 多么精彩的赛季。

预览:


  1. 多么精彩的赛季。

可以使用**反斜杠转义(\)**句点:

代码:

1986\. 多么精彩的赛季。

预览:


1986. 多么精彩的赛季。


缩进#

引用#

如果想在列表项中加入引用,需要对引用的 > 符号进行缩进:

代码:

* 一个包含引用的列表项:
> 这是一个位于
> 列表项中的引用。

预览:


  • 一个包含引用的列表项:

    这是一个位于 列表项中的引用。


代码块#

如果想在列表项中加入代码块,需要将代码块缩进两层,也就是 8 个空格两个制表符

代码:

* 一个包含代码块的列表项:
<code goes here>

预览:


  • 一个包含代码块的列表项:

    <code goes here>

嵌套列表#

代码:

* A
* A1
* A2
* B
* C

预览:


  • A
    • A1
    • A2
  • B
  • C

代码块#

HTML 标签:<pre>

将代码块中的每一行至少缩进 4 个空格1 个制表符

代码:

这是一个普通段落:
这是一个代码块。

预览:


这是一个普通段落:

这是一个代码块。

代码块会一直持续,直到遇到没有缩进的行,或者文章结束。

在代码块中,和号(&)以及尖括号 **(< 和 >)**会自动转换为 HTML 实体。

代码:

<div class="footer">
&copy; 2004 Foo Corporation
</div>

预览:


<div class="footer">
&copy; 2004 Foo Corporation
</div>

下面介绍的围栏代码块语法高亮属于 Markdown 的扩展功能。

你也可以使用这些方式来编写代码块。

围栏代码块#

只需要使用 ``` 包裹代码(如下所示),就不需要再使用 4 个空格进行缩进。

代码:

下面是一个示例:
```
function test() {
console.log("注意这个函数前面的空行了吗?");
}
```

预览:


下面是一个示例:

function test() {
console.log("注意这个函数前面的空行了吗?");
}

语法高亮#

在围栏代码块中添加可选的语言标识符,Mizuki 就会根据对应的编程语言进行语法高亮。

支持的语言可以参考:

支持的语言列表

代码:

```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```

预览:


require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html

预览:


require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html

分隔线#

HTML 标签:<hr />

在单独的一行中使用 三个或更多短横线(-)、星号(*)或下划线(_),即可创建分隔线。

短横线或星号之间可以添加空格。

代码:

* * *
***
*****
- - -
---------------------------------------
___

预览:








表格#

HTML 标签:<table>

表格属于 Markdown 的扩展语法。

使用**竖线(|)分隔列,使用短横线(-)分隔表头和内容,并使用冒号(:)**设置对齐方式。

最外侧的**竖线(|)**以及对齐方式都是可选的。

每个单元格至少需要使用 3 个短横线来分隔表头。

代码:

| 左对齐 | 居中 | 右对齐 |
|:-------|:----:|-------:|
| aaa | bbb | ccc |
| ddd | eee | fff |
A | B
---|---
123|456
A |B
--|--
12|45

预览:


左对齐居中右对齐
aaabbbccc
dddeeefff
AB
123456
AB
1245

行级元素#

链接#

HTML 标签:<a>

Markdown 支持两种链接写法:行内链接引用式链接

行内链接#

行内链接的格式如下:

[链接文字](URL "标题")

其中标题是可选的。

代码:

这是一个[行内链接示例](http://example.com/ "标题")。
[这个链接](http://example.net/)没有设置标题属性。

预览:


这是一个行内链接示例

这个链接没有设置标题属性。


如果要引用同一服务器上的本地资源,可以使用相对路径:

代码:

详细信息请参阅我的 [About](/about/) 页面。

预览:


详细信息请参阅我的 About 页面。


引用式链接#

你可以预先定义链接引用。格式如下:

[id]: URL "标题"

标题同样是可选的。

之后引用该链接时,可以使用:

[链接文字][id]

代码:

[id]: http://example.com/ "这里是可选的标题"
这是一个[示例][id]引用式链接。

预览:


这是一个示例引用式链接。


也就是说,一个引用式链接由以下部分组成:

  • 包含链接标识符的方括号(不区分大小写,并且可以在行首缩进最多三个空格);
  • 后面跟一个冒号;
  • 后面跟一个或多个空格(或制表符);
  • 后面跟链接的 URL;
  • 链接 URL 可以选择使用尖括号包围;
  • 最后还可以选择添加链接标题,标题可以使用双引号、单引号或圆括号包围。

下面四种链接定义是等价的:

代码:

[foo]: http://example.com/ "这里是可选的标题"
[foo]: http://example.com/ '这里是可选的标题'
[foo]: http://example.com/ (这里是可选的标题)
[foo]: <http://example.com/> "这里是可选的标题"

还可以使用一组空的方括号,此时链接文字本身会被用作链接名称。

代码:

[Google]: http://google.com/
[Google][]

预览:


Google


强调#

HTML 标签:<em><strong>

Markdown 使用**星号(*)下划线(_)**来表示强调。

使用一对分隔符表示 <em>,通常显示为斜体

使用两对分隔符表示 <strong>,通常显示为粗体

代码:

*单个星号*
_单个下划线_
**两个星号**
__两个下划线__

预览:


单个星号

单个下划线

两个星号

两个下划线


但是,如果在 *_ 两侧添加空格,它们就会被当作普通的星号或下划线,而不会被解释为强调符号。

也可以使用反斜杠对它们进行转义:

代码:

\*这段文字两侧是普通的星号\*

预览:


*这段文字两侧是普通的星号*


行内代码#

HTML 标签:<code>

使用**反引号(`)**包裹代码即可创建行内代码。

代码:

使用 `printf()` 函数。

预览:


使用 printf() 函数。


如果需要在行内代码中包含一个普通的反引号字符,可以使用多个反引号作为开始和结束分隔符:

代码:

``这里包含一个普通的反引号 (`)。``

预览:


这里包含一个普通的反引号 (`)。


包围行内代码的反引号分隔符中可以包含空格——即开始分隔符之后有一个空格,结束分隔符之前也有一个空格。

这样就可以在行内代码的开头或结尾放置普通的反引号字符:

代码:

行内代码中的单个反引号:`` ` ``
行内代码中的反引号字符串:`` `foo` ``

预览:


行内代码中的单个反引号:`

行内代码中的反引号字符串:`foo`


图片#

HTML 标签:<img />

Markdown 使用一种类似链接的语法来插入图片,并且同样支持两种方式:行内图片引用式图片

行内图片#

行内图片的语法如下:

![替代文字](URL "标题")

其中标题是可选的。

代码:

![替代文字](/path/to/img.jpg)
![替代文字](/path/to/img.jpg "可选的标题")

预览:


替代文字
替代文字
替代文字
可选的标题

也就是说:

  • 一个感叹号:!
  • 后面跟一组方括号,其中填写图片的 alt 属性文字,也就是图片无法显示时显示的替代文字;
  • 后面跟一组圆括号,其中填写图片的 URL 或路径,还可以选择添加标题属性,标题可以使用双引号或单引号包围。

引用式图片#

引用式图片的语法如下:

![替代文字][id]

代码:

[img id]: https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp "可选的标题属性"
![替代文字][img id]

预览:


替代文字
可选的标题属性

删除线#

HTML 标签:<del>

这是 Markdown 的扩展语法。

GFM(GitHub Flavored Markdown)为删除线文本提供了专门的语法。

代码:

~~错误的文字。~~

预览:


错误的文字。


其他#

自动链接#

Markdown 支持一种创建“自动”链接的快捷方式,可以用于 URL 和电子邮件地址。

只需要使用尖括号将 URL 或电子邮件地址包围起来即可。

代码:

<http://example.com/>
<address@example.com>

预览:


http://example.com/

address@example.com


GFM 会自动识别标准 URL,并将其转换为链接。

代码:

https://github.com/emn178/markdown

预览:


https://github.com/emn178/markdown


反斜杠转义#

Markdown 允许使用反斜杠转义来生成普通字符。

如果某些字符在 Markdown 的格式语法中具有特殊含义,可以在它们前面添加反斜杠 \,使其按照普通字符显示。

代码:

\*普通的星号\*

预览:


*普通的星号*


Markdown 为以下字符提供了反斜杠转义:

代码:

\ 反斜杠
` 反引号
* 星号
_ 下划线
{} 花括号
[] 方括号
() 圆括号
# 井号
+ 加号
- 减号(短横线)
. 句点
! 感叹号

行级 HTML#

对于 Markdown 语法没有覆盖的内容,可以直接使用 HTML。

不需要添加特殊标记,也不需要告诉 Markdown 你正在从 Markdown 切换到 HTML;直接使用 HTML 标签即可。

代码:

这是一个普通段落。
<table>
<tr>
<td>Foo</td>
</tr>
</table>
这是另一个普通段落。

预览:


这是一个普通段落。

Foo

这是另一个普通段落。


需要注意的是,Markdown 的格式语法不会在块级 HTML 标签内部被处理

与块级 HTML 标签不同,Markdown 语法会在行级 HTML 标签内部被处理

代码:

<span>**这里会生效**</span>
<div>
**这里不会生效**
</div>

预览:


这里会生效

**这里不会生效**
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Markdown 教程
https://github.com/emn178/markdown
作者
emn178
发布于
2026-08-19
许可协议
Unlicensed

部分信息可能已经过时

目录