v0.7.2: 前置件排版重构 + emoji 禁令 + 引文核查
用户反馈 7 个 bug 修复: 1. 禁止 LLM 使用 emoji(全链路) - scripts/prompts/translate_system.txt 增加规则 12 - scripts/prompts/polish_system.txt 增加规则 7 - .opencode/agents/dr-analyst.md Hard Rules 增加第 10 条(同时把 prompt 自身的 ✅❌ 改为 MUST / MUST NOT) - .opencode/agents/dr-editor-in-chief.md 禁止事项加入 emoji 条款 - .opencode/skills/output-hygiene/SKILL.md 新增 §J emoji 强制禁用 2. 术语表位置错误(应在目录之后) 重构 build_body 为两阶段: (a) 扫描所有前置件(第一个正文 H1 前的所有 H1/H2),按 title_kind 分组收集 (b) 按固定顺序渲染:免责声明 → 执行摘要 → 目录 → 术语表 → 正文 → 参考文献 无论 Markdown 原文顺序如何,排版都一致。 3. 执行摘要/术语表提升为一级标题 + 分页空页 bug 统一所有独立章节(disclaimer/executive_summary/toc/glossary/references)用 h1 样式, 章节前 PageBreak;但第一个独立章节不 PageBreak(封面后已换页,避免空白)。 去掉 build_toc 内部末尾 PageBreak(原双 PageBreak 夹出空白页)。 4. 参考文献分页 已作为独立章节自动分页。 5. 附录章节自动删除 _title_kind 识别 "appendix" / "version_history" / "abstract" 全部跳过。 正文中若写了这些章节,模板直接丢弃。 6. 信源完整性核查 新增 scripts/check_citations.py: - 孤立引用(正文有 sources 无)检测 - 孤岛信源(sources 有正文无)检测 - emoji 扫描 - 实测发现项目中 61 条孤立引用(dr-analyst 编造的占位符)+ 5 条孤岛信源 7. git commit message 中文转义 bug 之前 commit 用 shell 双引号 + 反斜杠导致 \uXXXX 字面保留。 本 commit 用 heredoc 保证中文以 UTF-8 直接写入。 已 push 的历史不改,之后都用本 commit 的写法。 PDF 验证结果:55 页,0 空白页。 章节起始页:封面(1) - 免责声明(2) - 执行摘要(3) - 目录(5) - 术语表(7) - 第一章(12) - 第十章(48) - 参考文献(52)。
This commit is contained in:
@@ -101,6 +101,34 @@ SCQA 要写得隐式融合(见 mckinsey-method skill)。
|
||||
|
||||
例外:行内英文术语、代码、URL、数据单位前后保持英文标点合理。
|
||||
|
||||
### J. Emoji(强制禁用)
|
||||
|
||||
**正文与表格中严禁使用任何 emoji / 彩色符号**:
|
||||
|
||||
禁用清单(但不限于):
|
||||
`✅ ❌ ✔ ✖ 🔶 🔷 ⭐ 🟢 🔴 🟡 🟠 ⚠️ ⚠ 💡 📌 🔑 📊 📈 📉 🔥 ✨ 🎯 🎉 ➔ ➜`
|
||||
|
||||
**原因**:PDF 使用的思源字体子集不包含这些字符的 glyph,渲染为空白方框(□)。
|
||||
|
||||
**替代写法**:
|
||||
- 表格标记"有/无":用 `✓` `×`(思源字体支持)或中文字 `是` / `否`
|
||||
- 强调状态:用 `◆` `●` 等几何符号(字体支持)
|
||||
- 警示:用 `注:` `警告:` `※` 等文字前缀
|
||||
- 重点:用 **粗体** 或引用块,不用 emoji
|
||||
|
||||
扫描命令:
|
||||
```bash
|
||||
python3 -c "
|
||||
import re
|
||||
txt = open('final_zh_polished.md').read()
|
||||
pat = re.compile(r'[\u2700-\u27BF]|[\U0001F300-\U0001F9FF]|[\u2B00-\u2BFF]')
|
||||
hits = [(i, m.group()) for i, m in enumerate(pat.finditer(txt))]
|
||||
print(f'emoji 命中:{len(hits)} 处')
|
||||
for i, c in hits[:10]:
|
||||
print(f' 位置 {i}: {c!r} (U+{ord(c):04X})')
|
||||
"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、参考文献完整性校验(最关键)
|
||||
|
||||
Reference in New Issue
Block a user