Markdown's Grammar

unopread

Markdown 是一种轻量级的标记语言,可以与HTML交替使用,借助插件可以导出HTML、PDF等类型的文件。


Markdown语法

标题语法

在Markdown中,使用 # 号来表示对应的标题,几个 # 号对应几级标题

示例:

1
2
3
4
5
6
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

段落语法

段落由一行或多行连续的文本组成,段落之间用一个空行来分隔。在段落内不要随意换行,除非你希望产生一个换行(部分解析器在行尾两个空格处会生成<br>)。

示例:

1
2
3
这是第一个段落。

这是第二个段落。

换行语法

在Markdown中,想要实现换行而不产生新的段落,可以在行尾加上两个空格再回车,或者直接使用<br>标签。

示例:

1
2
3
4
这是第一行(此处有两个空格)  
这是第二行

第一行<br>第二行

强调语法

Markdown提供了多种强调文本的方式,也可以直接使用HTML标签,但需要注意标签必须正确闭合。

  • 斜体*斜体*_斜体_斜体
  • 粗体**粗体**__粗体__粗体
  • 粗斜体***粗斜体***___粗斜体___粗斜体
  • 删除线~~删除线~~删除线(详见后文删除线小节)
  • 也可内嵌HTML:<i>斜体</i><b>粗体</b>

错误示例:<i>fsdf<i><b>dfs</b><i> 未闭合)
正确写法:<i>fsdf</i><b>dfs</b>

完整演示:

1
2
3
这是 *斜体*,这是 **粗体**,这是 ***粗斜体***
这是 ~~被删除~~ 的文字。
也可用HTML:<i>斜体</i><b>粗体</b>

渲染效果:
这是 斜体,这是 粗体,这是 粗斜体
这是 被删除 的文字。
也可用HTML:斜体粗体

引用块语法

引用块(blockquote)使用 > 符号开头,可以嵌套多层,也可以包含其他Markdown元素。

示例:

1
2
3
4
5
> 这是一段引用
> 可以多行
>
> 空行仍然属于引用
>> 嵌套引用

渲染效果:

这是一段引用
可以多行

空行仍然属于引用

嵌套引用

列表语法

无序列表使用 -*+ 作为标记,后面跟一个空格。
有序列表使用数字加 . 再加空格。

示例:

1
2
3
4
5
6
7
8
9
- 项目一
- 项目二
- 子项目
- 子项目

1. 第一步
2. 第二步
1. 子步骤
2. 子步骤

渲染效果:

  • 项目一
  • 项目二
    • 子项目
    • 子项目
  1. 第一步
  2. 第二步
    1. 子步骤
    2. 子步骤

代码语法

行内代码使用单个反引号 ` 包围;代码块使用三个反引号(或三个波浪号)包围,并可以指定语言标识以获得语法高亮。

行内示例:
使用 print("Hello") 函数输出。

代码块示例:

1
2
3
```python
print("Hello, world!")
```

渲染效果:

1
print("Hello, world!")

分割线语法

使用三个或更多的 ---***___ 在单独一行即可生成分割线。

示例:

1
2
3
4
5
前面的内容

---

后面的内容

渲染效果:
前面的内容


后面的内容

链接语法

  • 行内式[显示文字](URL "可选标题")
  • 参考式:先定义 [id]: URL "标题",然后引用 [显示文字][id]
  • 自动链接:用尖括号包围URL或邮箱,如 <https://example.com><address@example.com>

示例:

1
2
3
4
5
6
这是一个 [行内链接](https://example.com "示例") 。
这是一个 [参考链接][ref] 。

[ref]: https://example.com

自动链接:<https://example.com>

渲染效果:
这是一个 行内链接
这是一个 参考链接

自动链接:https://example.com

图片语法

语法类似链接,在最前面加一个感叹号 !

  • 行内式:![替代文本](图片URL "可选标题")
  • 参考式:![替代文本][id],并定义 [id]: 图片URL "标题"

示例:

1
![Markdown图标](https://markdown-here.com/img/icon256.png "Markdown图标")

渲染效果:
Markdown图标

转义字符语法

若想显示Markdown中有特殊含义的字符,可以在前面加反斜杠 \
可转义字符包括:\ ` * _ { } [ ] ( ) # + - . ! | 等。

示例:

1
2
3
\* 这不是强调 \*
\# 这不是标题
\\ 反斜杠本身

渲染效果:
* 这不是强调 *
# 这不是标题
\ 反斜杠本身

内嵌HTML标签

Markdown允许直接插入HTML代码,用于实现更复杂的排版。块级元素(如<div>, <table>, <pre>等)前后最好有空行,其内部的Markdown语法不会被处理;行内元素(如<span>, <i>, <b>等)则可以与Markdown混合使用,且其内部的Markdown有可能被解析(视具体解析器而定)。

示例:

1
2
3
4
5
6
7
8
9
10
这是普通段落。

<table>
<tr>
<td>HTML表格</td>
<td>第二列</td>
</tr>
</table>

可以使用 <span style="color:red;">红色文字</span><b>粗体</b>

