Markdown 扩展语法


总览

即便 John Gruber 的原始设计文档中所列出的 Markdown 基本语法 已经囊括了许多满足日常所需的元素,但对于某些人来说仍然不够。这就是 Markdown 扩展语法出现的缘由。

一些个人和组织通过添加表格(tables)、代码块(code blocks)、语法高亮、将 URL 自动转换为链接和脚注(footnotes)等额外的元素来扩展 Markdown 的基本语法。这些额外添加的元素可以通过使用构建于 Markdown 之上的轻量级标记语言或通过向兼容的 Markdown 解析器添加扩展来启用这些新元素。


表格

如需添加表格,请使用三个或更多个连字符( — )来为每个列创建表头,并使用管道符( | )来分隔每个列。为兼容考虑,你还应该在行的两侧添加管道符。

通过在标题行中的连字符( hyphens )的左侧或右侧或两侧添加冒号( : ),可以将对应列中的文本向左或向右或居中对齐。

示例

|First Header | Second Header | Third Header|
|:----------- | :-----------: | -----------:|
|Content Cell | Content Cell | Content Cell|
|Content Cell | Content Cell | Content Cell|

效果

First Header Second Header Third Header
Content Cell Content Cell Content Cell
Content Cell Content Cell Content Cell

最佳实践

你可以为表格中的文本设置格式。例如,可以添加 链接( links )、代码( code )(注意,只能为单词或短语添加反引号 ( ` ) ,不能添加 代码块( code blocks ))以及 强调( emphasis )。

不支持的格式包括标题( headings )、块引用( blockquotes )、列表( lists )、水平分割线( horizontal rules )、图片( images )或 HTML 标记。


代码块

Markdown 的基本语法允许你通过缩进四个空格或一个制表符来创建 代码块 。如果你觉得不方便,可以试试围栏代码块( fenced code blocks )。根据 Markdown 解析器或编辑器的不同,代码块的前后可以使用三个反引号( ``` )或三个波浪号( ~~~ )来标记围栏代码块。

许多 Markdown 解析器都支持围栏代码块的语法高亮功能。此功能允许你为编写代码所用的编程语言添加带颜色的语法高亮显示。如需添加语法高亮,请在围栏代码块前的反引号旁指定所用的编程语言。

示例

~~~C
#include <stdio.h>
int main() {
// 打印 Hello, World!
printf("Hello, World!\n");
return 0;
}
~~~

效果

1
2
3
4
5
6
#include <stdio.h>
int main() {
// 打印 Hello, World!
printf("Hello, World!\n");
return 0;
}

删除线

你可以贯穿单词的中心放一条横线从而删除这些单词。其效果看起来是这样的: 这样 。此功能允许你标记某些单词是错误的,不应该出现在文档中。在单词前面和后面分别放置两个波浪号( ~~ ) 来表示删除这些单词。

示例

~~这是删除的文字~~

效果

这是删除的文字


任务列表

任务列表(task lists 或者 checklists)允许你创建带有复选框的项目列表。在支持任务列表的 Markdown 应用程序中,复选框将显示在内容旁边。要创建任务列表,请在任务列表项前面添加破折号(-)和中间带空格的方括号([ ])。要选中复选框,请在方括号中间添加一个 x ,即([\x])。

示例

- [x] 复选1
- [x] 复选2
- [ ] 复选3

效果

  • 复选1
  • 复选2
  • 复选3

表情符号

有两种方式可以将表情符号添加到 Markdown 文档中:将表情符号复制并粘贴到 Markdown 格式的文本中。

在大多数情况下,你可以简单地从 Emojipedia 等来源复制表情符号,然后将其粘贴到文档中。许多 Markdown 应用程序就会自动以 Markdown 格式的文本来显示表情符号。从 Markdown 应用程序导出的 HTML 和 PDF 文件也是可以显示表情符号的。

示例

这是个表情: ❤️

效果

这是个表情: ❤️


公式

示例

$$
e=mc^2
$$

$$
\frac{\partial u}{\partial t}
= h^2 \left( \frac{\partial^2 u}{\partial x^2} +
\frac{\partial^2 u}{\partial y^2} +
\frac{\partial^2 u}{\partial z^2}\right)
$$

$$
cos 2\theta = \cos^2 \theta - \sin^2 \theta = 2 \cos^2 \theta - 1
$$

$$
\begin{aligned}
\dot{x} & = \sigma(y-x) \\\\
\dot{y} & = \rho x - y - xz \\\\
\dot{z} & = -\beta z + xy
\end{aligned}
$$

$$
\begin{aligned}
a &= b + c \\\\
&= d + e + f + g \\\\
&= h + i
\end{aligned}
$$

效果

$$
e=mc^2
$$

$$
\frac{\partial u}{\partial t}
= h^2 \left( \frac{\partial^2 u}{\partial x^2} +
\frac{\partial^2 u}{\partial y^2} +
\frac{\partial^2 u}{\partial z^2}\right)
$$

$$
cos 2\theta = \cos^2 \theta - \sin^2 \theta = 2 \cos^2 \theta - 1
$$

$$
\begin{aligned}
\dot{x} & = \sigma(y-x) \\
\dot{y} & = \rho x - y - xz \\
\dot{z} & = -\beta z + xy
\end{aligned}
$$

$$
\begin{aligned}
a &= b + c \\
&= d + e + f + g \\
&= h + i
\end{aligned}
$$