Markdown Comprehensive Example
这是一篇全面展示 Markdown 语法特性的示例文章,涵盖了基础语法、GFM 扩展、数学公式、代码高亮等所有功能。
文本格式化
基础样式
这是一段普通文本。你可以使用 粗体文本、斜体文本、粗斜体文本 来强调重要内容。
如果需要标记删除的内容,可以使用 删除线。
你还可以使用 行内代码
来标记代码片段或特殊术语。
上标和下标
水分子的化学式是 H2O,而爱因斯坦的质能方程是 E=mc2。
高亮标记
这是一段包含 高亮文本 的内容。
标题层级
三级标题
四级标题
五级标题
六级标题
列表
无序列表
- 列表项 1
- 列表项 2
- 嵌套列表项 2.1
- 嵌套列表项 2.2
- 更深层嵌套 2.2.1
- 列表项 3
有序列表
- 第一项
- 第二项
- 子项 2.1
- 子项 2.2
- 第三项
任务列表
- 已完成的任务
- 另一个已完成的任务
- 未完成的任务
- 待办事项
引用块
这是一个简单的引用块。
可以包含多个段落。
引用块也可以嵌套:
这是嵌套的引用内容。
甚至可以多层嵌套。
提示:引用块中也可以使用其他 Markdown 语法。
console.log('甚至可以包含代码块');
NOTE
Highlights information that users should take into account, even when skimming.
TIP
Optional information to help a user be more successful.
End of NOTE block.
Custom Important Title
Crucial information necessary for users to succeed.
WARNING
Critical content demanding immediate user attention due to potential risks.
CAUTION
Negative potential consequences of an action.
链接和图片
链接
这是一个 行内链接。
这是一个 带标题的链接。
这是一个引用式链接 链接文本。
自动链接:https://example.com
图片
使用 ImageWrapper
组件:

使用 PictureWrapper
组件:

