Markdown语法详解

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后将其转换为结构化的 HTML(或其他格式)。它的设计哲学是“易读易写”,因此语法非常直观。

以下是 Markdown 语法的详细总结:


1. 标题 (Headings)

使用 # 符号来创建标题。# 的数量决定了标题的级别(从 H1 到 H6)。

  
# 这是一级标题 (H1)
  
## 这是二级标题 (H2)
  
### 这是三级标题 (H3)
  
#### 这是四级标题 (H4)
  
##### 这是五级标题 (H5)
  
###### 这是六级标题 (H6)
  

渲染效果:

这是一级标题 (H1)

这是二级标题 (H2)

这是三级标题 (H3)

这是四级标题 (H4)

这是五级标题 (H5)
这是六级标题 (H6)

2. 段落 (Paragraphs)

段落由一个或多个连续的文本行组成,它们之间由一个或多个空行分隔。

  
这是一个段落。
  
这是同一段落的第二行。
  

  
这是另一个段落。
  

渲染效果:

这是一个段落。

这是同一段落的第二行。

这是另一个段落。


3. 换行 (Line Breaks)

  • 软换行 (Soft Break): 单个回车(Enter)通常会被 Markdown 渲染器忽略,视为一个空格。

  • 硬换行 (Hard Break): 在行尾添加两个或更多空格,然后回车。或者,有些解析器支持在行尾添加 \ 符号。

  
这是第一行  
  
这是第二行 (行尾有两个空格)
  

  
这是第三行\
  
这是第四行 (行尾有反斜杠,部分解析器支持)
  

渲染效果:

这是第一行

这是第二行 (行尾有两个空格)

这是第三行\

这是第四行 (行尾有反斜杠,部分解析器支持)


4. 强调 (Emphasis)

  • 斜体 (Italic): 使用一个星号 * 或一个下划线 _ 包裹文本。

  • 粗体 (Bold): 使用两个星号 ** 或两个下划线 __ 包裹文本。

  • 粗斜体 (Bold Italic): 使用三个星号 *** 或三个下划线 ___ 包裹文本。

  
*斜体文本* 或 _斜体文本_
  
**粗体文本** 或 __粗体文本__
  
***粗斜体文本*** 或 ___粗斜体文本___
  

渲染效果:

斜体文本斜体文本

粗体文本粗体文本

粗斜体文本粗斜体文本


5. 列表 (Lists)

5.1 无序列表 (Unordered Lists)

使用星号 *、加号 + 或连字符 - 作为列表项标记。

  
* 列表项一
  
* 列表项二
  
  * 嵌套列表项二点一
  
  * 嵌套列表项二点二
  
    * 更深一层
  
+ 列表项三
  
- 列表项四
  

渲染效果:

  • 列表项一

  • 列表项二

    • 嵌套列表项二点一

    • 嵌套列表项二点二

      • 更深一层
  • 列表项三
  • 列表项四

5.2 有序列表 (Ordered Lists)

使用数字后跟一个点 . 作为列表项标记。数字本身不重要,Markdown 会自动排序。

  
1. 列表项一
  
2. 列表项二
  
   1. 嵌套列表项二点一
  
   2. 嵌套列表项二点二
  
3. 列表项三
  

渲染效果:

  1. 列表项一

  2. 列表项二

    1. 嵌套列表项二点一

    2. 嵌套列表项二点二

  3. 列表项三

5.3 任务列表 (Task Lists - GitHub Flavored Markdown)

使用 - [ ]- [x] 来创建待办事项列表。

  
- [x] 完成任务一
  
- [ ] 未完成任务二
  
- [ ] 未完成任务三
  

渲染效果:

  • 完成任务一

  • 未完成任务二

  • 未完成任务三


6. 链接 (Links)

6.1 行内式链接 (Inline Links)

