1 什么是 Markdown
Markdown 是一种轻量级标记语言,常以 .md
为文件后缀,旨在简化编辑文本的过程。传统上,人们使用超文本标记语言(HTML)来格式化网页上的文本,但是 HTML 语言的语法繁琐,不适合写作者快速阅读和编辑。相比传统的文本编写工具如 Word、Latex 等,Markdown 在纯文本文档中加入简单的排版元素,让写作者更专注于内容本身,而不必费心于繁琐的排版。
Markdown 的特点与优势在于:
- Markdown 文本无需依赖复杂的界面,可以在任何文本编辑器中创建和编辑。
- Markdown 文本支持与 HTML 语言混编,从而实现更复杂的排版效果。
- Markdown 文本可以很容易地转换成其他格式,如 HTML、PDF、LaTeX 等,这使得内容可以在不同的平台和设备上展示。
- Markdown 的纯文本属性天然支持跨平台并且兼容版本控制系统,使得团队协作和文档管理更加方便。
这使得 Markdown 非常适合快速创建博客文章、技术文档、笔记以及在线交流等各种场景。因此,许多写作者、开发者和博客作者都选择 Markdown 作为他们的首选工具。我们的 Open-EM 开源项目也自然而然选取 Markdown 格式作为我们开源文档的格式,并且会自动定期同步所有内容到项目 Web 主页来提供更好的阅读体验。
这里我们推荐你使用 Obsidian 作为你的 Markdown 编辑器,它是免费、跨平台、插件化的 Markdown 编辑器,功能非常丰富。此外,以下是一些主流的 Markdown 编辑器
- Typora,收费、轻型、跨平台的 Markdown 编辑器,支持自定义主题。
- VSCode 中的 Markdown All in One 插件,提供了基本的 Markdown 语法高亮和预览功能。
- GitHub、Notion、Wikipedia 等平台均内嵌 Markdown 编辑器。
2 Markdown 基本语法
以下我们介绍 Markdown 的基本语法,分别为:
标题
Markdown 提供了不同级别的标题来表示内容的层次结构。请在行首添加井号 #
来表示标题级别,井号 #
的数量决定了标题的级别。
Markdown 语法 | 预览效果 |
---|---|
# 一级标题 |
<h1>一级标题</h1> |
## 二级标题 |
<h2>二级标题</h2> |
### 三级标题 |
<h3>三级标题</h3> |
#### 四级标题 |
<h4>四级标题</h4> |
##### 五级标题 |
<h5>五级标题</h5> |
###### 六级标题 |
<h6>六级标题</h6> |
:heavy_exclamation_mark: 请在井号 #
和标题之间添加一个空格作为分隔。
文字样式
Markdown 提供了一些文字样式用于强调文本。请在文本的两侧使用相应的符号。
Markdown 语法 | 预览效果 |
---|---|
**粗体文本** |
粗体文本 |
*斜体文本* |
斜体文本 |
~~删除线文本~~ |
|
***粗斜体文本*** |
粗斜体文本 |
<u>下划线文本</u> |
下划线文本 |
:heavy_exclamation_mark: 星号 *
也可以替换为下划线 _
,但推荐使用星号 *
。
列表
Markdown 提供了有序列表和无序列表两种列表类型。
有序列表
对于有序列表,请在每个列表项前添加数字并紧跟一个英文句点。数字不必按数学顺序排列,但是列表应当从数字 1 起始。
- 第一项
- 第二项
- 第二项的第一项
- 第二项的第二项
- 第二项的第三项
- 第三项
无序列表
对于无序列表,请在每个列表项前面添加破折号 -
、星号 *
或加号 +
。
- 第一项
- 第二项
- 第二项的第一项
- 第二项的第二项
- 第二项的第三项
- 第三项
- 第三项的第一项
- 第三项的第二项
- 第三项的第三项
在列表中嵌套其他元素
要在保留列表连续性的同时在列表中添加另一种元素,请将该元素缩进四个空格或一个制表符(tab)。
-
列表中表示多行文本:
多行文本
-
列表中表示块引用
块引用
-
等等……
:heavy_exclamation_mark: 请在符号和内容之间添加一个空格作为分隔。
代码
Markdown 提供了行内代码和行间代码块。请在文本的两侧使用反引号 `
来表示行内代码。
Markdown 语法 | 预览效果 |
---|---|
\`行内代码\` |
行内代码 |
对于行间代码,请用在代码块之前和之后的行上使用三个反引号 \`\`\`
或三个波浪号 ~~~
。主流的 Markdown 编辑器都支持行间代码的语法高亮,请在第一个三个反引号 \`\`\`
后面指定编程语言。
def function(*args, **kwargs):
"""Markdown tutorial"""
return args, kwargs
块引用
Markdown 提供了块引用表示引用的文本。请在行首添加一个 >
符号。
块引用可以包含多个段落,也可以包含其他 Markdown 元素:
第一行
第二行
块引用可以包含其他 Markdown 元素,包括块引用。
请注意嵌套的块引用符号
>
的对齐。
超链接
Markdown 提供了三种基本的表示超链接的语法。不同的 Markdown 应用程序处理 URL 中间的空格方式不一样,请尽量使用 %20
代替链接中的空格。
Markdown 语法 | 预览效果 |
---|---|
[超链接显示名](超链接地址) |
超链接显示名 |
[超链接显示名](超链接地址 "超链接预览名") |
超链接显示名 |
<https://www.open-em.cn> |
https://www.open-em.cn |
预览名是当鼠标悬停在超链接上时显现的文字。
超链接也可以携带文字样式。
Markdown 语法 | 预览效果 |
---|---|
[**超链接显示名**](超链接地址) |
超链接显示名 |
**[超链接显示名](超链接地址)** |
超链接显示名 |
[`超链接显示名`](超链接地址) |
超链接显示名 |
:heavy_exclamation_mark: 主流的 Markdown 编辑器都会自动将 URL 转换为超链接,即可以忽略尖括号 <>
。如果不希望这样,请在 URL 两侧添加反引号 `
。
图片
Markdown 提供了插入图片的语法。类似于超链接的语法,在链接前添加一个感叹号 !
即可:。
Markdown 语法 | 预览效果 |
---|---|
![图片显示名](图片地址 "图片预览名") |
分隔线
Markdown 提供了分隔线分隔文本逻辑。请在单独一行上使用三个或多个星号 ***
、破折号 ---
或下划线 ___
,并且不能包含其他内容。
Markdown 语法 | 预览效果 |
---|---|
--- |
<hr></hr> |
*** |
<hr></hr> |
___ |
<hr></hr> |
转义字符
部分字符已经在 Markdown 语法中充当特殊字符,因此想表达这些字符原本的含义时,请在前面添加反斜杠号 \
。转义字符包括
\ * - _ ` [] {} () # + . ! | $
3 Markdown 拓展语法
Markdown 的基本语法并不足够应对基本的文本写作,因此又拓展出如下的语法:
它们被主流的 Markdown 编辑器所支持。
表格
Markdown 提供了简单的表格的表示方法。请使用三个或多个连字符 ---
创建每列的标题,并使用管道 |
分隔每列。
| Title 1 | Title 2 |
|---------|---------|
| Text 1 | Text 2 |
此外,你还可以修改连字符 ---
以修改表格每列的对齐方式。
Markdown 语法 | 效果 |
---|---|
:--- |
左对齐 |
:---: |
居中 |
---: |
右对齐 |
任务列表
Markdown 提供了特殊的复选框,它们的行为类似于无序列表,他们可以方便的被用于TODO List的记录。
Markdown 语法 | 效果 |
---|---|
- [ ] 未完成的任务 |
- [ ] 未完成的任务 |
- [x] 已完成的任务 |
- [x] 已完成的任务 |
脚注
Markdown 提供了脚注。请在方括号 []
内添加插入 ^
和标识符,标识符可以是数字或单词,但不能包含空白字符。样例1。
Emoji
Markdown 支持在文本中插入 Emoji 以丰富文本。
Markdown 语法 | 效果 |
---|---|
:white_check_mark: |
:white_check_mark: |
:x: |
:x: |
数学公式
主流的 Markdown 编辑器大多支持 Latex 语法的行内公式和行间公式块。类似于代码块,请在文本的两侧使用金钱符号 \$
来表示行内公式:$\hat{f}(\xi)=\int_{-\infty}^{+\infty}f(x)\mathrm{e}^{2\pi ix\xi}\mathrm{d}x$。
对于行间公式,请用在公式块之前和之后的行上使用两个金钱符号 \$
:
有关 Latex 公式,请参考:LaTeX/Mathematics。
在线 Latex 公式编辑器:Latex Codecogs。
4 Markdown 文档示例
-
以下我们列出了一些用 Markdown 编写的优秀开源项目的文档以供参考:
-
脚注样例。 ↩