Markdown写作技巧与排版艺术:从基础到专业
Markdown已成为技术写作的首选格式。从GitHub README到技术博客,从API文档到个人笔记,Markdown以其简洁的语法和优雅的排版赢得了开发者的青睐。本文将系统介绍Markdown的写作技巧和排版艺术。
目录
Markdown基础语法
标题
Markdown使用#表示标题,1-6个#对应H1-H6:
# 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题
排版建议:
- 文档只用一个H1标题(通常是文章标题)
- H2用于主要章节,H3用于子章节
- 不要跳级使用(如H2直接跳到H4)
- 标题前后各空一行,提高可读性
段落和换行
这是第一段文字。 这是第二段文字。 如果要在段落内换行, 在行末添加两个空格。
常见错误:
❌ 段落之间只有一个换行符 这是第一段 这是第二段 ✅ 段落之间空一行 这是第一段 这是第二段
强调
_斜体_ 或 _斜体_ **粗体** 或 **粗体** **_粗斜体_** 或 **_粗斜体_** ~~删除线~~
效果:
- 斜体文字
- 粗体文字
- 粗斜体
删除的文字
列表
无序列表:
- 项目1 - 项目2 - 子项目2.1 - 子项目2.2 - 项目3 或使用 \* 或 +: - 项目A * 项目B
有序列表:
1. 第一项 2. 第二项 1. 子项2.1 2. 子项2.2 3. 第三项
技巧:可以全部使用1.,渲染时会自动编号:
1. 第一项 1. 第二项 1. 第三项
任务列表(GitHub、GitLab支持):
- [x] 已完成任务 - [ ] 待办任务 - [ ] 另一个待办
链接
[链接文字](https://example.com) [带标题的链接](https://example.com '鼠标悬停显示') <!-- 参考式链接 --> 这是[参考链接][1]的示例。 [1]: https://example.com
自动链接:
<https://example.com> <email@example.com>
图片
  <!-- 参考式图片 --> ![Logo][logo] [logo]: https://example.com/logo.png
图片尺寸(HTML语法):
<img src="image.png" width="300" alt="描述">
引用
> 这是一段引用文字。 > > 引用可以包含多个段落。 > 引用可以嵌套 > > > 二级引用 > > > > > 三级引用
效果:
这是一段引用文字。
可以用于引用他人的话,或重要提示。
代码
行内代码:
使用 `console.log()` 打印日志。
代码块:
```javascript function hello() { console.log('Hello, World!'); } ```
语法高亮:
```python def factorial(n): return 1 if n <= 1 else n * factorial(n - 1) ```
支持的语言标识:
javascript/jstypescript/tspython/pyjavacpp/c++csshtmlbash/shellsqljsonmarkdown/md
表格
| 左对齐 | 居中对齐 | 右对齐 | | :----- | :------: | -----: | | 内容1 | 内容2 | 内容3 | | 长内容 | 短 | 中等 |
效果:
| 左对齐 | 居中对齐 | 右对齐 |
|---|---|---|
| 内容1 | 内容2 | 内容3 |
| 长内容 | 短 | 中等 |
对齐方式:
:---左对齐(默认):---:居中对齐---:右对齐
分隔线
--- --- ---
高级排版技巧
脚注
这是一段包含脚注的文字[^1]。 [^1]: 这是脚注内容。
目录生成
很多Markdown编辑器支持自动生成目录:
[TOC] 或者手动创建: ## 目录 - [章节1](#章节1) - [章节2](#章节2) - [子章节2.1](#子章节21)
数学公式(LaTeX)
行内公式:$E = mc^2$ 块级公式: $$ \frac{n!}{k!(n-k)!} = \binom{n}{k} $$
流程图(Mermaid)
```mermaid graph TD A[开始] --> B{判断} B -->|是| C[执行操作] B -->|否| D[结束] C --> D ```
时序图
```mermaid sequenceDiagram 用户->>服务器: 发送请求 服务器->>数据库: 查询数据 数据库-->>服务器: 返回结果 服务器-->>用户: 响应数据 ```
HTML嵌入
Markdown支持嵌入HTML:
<div style="color: red; font-weight: bold;"> 这是红色粗体文字 </div> <details> <summary>点击展开</summary> 隐藏的内容 </details>
转义字符
如果要显示Markdown特殊字符,使用反斜杠转义:
\* 这不是列表 \# 这不是标题 \[这不是链接\]
不同平台的Markdown差异
GitHub Flavored Markdown (GFM)
GitHub扩展了标准Markdown:
1. 任务列表:
- [x] 支持任务列表 - [ ] 这是GFM特性
2. 表格:
支持更灵活的表格语法。
3. 自动链接:
访问 www.github.com 或发邮件到 user@example.com
4. 删除线:
~~删除的文字~~
5. Emoji:
:smile: :heart: :thumbsup:
6. @提及和#引用:
@username #123 (引用issue)
微信公众号Markdown
微信公众号的Markdown编辑器(如墨滴、Markdown Nice)有特殊要求:
样式限制:
- 不支持HTML标签
- 不支持某些CSS样式
- 图片必须上传到图床
推荐工具:
- Markdown Nice:在线编辑器,一键复制到公众号
- 墨滴:专为公众号设计的编辑器
排版技巧:
<!-- 使用引用突出重点 --> > 📌 重要提示:这里是关键内容 <!-- 使用表格优化布局 --> | 功能 | 描述 | | ----- | ---- | | 功能A | 说明 | <!-- 使用代码块展示代码 --> ```javascript // 代码示例 ```
### Notion
Notion的Markdown支持:
**导入**:
- 支持`.md`文件导入
- 自动转换为Notion blocks
**导出**:
- 可导出为Markdown格式
- 保留大部分格式
**特殊语法**:
```markdown
/code - 创建代码块
/table - 创建表格
/image - 插入图片
Jupyter Notebook
Jupyter支持Markdown cells:
LaTeX支持:
$$ \int\_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi} $$
特殊功能:
- 支持HTML
- 支持LaTeX
- 可嵌入图片和视频
实战案例
案例1:技术博客文章
--- title: 'React Hooks深度解析' date: 2024-01-01 tags: [React, JavaScript, Hooks] --- # React Hooks深度解析 ## 引言 React Hooks改变了我们编写组件的方式... ## useState详解 `useState`是最基础的Hook: ```javascript import { useState } from 'react'; function Counter() { const [count, setCount] = useState(0); return <button onClick={() => setCount(count + 1)}>Count: {count}</button>; } ```
工作原理
useState背后的实现...
useEffect详解
...
总结
- ✅ Hooks让组件更简洁
- ✅ 避免生命周期的复杂性
- ✅ 更容易复用逻辑
参考资料:
### 案例2:API文档
```markdown
# User API
## 获取用户信息
**端点**:`GET /api/users/:id`
**参数**:
| 参数名 | 类型 | 必需 | 描述 |
|--------|--------|------|----------|
| id | string | 是 | 用户ID |
**响应**:
```json
{
"id": "123",
"name": "张三",
"email": "zhang@example.com",
"created_at": "2024-01-01T00:00:00Z"
}
错误码:
| 错误码 | 描述 |
|---|---|
| 404 | 用户不存在 |
| 500 | 服务器错误 |
示例:
curl -X GET https://api.example.com/users/123 \ -H "Authorization: Bearer TOKEN"
### 案例3:GitHub README
```markdown
# 项目名称
[]()
[]()
> 一句话描述项目
## 特性
- ✨ 特性1
- 🚀 特性2
- 💪 特性3
## 快速开始
### 安装
```bash
npm install package-name
使用
import { feature } from 'package-name'; feature.doSomething();
API文档
详见 API.md
贡献
欢迎贡献!请阅读 CONTRIBUTING.md
许可证
联系方式
- 作者:张三
- 邮箱:zhang@example.com
- 主页:https://example.com
### 案例4:学习笔记
```markdown
# JavaScript异步编程学习笔记
## 日期:2024-01-01
### 今日学习
#### 1. Promise基础
Promise有三种状态:
- **Pending**(进行中)
- **Fulfilled**(已成功)
- **Rejected**(已失败)
```javascript
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('成功');
}, 1000);
});
promise.then(result => {
console.log(result); // '成功'
});
2. async/await
async/await是Promise的语法糖:
async function fetchData() { try { const response = await fetch('/api/data'); const data = await response.json(); return data; } catch (error) { console.error('Error:', error); } }
重点总结
💡 关键点:
- Promise链可以避免回调地狱
- async/await让异步代码看起来像同步
- 记得处理错误(try-catch或.catch)
练习题
- 实现一个延迟函数
- 并发请求3个API
- 实现Promise.all
参考资料
## 最佳实践
### 1. 文件结构
```markdown
# 文档标题(H1,全文只有一个)
简短的引言段落,介绍文档内容。
## 目录
自动生成或手动列出主要章节。
## 章节1(H2)
内容...
### 子章节1.1(H3)
内容...
## 章节2
内容...
## 总结
总结要点。
## 参考资料
列出参考链接。
2. 代码块最佳实践
<!-- ✅ 好的代码块 --> ```javascript // 清晰的注释 function add(a, b) { return a + b; } // 使用示例 const result = add(2, 3); // 5 ```
add(2,3)
### 3. 链接管理
**参考式链接**(适合多次引用同一链接):
```markdown
文中多次提到[React][react]和[Vue][vue]。
React是[Facebook][facebook]开发的。
[react]: https://react.dev
[vue]: https://vuejs.org
[facebook]: https://facebook.com
4. 图片优化
<!-- 使用相对路径 -->  <!-- 添加有意义的alt文本 -->  <!-- 控制图片大小 --> <img src="large-image.png" width="600" alt="描述">
5. 表格排版
<!-- ✅ 对齐良好,易读 --> | 姓名 | 年龄 | 城市 | | ---- | ---- | ---- | | 张三 | 25 | 北京 | | 李四 | 30 | 上海 | <!-- ❌ 虽然有效,但难以维护 --> | 姓名 | 年龄 | 城市 | | ---- | ---- | ---- | | 张三 | 25 | 北京 |
6. 层级结构
<!-- ✅ 清晰的层级 --> # 主标题 ## 章节1 ### 子章节1.1 #### 小节1.1.1 <!-- ❌ 避免跳级 --> # 主标题 ### 直接跳到H3(跳过H2)
7. 中英文混排
<!-- ✅ 中英文之间加空格 --> 使用 JavaScript 编写前端代码。 <!-- ❌ 不加空格难以阅读 --> 使用JavaScript编写前端代码。 <!-- 数字与中文之间也加空格 --> 我有 3 个苹果。
8. 引用格式
<!-- ✅ 用于引用 --> > 你好,引用! > — 作者名,《书名》 <!-- ✅ 用于提示 --> > ⚠️ **警告**:这是重要提示。 > 💡 **提示**:这是小技巧。 > ✅ **成功**:操作完成。
工具推荐
编辑器
-
VS Code + Markdown插件
- Markdown All in One
- Markdown Preview Enhanced
- markdownlint(语法检查)
-
Typora
- 所见即所得
- 实时预览
- 支持导出PDF
-
在线编辑器
格式检查
markdownlint 规则:
<!-- MD001: 标题层级递增 --> # H1 ## H2 ### H3 <!-- MD004: 无序列表统一符号 --> - 项目1 - 项目2 <!-- MD009: 行末无空格 --> 正确的行末 <!-- MD012: 不要有连续空行 --> <!-- MD022: 标题前后要有空行 --> ## 标题 内容 <!-- MD026: 标题末尾不加标点 --> ## 这是标题
转换工具
- Pandoc:Markdown ↔️ Word/PDF/HTML
- marked:JavaScript Markdown解析器
- markdown-it:可扩展的Markdown解析器
总结
Markdown的核心理念是简洁高效:
基础要素
- 标题使用
# - 列表使用
-或1. - 强调使用
*或** - 链接和图片使用
[]和() - 代码使用反引号
进阶技巧
- 使用表格组织数据
- 使用引用突出重点
- 使用任务列表跟踪进度
- 使用代码块展示代码
排版原则
- 保持一致的风格
- 合理使用空行
- 中英文之间加空格
- 标题层级清晰
相关工具
- 📝 Markdown编辑器 - 在线编辑和预览
- 🔄 HTML转Markdown - 格式转换
- ✅ Markdown语法检查 - 检查格式
关键词: Markdown, 技术写作, 排版, GitHub, 文档
更新时间: 2026-01-05
相关阅读
TypeScript 类型体操:什么时候值,什么时候在炫技
务实的 TypeScript 高级类型指南 — mapped types、conditional types、template literal types 真正能给你什么,什么时候用,什么时候应该退回到朴素代码。
Kubernetes 资源 requests / limits 实战:不会把生产搞挂的设法
怎么在生产里实际设 Kubernetes CPU 与内存的 requests/limits — QoS 类、CPU 节流、OOM kill、那些害公司钱的差别,以及好使的模式。
Vue 3 vs React 2026:下个项目的诚实对比
2026 年 Vue 3 与 React 的诚实对比 — Composition API vs Hooks、性能、生态、TypeScript 表现,以及真正决定选型的标准。