- name
- outline-planning
- description
- 在 main.typ 中规划章节大纲,包括设计 == 二级目录和 === 三级目录,并编写 // 内容注释
# 规划章节大纲
## 任务说明
在已有 `main.typ` 的 `= Chapter` 下方,按 `==` → `===` → `// 注释` → `正文` 的层次生成内容。工作流分三步:**先规划大纲 → 确认 → 写入实际内容**。
---
## 执行步骤
### 1. 读取上下文
- 打开 `main.typ`,找到目标 `= Chapter` 的位置
- 确认该 Chapter 是否已有内容(已有 `==` 则跳过或扩展,完全空白则新建)
- 同时阅读该 Chapter 上方的注释大纲(`// Chapter N:标题` 及 `// N.1` 列表),理解原设计意图
- 检查跨 Chapter 重复:确保本节规划的内容不与前面或后面章节重叠
- 检查已有的正文写作风格(Callout 使用频率、公式呈现方式、列表格式等),保持一致
### 2. 设计二层结构(==)
**`==` 对应原注释大纲中的主知识点块**,划分原则:
- 每个 `==` 代表一个独立的知识单元(对应原注释中 `// N.1`、`// N.2` 等行)
- 数量通常 3-6 个,太少则粒度太粗,太多则拆分过细
- 按学习顺序排列:概念 → 方法 → 深入 → 扩展/实战
- 如果原注释大纲未细分,按该主题的经典教材/知识体系划分
### 3. 设计三层结构(===)
**`===` 是 `==` 下的具体知识点**,划分原则:
- 每个 `===` 是一个可独立讲解的要点
- 每个 `==` 下通常 2-5 个 `===`
- 标题具体、可操作,如 "最小二乘法"、"交叉熵损失" 而非 "原理"
- 如果某个知识点特别大(如梯度下降),可以单开一个 `==` 而非塞在别人下面
### 4. 编写内容注释(//)
在 `===` 下方写 `//` 注释,内容要求:
- **第一行**:该知识点的核心定义/公式/一句话总结
- **后续行**:关键要点、公式、与前后知识的联系
- **按条罗列**,每行一个要点,用 `// -` 或 `// 中文:`
- **标注交叉引用**:`详见 ChX`、`复用 ChY 评估指标`、`对比 ChZ 的 XXX`
### 5. 写入实际内容(正文)
大纲确认后,在 `===` 下方(注释之后)展开实际教学内容:
**内容结构模板**:
```typst
=== 知识点名称
// 注释:核心要点
定义/介绍段落...
公式(如果需要)
#note[
注释框:补充说明、与其他知识的对比。
]
- 列表一
- 列表二
#tip[
技巧或记忆方法。
]
#caution[
注意事项或易错点。
]
```
**Callout 使用指南(根据本项目写作经验)**:
- `#note[...]`:定义注释、核心直觉、与其它知识的对比
- `#tip[...]`:记忆技巧、实用建议
- `#info[...]`:重要背景或扩展信息
- `#caution[...]`:注意事项、局限性
- 每个 `===` 内使用 1-2 个 Callout,过多则冗余
**数学公式写作要点**:
- 多字母变量用引号:`"RSS"`、`"Normal"`、`"en"`
- 波浪号用 `tilde`:`$epsilon tilde "Normal"(0,1)$`
- 箭头用 `arrow(l)` / `arrow(r)` / `arrow(u)` / `arrow(d)`
- 远大于/远小于用 `gt.gt` / `lt.lt`
- 加减号用 `plus.minus`
- 乘积符号用 `product`
- 渐近符号(公式到箭头)用 `=>`
- 不要用 `\prod`、`\sim`、`\uparrow` 等 LaTeX 宏名
- 不要用 `larr`、`uparrow`、`downarrow` 等错误符号名
### 6. 提交用户确认
- 在写入正文之前,**先展示规划大纲**给用户确认
- 方案中说明:`==` 和 `===` 的数量、每个 `==` 的覆盖范围
- 用户确认后再执行写入
---
## 关键原则
1. **== 与 === 必须同时生成**:不要只写 `==` 不留 `===` 的空间
2. **注释紧跟 ===**:注释写在对应的 `===` 下方,不留多余空行(用空行分隔不同的 `===` 即可)
3. **// 注释不能遗漏**:每个 `===` 都必须有至少一行 `//` 解释内容要点
4. **避免与原大纲脱节**:`==` 的设计应忠实反映原 `// N.x` 注释的意图
5. **复用已有内容用引用**:遇重叠内容,注释中写 `详见 ChX`,正文中直接引用不重复展开
6. **写完必须编译验证**:`typst compile "main.typ" "main.pdf" --root .`,修正所有 error 和 warning
7. **Error 修复顺序**:查看 `error:` 行 → 定位具体行号 → 修复 → 重新编译,直到零 error
8. **Warning 也应修复**:`no text within stars` 等 warning 虽不阻止编译,但影响语义,应统一改用 `*斜体*`
## 示例对照
**原注释大纲**:
```typst
// Chapter 2:线性模型 🔶
// 2.1 线性回归:最小二乘法、正规方程、梯度下降
// 2.2 逻辑回归:sigmoid 函数、交叉熵损失、多分类
// 2.3 正则化:L1(Lasso)、L2(Ridge)、Elastic Net
// 2.4 广义线性模型:softmax 回归、感知机
```
**生成结果**:
```typst
= 线性模型
== 线性回归
=== 最小二乘法
// 目标函数:最小化残差平方和 RSS = Σ(yᵢ - wᵀxᵢ)²
// 闭式解推导:ŵ = (XᵀX)⁻¹Xᵀy
// 几何解释:投影到列空间
=== 正规方程
// 解析解 w* = (XᵀX)⁻¹Xᵀy
// 前提:XᵀX 可逆(特征数 < 样本数、无多重共线性)
=== 梯度下降
// 批量梯度下降(BGD):每步使用全部样本
// 随机梯度下降(SGD):每步使用一个样本
// 小批量梯度下降(Mini-batch GD):折中方案
=== 模型评估
// 回归指标:MSE / RMSE / MAE / R²(详见 Ch1 模型评估指标)
== 逻辑回归
=== sigmoid 函数
// σ(z) = 1 / (1 + e^{-z}),输出 (0,1) 概率
// 决策边界:σ(wᵀx) ≥ 0.5 → 预测正类
=== 交叉熵损失
// L(w) = -Σ [yᵢ log ŷᵢ + (1-yᵢ) log(1-ŷᵢ)]
// 为什么不用 MSE:非凸优化困难、概率解释不匹配
=== 多分类
// One-vs-Rest(OvR):K 个二分类器
// Softmax 回归(见 2.4)是更自然的多分类扩展
== 正则化
=== L1 正则化(Lasso)
// 损失:RSS + λ Σ|wⱼ|,产生稀疏解 → 特征选择
=== L2 正则化(Ridge)
// 损失:RSS + λ Σwⱼ²,权重缩小但不为 0
=== Elastic Net
// 结合 L1 的稀疏性和 L2 的稳定性
=== 正则化路径与调参
// 交叉验证选择 λ,λ↑ → 方差↓ 偏差↑
== 广义线性模型
=== Softmax 回归
// P(y=k|x) = exp(wₖᵀx) / Σ exp(wⱼᵀx)
=== 感知机
// 二分类线性模型:y = sign(wᵀx + b),误分类驱动更新
```
Voir sur GitHub