Imported from Zhangyanbo/seven-sketches-zh (
AGENTS.md). Install upstream withnpx skills add Zhangyanbo/seven-sketches-zh. Copyright stays with the author.
《组合性七讲》中文翻译工作约定
目标与范围
src/ 是全书中文工作副本。译文须准确、通顺、得体,前后术语一致;避免翻译腔、滥用被动句和拖沓的多层从句。尽量保留原书的章节层级、数学公式、彩色框、图表、习题编号与页面气质。
翻译由当前 Codex 模型亲自完成。不得使用 Ollama、机器翻译网站或其他自动翻译服务。除非用户明确要求,否则不要调用子代理;即使用户允许,也不要使用 GPT-5.5 承担中文翻译。
权威文件
- 原文:
upstream/arxiv-v3/下的英文.tex文件。 - 中文稿:
src/下的同名.tex文件。 - 译名与文风:
docs/TRANSLATION_GUIDE.md。遇到新术语,先在这里定译名,再用于正文。 - 中文主文件:
src/7Sketches.tex。
翻译规则
- 先读完整语段,弄清论证,再用自然中文重写;不要逐句机械替换。
- 数学含义、公式、标签、引用键、TikZ 结构和环境边界不得改变。可见的图中文字必须翻译。
- 优先写短而直接的句子。英文长句可拆分;主语不明时主动补出,不照搬被动结构。
\label、\ref、\cref、\cite的键保持不变。单章试编译时,跨章引用可改成自然的显式说法,如“第三章”,以免出现??;不得删除原有信息。- 人名、公式中的变量以及约定俗成的程序代码可保留原文。普通英文叙述、标题、脚注、表头和图注必须翻译。
\index{...}保留英文内部键,避免破坏索引排序与合并。最终显示文字由scripts/translate_index.py在 MakeIndex 之后统一汉化。- 每完成一章,回看本章开头、结尾和所有定义,检查同一术语是否始终采用同一译名。
编译方法
环境使用 XeLaTeX、xeCJK、Biber 和 latexmk。整书的标准入口是在仓库根目录运行:
make
该命令会完成书目、索引汉化和最终两遍 XeLaTeX,并把成品写入 dist/。以第一章独立编译为例:
cd src
latexmk -xelatex -interaction=nonstopmode -halt-on-error C1-Cascade_effects.tex
若此前因为缺少 .bib 留下了 Biber 失败缓存,先运行:
biber C1-Cascade_effects
latexmk -xelatex -interaction=nonstopmode -halt-on-error C1-Cascade_effects.tex
原始材料没有提供 Library20180913.bib,只留下旧版 upstream/arxiv-v3/7Sketches.bbl。各章实际引用的条目已还原到 src/Library20180913.bib;若后续补条目,仍须以旧 .bbl 为证,不得臆造书目信息。
旧版 TeX Live 下,newpxmath 与 XeTeX 需要 \providecommand{\mathaord}{\mathord}。Fandol 字体按 .otf 文件名设置。不要删除 src/7Sketches.tex 中这些兼容配置。
每章验收
编译成功只是第一步。每章完成后依次检查:
rg -n 'Overfull|Underfull|bad break|Missing character|Undefined control sequence|LaTeX Error|Citation .* undefined|Reference .* undefined' CHAPTER.log
pdftotext CHAPTER.pdf - | rg -n '\?\?|CHAPTER|Chapter|Undefined|Missing|Error|\[\?\]'
mkdir -p ../build/qa/pdfs/CHAPTER
pdftoppm -png -r 100 CHAPTER.pdf ../build/qa/pdfs/CHAPTER/page
然后查看全部页面的缩略图,并放大检查章首页、跨页彩框、宽表格、复杂 TikZ 图和章末。验收标准:
- 没有缺字、乱码、裁切、重叠或不可读的小字;
- 没有未解析的
??、引用或交叉引用; - 页眉写作“第 N 章”,章节标题、页码和左右页眉正常;
- 无
Overfull;mdframed bad break只有在逐页确认跨页框视觉正常后才可保留; - 公式、编号、图形关系与英文原稿一致;
- 可见文字没有成段英文残留。
最终 PDF 放入 dist/,中间渲染图放入 build/qa/pdfs/。build/ 已加入 .gitignore,不得提交视觉检查产物。
第一章试跑所得经验
- 中文章题不能只改
\chaptername;bianchi 样式还需重定义\printchaptername、\printchapternum和\chaptermark,否则正文页眉仍会出现CHAPTER 1。 - 中文更紧凑,但固定英寸宽度的多列表格仍可能溢出。以日志为准逐步收窄列宽,不凭缩略图猜测。
- 独立编译子文件不会解析其他章节的标签。对正文中自然的跨章提示,可直接写“第二章”“第三章”;全书编译时再统一核对。
- 彩色
mdframed跨页时可能报告bad break。必须查看警告页前后两页;只要边框连续、文字完整、没有空框,便属于旧版宏包的无害提示。 pdftotext适合找??、英文页眉和引用占位符,但不能代替逐页渲染检查。
第二章整书联编所得经验
upstream/arxiv-v3/7Sketches.bbl是旧版 biblatex 的生成物,不能直接交给当前 XeLaTeX。src/7Sketches.bbl必须由 Biber 根据src/Library20180913.bib重新生成,并作为构建产物忽略。- 一章若大量引用其他章节,不要以独立编译产生的
??作为交付稿。先编译整书,再从整书 PDF 中抽取该章页面;这样章节号、定义号、习题号和超链接均取最终值。 - 抽取页面时不能只看编译日志中最后一个已输出页。章末最后一页可能仍在缓冲区,直到下一章的
\chapter才真正输出。应逐页搜索下一章标题,或直接查看边界页,确认没有漏掉章末延伸阅读。 - 中文
cleveref还要定义\crefpairconjunction、\crefmiddleconjunction、\creflastconjunction与\crefrangeconjunction,否则多重引用中会混入英文and或to。 - 中文标点不要放进数学模式或只含西文字体的命令中。分段公式末尾可省略句号,正文在公式后续写;否则日志会出现 CJK 缺字警告。
- 原书某些空内容 TikZ 节点会让旧版 XeTeX 报
nullfont缺少分号。这类警告须与真正的中文缺字分开判断;若逐页确认图形完整,可视为原图宏包的无害警告。
第三章数据库与极限所得经验
- 数据库例子中的
Employee、WorksIn、Arrow、source等既是图上文字,也是贯穿表格、公式与程序代码的模式标识符。保留这类标识符,翻译周围的解释和普通表头;不要只改一处而破坏模式、实例与公式之间的对应。 - 普通英语残留不只来自正文,也可能藏在公式的
\text{and}、TikZ 标签和表格单元格中。正文扫描完成后,还要对最终 PDF 运行pdftotext -layout,专门搜索and、to、no equations等常见残留。 - 本章引用多且集中。先从
upstream/arxiv-v3/7Sketches.bbl精确提取本章实际使用的键,再逐条恢复到src/Library20180913.bib;独立编译确认本章引用齐全后,再联编整书。后续章节也沿用这一增量恢复方法。 - 编译日志里的方括号页码不是可靠的 PDF 物理页边界。用
pdftotext -f N -l N逐页搜索本章标题和下一章标题,再以“本章标题页至下一章标题页前一页”为抽取范围。 - 大型点阵 TikZ 图会产生许多
nullfont分号警告,数量可能远多于第二章。应定位到具体输入行,确认来自循环生成的空节点,再放大检查图中所有点、箭头和标签;不能仅凭警告数量判定缺字。
第四章副函子与幺半范畴所得经验
- 开始新章前先对照术语表。第四章一度把
enriched写成“丰富”,但第二章已固定为“充实”;须统一为“充实副函子”“充实函子”“充实积”和“充实于某范畴”。普通语义中的“更丰富”不受影响。 - 本章的
profunctor统一译作“副函子”,避免与预层等概念混淆;collage译“拼贴”,companion/conjoint译“伴随子/共伴随子”,compact closed category译“紧闭范畴”。新译名同时写入TRANSLATION_GUIDE.md。 - 同一个协同设计图在源码中会重复出现。盒子名、端口名和连线标注必须在每个副本中同步翻译;只改首次出现会在后文留下英文图注。
\showhide环境同时保留展示版与隐藏版定义。即使最终只排出一支,也要翻译两支,防止主文件切换选项后重新出现英文。pdftotext -layout能抓到正文扫描漏掉的英文枚举项、脚注和分段定义。完成源码扫描后,再搜索最终 PDF 中连续的两个以上英文单词;数学常量true/false、人名和文献题名可保留。- 本章紧闭范畴的大型 TikZ 图同样会触发
nullfont分号警告;\Cat{1}还会触发 Euler 书法字体缺少数字1的警告。只有在最终 PDF 中确认图形完整、数字实际可见后,才可把它们视为字体或宏包层面的无害警告。
第五章信号流图所得经验
prop在原书中故意写成小写,但中文正文统一写作PROP,首次出现时用脚注说明原作者的写法。这样既保留原意,也能让缩写在中文段落中一眼可辨。presentation在本章专指“用生成元与关系给出一个 PROP”,统一译作“表示”;signature译“符号表”,arity译“元数”,不要按一般语境另换译名。- 信号流图的表格、TikZ 标签、方框标题和公式内说明都是读者会看到的正文。源码翻译后,仍须用
pdftotext -layout搜索generator、icon、matrix、arity、input、output、and等词,排除图表中的漏译。 - 注释掉的旧稿、引用键、索引内部键、程序标识符和数学符号不算可见英文残留。扫描源码时要把这些技术内容与实际排版的英文句子区分开,不能为了“清零英文”破坏交叉引用或索引。
- 本章书目缺失时,章末文献会显示空方括号并造成假性的超宽行。先从
upstream/arxiv-v3/7Sketches.bbl还原本章全部引用,再判断章末版面;不要在引用尚未解析时为错误的行宽调整正文。 - 中文标点若放进
\mbox{}等采用西文字体的数学分支,会出现 CJK 缺字。分段函数的中文条件只放文字本身,行末标点移到数学环境外或省略。 - 联编日志应按
(./C5-Signal_flow_graphs.tex与下一章输入标记之间的区段检查。整本日志中后续未译章节的溢出或缺引文不能混算为本章问题。 - 用
pdfseparate再pdfunite抽页,会因递归资源字典生成体积异常的大文件。优先使用qpdf 7Sketches.pdf --pages . 起页-止页 -- 输出.pdf;既保留页面,又能避免文件膨胀。
第六章电路与运算子所得经验
- 本章术语链条要保持完整:
initial object译“始对象”,copairing译“余配对”,cospan译“余跨度”,Frobenius monoid译“Frobenius 幺半群”,decorated cospan译“装饰余跨度”,operad译“运算子”。不能在定义、图注和章末小结中换用近义词。 - 图中可见的例子数据一旦翻译,后续练习也要随之核对。第六章把水果标签译成中文后,原练习按英文标签取首尾字母便失去意义;应同步改成按汉语拼音取首尾字母。翻译图表不是孤立的文字替换,要追踪它在后文的引用和计算。
- 可以校正原稿中能够由上下文唯一判定的明显笔误。本章“反向图”仍是同一个 $3\Omega$ 电阻,原稿的
$3F$改为$3\Omega$;$C$-电路的边标记函数定义域应为边集 $A$,原稿误写的 $E$ 改为 $A$。这类改动必须有局部定义或图形作证,不能凭文风猜测。 - 英文单词有时本身就是数学对象,例如上下文无关文法中的
cat、dog、the。可保留这些形式符号并在中文中说明含义;普通叙述和引文定位词仍须翻译,例如Example 2.2.23写成“例 2.2.23”。 - 中文段落中的长 Hom 集表达式容易造成超宽行。若一个完整数学对象不能自然断行,应改成行间公式,不要用缩小字号或压缩字距掩盖问题。
- 全书日志中的方括号页码与 PDF 物理页码并不相同。本次第六章最终物理范围为 159--190,共 32 页;第 191 页已是第七章。抽取前后都要用
pdftotext检查首尾页,不能只依据日志推算。 - 本章验收时,先独立编译确认 18 个本章引用全部解析,再联编整书解析跨章引用。第七章和解答中尚缺的书目条目会出现在整书日志里,但不属于第六章;检查日志时仍应按章节输入标记分段判断。
第七章层、拓扑斯与行为逻辑所得经验
- 本章有一条不能拆散的概念链:
section译“截面”,restriction map译“限制映射”,matching family译“相容族”,gluing译“粘合”。讲局部数据如何成为整体数据时,定义、例子、图注和习题必须沿用同一组词。 presheaf/sheaf统一译“预层/层”,fiber/cross-section译“纤维/横截面”,site译“位形”,subobject classifier译“子对象分类子”,characteristic map译“特征映射”。内部逻辑中,predicate、quantification、modality分别译“谓词”“量化”“模态”;不得在后文随意换成近义说法。- 层的“局部截面”与“全局截面”含义不同。译文若只写“元素”或“取值”,很容易抹去定义中的限制映射与粘合条件;凡涉及局部性,都应明确数据位于哪个开集上、又限制到哪个较小开集。
- 数据库模式中的
Vertex、Pure Arrow、src、tgt和谓词名等是贯穿图、集合与公式的形式标识符,可保留英文;普通图中文字、解释性表头和叙述仍须翻译。判断标准不是“是否在图中”,而是“是否参与后续形式计算”。 - 不要把带中文名称的
\cref放进数学模式。旧版 XeTeX 会让\cref生成的“式”等汉字落入数学字体,造成缺字;行间公式中只需编号时用\eqref{...},中文连接词放在数学环境外。 - 原书个别公式或图注有可由类型唯一判断的笔误。本章将指数对象的基数式从误写的 $|\Omega^E|=\cat{E}(S,\Omega)$ 校为 $|\Omega^S|=\cat{E}(S,\Omega)$,并把图分类子说明中误写的目标图改为 $H$。只有类型、定义或相邻图形能给出唯一结论时才可这样修正。
- 独立编译本章会留下跨章引用占位符,因此最终验收必须以整书联编结果为准。阶段性 303 页版本中,本章的物理范围曾为 191--220,共 30 页;最终发布版页数可能变化。抽页前先逐页定位章题和下一章章题,再用
qpdf提取。 - 最终英文残留扫描应允许形式常量
true/false、数据库标识符、人名和文献题名,但不能允许完整英文叙述。第七章用pdftotext -layout搜索连续三个以上英文词后,只剩真值表中的true/false。
习题解答所得经验
\sol的三个必选花括号参数中,最终排印的是第三个,也就是宏定义中的第 4 个参数;前一个长参数只是正文习题的隐藏副本。质量检查应提取实际排印的解答,避免把隐藏英文误判为漏译。- 自动提取
\sol时要跳过行首已被%注释掉的宏。只在参数读取器里忽略注释还不够;搜索宏起点时也要先判断该行前缀,否则整段旧稿会被当成未闭合参数。 - 解答中的中文标点若位于数学环境,必须放进
\text{};不能让中文逗号、句号直接落入数学字体。形式标识符保留英文,解释性表头、图中标题和接线图标签仍须翻译。 - 解答原稿比正文更容易出现复制粘贴笔误。只有当类型、定义或相邻公式能唯一确定正确写法时才修正,例如拉回证明中定义域不匹配的中介态射、核的公式漏写自变量、子空间拓扑误把任意子集当成开集;并在最终日志与 PDF 中复核。
- 解答子文件独立编译时,跨章引用大量未定义属于预期现象。先用独立编译排除语法、缺字与局部版面错误,再以整书联编结果验收交叉引用、书目、索引和最终页码。
索引与全书收尾所得经验
- 正文中的英文
\index{...}键承担排序和合并职责,直接批量改成中文容易拆散同义条目。当前做法是先照常运行makeindex,再用scripts/translate_index.py src/7Sketches.ind只翻译实际显示的\item、\subitem、\see与\seealso文字;页码、超链接和英文排序次序保持不变。 - 索引后处理必须放在
makeindex之后。运行脚本后只用xelatex 7Sketches.tex联编两遍;若再次运行latexmk或makeindex,生成的英文.ind会覆盖汉化结果,须重新执行索引翻译脚本。 - 索引短语不能只做逐词替换。
composition in、of preorders、as stable under pullback等结构要结合上级条目压成“其中的复合”“预序”“在拉回下稳定”等自然短语。正文术语表仍是索引译名的唯一依据。 - 参考文献保留原文题名。长网址需要
xurl,并降低 biblatex 的 URL 断行惩罚;再配合适度的\emergencystretch,可消除网址和长英文题名造成的严重溢出,而不缩小正文字号。 - 最终英文扫描不能只搜连续长句。正文曾残留公式中的
and/or/where、列表末尾的and与一条完整英文解答;应先用pdftotext -layout搜连续四个英文词,再在参考文献之前搜索英语虚词。允许保留的只有形式常量、模式标识符、专名、英文缩写和明确讨论中的英文词例。 - 全书视觉验收采用 72 dpi 渲染,再按每 25 页生成一张 5×5 总览。先看全部总览排除空白页、断章、裁切与异常留白,再放大检查章首页、解答首页、参考文献首页、索引首页以及所有疑似超宽图。最终 PDF 的中间渲染文件统一放在
build/qa/pdfs/。
