mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
2634 字
7 分钟
Markdown 教程
2026-06-10

Markdown 教程#

这是一篇 Markdown 示例文章,用来展示如何编写 Markdown 文件。本文整合了核心语法和 GFM 扩展语法。

块级元素#

段落和换行#

段落#

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 元素,包括标题、列表和代码块。

代码:

> ## 这是一个标题。
>
> 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. 帕里什

如果写出类似下面的内容,可能会意外触发有序列表。

代码:

1986. 多么精彩的赛季。

预览:


  1. 多么精彩的赛季。

可以用**反斜杠转义(\)**这个句点。

代码:

1986\. 多么精彩的赛季。

预览:


1986. 多么精彩的赛季。


缩进#

列表中的引用块#

如果要把引用块放进列表项中,引用块的 > 分隔符需要缩进。

代码:

* 一个包含引用块的列表项:
> 这是列表项
> 里面的引用块。

预览:


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

    这是列表项 里面的引用块。


列表中的代码块#

如果要把代码块放进列表项中,代码块需要缩进两级,也就是 8 个空格两个制表符

代码:

* 一个包含代码块的列表项:
<这里放代码>

预览:


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

    <这里放代码>

嵌套列表#

代码:

* 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>

下面的围栏代码块和语法高亮属于扩展语法。你也可以用这些方式书写代码块。

围栏代码块#

只要用 ``` 包裹代码,就不需要再缩进 4 个空格。

代码:

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

预览:


下面是一个例子:

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

语法高亮#

在围栏代码块中,可以添加一个可选的语言标识符,Markdown 处理器会据此进行语法高亮。支持的语言可参考 Support Languages

代码:

```ruby
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>

表格是扩展语法。

使用**竖线(|)分隔列,使用短横线(-)分隔表头,使用冒号(:)**控制对齐方式。

外侧的**竖线(|)**和对齐标记是可选的。每个表头分隔单元格至少需要 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/)没有 title 属性。

预览:


这是一个示例行内链接。

这个链接没有 title 属性。


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

代码:

详情请查看我的[关于](/about/)页面。

预览:


详情请查看我的关于页面。


引用式#

你可以预先定义链接引用。格式如下:[id]: URL "标题"

标题同样是可选的。引用这个链接时,格式为:[链接文本][id]

代码:

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

预览:


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


也就是说:

  • 方括号中包含链接标识符,不区分大小写,可以从左边距缩进最多三个空格。
  • 后面跟一个冒号。
  • 后面跟一个或多个空格,或制表符。
  • 后面跟链接 URL。
  • 链接 URL 可以选择用尖括号包裹。
  • 最后可以选择添加链接的 title 属性,title 可以放在双引号、单引号或圆括号中。

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

代码:

[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 或路径,以及可选的 title 属性。title 可以放在双引号或单引号中。

引用式#

引用式图片语法如下:![替代文本][id]

代码:

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

预览:


替代文本


删除线#

HTML 标签:<del>

删除线是扩展语法。

GFM 添加了删除线文本的写法。

代码:

~~错误的文字。~~

预览:


错误的文字。


杂项#

自动链接#

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 切换到 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-06-10
许可协议
Unlicensed

部分信息可能已经过时

目录