Skip to content

Commit 4e78b40

Browse files
committed
基础设施大包:术语表 + 引用 + 链接检查 + 字数追踪 + 风格指南 + 修订日志
按"核心一组(8 项)"方案完成,让后续写作可以直接填内容, 机械性维护交给工具: 【新增】 1. 术语表.md - 单一真相源,覆盖:1 公理 + 3 经验前提 + 5 定律 + 3 崩溃机制 + 26 具名定理 + 关键概念 + 案例归属 - 标注每条术语的同义词 / 禁用别名(⚠️ 与 ❌ 两级) - 维护流程说明 + grep 扫禁用词的命令 2. references.bib - BibTeX 参考文献库 - 已被引用:tainter1988、noelle-neumann1984 - 预备引用:prigogine、bak、taleb、darwin、lorenz、minsky、 bekenstein、hawking、diamond、harari、kuhn 3. .github/workflows/link-check.yml + markdown-link-check-config.json - push / PR / 每周一定时跑一次 - 排除已知尚未生效的链接(如 GitHub Pages URL) 4. scripts/wordcount.py - 中文字符计数 + 进度条 + 预算对比 - 状态标记:起步 / 在预算 / 略超 / 严重超 - 当前总计 8,681 字 / 预算 153,000-179,000 字(5.7%) 5. 字数预算.md - 各章字数目标(与 wordcount.py 同步) - 字数与"承担的理论责任"成正比的分配逻辑 - 触发预警的标准 6. docs/CHANGELOG-{template,引言,理论篇,提纲}.md - 章节修订历史,已回填引言/理论篇/提纲三个文件的当前历史 - 模板可复制用于其他章节 【修改】 7. _quarto.yml - 增加 bibliography: references.bib 配置 - 增加 crossref 配置(fig / tbl / law / thm)支持交叉引用 8. CLAUDE.md - 大幅扩展"写作规范细则":标点 / 数字格式 / 引号 / 强调用法 / 段落 / 引用脚注 / 图表标号 / 跨章节引用 / 术语使用 - 重写"命令与工作流":写作前 / 中 / 后三阶段清单 - 新增"配套基础设施清单"表格 9. README.md - 重组为三视角:读者 / 作者 / 开发者 - 读者:在线版链接 + 全书结构 + 反馈渠道 - 作者:写作前必读文件 + 评估提示词 + 字数追踪 - 开发者:环境准备 + 渲染命令 + CI + 项目结构 效果:跨文档一致性从纯手工 → 半自动维护 - 术语漂移:术语表 + grep 扫描 - 链接腐坏:CI 每周自动检测 - 引用混乱:BibTeX 单一来源 - 字数失控:脚本实时追踪 - 风格不一:CLAUDE.md 风格规范细则 - 跨文档引用:Quarto crossref 自动维护 总投入:约 2.5 小时
1 parent 3fdf1d7 commit 4e78b40

13 files changed

Lines changed: 933 additions & 31 deletions
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"ignorePatterns": [
3+
{
4+
"pattern": "^https://felixwayne0318.github.io/"
5+
},
6+
{
7+
"pattern": "^https://creativecommons.org/"
8+
},
9+
{
10+
"pattern": "^https://anthropic.com"
11+
},
12+
{
13+
"pattern": "^https://claude.ai"
14+
},
15+
{
16+
"pattern": "^https://github.com/anthropics/"
17+
},
18+
{
19+
"pattern": "^https://fonts.googleapis.com/"
20+
}
21+
],
22+
"replacementPatterns": [],
23+
"httpHeaders": [
24+
{
25+
"urls": ["https://github.com/", "https://api.github.com/"],
26+
"headers": {
27+
"Accept": "text/html",
28+
"User-Agent": "Mozilla/5.0"
29+
}
30+
}
31+
],
32+
"timeout": "20s",
33+
"retryOn429": true,
34+
"retryCount": 3,
35+
"fallbackRetryDelay": "30s",
36+
"aliveStatusCodes": [200, 206, 301, 302, 308]
37+
}