渲染效果(取决于平台):
这是普通段落。

HTML表格 第二列

可以使用 红色文字粗体

注意:使用HTML标签时务必正确闭合,否则可能破坏页面布局。

表格语法

使用管道符 | 和连字符 - 可以创建表格。在分隔行中使用冒号 : 来设置列的对齐方式(左、中、右)。

示例:

1
2
3
4
| 左对齐 | 居中对齐 | 右对齐 |
| :--- | :---: | ---: |
| 单元格 | 单元格 | 单元格 |
| 数据 | 数据 | 数据 |

渲染效果:

左对齐 居中对齐 右对齐
单元格 单元格 单元格
数据 数据 数据

表格两端的竖线可以省略,但为清晰建议保留。

围栏代码语法

围栏代码块(fenced code blocks)使用三个反引号(```)或三个波浪号(~~~)作为开始与结束标记,可指定语言实现语法高亮。相比缩进代码块,它无需缩进、更易于书写。

示例:

1
2
3
4
5
```javascript
function greet(name) {
return `Hello, ${name}!`;
}
```

渲染效果:

1
2
3
function greet(name) {
return `Hello, ${name}!`;
}

若代码块内本身包含三个连续反引号,可使用更多数量的反引号作为外层标记,或改用波浪号。

脚注语法

脚注是不少编辑器支持的扩展语法,用于在页面底部添加注释。在需要添加脚注的文本处插入 [^标识],并在文档任意位置给出对应的定义 [^标识]: 脚注内容

示例:

1
2
3
Markdown非常灵活[^note]。

[^note]: 脚注内容会在支持该语法的编辑器底部显示。

渲染效果(需编辑器支持):
Markdown非常灵活^note

标题自定义锚点语法

某些Markdown处理器允许为标题定义自定义ID,以便创建锚点链接。在标题文本末尾添加 {#id} 即可。

示例:

1
### 小结 {#summary}

随后可通过 [跳转到小结](#summary) 实现页面内跳转。渲染出的HTML标题会带有 id="summary"

定义列表语法

定义列表(definition list)在某些扩展(如PHP Markdown Extra)中可用。术语独占一行,定义写在下一行,以冒号 : 开头。

示例:

1
2
3
4
5
6
术语 A
: 这是术语 A 的定义。

术语 B
: 这是术语 B 的第一种解释。
: 这是术语 B 的第二种解释。

渲染效果:

术语 A
这是术语 A 的定义。
术语 B
: 这是术语 B 的第一种解释。
这是术语 B 的第二种解释。

删除线语法

使用两个波浪号 ~~ 包围文本即可显示删除线(虽已在强调语法中提及,此处作为独立小节补充)。

示例:

1
~~这段文字已过时~~

渲染效果:这段文字已过时

任务列表语法

任务列表(task list)是GitHub Flavored Markdown (GFM) 的扩展,用于显示可勾选的清单。使用 - [ ] 表示未完成项,- [x] 表示已完成项。

示例:

1
2
3
- [ ] 阅读文档
- [x] 安装软件
- [ ] 开始编码

渲染效果:

  • 阅读文档
  • 安装软件
  • 开始编码

Emoji表情语法

在支持Emoji短码的编辑器中,可以通过 :表情名: 插入表情符号,也可直接使用Unicode表情字符。

示例:

1
2
:smile: :rocket: :+1:
直接输入:😄 🚀 👍

渲染效果:
:smile: :rocket: :+1:
直接输入:😄 🚀 👍

不同平台支持的短码可能略有差异,常用短码大多通用。

自动网站链接语法

用尖括号 < > 包裹URL或邮箱地址可将其自动转换为可点击链接。部分编辑器中裸URL也会被识别,但推荐显式使用尖括号以确保兼容。

示例:

1
2
<https://www.example.com>
<contact@example.com>

渲染效果:
https://www.example.com
contact@example.com

Markdown语法工具推荐

Typora

Typora 是一款所见即所得(WYSIWYG)的Markdown编辑器,无需预览窗口,直接在界面中呈现最终样式。它全面支持表格、代码高亮、数学公式(LaTeX)、流程图、脚注、目录自动生成等扩展语法,并可将文档导出为PDF、HTML、Word、图片等格式。界面极简、操作流畅,非常适合日常写作、笔记与文档整理。

Obsidian

Obsidian 是一款基于本地Markdown文件的知识库管理工具,采用双向链接和关系图谱功能,可以轻松构建个人Wiki和笔记网络。它原生支持实时预览、语法高亮、标签和页面内嵌,同时拥有海量社区插件,可扩展看板、日历、数据查询等高级功能。所有数据以纯Markdown文件存储在本地,安全且高度可移植。

VS Code

Visual Studio Code (简称 VS Code)是一款免费开源的代码编辑器,通过内置的Markdown预览功能和丰富的扩展生态,可以打造强大的Markdown写作环境。安装相关扩展(如 Markdown All in One、Markdownlint 等)后,可提供快捷键、目录自动生成、语法检查、格式化、导出为PDF/HTML等功能,特别适合需要编辑代码与文档频繁切换的开发者。