2594 字
7 分钟
Markdown 教程
2026-03-24
2026-03-25

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

代码:

> ## 这是一个标题。
>
> 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 个空格两个制表符

代码:

* 一个包含代码块的列表项:
<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>

接下来的章节——围栏代码块和语法高亮——是扩展语法,你可以使用另一种方式编写代码块。

围栏代码块#

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

代码:

这是一个示例:
```
function test() {
console.log("notice the blank line before this function?");
}
```

预览:


这是一个示例:

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

语法高亮#

在围栏代码块中,添加可选的语言标识符,即可进行语法高亮(支持的语言)。

代码:

```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 Tag: <table>

这是一个扩展语法。

用竖线 pipe (|) 分隔列, 用连字符 dashes (-) 分隔表头, 用冒号 colon (:) 表示对齐方式。

外侧的竖线 pipes (|) 和对齐方式是可选的。 每个单元格至少有 3 delimiters 来分隔表头。

代码:

| Left | Center | Right |
|:-----|:------:|------:|
|aaa |bbb |ccc |
|ddd |eee |fff |
A | B
---|---
123|456
A |B
--|--
12|45

预览:


LeftCenterRight
aaabbbccc
dddeeefff
AB
123456
AB
1245

Span Elements 行内元素#

HTML 标签: <a>

Markdown 支持两种链接样式:行内和引用。

Inline 行内链接#

行内链接格式如下: [Link Text](URL "Title")

标题是可选的。

代码:

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

预览:


这是一个 示例 行内链接。

这个链接 没有标题属性。


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

代码:

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

预览:


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


Reference 引用链接#

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

标题也是可选的。然后引用链接,格式如下: [Link Text][id]

代码:

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

预览:


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


即:

  • 包含链接标识符的方括号 (不区分大小写, 可选择从左边距缩进最多三个空格);
  • 后跟冒号;
  • 后跟一个或多个空格(或制表符);
  • f后跟链接的 URL;
  • 链接 URL 可以选择用尖括号括起来.
  • 链接 URL 可以选择用尖括号括起来.

以下三个链接定义是等价的:

代码:

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

使用空的方括号,链接文字本身将作为名称。

代码:

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

预览:


Google


Emphasis 强调#

HTML 标签: <em>, <strong>

Markdown 将 星号 (*)下划线 (_) 视为强调的指示符。 单个分隔符表示 表示 <em>; *双分隔符 表示 <strong>.

代码:

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

预览:


单个星号

单个下划线

双星号

双下划线


但如果用空格包围 * 或 _ 它们将被视为普通的星号或下划线。

你也可以用反斜杠转义:

代码:

\*这段文字被普通星号包围\*

预览:


*这段文字被普通星号包围*


Code 代码#

HTML 标签: <code>

反引号 (`) 包裹。

代码:

使用 `printf()` 函数。

代码:


使用 printf() 函数。


要在代码片段中包含字面反引号,可以使用 多个反引号 作为开始和结束分隔符:

代码:

``这里有一个字面反引号 (`) 。``

预览:


这里有一个字面反引号 (`) here。


包围代码片段的反引号分隔符可以包含空格——开始后一个,结束前一个。这允许你在代码片段的开头或结尾放置字面反引号:

代码:

代码片段中的单个反引号: `` ` ``
代码片段中的反引号分隔字符串:`` `foo` ``

预览:


代码片段中的单个反引号: `

代码片段中的反引号分隔字符串: `foo`


Images 图片#

HTML 标签: <img />

Markdown 使用类似于链接的图片语法,支持两种样式:行内和引用。

Inline 行内图片#

行内图片语法如下: ![替代文字](URL "标题")

标题是可选的。

代码:

![Alt text](/path/to/img.jpg)
![Alt text](/path/to/img.jpg "Optional title")

预览:


Alt text

Alt text


即:

  • 一个感叹号: !;
  • 后跟一组方括号,包含图片的替代文字;
  • 后跟一组圆括号,包含图片的 URL 或路径,以及可选的标题属性(用双引号或单引号括起来)。

Reference 引用图片#

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

代码:

[img id]: https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp "Optional title attribute"
![替代文字][img id]

预览:


替代文字


Strikethrough 删除线#

HTML 标签: <del>

这是一个扩展语法。

GFM 添加了删除线语法。

代码:

~~错误文本。~~

预览:


错误文本。


Miscellaneous 其他#

Markdown 支持为 URL 和电子邮件地址创建”自动”链接的快捷方式:只需将 URL 或电子邮件地址用尖括号括起来。

代码:

<http://example.com/>

预览:


http://example.com/

[email protected]


GFM 会自动链接标准 URL。

代码:

https://github.com/emn178/markdown

预览:


https://github.com/emn178/markdown


Backslash Escapes 反斜杠转义#

Markdown 允许你使用反斜杠转义来生成原本在 Markdown 格式化语法中具有特殊意义的字面字符。

代码:

\*普通星号\*

预览:


*普通星号*


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

代码:

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

Inline HTML 行内HTML#

对于 Markdown 语法未涵盖的任何标记,你可以直接使用 HTML 本身。无需前缀或分隔符来指示从 Markdown 切换到 HTML;直接使用标签即可。

代码:

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

预览:


这是一个普通段落。

Foo

这是另一个普通段落。


注意,Markdown 格式化语法 不会在块级 HTML 标签内被处理

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

代码:

<span>**有效**</span>
<div>
**无效**
</div>

预览:


有效

**无效**
***
分享

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

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

部分信息可能已经过时

目录