一、Markdown 是什么?
Markdown 是一种轻量级标记语言,由约翰·格鲁伯(John Gruber)和亚伦·斯沃茨(Aaron Swartz)于 2004 年共同创建。它的设计目标是让用户能够使用易读易写的纯文本格式编写文档,然后转换成结构化的 HTML 页面。
1.1 Markdown 的核心优势
简洁性:Markdown 的语法极其简单,学习成本低,几分钟就能掌握基本用法。相比 HTML 的复杂标签,Markdown 使用直观的符号(如 #、*、>)来标记文本格式。
可读性:Markdown 文档本身就是易读的纯文本,即使不经过渲染也能清晰理解内容结构。这使得它在版本控制系统中表现优异,因为代码差异对比非常直观。
跨平台兼容:Markdown 文件可以在任何文本编辑器中打开和编辑,支持 Windows、macOS、Linux 等所有主流操作系统。
多用途:从技术文档、博客文章到学术论文、演示文稿,Markdown 都能胜任。GitHub、GitLab、Stack Overflow 等平台都原生支持 Markdown。
1.2 Markdown 的应用场景
技术文档:项目 README、API 文档、代码注释等。GitHub 的 README.md 文件就是使用 Markdown 编写的。
博客写作:许多静态网站生成器(如 Hexo、Hugo、Jekyll)都支持 Markdown,可以直接将 Markdown 文件转换为静态网页。
学术写作:结合 Pandoc 工具,可以将 Markdown 转换为 PDF、Word、LaTeX 等多种格式。
笔记管理:Obsidian、Notion、Typora 等笔记应用都采用 Markdown 作为核心编辑格式。
邮件撰写:部分邮件客户端支持 Markdown,可以编写格式化的邮件内容。
二、基础语法
2.1 标题
Markdown 支持六级标题,使用 #符号表示:
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
最佳实践:
- 在
#后加一个空格 - 建议使用
# 标题而不是#标题 - 避免跳过标题层级(如从二级直接到四级)
2.2 段落与换行
段落:使用一个或多个空行分隔段落。
这是第一个段落。
这是第二个段落。
换行:在行尾添加两个空格或使用反斜杠 “。
这是第一行。
这是第二行。
这是第一行。\
这是第二行。
2.3 强调
粗体:使用两个星号 **或两个下划线 __
**粗体文本**
__粗体文本__
斜体:使用一个星号 *或一个下划线 _
*斜体文本*
_斜体文本_
粗斜体:使用三个星号 ***或三个下划线 ___
***粗斜体文本***
___粗斜体文本___
删除线:使用两个波浪号 ~~
~~删除线文本~~
2.4 列表
无序列表:使用 -、+或 *
- 项目一
- 项目二
- 子项目一
- 子项目二
- 项目三
有序列表:使用数字加英文句点
1. 第一项
2. 第二项
1. 子项一
2. 子项二
3. 第三项
任务列表:使用 - [ ]和 - [x]
- [ ] 未完成任务
- [x] 已完成任务
2.5 引用
使用 >符号表示引用:
> 这是一个引用块。
>
> 引用可以包含多个段落。
>
> > 嵌套引用也是支持的。
2.6 代码
行内代码:使用反引号 `
使用 `console.log()` 输出信息。
代码块:使用三个反引号 ```或缩进四个空格
```javascript
function hello() {
console.log('Hello, Markdown!');
}
```
语法高亮:在代码块后指定语言名称
```python
def hello():
print("Hello, Markdown!")
```
2.7 水平分割线
使用三个或更多的星号 ***、破折号 ---或下划线 ___
***
---
___
2.8 链接
行内链接:[链接文本](链接地址 "标题")
[Google](https://www.google.com "Google 搜索")
参考式链接:
[Google][1]
[1]: https://www.google.com "Google 搜索"
自动链接:使用尖括号
<https://www.google.com>
<email@example.com>
2.9 图片
行内图片:

参考式图片:
![Markdown Logo][logo]
[logo]: https://example.com/logo.png "Markdown Logo"
2.10 转义字符
使用反斜杠 “转义特殊字符:
\* 这不是斜体 \*
\# 这不是标题
三、扩展语法
3.1 表格
使用竖线 |和连字符 -创建表格:
| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 内容1 | 内容2 | 内容3 |
| 内容4 | 内容5 | 内容6 |
对齐方式:
| 左对齐 | 居中对齐 | 右对齐 |
|:------|:-------:|------:|
| 内容1 | 内容2 | 内容3 |
3.2 脚注
使用 [^标识符]添加脚注:
这是一个带有脚注的句子。
: 这是脚注的内容。
3.3 定义列表
部分 Markdown 解析器支持定义列表:
术语1
: 定义1
术语2
: 定义2
3.4 删除线
~~删除的文本~~
3.5 任务列表
- [x] 已完成任务
- [ ] 未完成任务
3.6 表情符号
:smile: :heart: :rocket:
3.7 高亮文本
==高亮文本==
3.8 下标和上标
H~2~O
X^2^
3.9 自动链接
https://example.com
四、HTML 支持
Markdown 支持内嵌 HTML 代码,当 Markdown 语法无法满足需求时,可以直接使用 HTML:
<details>
<summary>点击展开</summary>
这里是详细内容。
</details>
常用 HTML 标签:
<br>:强制换行<hr>:水平分割线<div>:块级容器<span>:行内容器<kbd>:键盘输入<mark>:高亮文本<sup>:上标<sub>:下标
五、数学公式
5.1 行内公式
使用 $包裹公式:
行内公式:$E = mc^2$
5.2 块级公式
使用 `$$
` 包裹公式:
$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$
5.3 常用数学符号
\alpha \beta \gamma \delta \epsilon \zeta \eta \theta \iota \kappa \lambda \mu \nu \xi \pi \rho \sigma \tau \upsilon \phi \chi \psi \omega
\sum_{i=1}^{n} i = \frac{n(n+1)}{2}
\prod_{i=1}^{n} i = n!
\lim_{x \to 0} \frac{\sin x}{x} = 1
\frac{a}{b} \times \frac{c}{d} = \frac{ac}{bd}
\sqrt[3]{x^3 + y^3}
六、流程图与图表
6.1 Mermaid 流程图
mermaid
graph TD
A[开始] –> B{判断}
B –>|是| C[执行操作]
B –>|否| D[结束]
C –> D
6.2 Mermaid 序列图
mermaid
sequenceDiagram
participant A as 用户
participant B as 服务器
A->>B: 发送请求
B->>A: 返回响应
6.3 Mermaid 甘特图
mermaid
gantt
title 项目计划
dateFormat YYYY-MM-DD
section 阶段一
任务一 :a1, 2025-01-01, 30d
任务二 :after a1, 20d
section 阶段二
任务三 :2025-02-01, 12d
任务四 :24d
6.4 PlantUML 类图
plantuml
@startuml
class User {
-id: int
-name: string
+login(): void
}
class Order {
-id: int
-userId: int
+create(): void
}
User “1” — “*” Order
@enduml
七、YAML Front Matter
YAML Front Matter 用于在 Markdown 文件头部添加元数据:
---
title: "文章标题"
date: 2025-01-01
tags:
- Markdown
- 教程
categories: 技术
draft: false
---
常用字段:
title:文章标题date:发布日期tags:标签列表categories:分类draft:是否为草稿description:描述author:作者
八、工具与编辑器
8.1 桌面编辑器
Typora:所见即所得的 Markdown 编辑器,支持实时预览。
Visual Studio Code:强大的代码编辑器,通过扩展支持 Markdown 预览和编辑。
Obsidian:基于 Markdown 的知识管理工具,支持双向链接。
Notion:支持 Markdown 的在线笔记应用。
8.2 在线编辑器
StackEdit:功能丰富的在线 Markdown 编辑器。
Dillinger:简洁的在线 Markdown 编辑器。
Markdown Here:浏览器扩展,可以在邮件和网页中渲染 Markdown。
8.3 命令行工具
Pandoc:文档转换工具,支持 Markdown 到多种格式的转换。
# 转换为 PDF
pandoc input.md -o output.pdf
# 转换为 Word
pandoc input.md -o output.docx
# 转换为 HTML
pandoc input.md -o output.html
Markdownlint:Markdown 语法检查工具。
# 安装
npm install -g markdownlint-cli
# 检查文件
markdownlint README.md
九、最佳实践
9.1 文件命名规范
- 使用小写字母和连字符
- - 避免使用空格和特殊字符
- 使用有意义的文件名
# 推荐
getting-started-with-markdown.md
# 不推荐
Getting Started With Markdown.md
getting_started_with_markdown.md
9.2 代码块规范
- 为代码块指定语言
- 保持代码块简洁
- 添加必要的注释
```javascript
// 计算阶乘
function factorial(n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
```
9.3 链接管理
- 使用参考式链接管理长链接
- 保持链接列表在文件底部
[Google][google]
[GitHub][github]
[google]: https://www.google.com
[github]: https://github.com
9.4 图片优化
- 使用图床服务存储图片
- 为图片添加替代文本
- 压缩图片以减少文件大小
9.5 文档结构
- 使用清晰的标题层级
- 保持段落简短
- 使用列表和表格组织内容
十、常见问题与解决方案
10.1 兼容性问题
问题:不同平台的 Markdown 解析器支持不同的扩展语法。
解决方案:
- 使用标准 Markdown 语法
- 避免使用特定平台的扩展语法
- 在文档中说明兼容性要求
10.2 中文排版
问题:中英文混排时的空格问题。
解决方案:
- 中英文之间添加空格
- 使用全角标点符号
# 推荐
Markdown 是一种轻量级标记语言。
# 不推荐
Markdown是一种轻量级标记语言。
10.3 表格对齐
问题:表格内容过长导致对齐混乱。
解决方案:
- 使用 HTML 表格
- 将长内容拆分为多行
- 使用
<br>标签换行
10.4 代码块嵌套
问题:在代码块中嵌套 Markdown 代码。
解决方案:
- 使用更多的反引号包裹
- 使用 HTML 实体转义
markdown
console.log('Hello');
10.5 特殊字符转义
问题:特殊字符被错误解析。
解决方案:
- 使用反斜杠转义
- 使用 HTML 实体
\* 这不是斜体 \*
<div> 这不是 HTML 标签 </div>
十一、进阶技巧
11.1 自定义 CSS
在 Markdown 中内嵌 CSS:
<style>
.custom-style {
color: red;
font-weight: bold;
}
</style>
<span class="custom-style">自定义样式文本</span>
11.2 锚点链接
创建页面内跳转链接:
[跳转到标题](#标题)
## 标题
11.3 折叠内容
使用 HTML 的 <details>标签:
<details>
<summary>点击展开</summary>
这里是详细内容。
</details>
11.4 注释
使用 HTML 注释:
<!-- 这是注释,不会显示 -->
11.5 变量替换
部分工具支持变量替换:
{{ title }}
{{ date }}
十二、总结
Markdown 作为一种轻量级标记语言,凭借其简洁、易读、跨平台的特性,已经成为技术文档、博客写作、笔记管理等场景的首选格式。通过掌握基础语法和扩展功能,结合合适的工具链,可以大幅提升文档编写效率。
核心要点回顾:
- 标题使用
#符号,从一级到六级 - 段落用空行分隔,换行用两个空格
- 强调使用
*和**,列表使用-和1. - 代码块用三个反引号,链接用
[]() - 表格、数学公式、流程图等扩展语法需要特定工具支持
- 使用 YAML Front Matter 添加元数据
- 遵循最佳实践,保持文档可读性和可维护性
学习建议:
- 从基础语法开始,逐步掌握扩展功能
- 选择适合自己的编辑器,提高编写效率
- 在实际项目中应用,不断积累经验
- 关注 Markdown 生态发展,学习新工具和技巧
Markdown 不仅仅是一种标记语言,更是一种思维方式。它鼓励我们专注于内容本身,而不是格式排版。通过 Markdown,我们可以更高效地表达思想,更清晰地组织信息,更便捷地分享知识。
若内容若侵犯到您的权益,请发送邮件至:platform_service@jienda.com我们将第一时间处理!
所有资源仅限于参考和学习,版权归JienDa作者所有,更多请访问JienDa首页。