[链接文本](链接地址 "可选标题")

  
访问 [Google](https://www.google.com "谷歌搜索")。
  

渲染效果:

访问 Google

6.2 参考式链接 (Reference Links)

[链接文本][引用ID]

[引用ID]: 链接地址 "可选标题"

  
这是一个 [示例链接][1]。
  
另一个链接是 [百度][baidu]。
  

  
[1]: https://www.example.com "示例网站"
  
[baidu]: https://www.baidu.com
  

渲染效果:

这是一个 [示例链接][1]。

另一个链接是 [百度][baidu]。


7. 图片 (Images)

![替代文本](图片地址 "可选标题")

图片语法与链接类似,只是在前面多了一个 !

  
![Markdown Logo](https://markdown.com.cn/assets/img/markdown-logo.png "Markdown 标志")
  

渲染效果:

Markdown Logo


8. 代码 (Code)

8.1 行内代码 (Inline Code)

使用反引号 ` 包裹代码。

  
这是一个 `console.log("Hello, World!");` 的例子。
  

渲染效果:

这是一个 console.log("Hello, World!"); 的例子。

8.2 代码块 (Code Blocks)

使用三个反引号 ``` 包裹代码块,可以在第一个反引号后指定语言以实现语法高亮。

  
```python
  
def hello_world():
  
    print("Hello, Markdown!")
  
  
const message = "Hello, JavaScript!";
  
console.log(message);
  
  

  
**渲染效果:**
  

  
```python
  
def hello_world():
  
    print("Hello, Markdown!")
  
  
const message = "Hello, JavaScript!";
  
console.log(message);
  

9. 引用 (Blockquotes)

使用 > 符号来创建引用块。

  
> 这是一段引用文本。
  
> 可以包含多行。
  
>
  
> > 也可以嵌套引用。
  
> > 嵌套的引用。
  

渲染效果:

这是一段引用文本。

可以包含多行。

也可以嵌套引用。

嵌套的引用。


10. 分隔线 (Horizontal Rules)

使用三个或更多个连字符 ---、星号 *** 或下划线 ___ 来创建水平分隔线。

  
---
  
***
  
___
  

渲染效果:





11. 表格 (Tables - GitHub Flavored Markdown)

使用 | 分隔列,使用 --- 分隔表头和表体。冒号 : 可以控制对齐方式。

  
| 表头一 | 表头二 | 表头三 |
  
| :----- | :----: | -----: |
  
| 左对齐 | 居中   | 右对齐 |
  
| 内容一 | 内容二 | 内容三 |
  

渲染效果:

| 表头一 | 表头二 | 表头三 |

| :----- | :----: | -----: |

| 左对齐 | 居中 | 右对齐 |

| 内容一 | 内容二 | 内容三 |


12. 删除线 (Strikethrough - GitHub Flavored Markdown)

使用两个波浪线 ~~ 包裹文本。

  
~~这段文字将被删除~~
  

渲染效果:

这段文字将被删除


13. 自动链接 (Automatic Links)

Markdown 会自动将 URL 和邮箱地址转换为链接,如果它们被尖括号 <> 包裹。

  
<https://www.example.com>
  
<mailto:test@example.com>
  

渲染效果:

https://www.example.com

mailto:test@example.com


14. 转义字符 (Escaping Characters)

如果想显示 Markdown 语法字符本身,而不是让它被解析,可以在字符前加上反斜杠 \

  
\* 这不是一个列表项
  
\_ 这不是斜体\_
  
\` 这不是代码\`
  

渲染效果:

* 这不是一个列表项

_ 这不是斜体_

` 这不是代码`


15. HTML 混合 (HTML Mixing)

Markdown 允许直接在文档中嵌入 HTML 代码。这在 Markdown 不支持某些特定功能时非常有用。

  
<p style="color: red;">这段文字是红色的。</p>
  
<br>
  
<span>这是一个 span 标签。</span>
  

渲染效果:

<p style="color: red;">这段文字是红色的。</p> <br>

<span>这是一个 span 标签。</span>


总结与注意事项

  • Markdown 方言 (Flavors): 上述语法大部分是标准 Markdown (CommonMark) 的内容。但有些特性(如表格、任务列表、删除线)是 GitHub Flavored Markdown (GFM) 或其他扩展方言特有的。在不同的 Markdown 解析器中,支持的特性可能有所不同。

  • 空格和空行: Markdown 对空格和空行比较敏感。例如,段落之间必须有空行,列表项的缩进也很重要。

  • 可读性: Markdown 的核心是可读性。即使不渲染,纯文本的 Markdown 文档也应该易于理解。

  • 工具: 有许多 Markdown 编辑器和工具可以帮助你编写和预览 Markdown 文档,例如 Typora, VS Code, Obsidian, Notion 等。

掌握这些语法,你就可以高效地编写各种结构化文档了!