Markdown 教程
这是一篇 Markdown 示例文章,演示常用语法以及 GitHub Flavored Markdown(GFM)的扩展能力。
块级元素
段落与换行
段落
HTML 标签:<p>
一个或多个空行会分隔段落。只包含空格或制表符的行也会被视为空行。
代码:
这一行会和下一行显示在同一个段落中。
这是第二个段落。预览:
这一行会和下一行 显示在同一个段落中。
这是第二个段落。
换行
HTML 标签:<br />
在一行末尾添加两个或更多空格,可以强制换行。
代码:
这一行会被强制换行。预览:
这一行会
被强制换行。
标题
Markdown 支持 Setext 和 atx 两种标题写法。
Setext
HTML 标签:<h1>、<h2>
使用等号(=)表示一级标题,使用短横线(-)表示二级标题。
代码:
一级标题========二级标题--------预览:
一级标题
二级标题
atx
HTML 标签:<h1> 到 <h6>
在行首使用 1 到 6 个井号(#),对应一级到六级标题。
代码:
# 一级标题## 二级标题###### 六级标题预览:
一级标题
二级标题
六级标题
你也可以在 atx 标题末尾添加井号作为闭合标记,末尾井号数量不必和开头一致。
代码:
# 一级标题 ### 二级标题 ##### 三级标题 ######预览:
一级标题
二级标题
三级标题
引用
HTML 标签:<blockquote>
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 个空格或 2 个制表符。
代码:
* 包含代码块的列表项:
<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>下面的围栏代码块和语法高亮属于扩展语法,也是在博客中更常用的写法。
围栏代码块
使用三个反引号包裹代码,就不需要手动缩进。
代码:
示例:
```function test() { console.log("代码块前面可以有一个空行");}```预览:
示例:
function test() { console.log("代码块前面可以有一个空行");}语法高亮
在围栏代码块后添加语言名称,可以启用对应语言的语法高亮。
代码:
```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>
表格是 GFM 扩展语法。使用竖线(|)分隔列,使用短横线(-)分隔表头和内容,使用冒号(:)控制对齐方式。
外侧竖线和对齐标记是可选的。用于分隔表头的每个单元格至少需要 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/) 页面了解详情。预览:
查看我的 关于 页面了解详情。
引用式链接
可以先定义链接引用,格式为 [id]: URL "标题",其中标题同样是可选的。使用时写作 [链接文本][id]。
代码:
[id]: http://example.com/ "可选标题"这是一个 [示例链接][id]。预览:
这是一个 示例链接。
链接定义由下面几部分组成:
- 方括号中的链接标识符,不区分大小写,最多可以从左侧缩进 3 个空格;
- 一个冒号;
- 一个或多个空格或制表符;
- 链接 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 的图片语法和链接语法相似,同样支持行内和引用式两种写法。
行内图片
行内图片格式:,其中标题是可选的。
代码:

预览:


图片语法由下面几部分组成:
- 一个感叹号
!; - 一组方括号,里面是图片的替代文本;
- 一组圆括号,里面是图片 URL 或路径,以及可选标题。
引用式图片
引用式图片格式:![替代文本][id]。
代码:
[img id]: https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp "可选标题"![替代文本][img id]预览:

删除线
HTML 标签:<del>
删除线是 GFM 扩展语法。
代码:
~~这是一段被删除的文字。~~预览:
这是一段被删除的文字。
其他语法
自动链接
Markdown 支持自动链接:将 URL 或邮箱地址放在尖括号中即可。
代码:
<http://example.com/>
<address@example.com>预览:
GFM 也会自动识别标准 URL。
代码:
https://github.com/emn178/markdown预览:
https://github.com/emn178/markdown
反斜杠转义
Markdown 可以使用反斜杠转义,让具有特殊含义的字符按原样显示。
代码:
\*普通星号\*预览:
*普通星号*
Markdown 支持转义下面这些字符:
代码:
\ 反斜杠` 反引号* 星号_ 下划线{} 花括号[] 方括号() 圆括号# 井号+ 加号- 减号或短横线. 英文句点! 感叹号行内 HTML
对于 Markdown 语法没有覆盖的标记,可以直接使用 HTML。你不需要额外声明正在从 Markdown 切换到 HTML,只要直接写标签即可。
代码:
这是一个普通段落。
<table> <tr> <td>Foo</td> </tr></table>
这是另一个普通段落。预览:
这是一个普通段落。
| Foo |
这是另一个普通段落。
需要注意的是,块级 HTML 标签内部不会处理 Markdown 格式语法。
与块级 HTML 不同,行内 HTML 标签内部会处理 Markdown 语法。
代码:
<span>**会生效**</span>
<div> **不会生效**</div>预览:
会生效
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时