.github/workflows/link-check.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: Link Check
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
workflow_dispatch:
8+
schedule:
9+
# 每周一早 8 点(UTC)跑一次,捕捉外链失效
10+
- cron: '0 8 * * 1'
11+
12+
jobs:
13+
check-links:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v4
17+
18+
- name: Check Markdown links
19+
uses: gaurav-nelson/github-action-markdown-link-check@v1
20+
with:
21+
use-quiet-mode: 'yes'
22+
use-verbose-mode: 'yes'
23+
config-file: '.github/markdown-link-check-config.json'
24+
file-extension: '.md'
25+
folder-path: '.'
26+
base-branch: 'main'

CLAUDE.md

Lines changed: 122 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,127 @@
7878
- 引用历史事件和科学理论时确保准确性
7979
- 不对原有理论框架做任何修改,除非作者明确要求
8080

81+
## 写作规范细则
82+
83+
### 标点
84+
85+
- 中文部分使用**全角标点**`,。;:!?""''()`
86+
- 英文/数字部分使用**半角标点**`,.;:!?""''()`
87+
- 中英/中数混排时,**中文与拉丁字母数字之间留一个半角空格**
88+
- 正例:使用 Quarto 渲染、约 25,000 字、定律 III
89+
- 反例:使用Quarto渲染、约25,000字
90+
- 破折号:使用全角双破折号 `——`,不用单破折号 ```--`
91+
- 省略号:使用 `……`(六点居中),不用 `...`
92+
- 数字范围用 ``(en-dash):`6,000–8,000 字`
93+
94+
### 数字格式
95+
96+
- 正文中四位数及以下不加千位分隔:`2008 年``五百年``500 年`
97+
- 五位数及以上加千位分隔:`16,000 字``138 亿年`
98+
- 大数字优先用中文计数单位:`1.5 万字` 优于 `15,000 字`(科普书更易读)
99+
- 年份不加千位:`2008 年`,不写成 `2,008 年`
100+
101+
### 引号
102+
103+
- 优先使用全角双引号:`""` 表示"引述、强调、专名"
104+
- 引号内嵌套用全角单引号:`'…'`
105+
- 不使用直引号 `"``'`
106+
107+
### 强调用法
108+
109+
- **粗体**:用于**关键概念、首次定义的术语、定律/前提名**
110+
- *斜体*:用于*书名、引语*(中文斜体被浏览器伪斜显示,慎用)
111+
- ***粗斜体***:用于***特别强调***(每节最多 1-2 处)
112+
- 引号:用于"引述、专有名词、有保留态度的措辞"
113+
114+
### 段落
115+
116+
- 段落首行缩进交给 CSS(`theme.scss`),**不要在 Markdown 里手写空格**
117+
- 每段不超过 5-6 行(屏幕显示约 200 字),过长则分段
118+
- 单行短句强调,前后加空行:
119+
120+
> *像这样的格言句*
121+
122+
### 引用与脚注
123+
124+
- **学术引用**(来源、数据、观点归属)→ 用 BibTeX 引用 `[@key]`
125+
- 例:泰恩特在《复杂社会的崩溃》中将此称为"复杂性的递减收益"[@tainter1988]
126+
- **叙事性补充说明**(专名解释、背景知识)→ 用 Markdown 脚注 `[^name]`
127+
- **不要混用**:脚注里塞引用、引用里写背景,都会让读者来回跳跃
128+
129+
### 图表/定律/定理标号
130+
131+
- 引用图:`@fig-life-cycle`(Quarto 自动生成"图 N"标号)
132+
- 引用表:`@tbl-collapse-mechanisms`
133+
- 引用定律:`@law-1` / `@law-2` / ...
134+
- 引用定理:`@thm-time-arrow` / `@thm-path-dependence` / ...
135+
136+
加标签格式(举例):
137+
138+
```markdown
139+
::: {#thm-time-arrow}
140+
**时间之箭定理**:演化型系统的状态空间单向展开……
141+
:::
142+
143+
后面引用:详见 @thm-time-arrow
144+
```
145+
146+
### 跨章节引用
147+
148+
- 同部跨章用相对路径:`[第二章:生命](./02_生命.md)`
149+
- 跨部用相对路径:`[第三部分:哲学篇](../第三部分_哲学篇.md)`
150+
- 章末导航见现有章节末尾的"上一章/下一章"格式
151+
152+
### 术语使用
153+
154+
- **所有术语必须先在 [`术语表.md`](./术语表.md) 登记**,再进入正文
155+
- 不确定某词是否已用过 → grep 一遍:
156+
157+
```bash
158+
grep -rn "查找词" --include="*.md" .
159+
```
160+
161+
- 不使用 `术语表.md` 标注为 ❌ 的禁用别名
162+
81163
## 命令与工作流
82164

