Markdown 教程
这是一个 Markdown 示例,展示如何编写 Markdown 文件。本文档整合了核心语法和扩展语法(GFM)。
块级元素
段落与换行
段落
HTML 标签:<p>
一个或多个空行即可分隔段落。(空行是指只包含空格或制表符的行。)
代码:
This will beinline.
This is second paragraph.预览:
This will be inline.
This is second paragraph.
换行
HTML 标签:<br />
在行尾添加两个或更多空格即可换行。
代码:
This will be notinline.预览:
This will be not
inline.
标题
Markdown 支持两种风格的标题:Setext 和 atx。
Setext 风格
HTML 标签:<h1>、<h2>
使用**等号(=)作为 <h1> 的下划线,使用连字符(-)**作为 <h2> 的下划线,数量不限。
代码:
This is an H1=============This is an H2-------------预览:
This is an H1
This is an H2
atx 风格
HTML 标签:<h1>、<h2>、<h3>、<h4>、<h5>、<h6>
在行首使用 1-6 个井号(#),分别对应 <h1> 到 <h6>。
代码:
# This is an H1## This is an H2###### This is an H6预览:
This is an H1
This is an H2
This is an H6
你也可以选择性地”闭合” atx 风格的标题。闭合的井号不需要与开头的井号数量匹配。
代码:
# This is an H1 ### This is an H2 ##### This is an H3 ######预览:
This is an H1
This is an H2
This is an H3
引用
HTML 标签:<blockquote>
Markdown 使用邮件风格的 > 字符来表示引用。建议在每行前都加上 >,效果最佳。
代码:
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.>> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse> id sem consectetuer libero luctus adipiscing.预览:
This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse id sem consectetuer libero luctus adipiscing.
Markdown 也允许你偷懒,只在硬换行段落的第一行前加 >。
代码:
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisseid sem consectetuer libero luctus adipiscing.预览:
This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse id sem consectetuer libero luctus adipiscing.
引用可以嵌套(即引用中的引用),只需添加额外的 > 层级即可。
代码:
> This is the first level of quoting.>> > This is nested blockquote.>> Back to the first level.预览:
This is the first level of quoting.
This is nested blockquote.
Back to the first level.
引用中可以包含其他 Markdown 元素,包括标题、列表和代码块。
代码:
> ## This is a header.>> 1. This is the first list item.> 2. This is the second list item.>> Here's some example code:>> return shell_exec("echo $input | $markdown_script");预览:
This is a header.
- This is the first list item.
- This is the second list item.
Here’s some example code:
return shell_exec("echo $input | $markdown_script");
列表
Markdown 支持有序(编号)列表和无序(项目符号)列表。
无序列表
HTML 标签:<ul>
无序列表使用星号(*)、**加号(+)和连字符(-)**作为标记。
代码:
* Red* Green* Blue预览:
- Red
- Green
- Blue
等同于:
代码:
+ Red+ Green+ Blue以及:
代码:
- Red- Green- Blue有序列表
HTML 标签:<ol>
有序列表使用数字后接句点:
代码:
1. Bird2. McHale3. Parish预览:
- Bird
- McHale
- Parish
有时可能会意外触发有序列表,例如这样写:
代码:
1986. What a great season.预览:
- What a great season.
你可以使用**反斜杠转义(\)**句点:
代码:
1986\. What a great season.预览:
1986. What a great season.
缩进
引用
要在列表项中放入引用,引用的 > 分隔符需要缩进:
代码:
* A list item with a blockquote:
> This is a blockquote > inside a list item.预览:
-
A list item with a blockquote:
This is a blockquote inside a list item.
代码块
要在列表项中放入代码块,代码块需要缩进两次——即 8 个空格或 2 个制表符:
代码:
* A list item with a code block:
<code goes here>预览:
-
A list item with a code block:
<code goes here>
嵌套列表
代码:
* A * A1 * A2* B* C预览:
- A
- A1
- A2
- B
- C
代码块
HTML 标签:<pre>
将代码块的每一行缩进至少 4 个空格或 1 个制表符。
代码:
This is a normal paragraph:
This is a code block.预览:
This is a normal paragraph:
This is a code block.代码块会持续到遇到未缩进的行(或文章末尾)为止。
在代码块中,**& 符号(&)和尖括号(< 和 >)**会自动转换为 HTML 实体。
代码:
<div class="footer"> © 2004 Foo Corporation </div>预览:
<div class="footer"> © 2004 Foo Corporation</div>下面的围栏代码块和语法高亮属于扩展语法,你可以用另一种方式来编写代码块。
围栏代码块
只需用 ``` 包裹代码(如下所示),就无需缩进四个空格。
代码:
Here's an example:
```function test() { console.log("notice the blank line before this function?");}```预览:
Here’s an example:
function test() { console.log("notice the blank line before this function?");}语法高亮
在围栏代码块中,添加可选的语言标识符,即可启用语法高亮(支持的语言)。
代码:
```rubyrequire '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 个分隔符。
代码:
| Left | Center | Right ||:-----|:------:|------:||aaa |bbb |ccc ||ddd |eee |fff |
A | B---|---123|456
A |B--|--12|45预览:
| Left | Center | Right |
|---|---|---|
| aaa | bbb | ccc |
| ddd | eee | fff |
| A | B |
|---|---|
| 123 | 456 |
| A | B |
|---|---|
| 12 | 45 |
行内元素
链接
HTML 标签:<a>
Markdown 支持两种链接风格:行内式和引用式。
行内式
行内链接格式如下:[链接文本](URL "标题")
标题是可选的。
代码:
This is [an example](http://example.com/ "Title") inline link.
[This link](http://example.net/) has no title attribute.预览:
This is an example inline link.
This link has no title attribute.
如果你引用的是同一服务器上的本地资源,可以使用相对路径:
代码:
See my [About](/about/) page for details.预览:
See my About page for details.
引用式
你可以预先定义链接引用。格式如下:[id]: URL "标题"
标题也是可选的。然后在正文中引用链接,格式如下:[链接文本][id]
代码:
[id]: http://example.com/ "Optional Title Here"This is [an example][id] reference-style link.预览:
This is an example reference-style link.
具体规则为:
- 方括号中包含链接标识符(不区分大小写,左侧最多可缩进三个空格);
- 后跟一个冒号;
- 后跟一个或多个空格(或制表符);
- 后跟链接的 URL;
- 链接 URL 可以选择用尖括号包围;
- 可选地后跟链接的标题属性,用双引号、单引号或圆括号包围。
以下三种链接定义是等价的:
代码:
[foo]: http://example.com/ "Optional Title Here"[foo]: http://example.com/ 'Optional Title Here'[foo]: http://example.com/ (Optional Title Here)[foo]: <http://example.com/> "Optional Title Here"使用空的方括号时,链接文本本身将作为名称。
代码:
[Google]: http://google.com/[Google][]预览:
强调
HTML 标签:<em>、<strong>
Markdown 使用**星号(*)和下划线(_)**作为强调标记。单个标记表示 <em>;双个标记表示 <strong>。
代码:
*single asterisks*
_single underscores_
**double asterisks**
__double underscores__预览:
single asterisks
single underscores
double asterisks
double underscores
但如果你在 * 或 _ 两侧加上空格,它将被视为字面的星号或下划线。
你可以使用反斜杠转义:
代码:
\*this text is surrounded by literal asterisks\*预览:
*this text is surrounded by literal asterisks*
代码
HTML 标签:<code>
用**反引号(`)**包裹。
代码:
Use the `printf()` function.预览:
Use the printf() function.
要在代码片段中包含字面反引号字符,可以使用多个反引号作为开头和结尾的分隔符:
代码:
``There is a literal backtick (`) here.``预览:
There is a literal backtick (`) here.
代码片段两端的反引号分隔符中可以包含空格——开头后一个,结尾前一个。这样你就可以在代码片段的开头或结尾放置字面反引号字符:
代码:
A single backtick in a code span: `` ` ``
A backtick-delimited string in a code span: `` `foo` ``预览:
A single backtick in a code span: `
A backtick-delimited string in a code span: `foo`
图片
HTML 标签:<img />
Markdown 的图片语法与链接语法类似,同样支持两种风格:行内式和引用式。
行内式
行内图片语法如下:
标题是可选的。
代码:

预览:


具体规则为:
- 一个感叹号:!;
- 后跟一对方括号,包含图片的替代属性文本;
- 后跟一对圆括号,包含图片的 URL 或路径,以及可选的用双引号或单引号包围的标题属性。
引用式
引用式图片语法如下:![替代文本][id]
代码:
[img id]: https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp "Optional title attribute"![Alt text][img id]预览:

删除线
HTML 标签:<del>
这是扩展语法。
GFM 添加了删除线文本的语法。
代码:
~~Mistaken text.~~预览:
Mistaken text.
其他
自动链接
Markdown 支持为 URL 和电子邮件地址创建”自动”链接的快捷方式:只需用尖括号包围 URL 或电子邮件地址即可。
代码:
<http://example.com/>
<address@example.com>预览:
GFM 会自动链接标准 URL。
代码:
https://github.com/emn178/markdown预览:
https://github.com/emn178/markdown
反斜杠转义
Markdown 允许你使用反斜杠转义来生成字面字符,否则这些字符在 Markdown 格式语法中具有特殊含义。
代码:
\*literal asterisks\*预览:
*literal asterisks*
Markdown 为以下字符提供反斜杠转义:
代码:
\ backslash` backtick* asterisk_ underscore{} curly braces[] square brackets() parentheses# hash mark+ plus sign- minus sign (hyphen). dot! exclamation mark行内 HTML
对于 Markdown 语法未涵盖的任何标记,你可以直接使用 HTML。无需在前面添加前缀或分隔符来表明你正在从 Markdown 切换到 HTML;直接使用标签即可。
代码:
This is a regular paragraph.
<table> <tr> <td>Foo</td> </tr></table>
This is another regular paragraph.预览:
This is a regular paragraph.
| Foo |
This is another regular paragraph.
请注意,Markdown 格式语法不会在块级 HTML 标签内进行处理。
与块级 HTML 标签不同,Markdown 语法会在行内标签内进行处理。
代码:
<span>**Work**</span>
<div> **No Work**</div>预览:
Work
支持与分享
如果这篇文章对你有帮助,欢迎支持作者或分享给更多人
部分信息可能已经过时






