参考文献与致谢:写作规范
一句话:每一页概念都把前人的工作压缩成了几页纸;这一节负责把「这是谁做的、原始论文在哪」还回去。
本规范适用于所有 NN-模块名/NN-概念名.md。它是概念文档第 11 节的唯一格式来源,scripts/check_refs.py 按此校验。
0. 为什么要有这一节
线性代数里几乎每个概念都带着人名:柯西–施瓦茨、Gram–Schmidt、Eckart–Young、Jacobian、Hessian、Bayes、Markov……这些名字不是装饰,而是可追溯的学术债务。
在每页末尾增加「参考文献与致谢」有三个作用:
- 致敬:写清谁最早提出了这个想法,谁把它变成了今天的形式。
- 可查:读者能顺着 DOI / arXiv 找到原始论文,而不是只记住一个名字。
- 可验:课程里的公式、结论有出处,agent 和人类都不能凭印象编造。
1. 位置与结构
第 11 节固定在 ## 10. 一页速记 之后、「下一篇 →」之前:
## 10. 一页速记
- ……
## 11. 参考文献与致谢
这一页的知识不是凭空来的。下面列出本页直接借用的原始工作与权威整理;正文中的人名、定理名已链接到对应条目。链接优先指向 DOI、arXiv 或可长期访问的原文存档。
- <a id="ref-cauchy-1821"></a>**柯西(Augustin-Louis Cauchy, 1821)**:*Cours d'analyse de l'École royale polytechnique*。柯西–施瓦茨不等式最早的有限和形式出现在这部讲义里。[英译注本(Springer, 2009)](https://doi.org/10.1007/978-1-4419-0549-9)
- <a id="ref-vaswani-2017"></a>**Vaswani 等(2017)**:*Attention Is All You Need*。缩放点积注意力的出处。[arXiv:1706.03762](https://arxiv.org/abs/1706.03762)
---
下一篇 → [……](……)
规则:
- 每页 2–5 条,宁少勿滥。
- 每条一行,格式固定:
- <a id="ref-…"></a>**人物(原名, 年份)**:*作品名*。一句话贡献。[链接](https://…) - 人物用「中文名(原名, 年份)」;机构/多人合作写「Vaswani 等(2017)」。
- 一句话贡献必须说清「它为本页哪个概念提供了什么」,不要写「有重要影响」这类空话。
- 每条必须有 一个可点击的外部链接。
2. 锚点命名
- 统一前缀
ref-,只使用小写 ASCII 字母、数字和连字符:ref-cauchy-1821、ref-eckart-young-1936。 - 姓氏 + 年份;同一页同一作者同年多篇时加
a/b:ref-golub-kahan-1965。 - 锚点必须写在条目开头:
<a id="ref-…"></a>。不要用标题做锚点,标题的自动 slug 在中文环境下不稳定。 - 同一页内锚点不能重复。
- 正文中第一次提到该人物/定理时,链接到对应条目:
[柯西–施瓦茨](#ref-cauchy-1821)。 - 如果本页确实没有出现人名,也可以只在页末列出文献,作为延伸阅读;不要为了放链接硬造一句话。
3. 选什么文献
优先级从高到低:
- 原始论文/著作:提出该概念的那一篇。老论文没有 DOI 时,用出版社、学会、Gallica、Internet Archive、Wikisource 等长期存档。
- 权威专著/教材:Golub & Van Loan、Trefethen & Bau、Horn & Johnson、Higham、Nocedal & Wright、Boyd & Vandenberghe 等。
- 高质量综述:只在该领域确实有一篇公认综述时使用。
不要:
- 不要编造论文、作者、年份、DOI、arXiv 编号。
- 不要把维基百科/博客当作「原始出处」;可以作为延伸阅读,但不能替代原始文献。
- 不要为了凑数把同一本书拆成多条。
- 不要引用自己无法确认存在的「某某 19xx 年论文」。不确定就换一篇你确定存在的权威专著。
4. 链接怎么选
- 有 DOI 用
https://doi.org/…;有 arXiv 用https://arxiv.org/abs/…。 - 如果链接指向英译本/注本,斜体主标题写该版本的标题,原文标题放括号里;否则
check_refs.py --metadata会报「标题对不上」。 - 老书优先选可长期访问的数字化版本;避免临时网盘、短链、搜索结果页。
- 链接可以指向出版社页面(可能付费),但至少要让读者能拿到准确书目信息。
- 同一页的链接不要重复堆叠;一条文献一个主链接。
5. 页面内的呼应
- 正文链接用
[名称](#ref-…),不要写完整 URL。 - 只在第一次出现时链接,避免同一段里反复跳转。
- 表格里的链接同样可用;但公式里的
|仍需转义(见AGENTS.md§14.4)。 - 锚点跳转的滚动留白由
web/src/styles/global.css统一处理。
6. 校验
python3 scripts/check_refs.py # 格式、条目数、页内锚点
python3 scripts/check_refs.py --urls # 额外检查外链可达性(允许 403/429)
python3 scripts/check.py 01-向量与几何 # 小节编号与「通往大模型」
提交前至少跑离线检查;改动了外链时再跑 --urls。Web 端还要跑:
cd web && pnpm build && node scripts/check-site-links.mjs
check-site-links.mjs 会验证构建后 HTML 里每个 #ref-… 锚点真实存在。
7. 反例
<!-- 反例 1:没有链接,读者查不到 -->
- 柯西,1821。
<!-- 反例 2:编造 DOI / 把综述当原始论文 -->
- <a id="ref-cauchy"></a>**柯西(1821)**:*Cours d'analyse*。[DOI](https://doi.org/10.9999/fake)
<!-- 反例 3:锚点格式不对,正文链接会断 -->
- <a name="cauchy"></a>**柯西(1821)**:……
8. 一页速记
- 第 11 节固定 2–5 条,每条一行、一个外链。
- 锚点
ref-姓氏-年份,正文首次出现处链接过去。 - 只写你确认存在的文献;不确定就换成权威专著。
- 提交前跑
check_refs.py,Web 构建后再跑check-site-links.mjs。