简历排版修正:项目经验整块右移、西文换 Cochineal、课程执行大纲漏网 × #12

一、项目经验整块右移(简历/awesome-source-cv.cls)
  \rightcolumnlength 算早了:geometry 的 1.5cm 边距要到导言区结束才生效,
  cls 里那句 \setlength 读到 article 默认 \textwidth=345pt,算出 249.87pt,
  比应有的 417.02pt 少 167.15pt。longtable 把窄表居中排,整块右移 83.6pt。
  修法:计算挪进 \AtBeginDocument 并减去 | 竖线的 \arrayrulewidth;
  R 列由 >{\hfill}m{2.5cm} 改为 >{\raggedright\arraybackslash}p{2.5cm}。
  日期左边缘 145.1 -> 48.5pt,与其余章节严格对齐。
  这类错误零 error 零 warning,只能量 PDF 坐标才能发现。

二、西文换 Cochineal(fonts/cochineal/ + fonts.tex + 简历 cls)
  中文思源宋体配 Termes 时西文笔画偏细,中英混排会「陷进去」。
  Cochineal 宽 225.42pt vs Termes 229.68pt,只窄 1.9%,断行位置基本不动;
  Pagella/XCharter 宽 7~11%,会把全库断行推着变,故不选。
  字体 920KB 入 fonts/cochineal/(SIL OFL 1.1,附 OFL.txt),
  fonts.tex 新增 \oucUseCochineal 开关,只简历调用,其余 10 个模板不受影响。

三、换字体后暴露的真实缺陷
  西文窄 1.9% 让断点整体前移,ICIEA 那条论文冲出 88.49pt(文字顶到纸边)。
  根因是中文紧跟英文的位置不是断开点,整串被当长单词。
  加 \emergencystretch=3em 解决。

四、课程执行大纲漏网占位符(ouccourse.sty)
  ××学部××学院 硬编码在 \ccschool 里,#11 只扫了 .tex 没扫 .sty 所以漏了。
  拆成 \ccdepartment / \cccollege 两个名称宏,默认「信息科学与工程学部 /
  计算机科学与技术学院」。重编后全文 × 归零。

「代码库 PDF 没更新」经核实不成立:本地/远程 HEAD 均为 8984b93,
从服务器下载 8 个 PDF 逐字节比对全部一致,简历.pdf 3 页 0 个 ×。

