本文根据 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");预览:
这是一个标题。
- 这是第一个列表项。
- 这是第二个列表项。
下面是一段示例代码:
return shell_exec("echo $input | $markdown_script");
列表
Markdown 支持有序列表(编号列表)和无序列表(项目符号列表)。
无序列表
HTML 标签:<ul>
无序列表可以使用星号(*)、加号(+)和短横线(-)。
代码:
* 红色* 绿色* 蓝色预览:
- 红色
- 绿色
- 蓝色
以下写法与上面的效果相同:
代码:
+ 红色+ 绿色+ 蓝色以及:
代码:
- 红色- 绿色- 蓝色有序列表
HTML 标签:<ol>
有序列表使用数字加句点表示:
代码:
1. 第一项2. 第二项3. 第三项预览:
- 第一项
- 第二项
- 第三项
有时候,写普通文本时可能会意外触发有序列表,例如:
代码:
1986. 多么精彩的赛季。预览:
- 多么精彩的赛季。
可以使用**反斜杠转义(\)**句点:
代码:
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"> © 2004 Foo Corporation </div>预览:
<div class="footer"> © 2004 Foo Corporation</div>下面介绍的围栏代码块和语法高亮属于 Markdown 的扩展功能。
你也可以使用这些方式来编写代码块。
围栏代码块
只需要使用 ``` 包裹代码(如下所示),就不需要再使用 4 个空格进行缩进。
代码:
下面是一个示例:
```function test() { console.log("注意这个函数前面的空行了吗?");}```预览:
下面是一个示例:
function test() { console.log("注意这个函数前面的空行了吗?");}语法高亮
在围栏代码块中添加可选的语言标识符,Mizuki 就会根据对应的编程语言进行语法高亮。
支持的语言可以参考:
代码:
```rubyrequire '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预览:
| 左对齐 | 居中 | 右对齐 |
|---|---|---|
| aaa | bbb | ccc |
| ddd | eee | fff |
| A | B |
|---|---|
| 123 | 456 |
| A | B |
|---|---|
| 12 | 45 |
行级元素
链接
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][]预览:
强调
HTML 标签:<em>、<strong>
Markdown 使用**星号(*)和下划线(_)**来表示强调。
使用一对分隔符表示 <em>,通常显示为斜体;
使用两对分隔符表示 <strong>,通常显示为粗体。
代码:
*单个星号*
_单个下划线_
**两个星号**
__两个下划线__预览:
单个星号
单个下划线
两个星号
两个下划线
但是,如果在 * 或 _ 两侧添加空格,它们就会被当作普通的星号或下划线,而不会被解释为强调符号。
也可以使用反斜杠对它们进行转义:
代码:
\*这段文字两侧是普通的星号\*预览:
*这段文字两侧是普通的星号*
行内代码
HTML 标签:<code>
使用**反引号(`)**包裹代码即可创建行内代码。
代码:
使用 `printf()` 函数。预览:
使用 printf() 函数。
如果需要在行内代码中包含一个普通的反引号字符,可以使用多个反引号作为开始和结束分隔符:
代码:
``这里包含一个普通的反引号 (`)。``预览:
这里包含一个普通的反引号 (`)。
包围行内代码的反引号分隔符中可以包含空格——即开始分隔符之后有一个空格,结束分隔符之前也有一个空格。
这样就可以在行内代码的开头或结尾放置普通的反引号字符:
代码:
行内代码中的单个反引号:`` ` ``
行内代码中的反引号字符串:`` `foo` ``预览:
行内代码中的单个反引号:`
行内代码中的反引号字符串:`foo`
图片
HTML 标签:<img />
Markdown 使用一种类似链接的语法来插入图片,并且同样支持两种方式:行内图片和引用式图片。
行内图片
行内图片的语法如下:
其中标题是可选的。
代码:

预览:
也就是说:
- 一个感叹号:
!; - 后面跟一组方括号,其中填写图片的
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>预览:
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>预览:
这里会生效
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时