表格
基础表格
列 1 | 列 2 | 列 3 |
---|---|---|
数据 1 | 数据 2 | 数据 3 |
数据 4 | 数据 5 | 数据 6 |
对齐表格
左对齐 | 居中对齐 | 右对齐 |
---|---|---|
文本 | 文本 | 文本 |
更长的文本内容 | 更长的文本内容 | 更长的文本内容 |
复杂表格
功能 | 支持情况 | 说明 |
---|---|---|
基础 Markdown | ✅ | 完全支持 |
GFM 扩展 | ✅ | 完全支持 |
数学公式 | ✅ | MathJax 渲染 |
代码高亮 | ✅ | Expressive Code |
代码块
行内代码
使用 const variable = 'value'
定义常量。
基础代码块
纯文本代码块没有语法高亮
JavaScript 代码
// 这是一个 JavaScript 示例function fibonacci(n) { if (n <= 1) return n; return fibonacci(n - 1) + fibonacci(n - 2);}
const result = fibonacci(10);console.log(`第 10 个斐波那契数是: ${result}`);
TypeScript 代码
// TypeScript 类型系统示例interface User { id: number; name: string; email: string; role: 'admin' | 'user';}
class UserService { private users: User[] = [];
addUser(user: User): void { this.users.push(user); }
findUserById(id: number): User | undefined { return this.users.find(u => u.id === id); }}
Python 代码
# Python 装饰器和生成器示例from functools import wrapsfrom typing import Iterator
def timer(func): @wraps(func) def wrapper(*args, **kwargs): import time start = time.time() result = func(*args, **kwargs) end = time.time() print(f"{func.__name__} 执行时间: {end - start:.4f}s") return result return wrapper
@timerdef fibonacci_generator(n: int) -> Iterator[int]: """生成前 n 个斐波那契数""" a, b = 0, 1 for _ in range(n): yield a a, b = b, a + b
# 使用生成器for num in fibonacci_generator(10): print(num, end=' ')
Rust 代码
// Rust 所有权系统示例use std::collections::HashMap;
#[derive(Debug)]struct User { id: u32, name: String, email: String,}
impl User { fn new(id: u32, name: String, email: String) -> Self { User { id, name, email } }}
fn main() { let mut users: HashMap<u32, User> = HashMap::new();
users.insert(user.id, user);
if let Some(u) = users.get(&1) { println!("找到用户: {:?}", u); }}
带行号和高亮的代码块
// 第 1 行会被高亮import * as express from 'express';// 第 3-5 行会被高亮const app = express();const PORT = process.env.PORT || 3000;
app.get('/', (req, res) => { res.send('Hello World!');});
app.listen(PORT, () => { console.log(`服务器运行在端口 ${PORT}`);});
带标题的代码块
import type { CollectionEntry } from 'astro:content';
export async function loadPosts(): Promise<CollectionEntry<'post'>[]> { const posts = await getCollection('post'); return posts.filter(post => !post.data.draft);}
Shell 脚本
#!/bin/bash# 自动化构建脚本
echo "开始构建项目..."
# 安装依赖pnpm install
# 运行代码检查pnpm run lint
# 运行测试pnpm run test
# 构建项目pnpm run build
echo "构建完成!"
HTML + CSS
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>示例页面</title> <style> .container { max-width: 1200px; margin: 0 auto; padding: 2rem; }
.card { background: white; border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); padding: 1.5rem; } </style></head><body> <div class="container"> <div class="card"> <h1>欢迎</h1> <p>这是一个示例页面。</p> </div> </div></body></html>
SQL 查询
-- 复杂的 SQL 查询示例SELECT u.id, u.name, u.email, COUNT(p.id) as post_count, MAX(p.created_at) as last_post_dateFROM users uLEFT JOIN posts p ON u.id = p.user_idWHERE u.active = true AND u.created_at >= DATE_SUB(NOW(), INTERVAL 1 YEAR)GROUP BY u.id, u.name, u.emailHAVING post_count > 5ORDER BY post_count DESC, last_post_date DESCLIMIT 10;
JSON 数据
{ "name": "modern-blog", "version": "1.0.0", "description": "现代化的博客系统", "scripts": { "dev": "astro dev", "build": "astro build", "preview": "astro preview" }, "dependencies": { "astro": "^4.0.0", "react": "^18.0.0" }, "author": { "name": "Your Name", }}
YAML 配置
# GitHub Actions 工作流配置name: Build and Deploy
on: push: branches: [main] pull_request: branches: [main]
jobs: build: runs-on: ubuntu-latest
steps: - name: Checkout 代码 uses: actions/checkout@v3
- name: 设置 Node.js uses: actions/setup-node@v3 with: node-version: '18'
- name: 安装 pnpm uses: pnpm/action-setup@v2 with: version: 8
- name: 安装依赖 run: pnpm install
- name: 构建项目 run: pnpm run build
MDX
import { Code } from 'astro-expressive-code/components'
数学公式
行内公式
这是一个行内公式
当
块级公式
矩阵
多行公式
分段函数
求和与积分
水平分隔线
脚注
定义列表
Term 1 : 这是术语 1 的定义。
Term 2 : 这是术语 2 的第一个定义。 : 这是术语 2 的第二个定义。
缩写
Web是由HTML 和 CSS、JS 组成。
当你第一次看到 API 这个词时,可能会感到困惑。但随着学习的深入,你会发现 REST 和 GraphQL 都是构建 API 的常用方式。
Emoji
支持 GitHub 风格的 emoji 表情:
- 😄
:smile:
- ❤️
:heart:
- 🚀
:rocket:
- 🎉
:tada:
- ✨
:sparkles:
- 🔥
:fire:
- 🐛
:bug:
- 🎨
:art:
转义字符
如果要显示特殊字符,需要使用反斜杠转义:
- *不是斜体*
- [不是链接]
- `不是代码`
键盘按键
按 Ctrl + C 复制,按 Ctrl + V 粘贴。
嵌套结构示例
引用块中的标题
- 引用块中的有序列表
- 第二项
- 嵌套的无序列表
- 另一项
// 引用块中的代码const nested = true;
表格 在引用块中 数据 数据
引用块中的公式 𝐸 = 𝑚 𝑐 2
注释
总结
这篇文章展示了 Markdown 的所有主要语法特性:
- 文本格式化:粗体、斜体、删除线、高亮
- 结构元素:标题、列表、引用、表格
- 代码展示:行内代码、多语言代码块、语法高亮
- 数学公式:行内和块级 LaTeX 公式
- 链接和图片:各种链接和图片引用方式
- 扩展功能:脚注、定义列表、任务列表、Emoji
这些功能足以满足绝大多数技术写作和博客创作的需求。
源码
620 collapsed lines
---title: Markdown Comprehensive Exampledate: 2018-04-26updated: 2025-10-05sticky: -1---
这是一篇全面展示 Markdown 语法特性的示例文章,涵盖了基础语法、GFM 扩展、数学公式、代码高亮等所有功能。
::more
## 文本格式化
### 基础样式
这是一段普通文本。你可以使用 **粗体文本**、*斜体文本*、***粗斜体文本*** 来强调重要内容。
如果需要标记删除的内容,可以使用 ~~删除线~~。
你还可以使用 `行内代码` 来标记代码片段或特殊术语。
### 上标和下标
水分子的化学式是 H:sub[2]O,而爱因斯坦的质能方程是 E=mc:sup[2]。
### 高亮标记
这是一段包含 :mark[高亮文本] 的内容。
## 标题层级
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
## 列表
### 无序列表
- 列表项 1- 列表项 2 - 嵌套列表项 2.1 - 嵌套列表项 2.2 - 更深层嵌套 2.2.1- 列表项 3
### 有序列表
1. 第一项2. 第二项 1. 子项 2.1 2. 子项 2.23. 第三项
### 任务列表
- [x] 已完成的任务- [x] 另一个已完成的任务- [ ] 未完成的任务- [ ] 待办事项
## 引用块
> 这是一个简单的引用块。>> 可以包含多个段落。
> 引用块也可以嵌套:>> > 这是嵌套的引用内容。> >> > > 甚至可以多层嵌套。
> **提示**:引用块中也可以使用其他 Markdown 语法。>> ```javascript> console.log('甚至可以包含代码块');> ```
::::noteHighlights information that users should take into account, even when skimming.
:::tipOptional information to help a user be more successful.:::
End of NOTE block.::::
:::important[Custom Important Title]Crucial information necessary for users to succeed.:::
:::warningCritical content demanding immediate user attention due to potential risks.:::
:::cautionNegative potential consequences of an action.:::
## 链接和图片
### 链接
这是一个 [行内链接](https://example.com)。
这是一个 [带标题的链接](https://example.com "链接标题")。
这是一个引用式链接 [链接文本][ref]。
[ref]: https://example.com "引用链接"
自动链接:https://example.com
### 图片

使用 `ImageWrapper` 组件:
import Image from '@/components/ImageWrapper.astro';import imageTest from '@/assets/SKY_20220916_203140_.jpg';
<Image src={imageTest} alt="2022-09-16-20-31-40" title="小号awa" />
使用 `PictureWrapper` 组件:
import Picture from '@/components/PictureWrapper.astro';import pictureTest from '@/assets/SKY_20220929_004429_.jpg';
<Picture src={pictureTest} alt="2022-09-29-00-44-29" title="重生路" formats={['avif']} fallbackFormat="webp"/>
## 表格
### 基础表格
| 列 1 | 列 2 | 列 3 || --- | --- | --- || 数据 1 | 数据 2 | 数据 3 || 数据 4 | 数据 5 | 数据 6 |
### 对齐表格
| 左对齐 | 居中对齐 | 右对齐 || :--- | :---: | ---: || 文本 | 文本 | 文本 || 更长的文本内容 | 更长的文本内容 | 更长的文本内容 |
### 复杂表格
| 功能 | 支持情况 | 说明 || :--- | :---: | :--- || 基础 Markdown | ✅ | 完全支持 || GFM 扩展 | ✅ | 完全支持 || 数学公式 | ✅ | MathJax 渲染 || 代码高亮 | ✅ | Expressive Code |
## 代码块
### 行内代码
使用 `const variable = 'value'` 定义常量。
### 基础代码块
```纯文本代码块没有语法高亮```
### JavaScript 代码
```javascript// 这是一个 JavaScript 示例function fibonacci(n) { if (n <= 1) return n; return fibonacci(n - 1) + fibonacci(n - 2);}
const result = fibonacci(10);console.log(`第 10 个斐波那契数是: ${result}`);```
### TypeScript 代码
```typescript// TypeScript 类型系统示例interface User { id: number; name: string; email: string; role: 'admin' | 'user';}
class UserService { private users: User[] = [];
addUser(user: User): void { this.users.push(user); }
findUserById(id: number): User | undefined { return this.users.find(u => u.id === id); }}```
### Python 代码
```python# Python 装饰器和生成器示例from functools import wrapsfrom typing import Iterator
def timer(func): @wraps(func) def wrapper(*args, **kwargs): import time start = time.time() result = func(*args, **kwargs) end = time.time() print(f"{func.__name__} 执行时间: {end - start:.4f}s") return result return wrapper
@timerdef fibonacci_generator(n: int) -> Iterator[int]: """生成前 n 个斐波那契数""" a, b = 0, 1 for _ in range(n): yield a a, b = b, a + b
# 使用生成器for num in fibonacci_generator(10): print(num, end=' ')```
### Rust 代码
```rust// Rust 所有权系统示例use std::collections::HashMap;
#[derive(Debug)]struct User { id: u32, name: String, email: String,}
impl User { fn new(id: u32, name: String, email: String) -> Self { User { id, name, email } }}
fn main() { let mut users: HashMap<u32, User> = HashMap::new();
users.insert(user.id, user);
if let Some(u) = users.get(&1) { println!("找到用户: {:?}", u); }}```
### 带行号和高亮的代码块
```javascript {1,3-5}// 第 1 行会被高亮import * as express from 'express';// 第 3-5 行会被高亮const app = express();const PORT = process.env.PORT || 3000;
app.get('/', (req, res) => { res.send('Hello World!');});
app.listen(PORT, () => { console.log(`服务器运行在端口 ${PORT}`);});```
### 带标题的代码块
```typescript title="src/utils/data-loader.ts"import type { CollectionEntry } from 'astro:content';
export async function loadPosts(): Promise<CollectionEntry<'post'>[]> { const posts = await getCollection('post'); return posts.filter(post => !post.data.draft);}```
### Shell 脚本
```bash#!/bin/bash# 自动化构建脚本
echo "开始构建项目..."
# 安装依赖pnpm install
# 运行代码检查pnpm run lint
# 运行测试pnpm run test
# 构建项目pnpm run build
echo "构建完成!"```
### HTML + CSS
```html<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>示例页面</title> <style> .container { max-width: 1200px; margin: 0 auto; padding: 2rem; }
.card { background: white; border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); padding: 1.5rem; } </style></head><body> <div class="container"> <div class="card"> <h1>欢迎</h1> <p>这是一个示例页面。</p> </div> </div></body></html>```
### SQL 查询
```sql-- 复杂的 SQL 查询示例SELECT u.id, u.name, u.email, COUNT(p.id) as post_count, MAX(p.created_at) as last_post_dateFROM users uLEFT JOIN posts p ON u.id = p.user_idWHERE u.active = true AND u.created_at >= DATE_SUB(NOW(), INTERVAL 1 YEAR)GROUP BY u.id, u.name, u.emailHAVING post_count > 5ORDER BY post_count DESC, last_post_date DESCLIMIT 10;```
### JSON 数据
```json{ "name": "modern-blog", "version": "1.0.0", "description": "现代化的博客系统", "scripts": { "dev": "astro dev", "build": "astro build", "preview": "astro preview" }, "dependencies": { "astro": "^4.0.0", "react": "^18.0.0" }, "author": { "name": "Your Name", }}```
### YAML 配置
```yaml# GitHub Actions 工作流配置name: Build and Deploy
on: push: branches: [main] pull_request: branches: [main]
jobs: build: runs-on: ubuntu-latest
steps: - name: Checkout 代码 uses: actions/checkout@v3
- name: 设置 Node.js uses: actions/setup-node@v3 with: node-version: '18'
- name: 安装 pnpm uses: pnpm/action-setup@v2 with: version: 8
- name: 安装依赖 run: pnpm install
- name: 构建项目 run: pnpm run build```
### MDX
import { Code } from 'astro-expressive-code/components';
<Code code="import { Code } from 'astro-expressive-code/components'" lang="mdx" />
## 数学公式
### 行内公式
这是一个行内公式 $E = mc^2$,另一个是 $a^2 + b^2 = c^2$。
当 $a \ne 0$ 时,方程 $ax^2 + bx + c = 0$ 的解为:$x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}$。
### 块级公式
$$\frac{\partial f}{\partial x} = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}$$
$$\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}$$
### 矩阵
$$\begin{bmatrix}a & b & c \\d & e & f \\g & h & i\end{bmatrix}$$
### 多行公式
$$\begin{aligned}f(x) &= (x+a)(x+b) \\&= x^2 + (a+b)x + ab \\&= x^2 + cx + d\end{aligned}$$
### 分段函数
$$f(x) = \begin{cases}x^2 & \text{if } x \geq 0 \\-x^2 & \text{if } x < 0\end{cases}$$
### 求和与积分
$$\sum_{i=1}^{n} i = \frac{n(n+1)}{2}$$
$$\prod_{i=1}^{n} i = n!$$
$$\oint_C \mathbf{F} \cdot d\mathbf{r} = \iint_S (\nabla \times \mathbf{F}) \cdot d\mathbf{S}$$
## 水平分隔线
---
***
___
## 脚注
这是一个包含脚注的句子[^1]。这是另一个脚注[^note]。
[^1]: 这是第一个脚注的内容。
[^note]: 这是一个命名脚注,可以包含多个段落。
甚至可以包含代码:
```javascript console.log('脚注中的代码'); ```
## 定义列表
Term 1: 这是术语 1 的定义。
Term 2: 这是术语 2 的第一个定义。: 这是术语 2 的第二个定义。
## 缩写
::abbr[Web]{title="World Wide Web"}
是由:abbr[HTML]{title="HyperText Markup Language"} 和 :abbr[CSS]{title="Cascading Style Sheets"}、:abbr[JS]{title="Javascript"} 组成。
当你第一次看到 :abbr[API]{title="Application Programming Interface"} 这个词时,可能会感到困惑。但随着学习的深入,你会发现 :abbr[REST]{title="Representational State Transfer"} 和 :abbr[GraphQL]{title="Graph Query Language"} 都是构建 API 的常用方式。
## Emoji
支持 GitHub 风格的 emoji 表情:
- :smile: `:smile:`- :heart: `:heart:`- :rocket: `:rocket:`- :tada: `:tada:`- :sparkles: `:sparkles:`- :fire: `:fire:`- :bug: `:bug:`- :art: `:art:`
## 转义字符
如果要显示特殊字符,需要使用反斜杠转义:
- \*不是斜体\*- \[不是链接\]- \`不是代码\`
## 键盘按键
按 <kbd>Ctrl</kbd> + <kbd>C</kbd> 复制,按 <kbd>Ctrl</kbd> + <kbd>V</kbd> 粘贴。
## 嵌套结构示例
> ### 引用块中的标题>> 1. 引用块中的有序列表> 2. 第二项> - 嵌套的无序列表> - 另一项>> ```javascript> // 引用块中的代码> const nested = true;> ```>> | 表格 | 在引用块中 |> | --- | --- |> | 数据 | 数据 |>> $E = mc^2$ 引用块中的公式
## 注释
{/* 这是一个 MDX 注释,不会在页面上显示 */}
## 总结
这篇文章展示了 Markdown 的所有主要语法特性:
1. **文本格式化**:粗体、斜体、删除线、高亮2. **结构元素**:标题、列表、引用、表格3. **代码展示**:行内代码、多语言代码块、语法高亮4. **数学公式**:行内和块级 LaTeX 公式5. **链接和图片**:各种链接和图片引用方式6. **扩展功能**:脚注、定义列表、任务列表、Emoji
这些功能足以满足绝大多数技术写作和博客创作的需求。
## 源码
import MarkdownExample from './markdown-example.mdx?raw';
<Code lang="mdx" code={MarkdownExample} collapse="1-999" title="markdown-example.mdx" />