验证:简历 3 页 0 error/0 Overfull/0 Underfull;全库 12 项编译回归与基线一致。
This commit is contained in:
2026-10-27 13:13:54 +08:00
parent 8984b93ee7
commit 69da5b41a6
15 changed files with 455 additions and 27 deletions
+45 -2
View File
@@ -12,11 +12,12 @@ fonts/
├── ouc-kai/ OUC Kai 楷体 2 个,7.0 MB
├── zhuque-fangsong/ Zhuque Fangsong 仿宋 1 个,8.4 MB
├── tex-gyre-termes/ TeX Gyre Termes 西文 Times 等价 4 个,550 KB
├── cochineal/ Cochineal 西文 Minion 风格 4 个,920 KB
├── harmonyos-sans/ HarmonyOS Sans 鸿蒙(中英各一档) 6 个,16 MB
└── fontawesome/ FontAwesome 简历模板的图标符号 1 个,130 KB
```
合计约 **49 MB**(改造前是 141 MB:幻灯片 49 MB + 科技报告 92 MB 各自带一份,
合计约 **50 MB**(改造前是 141 MB:幻灯片 49 MB + 科技报告 92 MB 各自带一份,
外加两套重复的字体。现在全库只有这一份,省掉 65%)。
---
@@ -89,6 +90,42 @@ fonts/
用它是为了保证中文模板里原有的西文断行、表格列宽、行内公式对齐不漂移。
实测同一段英文,Termes 与 Times New Roman 的逐词宽度差在 0.03pt 量级。
**全库默认西文字体就是 Termes**(`fonts.tex` 的 `\setmainfont`)。除简历外的
10 个模板都用它。
### 3b. Cochineal —— 西文 Minion 风格(简历专用)
| | |
|---|---|
| 上游 | Cochineal(Michael Sharpe,据 Minion 设计) |
| 授权 | SIL OFL 1.1,可随仓库分发(`cochineal/OFL.txt`) |
| 特性 | 笔画比 Times 饱满,与思源宋体灰度更接近 |
**为什么加这一款**:中文用思源宋体(中等粗细),Termes 是 Times 的度量兼容替代,
笔画偏细偏紧,中英混排时西文那一段视觉上会「陷进去」。Cochineal 笔画更饱满。
**为什么只有简历用**:它的宽度与 Termes 只差 **1.9%**(225.42 vs 229.68pt @10pt),
断行位置基本不动,所以换过去风险最小。其余候选宽 2.2%~10.8%,会把全库的表格列宽
和断行推着变(数据见 `字体` 一节末尾的对照表)。
⚠️ **不是全局生效**。`fonts.tex` 里只做了声明:
```latex
\oucUseCochineal % 调它才切;不调就还是 Termes
```
目前只有 `简历/awesome-source-cv.cls` 在 `\AtBeginDocument` 里调用。
**度量对照**(10pt 下同一句英文的排印宽度,供将来换字体时参考):
| 字体 | 样句宽 | 相对 Termes | x 高 | cap 高 |
|---|---|---|---|---|
| Termes | 229.68pt | 100.0% | 0.450 | 0.662 |
| **Cochineal** | **225.42pt** | **98.1%** | 0.433 | 0.649 |
| Libertinus Serif | 234.62pt | 102.2% | 0.433 | 0.649 |
| XCharter | 246.69pt | 107.4% | 0.481 | 0.671 |
| TeX Gyre Pagella | 254.40pt | 110.8% | 0.472 | 0.695 |
### 4. HarmonyOS Sans —— 鸿蒙字体
| | |
@@ -189,8 +226,9 @@ fonts/
ouc-kai 7.0 MB
zhuque-fangsong 8.4 MB
tex-gyre-termes 0.55 MB
cochineal 0.92 MB
harmonyos-sans 16.4 MB
合计 49 MB (省 65%)
合计 50 MB (省 65%)
```
---
@@ -204,6 +242,7 @@ fonts/
| `劳务发放说明表/` | OUC Serif | OUC Sans | TeX Gyre Termes |
| `课程执行大纲/` | OUC Serif | OUC Sans | TeX Gyre Termes |
| `试卷/` | OUC Serif / OUC Kai | OUC Sans | TeX Gyre Termes |
| `简历/` | OUC Serif / OUC Kai | OUC Serif Bold | **Cochineal** |
| `幻灯片/` | HarmonyOS Sans SC | HarmonyOS Sans SC Bold | HarmonyOS Sans |
| `科技报告/` | OUC Serif | OUC Serif Bold / OUC Kai | HarmonyOS Sans |
@@ -276,6 +315,10 @@ print({f[3] for p in d for f in p.get_fonts()})
| `tex-gyre-termes/texgyretermes-bold.otf` | TeX Gyre Termes | 1053 | 139 KB |
| `tex-gyre-termes/texgyretermes-italic.otf` | TeX Gyre Termes | 1053 | 141 KB |
| `tex-gyre-termes/texgyretermes-bolditalic.otf` | TeX Gyre Termes | 1053 | 144 KB |
| `cochineal/Cochineal-Roman.otf` | Cochineal | 1237 | 227 KB |
| `cochineal/Cochineal-Bold.otf` | Cochineal | 1255 | 228 KB |
| `cochineal/Cochineal-Italic.otf` | Cochineal | 1186 | 228 KB |
| `cochineal/Cochineal-BoldItalic.otf` | Cochineal | 1198 | 219 KB |
| `harmonyos-sans/HarmonyOS_Sans_Regular.ttf` | HarmonyOS Sans | 874 | 147 KB |
| `harmonyos-sans/HarmonyOS_Sans_Bold.ttf` | HarmonyOS Sans | 874 | 146 KB |
| `harmonyos-sans/HarmonyOS_Sans_Regular_Italic.ttf` | HarmonyOS Sans | 807 | 141 KB |