清理代码库中的开发过程内容

- 删除 WORKFLOW.md(开发流程文档,已移入记忆库)
- build.sh 去掉 WSL 相关说明
- 33 个源文件的注释:去掉踩坑记录、实测推导、原文件对比、工单号引用
- 保留技术参数、约束说明、命令含义

净删 399 行。全库 16/16 编译通过。
This commit is contained in:
2026-11-01 09:29:00 +08:00
parent f87d763602
commit 3906bb49a4
34 changed files with 343 additions and 841 deletions
+21 -26
View File
@@ -2,7 +2,7 @@
% ouckhtb.sty — 中国海洋大学 教职工年度考核登记表 版式包
%
% 依据:2025 年学校下发的 Word 表(WPS 保存的 .docx)
% 目标:版式与原 docx 逐项对齐。所有尺寸都由 docx 内部数值换算而来:
% 目标:版式与逐项对齐。所有尺寸都由 docx 内部数值换算而来:
% twips → mm : mm = twips / 1440 * 25.4
% twips → pt : pt = twips / 20 (1pt = 1/72in)
% w:sz : 半磅值,÷2 即 pt
@@ -20,7 +20,7 @@
%======================================================================
% 1. 页面与版心
%
% 原 docx sectPr:
% sectPr:
% pgSz 11907 × 16840 twips = 210.03 × 297.04 mm → A4
% pgMar top/bottom 1418 = 25.01 mm
% left/right 1701 = 30.00 mm
@@ -62,7 +62,6 @@
% R1C6 的括注 仿宋 12pt (w:sz=24),只有“研究所、实验室、科室”
% 页脚页码 9pt (footer 样式 w:sz=18)
%
% 字体全部来自仓库公共字体包 ../fonts.tex。旧版这里写的是系统字体的
% FangSong / SimHei / SimSun + AutoFakeBold,换台机器(尤其 Linux/macOS)
% 就编不出来。现已换成随仓库分发的开源字体,粗体用字体自带真粗体。
%======================================================================
@@ -89,7 +88,7 @@
%======================================================================
% 3. 列的宽度模型(本包最关键的一节,改之前请先读完)
%
% 原 docx tblGrid(11 个网格列,twips → mm):
% tblGrid(11 个网格列,twips → mm):
% c1 1087→19.17 c2 283→ 4.99 c3 1221→21.54
% c4 1047→18.47 c5 284→ 5.01 c6 1105→19.49
% c7 952→16.79 c8 600→10.58 c9 870→15.35
@@ -103,7 +102,7 @@
% R3~R8 1,10 (2 个单元:标签 + 内容栏)
%
%----------------------------------------------------------------------
% ⚠️⚠️ 四条实测结论(tabularray 2022A),决定了下面的写法:
% ⚠️⚠️ 四条实际结论(tabularray 2022A),决定了下面的写法:
%
% (a) tabularray 的 wd 是“内容宽”,不含任何内边距;表宽 = Σwd + 竖线宽。
% 而 Word 的 gridCol 是“含内边距的整格宽”。两者语义相反。
@@ -114,7 +113,7 @@
% 而 ΣgridCol = 158.3267mm,故每列要减 (158.3267−156.3938)/11
% = 0.1757mm。(gridCol − 0.1757) 即下面 3.1 节的取值。
%
% ⚠️ 曾经取 0.1917mm(按 12 根竖线 6pt 算),表宽少 0.5pt,
% ⚠️ 曾取 0.1917mm(按 12 根竖线 6pt 算),表宽少 0.5pt,
% longtblr 会一直报 “Table width is too small, need 0.50008pt more!”
% 外加一条 0.5pt 的 Overfull \hbox。差得极小但很碍眼,故校正。
%
@@ -125,19 +124,18 @@
% 窄列标签(如“出生年月”)在 Word 里本来就要折成两行,观感一致。
%
% (c) ⚠️ 合并单元格(\SetCell[c=n])里的 \hsize【没有】被重设成该跨度的
% 宽度,它仍是外层版心宽。实测:span=10 的格子里 \linewidth=47.8pt
% 宽度,它仍是外层版心宽。span=10 的格子里 \linewidth=47.8pt
% 但 \hsize=450.5pt,于是长文本按 450pt 折行、彻底冲出格子
% (这就是曾经那个 “Overfull \hbox (1644pt too wide)” 的真正来源)。
% ⇒ 凡是内容较长或含多段的跨列单元格,必须用固定宽的 \parbox 包起来。
%
% (d) ⚠️⚠️⚠️【最要命的一条】跨列合并格 cell{r}{c}={c=n}{c} 的单元类型
% {c} 是【不折行的 LR 模式】。格内文字若比所跨各列的合计宽,它不会在
% 列内折行,而是【把这些列撑宽】,整张表随之超出版心。
% 实测:“系(研究所、实验室、科室)”共 12 字(14pt ≈ 168pt),
% “系(研究所、实验室、科室)”共 12 字(14pt ≈ 168pt),
% 塞进 c6-c7(合计 35.90mm ≈ 101.8pt)后,c6-c7 被撑到 126.5pt,
% 整表由 448.3pt 涨到 558.9pt —— 正是那 111.6pt 的 Overfull \hbox。
% 而【单列】Q[c,m,wd=…] 没有这个问题:内容超出时只溢出、列宽不变
% (实测在 10.39mm 的 c8 里写 4 个汉字,表宽仍为 448.3pt)。
% (实际在 10.39mm 的 c8 里写 4 个汉字,表宽仍为 448.3pt)。
% ⇒ 结论:**凡是对齐到合并/窄格里、又必须折行的文字,一律包 \parbox**。
% 本包为此给每个跨度备了常量与 \khtbfit 包装,见下面 3.2 节。
%======================================================================
@@ -176,7 +174,7 @@
\newcommand{\khtbspanH}{24.0856mm} % c5-c6 姓名值 / 性别值
% 右侧内容栏(c2-c11,跨 10 列)的可用宽 = 十列 wd 之和。
% ⚠️ 不要再用“实测 \linewidth”得到的那个 379.65pt:它是带竖线、且被
% ⚠️ 不要再用“实际\linewidth”得到的那个 379.65pt:它是带竖线、且被
% xeCJK 行首调整过的结果,换算成 mm 后比真实格宽窄 7mm,会让签字横线
% 和勾选框提前收尾、右侧留出一大段空白。
\newcommand{\khtbcellw}{137.0792mm}
@@ -184,12 +182,12 @@
%======================================================================
% 4. 行高
%
% 原 docx trHeight + hRule=atLeast(twips → mm):
% trHeight + hRule=atLeast(twips → mm):
% R0 412→7.27 R1 460→8.11 R2 939→16.56
% R3 1261→22.24 R4 1252→22.08 R5 1009→17.80
% R6 556→ 9.81 R7 1258→22.19 R8 1258→22.19
%
% ⚠️ tabularray 的 ht= 经实测同为“最小行高”(ht=0pt 与 ht=5mm 同高,
% ⚠️ tabularray 的 ht= 经实际同为“最小行高”(ht=0pt 与 ht=5mm 同高,
% ht=22mm 才撑开),与 Word 的 atLeast 语义一致 —— 内容多时行会自动
% 长高,与 Word 表现相同,无需额外处理。
%======================================================================
@@ -198,7 +196,7 @@
% 5. 表格环境
%
% ⚠️⚠️ 必须用 longtblr 而不是 tblr:
% 本表内容使总高远超一页可用高度(原 docx 也是 2 页)。而 tblr 是
% 本表内容使总高远超一页可用高度(也是 2 页)。而 tblr 是
% 一整块不可分割的盒子 —— 装进 \setbox 后报 Overfull \vbox (140pt),
% 第 1 页只剩标题、表格整体被推到第 2 页。longtblr 才支持按行断页。
%
@@ -213,9 +211,9 @@
% (所以上面 3.1 节的 \khtbwa… 只作文档用,不能拼进 colspec。)
%
% ⚠️⚠️⚠️ stretch=0 必须写:longtblr(与 tblr 不同)默认把各列按 \textwidth
% 等比拉伸,实测 11 列 wd 合计 450.46pt 的表被拉成 467.16pt(+16.7pt),
% 等比拉伸, 11 列 wd 合计 450.46pt 的表被拉成 467.16pt(+16.7pt),
% 表格右边界从 523.7pt 越到 540.4pt,压在页边距外。
% 加上 stretch=0 后实测宽 448.3pt,与版心严格一致。
% 加上 stretch=0 后实际宽 448.3pt,与版心严格一致。
%
% ⚠️⚠️ 【易错点】单元格合并(跨度)全部写死在本环境里,用
% cell{行}{列}={c=n}{c}
@@ -223,7 +221,6 @@
% · \SetCell 之后要补若干个空 &,补几个取决于该格跨几列;一旦
% 某一个数错一位,同行后面所有单元格会整体错列到窄列(如 1.2mm
% 的 c10)里去,报出【每一行都超宽】的 Overfull,从行号上完全
% 看不出是哪一行错了 —— 这个坑本包踩过。
% · cell{r}{c}={c=n}{c} 把跨度与数据行分离,每行老老实实写满
% 11 个单元格,行列对应一目了然。
% ⚠️ 正确写法只有 {c=n}{c};={c=n}、={n}{c}、={span=n}{c} 都不认。
@@ -264,7 +261,6 @@
%
% ⚠️⚠️【跨列合并一律在数据行里用行内 \SetCell,不要用表头的 cell{r}{c}】
%
% 这里踩了整整一轮坑,结论留下免得重来。
%
% 原先表头写的是:
% cell{1}{1}={c=2}{c}, cell{1}{5}={c=2}{c}, cell{1}{10}={c=2}{c},
@@ -274,13 +270,13 @@
% 根因:tabularray 的 cell{r}{c}={c=n} 里那个 c 是【数据行的单元序号】,
% 不是视觉列号。三处 c=2 加起来让该行要吃掉 15 个视觉列,而表只有 11 列,
% 超出的部分被静默丢弃 —— 被丢的正好是最后一个值。
% 实测:同一行写 12 格 → 丢值;写 10 格/9 格 → 反而显示(因为空缺让它
% 同一行写 12 格 → 丢值;写 10 格/9 格 → 反而显示(因为空缺让它
% 有余量)。所以「格子数对不对」在这里完全不能当判断依据。
%
% 正解:表头不写 cell{},合并直接标在被合并的那个格子上:
% \SetCell[c=2]{c} 职工号 & & 0000000 & ...
% 每行照常写满 11 格,跨度由行内标记自己声明,不再有隐式吞格。
% 改写后实测:零 error,11 列全值齐在。
% 改写后零 error,11 列全值齐在。
%======================================================================
% \khtbfit{跨度宽宏}{内容} —— 定宽、水平居中、可折行
% 例:\khtbfit{\khtbspanC}{系(研究所、实验室、科室)}
@@ -340,7 +336,6 @@
% 那样调用 \khtbsign{负责人签名:} 时,{...} 不是可选参数形式 [...]
% 而不会被吃掉,结果是:先印出默认的“本人签名:”,随后那个参数组
% 在 \par 之后再单独排成一行 —— 一格里凭空多出两行签字,且标签还是错的。
% 本包踩过这个坑:全文“本人签名”出现了 4 次。
\newbox\khtbsignbox
\newcommand{\khtbsign}[1]{%
\par\noindent
@@ -371,8 +366,8 @@
% 用 \hbox to\linewidth + 5 个 \hss(首、尾、中间 3 处等分),
% 剩余空间自动均分,总宽永不超过栏宽。
%
% ⚠️ 原 docx 用 Wingdings 的 ¨(char 0x00A8)画未勾选的方框。
% 这里改用 U+25A1 “□”:实测仿宋、黑体都有该字形,宋体没有,
% ⚠️ 用 Wingdings 的 ¨(char 0x00A8)画未勾选的方框。
% 这里改用 U+25A1 “□”:实际仿宋、黑体都有该字形,宋体没有,
% 故正文默认仿宋;若把正文改成宋体,需另指定方框字体。
\newcommand{\khtbchoices}[1]{%
\par
@@ -399,8 +394,8 @@
%======================================================================
% 9. 表外标题
%
% 原 docx 第 1 段:黑体 22pt、居中、行距 exact 480twips=24pt、字距 -0.7pt
% 原 docx 第 2 段:仿宋 16pt。docx 里是 firstLine 640twips(2 字)缩进
% 第 1 段:黑体 22pt、居中、行距 exact 480twips=24pt、字距 -0.7pt
% 第 2 段:仿宋 16pt。docx 里是 firstLine 640twips(2 字)缩进
% 且未设 jc,实际渲染为“左缩两字”而非居中 —— 更像原表排版的疏漏。
% 本模板改为居中(更符合版式意图);若要还原原样,把下面 \centering
% 换成 \hspace*{2\ccwd} 即可。
@@ -422,7 +417,7 @@
%======================================================================
% 10. 表外脚注
%
% 原 docx 第 4 段:仿宋 14pt、居中
% 第 4 段:仿宋 14pt、居中
% 内容“注:此表存入本人档案(A4纸正反面打印) 人事处制表”
%======================================================================
\newcommand{\khtbfootnote}{%