83-
- 写作新章节时,先在对应路径创建 `.md` 文件
84-
- 每完成一个章节或重大修改后提交 git commit
85-
- commit message 使用中文,简要说明修改内容
165+
### 写作前
166+
167+
- 打开 `术语表.md` + `全书提纲.md` + 当前章节,三者并列对照
168+
- `python3 scripts/wordcount.py` 查看字数进度
169+
170+
### 写作中
171+
172+
- 引入新术语 → 立即填入 `术语表.md`
173+
- 引入新引用 → 添加到 `references.bib`,正文用 `[@key]`
174+
- 引入新案例 → 登记到 `术语表.md` H 节"案例归属"
175+
176+
### 写作后
177+
178+
- 检查中英/中数混排的空格
179+
- 跑一遍 `wordcount.py` 看是否在预算内
180+
- 章节定稿前用 grep 扫禁用别名
181+
- 提交 git commit(中文 message,简要说明修改)
182+
- 重大版本更新对应章节的 `docs/CHANGELOG-{章}.md`
183+
184+
### 评估
185+
186+
- **单文档评估**(仅引言):用 [`评估提示词.md`](./评估提示词.md)
187+
- **里程碑评估**(多文档 + 基础设施):用 [`全面评估提示词.md`](./全面评估提示词.md)
188+
- 评估完成后,按 🔴 / 🟡 / 🟢 优先级修订
189+
- 修订完在 commit message 中关联回评估问题编号
190+
191+
### 配套基础设施清单
192+
193+
| 文件 | 作用 |
194+
|:---|:---|
195+
| [`术语表.md`](./术语表.md) | 单一真相源:所有术语 / 定理 / 关键概念 / 案例归属 |
196+
| [`全书提纲.md`](./全书提纲.md) | 章节责任分配 + 主讲/复演归属表 |
197+
| [`字数预算.md`](./字数预算.md) | 各章字数目标 |
198+
| [`references.bib`](./references.bib) | BibTeX 参考文献库 |
199+
| [`scripts/wordcount.py`](./scripts/wordcount.py) | 字数追踪脚本 |
200+
| [`docs/CHANGELOG-*.md`](./docs/) | 各章修订历史 |
201+
| [`_quarto.yml`](./_quarto.yml) | Quarto 项目配置 |
202+
| [`theme.scss`](./theme.scss) | 中文排版主题 |
203+
| [`filters/github-alerts.lua`](./filters/github-alerts.lua) | GitHub Alerts → Quarto Callout 过滤器 |
204+
| [`.github/workflows/`](./.github/workflows/) | CI:自动出版 + 链接检查 |

README.md

Lines changed: 97 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,17 @@
44
55
一本从单一公理出发,推导出五条核心定律和一系列推论,用统一的演化逻辑解释从宇宙到文明一切系统兴衰的科普叙事著作。
66

7-
## 全书结构
7+
**作者**:魏永江
8+
9+
---
10+
11+
## 👀 我是读者,怎么读?
12+
13+
- **在线版**(推荐):`https://felixwayne0318.github.io/RandomEvolution/`(GitHub Pages 启用后生效)
14+
- **GitHub 直接读**:从下方"全书结构"逐章点击
15+
- **下载 PDF/EPUB**:在线版页面右上角下载按钮(构建后可用)
16+
17+
### 全书结构
818

919
- 📖 [卷首](./index.qmd)
1020
- ✍️ [引言:一切系统终将崩溃?](./引言初稿.md)
@@ -20,9 +30,53 @@
2030
- ⚖️ [第三部分 · 哲学篇——秩序的代价](./第三部分_哲学篇.md)
2131
- 🌊 [第四部分 · 未来篇——与扰动共舞](./第四部分_未来篇.md)
2232

