textbook-chapter
按大纲切片与 UbD 锚点写一章教材正文时用它:固定四段式结构——概念讲解 → 示范例题 → 引导练习 → 独立习题。触发语如"写第三章"、"按大纲写这一章"。通常由 textbook 调度,也可单独运行,用来写一篇带完整例题的深度技术文章。不负责设计大纲,也不负责整本书的调度;只是问一个知识点、要一段解释而不是成篇教材内容时,也不要用它。需与 textbook 系列其余 skill 装在同一 skills 目录下。
Install
npx skills add https://github.com/cabbage2000-lab/textbook-writer-skills/tree/main/skills/textbook-chapter
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install cabbage2000-lab-textbook-writer-skills@llmmart
git clone https://github.com/cabbage2000-lab/textbook-writer-skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole cabbage2000-lab/textbook-writer-skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
textbook-chapter
按四段式模板写一章教材正文:概念讲解 → 示范(教)→ 引导(扶)→ 独立(放)四段,外加章引言与本章小结。章结构的权威来源是 references/chapter-template.md,文体规范是 references/writing-style.md。
四段的标题文案、后三段的具体教学动作、配图类型与文体附加条款取自输入契约里 学科档案 指定的档案第 4 节——规格与索引见 ../textbook/references/subject-profile-spec.md,开写前先读该档案第 4 节。
何时不触发
- 设计教材大纲(用 textbook-outline)
- 全书多章调度(用 textbook)
- 只要题目不要正文(用 textbook-exercises)
两种调用模式
- 被 textbook 调度(常规):输入 = 契约
{章号, 章标题, 该章大纲切片, UbD五件套, 术语表, 前章小结, 学科档案, 答案排版}(字段定义见 ../textbook/references/handoff-contract.md 第 2 节;第 1 章的前章小结为空)。 - 独立触发(写深度技术文章):
答案排版恒为inline(没有教材项目目录,答案无处可搬);一轮问清{主题, 读者水平, 篇幅};按主题自行判定学科档案(索引见 subject-profile-spec.md 第 5 节,找不到匹配项按该文档第 7 节处理);自拟轻量版五件套(只取三件)——1 条持久理解("读者将理解:……"句式)+ 1 个核心问题 + 1–3 条学习目标(章首学生版目标的来源),连同选定的档案 id 一并向用户展示后开写(不设 gate,展示即可);无外部术语表时自建(两节结构与列定义同契约文档第 3 节,附加结构按档案第 4 节),无前章小结则引言直接从动机切入。
上下文隔离纪律(不可违反)
只接收上述输入契约,不读入其他章正文。跨章一致性靠三个轻量载体:术语表、前章小结、UbD 五件套(契约文档第 6 节)。"顺便读一下前几章找感觉"是违规——上下文膨胀会让长教材写不完。
写作流程
打印进度:被调度时打印
▶ 第 N/M 章:<章标题>;独立触发时打印章标题。起草章骨架:按 references/chapter-template.md 第 2 节的完整模板起草——
- 引言:从前章小结的核心结论衔接进入,呼应五件套中的一条核心问题,先"为什么"再"学什么";
## 本章学习目标(章首件,任何档案下标题都是这一行):把大纲切片里"该章承载的学习目标原文"改写成学生版——第二人称、去掉编号与 Bloom 标注、保留可判断的动词,条数与切片给的一样多,不新增不合并(要点见 references/chapter-template.md 3.0 节)。独立触发时切片不存在,从自拟的持久理解推出 1–3 条;- 第一段(
stem档案为## N.1 概念讲解):按大纲切片中该章定位与承载的持久理解展开,每个概念走"动机 → 定义 → 直观解释 → 关系"链条; - 全程遵循 references/writing-style.md:叙事散文、认知负荷控制(一段一个新概念)、配图双轨(抽象概念配示意图,纯概念章至少一图)、措辞禁忌(禁"显然/易得"跳步)、中文排版;外加档案第 4 节的文体附加条款(
stem档案 = writing-style.md 第 13 节数学公式规范)。
生成三类题:使用 Skill 工具调用
textbook-exercises(传入契约{章上下文, 题目计划, 术语表, 学科档案},其中章上下文的概念清单与学习目标从大纲切片提取,学科档案原样透传);若 Skill 工具不可用或未注册,直接读取 ../textbook-exercises/SKILL.md 并严格遵循其指令执行。将返回题目按类型放入后三段(类型 → 段的对应关系固定:示范例题 → 第二段、引导练习 → 第三段、独立习题 → 第四段;段标题文案取自档案第 4 节),保持验证状态与验证过程代码块原样,不改动已验证解答的数值。按
答案排版摆放答案(separate时;inline时跳过本步,一切照旧写在题干之后):- 引导练习:提示 1 / 提示 2 / 完整解答三层各套一个
<details>折叠,留在章内(写法见 chapter-template.md 3.3 节); - 独立习题:章内只留题干与 Bloom 标注,把
{参考答案或解题路径, 验证状态, 验证过程}三件整体摘出放进回报字段本章独立习题答案[],由主 skill 写入98-参考答案.md——只摘答案而把验证过程留在章内即泄底,三件必须一起走; - 示范例题一动不动:解答与验证留在章内、不折叠——它是 worked example 先行的教学内核,藏起来等于毁掉第二段。
- 论述类题的评价标准表与「开放题」标记留在章内(那是任务说明不是答案),参考要点随答案走。落位边界见契约文档 3.1 节。
- 引导练习:提示 1 / 提示 2 / 完整解答三层各套一个
写本章小结:按 chapter-template.md 3.5 节固定四件——核心结论(3–5 条,面向下一章作者)、与持久理解的呼应(一句话说明本章推进了哪条)、自检(把章首学习目标逐条原句搬下来写成
- [ ]复选项,每条给"回看 N.x"与"自测:习题 N-y"两个出口,题号必须在本章真实存在)、下一章预告(1 句)。落盘与自查:写入
NN-<章标题>.md(NN 为两位章号);按 chapter-template.md 第 5 节章内自查清单逐项自查(第 3 条的题号对账与第 7 条的答案落位尤其要动手搜一遍),不过的当场修正后再交付。
输出
回报契约 {章文件路径, 新增术语[], 新增符号[], Bloom标注回写[], 本章独立习题答案[]}:
- 新增术语:本章首次引入的概念,按术语表「## 术语」节格式(
| 术语(中文) | 英文 | 定义/约定 | 首次出现章节 |)写好词条——调用方负责追加进术语表.md,独立触发时直接更新自建术语表; - 新增符号:本章首次约定的符号,按「## 符号约定」节格式(
| 符号 | 读法 | 含义与约定 | 首次出现章节 |)写好词条。凡在本章正文或题目里首次出现、且读者可能不知道怎么念或代表什么的记号都要登记(\(A^{\mathsf T}\)、\(\langle x,y\rangle\)、\(\varepsilon_d\)……),不登记它就只存在于本章上下文里,读者在第 7 章重逢时无处可查;输入的术语表里已有同义符号时沿用旧符号、不新造,此数组只放真正的新增。本学科不使用形式符号时为空数组; - Bloom标注回写:本章每道题的
{题目编号, 类型, Bloom层级},供主 skill 阶段 5 复核实际梯度; - 本章独立习题答案:
答案排版=separate时本章每道独立习题的{题目编号, 参考答案或解题路径, 验证状态, 验证过程},调用方负责追加进98-参考答案.md;inline时此数组为空(答案已写在章内)。条目数必须等于章内独立习题数,题目编号逐字对应; - 撰写中若发现大纲切片的题目计划有明显缺口(如某学习目标无题覆盖),在回报中附建议,由调用方/作者决定,不擅自加题。
真实性约束
- 概念讲解中的事实性内容基于大纲切片与已确认的教材设计,不虚构学科结论;拿不准的表述从保守("通常""在本书讨论的范围内"),或在回报中注明请作者确认;
- 例题验证责任在 textbook-exercises,本 skill 不得改动已验证解答的数值;如需改写题目文字表述,改后必须请 textbook-exercises 重新验证。
Files (textbook-writer-skills)
-
references
-
chapter-template.md 14.4 KB
# 教材章节模板:四段式 + 首尾件 本文档是 textbook-chapter skill 的章节结构唯一权威来源。每章正文必须遵循本模板的骨架与各段要点。 **与学科档案的分工**:本模板定义骨架、支撑程度、数量配额与纪律(换学科不变);四段的**标题文案**、后三段的**具体教学动作**、配图类型与文体附加条款取自所用**学科档案第 4 节**(规格与索引见 [../../textbook/references/subject-profile-spec.md](../../textbook/references/subject-profile-spec.md))。下文示例均取 `stem` 档案。 ## 1. 设计依据 四段式来自脚手架(scaffolding)与认知负荷理论: - **worked example 先行**:先把完整解题过程示范给读者看(全脚手架),能显著降低初学者的认知负荷——比直接丢一堆习题有效; - **逐步撤除支撑**:示范例题(教)→ 引导练习(扶)→ 独立习题(放),三段支撑程度递减,读者独立性递增; - **循序渐进**:每个新概念都建立在前一章之上,不跳跃。章引言必须从前章小结衔接进来。 ## 2. 章的完整骨架(可直接复制的 Markdown 模板) 下面的模板用 `stem` 档案的四段标题写成;用其他档案时,把四行段标题换成该档案第 4 节给出的文案,骨架其余部分不变。 ```markdown # 第 N 章 <章标题> <引言段:2–4 句。先"为什么"——本章解决什么问题、从前章的哪个结论出发; 再"学什么"——一句话预告本章路径。应呼应 UbD 五件套中的一条核心问题。引言不设标题。> ## 本章学习目标 读完本章,你应该能: 1. <学生版目标句,第二人称,可自我判断做到没做到> 2. <同上> <要点见 3.0;由大纲切片里"该章承载的学习目标原文"改写,不新增目标> ## N.1 概念讲解 <按"动机 → 定义 → 直观解释 → 与相邻概念的关系"链条逐个展开本章概念。> ## N.2 示范例题 <1–3 道完整解题过程的例题,由 textbook-exercises 生成并验证。> ## N.3 引导练习 <1–3 道半独立练习,带提示阶梯(提示与解答折叠,见 3.3)。> ## N.4 独立习题 <3–8 道无提示变式 + 少量开放题;章内只放题干与 Bloom 标注, 答案与验证落 98-参考答案.md(分离规则见第 4 节)。> ## 本章小结 **核心结论**(3–5 条): 1. <本章最重要的结论,供下一章引用衔接> **与持久理解的呼应**:本章推进了「<持久理解原文>」——<一句话说明推进在哪>。 **自检**:回到章首的学习目标,逐条问自己做到了没有—— - [ ] <章首第 1 条目标原句> → 拿不准就重读 N.1,自测:习题 N-2 - [ ] <章首第 2 条目标原句> → 自测:习题 N-5 **下一章预告**:<1 句,指出本章遗留的问题或自然延伸>。 ``` 四段标题文案由所用档案第 4 节固定(`stem` 档案为 `## N.1 概念讲解`、`## N.2 示范例题`、`## N.3 引导练习`、`## N.4 独立习题`,N 为章号);**首尾两件的标题不随档案变,任何学科都逐字固定为 `## 本章学习目标` 与 `## 本章小结`**——它们是读者向的,学生翻开任何一章都该在同一个位置找到"这章要我学什么"和"我学会了没有"。一本书一旦选定档案,四段标题**逐字固定**,不得改名、不得增删段、不得调换顺序——阶段 5 的章节走查按这四个标题定位,改一处全书对账就断。 ## 3. 各段写作要点 (编号 3.0 是章首件、3.5 是章末件,按阅读顺序排;3.1–3.4 对应四段。) ### 3.0 本章学习目标(章首件) **动机**:学习目标此前只活在 `00-教材设计.md` 里,学生从头到尾看不到。看不到目标的读者只能边读边猜"这章重点是啥",读完也无从判断自己学会了没有——UbD 的整套逆向设计对读者是不可见的。章首把目标摊开、章末(3.5 的自检)拿它对账,这套设计才第一次对读者兑现。 写法四条: - **来源唯一**:只能改写大纲切片里"该章承载的学习目标原文",**不新增、不加码、不漏条**。想加目标要回阶段 3 改章节树,不在这里私自扩张——章首多出一条设计文档里没有的目标,阶段 5 的覆盖矩阵就对不上账; - **改写成学生版**:第二人称("你应该能……")、**去掉编号与 Bloom 标注**(`O3`、"(Bloom:应用)"都不要——那是给作者看的追溯脚手架,学生读到只会困惑); - **保留可判断性**:动词照旧要具体可检验。设计文档里写"能用高斯消元法求解 3×4 增广矩阵对应的方程组并判断解的个数",章首写"你应该能对一个 3×4 的增广矩阵做高斯消元,并说出方程组有几个解"——降低的是术语密度,不是可判断性。改成"理解高斯消元法"就白改了:学生无法判断自己算不算"理解"; - **数量随章节树**:通常 1–3 条,不凑数、不合并。一条都不承载的章在阶段 3 就该被改造,写到这里说明大纲切片有问题,在回报里提出而不是自己编一条。 ### 3.1 概念讲解 - 开头从**前章小结的核心结论**自然衔接引入,不突兀空降; - 每个概念遵循"**动机 → 定义 → 直观解释 → 与相邻概念的关系**"四步链条:先说为什么需要它,再给严格定义,再给直观图景,最后说它和已学概念的关系; - 文体遵循同目录 [writing-style.md](writing-style.md) 全部条款(叙事性、认知负荷控制、术语一致、措辞禁忌、中文排版、配图双轨),外加所用档案第 4 节的文体附加条款(`stem` 档案为第 13 节数学公式规范); - 抽象概念配示意图,图示类型见档案第 4 节(`stem` 档案为 mermaid/SVG);纯概念章节至少一张; - **禁止在此段塞题目**——概念讲解只讲概念,练习交给后三段。 ### 3.2 示范例题 - 数量 1–3 道,**全脚手架**:每一步都给出理由——读者应能看懂"为什么这么做"而不只是"做了什么"; - 本学科的具体教学动作见档案第 4 节(`stem` 档案:完整解题过程 worked example,每题末尾加一句"回顾:这道题用到了<概念>的<哪个性质>"); - 由 textbook-exercises 生成并完成验证(设计与验证纪律见 [../../textbook-exercises/references/exercise-design.md](../../textbook-exercises/references/exercise-design.md),验证手段按档案第 2 节选); - 题面紧贴 N.1 刚讲的概念,别引入未讲的知识。 ### 3.3 引导练习 - 数量 1–3 道,与某道示范例题**同构**——读者刚看完示范,现在半独立地做一遍;"同构"在本学科具体怎么做见档案第 4 节(`stem` 档案:换数据或换场景); - 支撑方式是**提示阶梯**,固定两层 + 完整解答: - 提示 1(方向性):指出从哪里入手,不给步骤; - 提示 2(关键步骤):给出中间关键的那一步(`stem` 档案为关键变形); - 完整解答:放在提示之后,供对照。 - 排版顺序:题目 → 提示 1 → 提示 2 → 完整解答,三层**各自用 `<details>` 折叠**——线性排版下"读者自行决定看到哪层"是句空话,眼睛扫过去就全看见了,提示阶梯也就白设。折叠写法(`<summary>` 之后必须空一行,否则多数渲染器不解析块内 Markdown): ```markdown **题目**:…… <details><summary>提示 1(方向)</summary> 从哪里入手,不给步骤。 </details> <details><summary>提示 2(关键步骤)</summary> 给出中间关键的那一步。 </details> <details><summary>完整解答</summary> ……(含验证行与验证过程) </details> ``` 纯文本环境下标签裸露但内容仍可读,是可接受的降级;**引导练习的解答留在章内**,不搬进 `98-参考答案.md`——提示与解答离开题干就失去意义。 ### 3.4 独立习题 - 数量 3–8 道,**无脚手架**;题目构成见档案第 4 节(`stem` 档案:变式题换条件 + 组合题跨概念 + 少量开放题); - 按 Bloom 阶梯**先低后高**排列; - **每题必附参考答案或解题路径**(真实性红线)——绝不出现"留给读者作为练习"的悬空。被主 skill 调度且 `answer_layout=separate` 时,答案连同验证行、验证过程一并回报给主 skill 写入 `98-参考答案.md`,章内只留题干与 Bloom 标注;**红线不因此松动**:答案照样必须存在、必须验证,改的只是它落在哪个文件(落位规则见 [../../textbook/references/handoff-contract.md](../../textbook/references/handoff-contract.md) 3.1 节); - 开放题给"参考要点"而非标准答案,并标注"开放题";「开放题」标记与论述类题的**评价标准表留在章内**(那是任务说明,读者动笔前就该知道按什么标准写),参考要点随答案搬走。 ### 3.5 本章小结 固定四件,缺一不可(前两件与末件面向作者与全书机制,第 3 件面向学生): 1. **核心结论**(3–5 条):本章可被后续章节引用的结论清单——这是下一章写作输入契约中"前章小结"的来源,写的时候面向"下一章的作者"; 2. **与持久理解的呼应**:本章推进了哪条持久理解,一句话说明(阶段 5 章节对齐走查以此为据); 3. **自检**:把章首「本章学习目标」逐条搬下来(**用原句,不改写不精简**——学生要能一眼认出这是章首那条),每条写成一个 `- [ ]` 复选项,并给两个出口:拿不准时回看哪一段(`回看 N.1`)、拿哪道题自测(`自测:习题 N-2`)。**指向的题号必须真实存在于本章**,指错等于把学生送进死胡同; 4. **下一章预告**(1 句):本章遗留的问题或自然延伸,制造章间钩子。 第 3 件的动机:小结原本三件全是作者向的(给下一章作者的结论、给阶段 5 走查的呼应、给章间钩子的预告),**学生读完一章最想知道的"我学会了没有"没人回答**。自检件把章首的目标与章内的题目接上,读者自己就能闭环:目标 → 逐条自问 → 不确定就回看 → 用指定的题自测。 ## 4. 题目编号与格式(全书统一) 编号规则:`例 <章号>-<序号>`、`习题 <章号>-<序号>`,章内各自从 1 连续编号;**引导练习计入"例"的编号序列**,标题后缀"(引导练习)"。 章内格式(与 exercise-design.md 第 6 节一致;下例的验证方式取自 `stem` 档案第 2 节,用其他档案时换成该档案的手段): ```markdown #### 例 3-1:矩阵乘法的行视角【Bloom:理解】 **题目**:…… **解**:(逐步推导,每步一行理由) **验证**:✅ 已验证(Python/sympy 复算,结果一致) #### 习题 3-2【Bloom:应用】 **题目**:…… ``` **示范例题解答留在章内、独立习题到题干为止**——习题 3-2 的参考答案、验证行、验证过程三件回报给主 skill,写进 `98-参考答案.md` 的「## 第 3 章 <章标题>」节下,题号与章内逐字一致: ```markdown #### 习题 3-2【Bloom:应用】 **参考答案**:……(或 **解题路径**:关键步骤 1 → 2 → 3) **验证**:✅ 已验证(Python/sympy 复算,结果一致) (验证过程代码块) ``` 分离只在被主 skill 调度且 `answer_layout=separate` 时执行;**独立触发本 skill 写单篇文章时不分离**,习题答案照旧写在题干之后(没有项目目录,搬无可搬)。落位边界(搬三件、留四件)见 [../../textbook/references/handoff-contract.md](../../textbook/references/handoff-contract.md) 3.1 节。 验证状态只有两种:`✅ 已验证(<方式>)` / `⚠️ 需作者确认(<原因>)`。 ## 5. 章内自查清单(落盘前必过) 1. 四段俱全、顺序不乱、标题文案与所用档案第 4 节逐字一致?首尾两件的标题写作 `## 本章学习目标` 与 `## 本章小结`(任何档案下都是这两行,不随学科改)? 2. 引言衔接了前章小结、呼应了一条核心问题? 3. 每道题都有 Bloom 标注和验证状态行?**分类数一遍**——`answer_layout=separate` 时验证行分居两处,一把总数对不上账:章内「示范例题 + 引导练习」题数必须等于章内验证行数;章内独立习题题数必须等于回报的 `本章独立习题答案[]` 条目数,且**题号逐一对得上**(搬丢一道、搬错章都在这里现形)。概念型、记忆理解型的题同样要有验证行(方式写"核对定义来源"),漏行等同于未验证([../../textbook-exercises/references/exercise-design.md](../../textbook-exercises/references/exercise-design.md) 第 3 节第 4 条)。编号连续且格式统一? 4. 小结四件齐全(核心结论 3–5 条 / 持久理解呼应 / 自检复选清单 / 下一章预告)? 5. 术语与术语表一致,新术语已登记?**本章首次出现的符号也登记进 `新增符号[]` 了吗**——把本章正文与题目里的记号过一遍,读者可能不知道怎么念或代表什么的都算(输入的术语表里已有同义符号时沿用旧的,不新造)。 6. 无"留给读者"式悬空?无未讲先用的概念跳跃? 7. 答案落位对不对?(`answer_layout=separate` 时)**在章文件里搜一遍 `参考答案`、`解题路径`、`参考要点`**——N.4 段内一处都不该有,命中即是没搬干净;引导练习的提示 1 / 提示 2 / 完整解答三层都套上 `<details>` 了吗?示范例题的解答**不该**被折叠或搬走。 8. **章首学习目标与章末自检对得上吗**——三处动手核一遍:章首的条数与大纲切片里"该章承载的学习目标原文"条数**相等**(既不多也不少);章末自检逐条用的是章首原句;自检里指向的每个题号在本章真实存在(`回看 N.x` 的段号同样要存在)。另外**搜一遍章首与自检两处**:不该出现 `O1` 一类编号、也不该出现"(Bloom:应用)"标注,那是作者向的追溯脚手架。 9. 档案第 4 节的文体附加条款逐条落实?(`stem` 档案 = [writing-style.md](writing-style.md) 第 13 节:公式全用 `$...$` / `$$...$$` 定界,矩阵环境全章统一,被后文引用的公式有 `*式 N-M*` 标注)**其中"公式内无中文"要动手查**:搜一遍 `\text{`,逐个确认括号里没有中文——多行推导的行标签最容易在这里破功,改用 `(AB)_{11}` 一类符号标签。 -
writing-style.md 9.3 KB
# 教材正文撰写规范 本文档是 textbook-chapter skill 撰写章节正文时遵循的文体规范,改造自 tutorial-writer 的同名文件:保留其经过验证的通用条款,替换教程特有条款为教材特有条款。 ## 1. 单线结构(线性叙事)——最高优先级原则 全书一条主线:**大概念的递进展开**。章内同样单线。 - 每章是上一章的自然延续(引言衔接前章小结),不是若干独立话题的并列罗列; - 不设并行支线,不做「番外/彩蛋」式岔题;可选或延伸内容放章末「延伸阅读」小节或全书附录,不打断主线; - 章节顺序由持久理解的依赖关系决定(阶段 3 章节树已固定),撰写时不得擅自前置未讲概念。 ## 2. 图文分工铁律 - 读者需要输入/复制的一切内容(代码、命令、公式推导)必须以文本形式存在,不依赖图片才能跟上; - 图片只做直观展示,**不承载唯一信息**:图中文字无法复制、无法搜索、屏幕阅读器不可读; - 检验方法:假设所有图片都不存在,读者仅凭文字、公式和代码块能否完整理解本章?不能,说明某处信息被错误地放进了图片。 ## 3. 配图双轨(教材简化版) - **抽象概念/流程/几何直观** → mermaid 代码块或内嵌 SVG,随正文直接产出,不依赖外部渲染工具; - **真实软件界面**(如数值实验用到的工具界面)→ 人工截图标注块,四要素齐全(内容描述/建议框选/建议尺寸/脱敏提醒),不生成图片文件; - 每图必有图注:`*图 N-M:<说明>*`(N 为章号,M 章内连续编号); - 纯概念章节至少一张示意图。 ## 4. 叙事性要求 - 用**有论证的叙事散文**讲概念,不用 bullet 堆砌(bullet 只用于真正的并列枚举,如性质清单); - 每个概念遵循"动机 → 定义 → 直观解释 → 与相邻概念的关系"链条(与 chapter-template.md 3.1 节一致); - 段落之间要有逻辑连接词或过渡句,读者能看出"为什么下一段接着讲这个"。 ## 5. 认知负荷控制 - 一个自然段只引入**一个**新概念; - 连续引入 3 个及以上新术语之间,必须有例子或直观解释间隔,不许术语连珠炮; - 复杂推导拆成带小标题的阶段,每阶段结束给一句"到这里我们得到了什么"。 ## 6. 先「为什么」再「怎么做」 每章、每节开头先说明"这解决什么问题",再展开内容。章引言必须呼应 UbD 五件套中的一条核心问题(chapter-template.md 第 2 节)。不要一上来就是定义列表。 ## 7. 步骤化(仅操作类内容适用) 教材以概念叙事为主,本条仅适用于**操作类内容**(环境搭建、数值实验步骤等): - 每一步 = 一个动作 + 一个可观察的预期结果; - 正例:「运行 `pip install numpy`,看到 `Successfully installed` 即安装成功」; - 概念讲解、公式推导**不适用**步骤化,用叙事散文(第 4 节)。 ## 8. 代码块规范 - 必须可整段复制执行; - 带简短注释(说明这段代码做什么,而非逐行翻译代码在写什么); - 数值验证类代码给出预期输出,读者可复算核对。 ## 9. 「常见坑」提示框 用引用块呈现,不使用 GitHub 专属 `> [!TIP]` 方言(保证渲染器兼容): ```markdown > 💡 **常见坑**:矩阵乘法不满足交换律,AB ≠ BA 是常态。凡是"交换后再乘"的推导,先检查维度是否匹配。 ``` ## 10. 术语与符号一致性 - 全文遵循术语表,同一概念只用一个词。例如术语表若约定用「向量组」而非「向量集合」,全文不得混用; - **数学符号一致性**(教材特有):同一个量全书用同一符号(如矩阵用大写 A、向量用粗体 **v**、标量用小写希腊字母),符号约定作为附注记入术语表; - 撰写中发现术语表遗漏的新概念,按术语表格式补登记(视为追加,不需重新触发 gate)。 ## 11. 措辞禁忌 禁止使用「简单地」「只需」「很容易」「显然」等居高临下、假设读者能力的词汇。数学教材尤其禁止用「显然」「易得」「trivially」跳过推导步骤——每步都要有着落,跳步是教材大忌(与 exercise-design.md 反模式 3 一致)。 - 反例:「显然,该矩阵可逆」 - 正例:「该矩阵行列式为 2 ≠ 0,因此可逆」 ## 12. 中文排版 遵循《中文文案排版指北》核心规则: - 中英文之间加空格:`使用 numpy 计算`,不写 `使用numpy计算`; - 中文与数字之间加空格:`共有 3 种解法`; - 全角标点后不加空格;英文标点后正常加空格; - 中文语境下优先使用中文标点(,。!?:;「」),代码块、行内代码和数学公式内部不受此约束。 ## 13. 数学公式规范 **本节的归属**:第 1–12 节对所有学科有效;本节是 `stem` 档案在第 4 节「文体附加条款」里声明适用的内容,不构成通用规范。用其他档案时以该档案第 4 节为准(例如 `humanities` 档案声明本节不适用,改用引文与纪年体例;只有确含公式的章节按需启用本节)。档案索引见 [../../textbook/references/subject-profile-spec.md](../../textbook/references/subject-profile-spec.md) 第 5 节。 第 2 节要求公式推导必须以文本形式存在,本节规定这个文本形式具体长什么样。两个动机: - **防跨章漂移**:各章在不同会话里独立写成(上下文隔离原则见 [../../textbook/references/handoff-contract.md](../../textbook/references/handoff-contract.md) 第 6 节),术语表只管术语与符号语义、管不到公式语法。没有统一约定,第 3 章矩阵写 `bmatrix`、第 8 章写 `pmatrix`,专业读者一眼看出这不是同一本书; - **防渲染失败**:交付物是 `.md`,公式写法直接决定它在 GitHub、Obsidian、Typora、Pandoc 里能否正常渲染。一页公式渲染成一串反斜杠,等于这一页没有内容。 ### 13.1 定界符(唯一约定) - **行内**:`$...$`,如 `矩阵 $A$ 的秩`; - **行间**:`$$` 独占一行,公式独占中间行,公式块前后各留一个空行。 这是 Markdown 数学的最大公约数(GitHub、Obsidian、Typora、VS Code 预览、Pandoc 均支持)。以下写法禁用,理由与第 9 节"不使用渲染器专属方言"相同: | 禁用写法 | 原因 | | -------- | ---- | | `\(...\)`、`\[...\]` | 多数 Markdown 渲染器不识别,原样显示反斜杠 | | math 代码块(三反引号 + `math`) | GitHub 专属方言,其他渲染器显示为普通代码块 | | `\begin{equation}`、`align` | 需完整 LaTeX 环境;KaTeX 不支持 `align`,多行推导改用 `aligned` | ### 13.2 行内还是行间 行内只放**不撑行高**的短表达:单个符号、带下标的量、简单乘积——`$A\mathbf{x}$`、`$\lambda_1$`、`$2 \times 3$`。 出现以下任一,改用行间:分式 `\frac`、求和 `\sum`、积分 `\int`、矩阵、根号套分式、多行推导。 - 反例:`当 $\sum_{i=1}^{n} \frac{a_i}{b_i} > 0$ 时……`——行高被撑坏,上下行文字被挤开,读者的视线被迫跳行; - 正例:把该式提为行间公式,正文写"当下式成立时……"。 ### 13.3 公式编号(与图注、题号同一体例) **只给需要被后文引用的公式编号**,不引用的不编号——满页编号会让读者以为每一式都要记住。编号格式 `N-M`(N 为章号,M 章内连续),写法沿用第 3 节图注 `*图 N-M:<说明>*` 的体例,在公式块后紧跟一行斜体标注: ```markdown $$ A\mathbf{x} = \mathbf{b} $$ *式 3-1:线性方程组的矩阵形式* ``` 正文引用时写"由式 (3-1) 可知……"。 **不用 `\tag{}`**:它依赖 MathJax/KaTeX 扩展,在不支持的渲染器里整式渲染失败;斜体文本标注在任何渲染器下都至少可读。 ### 13.4 环境与符号的统一写法 - **矩阵与向量统一用 `bmatrix`**(方括号),全书不与 `pmatrix` 混用;列向量同样用 `bmatrix`; - **多行推导**用 `aligned` 包在行间公式内,以 `&=` 对齐: ```markdown $$ \begin{aligned} (AB)^{T} &= B^{T}A^{T} \\ &= B^{T}A^{T} \end{aligned} $$ ``` - **公式内不写中文**:`\text{}` 里的中文在 KaTeX 下字体缺失甚至报错。每步推导的理由写在公式**外**的正文句子里——这与第 11 节"每步都要有着落"本就一致:理由是给人读的句子,不是塞进公式的小字。**多行推导想逐行加标签时,标签用符号**:写 `(AB)_{11} &= 1 \times 0 + 2 \times (-1) = -2`,不写 `\text{第 1 行第 1 列:} && 1 \times 0 + \dots`——后者是这条最常见的破功处,因为"给每行加个说明"看起来无害。`\text{}` 只留给英文短词(`\text{if}`、`\text{mod}`),里面出现任何中文即违规; - 符号**选什么**(矩阵用大写 $A$、向量用粗体、标量用小写希腊字母)归第 10 节与术语表的「## 符号约定」节管(逐章由回报字段 `新增符号[]` 追加),本节只管排版语法。 ### 13.5 中文与行内公式之间加空格 沿用第 12 节规则,行内公式视作英文成分处理: - 正例:`设矩阵 $A$ 可逆,则 $A^{-1}$ 存在` - 反例:`设矩阵$A$可逆,则$A^{-1}$存在`
-
-
SKILL.md 8.7 KB
--- name: textbook-chapter description: 按大纲切片与 UbD 锚点写一章教材正文时用它:固定四段式结构——概念讲解 → 示范例题 → 引导练习 → 独立习题。触发语如"写第三章"、"按大纲写这一章"。通常由 textbook 调度,也可单独运行,用来写一篇带完整例题的深度技术文章。不负责设计大纲,也不负责整本书的调度;只是问一个知识点、要一段解释而不是成篇教材内容时,也不要用它。需与 textbook 系列其余 skill 装在同一 skills 目录下。 slug: textbook-chapter displayName: 教材写作·单章正文 version: 0.6.2 summary: 按四段式写一章正文——概念讲解、示范例题、引导练习、独立习题;只接收输入契约、不读其他章正文,长教材不爆上下文。需与 textbook 系列其余 skill 同级安装。 --- # textbook-chapter 按四段式模板写一章教材正文:概念讲解 → 示范(教)→ 引导(扶)→ 独立(放)四段,外加章引言与本章小结。章结构的权威来源是 [references/chapter-template.md](references/chapter-template.md),文体规范是 [references/writing-style.md](references/writing-style.md)。 四段的**标题文案**、后三段的**具体教学动作**、配图类型与文体附加条款取自输入契约里 `学科档案` 指定的档案第 4 节——规格与索引见 [../textbook/references/subject-profile-spec.md](../textbook/references/subject-profile-spec.md),开写前先读该档案第 4 节。 ## 何时不触发 - 设计教材大纲(用 textbook-outline) - 全书多章调度(用 textbook) - 只要题目不要正文(用 textbook-exercises) ## 两种调用模式 - **被 textbook 调度**(常规):输入 = 契约 `{章号, 章标题, 该章大纲切片, UbD五件套, 术语表, 前章小结, 学科档案, 答案排版}`(字段定义见 [../textbook/references/handoff-contract.md](../textbook/references/handoff-contract.md) 第 2 节;第 1 章的前章小结为空)。 - **独立触发**(写深度技术文章):`答案排版` 恒为 `inline`(没有教材项目目录,答案无处可搬);一轮问清 `{主题, 读者水平, 篇幅}`;按主题自行判定学科档案(索引见 subject-profile-spec.md 第 5 节,找不到匹配项按该文档第 7 节处理);自拟**轻量版五件套**(只取三件)——1 条持久理解("读者将理解:……"句式)+ 1 个核心问题 + 1–3 条学习目标(章首学生版目标的来源),连同选定的档案 id 一并向用户展示后开写(不设 gate,展示即可);无外部术语表时自建(两节结构与列定义同契约文档第 3 节,附加结构按档案第 4 节),无前章小结则引言直接从动机切入。 ## 上下文隔离纪律(不可违反) 只接收上述输入契约,**不读入其他章正文**。跨章一致性靠三个轻量载体:术语表、前章小结、UbD 五件套(契约文档第 6 节)。"顺便读一下前几章找感觉"是违规——上下文膨胀会让长教材写不完。 ## 写作流程 1. **打印进度**:被调度时打印 `▶ 第 N/M 章:<章标题>`;独立触发时打印章标题。 2. **起草章骨架**:按 [references/chapter-template.md](references/chapter-template.md) 第 2 节的完整模板起草—— - 引言:从前章小结的核心结论衔接进入,呼应五件套中的一条核心问题,先"为什么"再"学什么"; - `## 本章学习目标`(章首件,任何档案下标题都是这一行):把大纲切片里"该章承载的学习目标原文"改写成学生版——第二人称、**去掉编号与 Bloom 标注**、保留可判断的动词,条数与切片给的**一样多**,不新增不合并(要点见 [references/chapter-template.md](references/chapter-template.md) 3.0 节)。独立触发时切片不存在,从自拟的持久理解推出 1–3 条; - 第一段(`stem` 档案为 `## N.1 概念讲解`):按大纲切片中该章定位与承载的持久理解展开,每个概念走"动机 → 定义 → 直观解释 → 关系"链条; - 全程遵循 [references/writing-style.md](references/writing-style.md):叙事散文、认知负荷控制(一段一个新概念)、配图双轨(抽象概念配示意图,纯概念章至少一图)、措辞禁忌(禁"显然/易得"跳步)、中文排版;外加档案第 4 节的文体附加条款(`stem` 档案 = writing-style.md 第 13 节数学公式规范)。 3. **生成三类题**:使用 Skill 工具调用 `textbook-exercises`(传入契约 `{章上下文, 题目计划, 术语表, 学科档案}`,其中章上下文的概念清单与学习目标从大纲切片提取,学科档案原样透传);若 Skill 工具不可用或未注册,直接读取 [../textbook-exercises/SKILL.md](../textbook-exercises/SKILL.md) 并严格遵循其指令执行。将返回题目**按类型**放入后三段(类型 → 段的对应关系固定:示范例题 → 第二段、引导练习 → 第三段、独立习题 → 第四段;段标题文案取自档案第 4 节),保持验证状态与验证过程代码块原样,不改动已验证解答的数值。 4. **按 `答案排版` 摆放答案**(`separate` 时;`inline` 时跳过本步,一切照旧写在题干之后): - 引导练习:提示 1 / 提示 2 / 完整解答三层各套一个 `<details>` 折叠,**留在章内**(写法见 chapter-template.md 3.3 节); - 独立习题:章内只留题干与 Bloom 标注,把 `{参考答案或解题路径, 验证状态, 验证过程}` 三件**整体摘出**放进回报字段 `本章独立习题答案[]`,由主 skill 写入 `98-参考答案.md`——只摘答案而把验证过程留在章内即泄底,三件必须一起走; - 示范例题一动不动:解答与验证留在章内、不折叠——它是 worked example 先行的教学内核,藏起来等于毁掉第二段。 - 论述类题的评价标准表与「开放题」标记留在章内(那是任务说明不是答案),参考要点随答案走。落位边界见契约文档 3.1 节。 5. **写本章小结**:按 chapter-template.md 3.5 节固定四件——核心结论(3–5 条,面向下一章作者)、与持久理解的呼应(一句话说明本章推进了哪条)、**自检**(把章首学习目标逐条原句搬下来写成 `- [ ]` 复选项,每条给"回看 N.x"与"自测:习题 N-y"两个出口,题号必须在本章真实存在)、下一章预告(1 句)。 6. **落盘与自查**:写入 `NN-<章标题>.md`(NN 为两位章号);按 chapter-template.md 第 5 节章内自查清单逐项自查(第 3 条的题号对账与第 7 条的答案落位尤其要动手搜一遍),不过的当场修正后再交付。 ## 输出 回报契约 `{章文件路径, 新增术语[], 新增符号[], Bloom标注回写[], 本章独立习题答案[]}`: - **新增术语**:本章首次引入的概念,按术语表「## 术语」节格式(`| 术语(中文) | 英文 | 定义/约定 | 首次出现章节 |`)写好词条——调用方负责追加进术语表.md,独立触发时直接更新自建术语表; - **新增符号**:本章首次约定的符号,按「## 符号约定」节格式(`| 符号 | 读法 | 含义与约定 | 首次出现章节 |`)写好词条。**凡在本章正文或题目里首次出现、且读者可能不知道怎么念或代表什么的记号都要登记**($A^{\mathsf T}$、$\langle x,y\rangle$、$\varepsilon_d$……),不登记它就只存在于本章上下文里,读者在第 7 章重逢时无处可查;输入的术语表里已有同义符号时沿用旧符号、不新造,此数组只放真正的新增。本学科不使用形式符号时为空数组; - **Bloom标注回写**:本章每道题的 `{题目编号, 类型, Bloom层级}`,供主 skill 阶段 5 复核实际梯度; - **本章独立习题答案**:`答案排版=separate` 时本章每道独立习题的 `{题目编号, 参考答案或解题路径, 验证状态, 验证过程}`,调用方负责追加进 `98-参考答案.md`;`inline` 时此数组为空(答案已写在章内)。条目数必须等于章内独立习题数,题目编号逐字对应; - 撰写中若发现大纲切片的题目计划有明显缺口(如某学习目标无题覆盖),在回报中附建议,由调用方/作者决定,不擅自加题。 ## 真实性约束 - 概念讲解中的事实性内容基于大纲切片与已确认的教材设计,不虚构学科结论;拿不准的表述从保守("通常""在本书讨论的范围内"),或在回报中注明请作者确认; - 例题验证责任在 textbook-exercises,本 skill **不得改动已验证解答的数值**;如需改写题目文字表述,改后必须请 textbook-exercises 重新验证。
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.