课程/参考文献与致谢:写作规范
附录源文件:docs/参考文献写作规范.md

参考文献与致谢:写作规范

一句话:每一页概念都把前人的工作压缩成了几页纸;这一节负责把「这是谁做的、原始论文在哪」还回去。

本规范适用于所有 NN-模块名/NN-概念名.md。它是概念文档第 11 节的唯一格式来源,scripts/check_refs.py 按此校验。

0. 为什么要有这一节

线性代数里几乎每个概念都带着人名:柯西–施瓦茨、Gram–Schmidt、Eckart–Young、Jacobian、Hessian、Bayes、Markov……这些名字不是装饰,而是可追溯的学术债务。

在每页末尾增加「参考文献与致谢」有三个作用:

  1. 致敬:写清谁最早提出了这个想法,谁把它变成了今天的形式。
  2. 可查:读者能顺着 DOI / arXiv 找到原始论文,而不是只记住一个名字。
  3. 可验:课程里的公式、结论有出处,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. 选什么文献

优先级从高到低:

  1. 原始论文/著作:提出该概念的那一篇。老论文没有 DOI 时,用出版社、学会、Gallica、Internet Archive、Wikisource 等长期存档。
  2. 权威专著/教材:Golub & Van Loan、Trefethen & Bau、Horn & Johnson、Higham、Nocedal & Wright、Boyd & Vandenberghe 等。
  3. 高质量综述:只在该领域确实有一篇公认综述时使用。

不要:

  • 不要编造论文、作者、年份、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。
输入关键词开始搜索