23-
## 写作工具链
33+
### 反馈
34+
35+
- 内容意见 / 错误纠正:在 [GitHub Issues](https://github.com/FelixWayne0318/RandomEvolution/issues) 提交,标题前缀 `[反馈]`
36+
- 学科专家审读:欢迎 fork + PR
37+
38+
---
39+
40+
## ✍️ 我是作者/合作者,怎么写?
41+
42+
### 写作前必读
43+
44+
| 文件 | 用途 |
45+
|:---|:---|
46+
| [`CLAUDE.md`](./CLAUDE.md) | 写作风格、规范细则、工作流 |
47+
| [`术语表.md`](./术语表.md) | 单一真相源——术语 / 定理 / 案例归属 |
48+
| [`全书提纲.md`](./全书提纲.md) | 章节责任分配 + 主讲/复演归属 |
49+
| [`字数预算.md`](./字数预算.md) | 各章字数目标 |
50+
51+
### 评估提示词
52+
53+
| 文件 | 用途 |
54+
|:---|:---|
55+
| [`评估提示词.md`](./评估提示词.md) | 单文档评估(仅引言) |
56+
| [`全面评估提示词.md`](./全面评估提示词.md) | 里程碑评估(多文档 + 基础设施) |
57+
58+
### 章节修订日志
59+
60+
详见 [`docs/`](./docs/) 目录,每章一个 `CHANGELOG-{章}.md`
61+
62+
### 字数追踪
2463

25-
本项目使用 **[Quarto](https://quarto.org/)** 作为成书工具链,支持从一份 Markdown 源同时生成网页、PDF、EPUB 三种格式。
64+
```bash
65+
python3 scripts/wordcount.py
66+
```
67+
68+
输出当前各章中文字符数 + 进度条 + 与预算的对比。
69+
70+
### 草稿放哪里
71+
72+
- 过程性草稿、废弃版本、个人笔记 → `drafts/`(已在 `.gitignore` 排除)
73+
- 写作中途临时文件 → 同样放 `drafts/`
74+
75+
---
76+
77+
## 🛠️ 我是开发者,怎么构建?
78+
79+
本项目使用 **[Quarto](https://quarto.org/)** 作为成书工具链,从一份 Markdown 源同时生成网页、PDF、EPUB 三种格式。
2680

2781
### 一次性环境准备
2882

@@ -42,17 +96,10 @@ quarto install tinytex
4296
### 渲染整本书
4397

4498
```bash
45-
# 渲染所有格式(HTML + PDF + EPUB)
46-
quarto render
47-
48-
# 仅渲染网页版(最快,日常预览推荐)
49-
quarto render --to html
50-
51-
# 仅渲染 PDF(适合校对)
52-
quarto render --to pdf
53-
54-
# 仅渲染电子书
55-
quarto render --to epub
99+
quarto render # 渲染所有格式(HTML + PDF + EPUB)
100+
quarto render --to html # 仅渲染网页版(最快,日常预览推荐)
101+
quarto render --to pdf # 仅渲染 PDF(适合校对)
102+
quarto render --to epub # 仅渲染电子书
56103
```
57104

58105
输出文件位于 `_book/` 目录。
@@ -65,30 +112,52 @@ quarto preview
65112

66113
启动本地服务器,文件保存即自动刷新浏览器。
67114

68-
## 自动出版
115+
### 自动出版(GitHub Actions)
69116

70-
每次 push 到 `main` 分支后,GitHub Actions 会自动用 Quarto 渲染网页版并部署到 GitHub Pages。
117+
每次 push 到 `main` 分支后,CI 自动渲染网页版并部署到 GitHub Pages。
71118

72119
**首次启用步骤**(仅需做一次):
73120

74-
1. push 到 `main` 触发首次构建(会自动创建 `gh-pages` 分支)
75-
2. 仓库 `Settings → Pages → Build and deployment`Source 设为 `Deploy from a branch`,分支选 `gh-pages` / `(root)`
76-
3. 等 1-2 分钟,访问 `https://felixwayne0318.github.io/RandomEvolution/` 即可看到在线书(**GitHub Pages 启用后链接才生效**
121+
1. push 到 `main` 触发首次构建(自动创建 `gh-pages` 分支)
122+
2. 仓库 `Settings → Pages → Build and deployment`,Source 设为 `Deploy from a branch`,分支选 `gh-pages` / `(root)`
123+
3. 等 1-2 分钟,访问 `https://felixwayne0318.github.io/RandomEvolution/`
77124

78-
工作流文件见 [`.github/workflows/publish.yml`](./.github/workflows/publish.yml)
125+
工作流文件:
79126

80-
## 写作约定
127+
- [`.github/workflows/publish.yml`](./.github/workflows/publish.yml) — 自动出版
128+
- [`.github/workflows/link-check.yml`](./.github/workflows/link-check.yml) — Markdown 链接检查(每周一 + push 触发)
81129

82-
- 所有正文使用 Markdown,详见 [CLAUDE.md](./CLAUDE.md)
83-
- 草稿/废弃版本放入 `drafts/` 目录(已在 `.gitignore` 中排除)
84-
- 每完成一个章节或重大修改后提交 git commit,commit message 使用中文
130+
### 项目结构
85131

86-
## 评估提示词
132+
```
133+
.
134+
├── 引言初稿.md # 引言(已 v0.2)
135+
├── 第一部分_理论篇.md # 理论篇(§1 已写,§2-§7 待)
136+
├── 第二部分_应用篇/ # 应用篇 7 章占位
137+
├── 第三部分_哲学篇.md # 占位
138+
├── 第四部分_未来篇.md # 占位
139+
├── index.qmd # 卷首
140+
├── _quarto.yml # Quarto 项目配置
141+
├── theme.scss # 中文排版主题
142+
├── filters/ # Pandoc Lua 过滤器
143+
├── references.bib # BibTeX 参考文献库
144+
├── 术语表.md # 单一真相源(不进正文)
145+
├── 全书提纲.md # 写作脚手架(不进正文)
146+
├── 字数预算.md # 字数目标(不进正文)
147+
├── 评估提示词.md # 单文档评估提示词
148+
├── 全面评估提示词.md # 里程碑评估提示词
149+
├── scripts/wordcount.py # 字数追踪
150+
├── docs/ # 章节修订日志
151+
├── .github/ # CI 工作流
152+
├── CLAUDE.md # 项目规范
153+
└── LICENSE # 许可
154+
```
87155

88-
`评估提示词.md` 收录了对引言/章节进行多维度审查的标准提示词,可用于自评或交叉评审。
156+
---
89157

90158
## 版权
91159

92-
正文采用 [CC BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh-Hans) 许可(署名–非商业–禁止演绎)。
93-
构建配置(`_quarto.yml``filters/``theme.scss``.github/workflows/`)以 MIT 许可发布,可自由复用。
160+
- **正文** 采用 [CC BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh-Hans) 许可(署名–非商业–禁止演绎)
161+
- **构建配置**`_quarto.yml` / `filters/` / `theme.scss` / `scripts/` / `.github/workflows/`)以 MIT 许可发布,可自由复用
162+
94163
详见 [LICENSE](./LICENSE)

_quarto.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,33 @@ book:
5050
chapters:
5151
- 第四部分_未来篇.md
5252

53+
# =============================================================================
54+
# 引用与参考文献
55+
# =============================================================================
56+
bibliography: references.bib
57+
citation-location: document
58+
link-citations: true
59+
60+
# =============================================================================
61+
# 交叉引用(图、表、定理、定律等)
62+
# =============================================================================
63+
crossref:
64+
fig-title: ""
65+
tbl-title: ""
66+
title-delim: " · "
67+
fig-prefix: ""
68+
tbl-prefix: ""
69+
ref-hyperlink: true
70+
custom:
71+
- kind: float
72+
reference-prefix: "定律"
73+
key: "law"
74+
latex-env: "law"
75+
- kind: float
76+
reference-prefix: "定理"
77+
key: "thm"
78+
latex-env: "thm"
79+
5380
# =============================================================================
5481
# 自定义渲染过滤器
5582
# =============================================================================

0 commit comments

Comments
 (0)