用户在查看 简历/简历.pdf 时提出三点:
简历/简历.pdf
第 3 点经核实不成立(详见「核实结论」),但顺带查出一处真漏网占位符,一并修掉。
现象:「项目经验」一节的日期列比其他章节明显右移,与工作经历/教育经历/奖励与荣誉对不齐。
实测坐标(pymupdf 逐词取 x 坐标):
根因:awesome-source-cv.cls 里 \rightcolumnlength 算早了。
awesome-source-cv.cls
\rightcolumnlength
\RequirePackage[margin=1.5cm]{geometry} 只是登记参数,geometry 真正改写 \textwidth 是在导言区结束时。而 cls 里那句 \setlength 执行得更早,读到的是 article 默认的 \textwidth = 345pt:
\RequirePackage[margin=1.5cm]{geometry}
\textwidth
\setlength
\textwidth = 345pt
实际算出:345 − 71.13(2.5cm) − 24(4×6pt) = 249.87pt 应为: 512.15 − 71.13 − 24 − 0.4 = 417.02pt 差额: 167.15pt
longtable 默认把宽度小于版心的表格居中排(\LTleft/\LTright 都是 \fill), 于是整块右移 167.15/2 ≈ 83.6pt。把 \hfill、| 竖线等因素逐一分离做了最小复现, 均排除;换成 tabular 排同一组列类型也正常(72.3pt),确认是 longtable 的居中行为 放大了列宽计算错误。
longtable
\LTleft
\LTright
\fill
167.15/2 ≈ 83.6pt
\hfill
|
tabular
修复(简历/awesome-source-cv.cls):
简历/awesome-source-cv.cls
\AtBeginDocument
\arrayrulewidth
R
>{\hfill}m{2.5cm}
>{\raggedright\arraybackslash}p{2.5cm}
⚠️ 这类错误的危险之处:零 error、零 warning,日志里完全看不出来,只能量 PDF 坐标。
诉求:中文宋体可以,西文要更合适。
原状:TeX Gyre Termes(Times 度量兼容)。中文是思源宋体(中等粗细),Termes 笔画偏细偏紧,中英混排时西文那段视觉上会「陷进去」。
选型(10pt 下同一句英文的排印宽度,用于判断对断行的影响):
选 Cochineal 的核心理由是宽度几乎不变(窄 1.9%),断行位置和表格列宽基本不动; 其余候选宽 2.2%~10.8%,会把全库的断行推着变。
落地方式(用户选择「只改简历」,不动另外 10 个模板):
fonts/cochineal/
OFL.txt
fonts.tex
\OUCLatinCochineal
\OUCLatinCochinealBold
\oucUseCochineal
⚠️ 必须放 \AtBeginDocument:cls 执行时主文件还没 \input{../fonts.tex}, 命令尚未定义,直接调用报 Undefined control sequence。
\input{../fonts.tex}
Undefined control sequence
换成 Cochineal 后(西文窄 1.9%,断点整体前移)出现一条 Overfull 88.49pt:
\TU/cochineal(2)/m/n/10 Conference on Industrial Electronics and Applications (ICIEA), 88–93.
文字实际排到 x=595.5,而纸宽才 595.28 —— 顶到纸边了。
x=595.5
595.28
根因:XeLaTeX 里「中文紧跟英文」的位置不是断开点,TeX 把 2023 IEEE 18th Annual Conference on Industrial Electronics and Applications (ICIEA), 88--93. 当成一个长单词找断点,找到头也没有。上游模板没设 \emergencystretch,一点余量都没有。 用 Termes 时只差 0.4pt,刚好挤进去,所以一直没暴露。
2023 IEEE 18th Annual Conference on Industrial Electronics and Applications (ICIEA), 88--93.
\emergencystretch
修复:\setlength{\emergencystretch}{3em}。不动字体、不改内容、不影响其他环境。 (没选全局 \sloppy —— 那会把所有段落的词距都放松,连正常短段落也变松散。)
\setlength{\emergencystretch}{3em}
\sloppy
用户说的「代码库看到的还是带很多叉的版本」,经逐字节核实不成立(见下), 但排查时发现 课程执行大纲.pdf 第 1 页确实还有 4 个 ×:
课程执行大纲.pdf
×
××学部××学院
它硬编码在 课程执行大纲/ouccourse.sty:223,上一轮(#11)只扫了 .tex 没扫 .sty, 所以漏了。
课程执行大纲/ouccourse.sty:223
.tex
.sty
修复:拆成两个名称宏,改院名只动导言区:
\renewcommand{\ccdepartment}{海洋地球科学学院} % 默认「信息科学与工程学部」 \renewcommand{\cccollege}{地质学系} % 默认「计算机科学与技术学院」
默认值取自该模板的虚构设定(陈立群 / 电子信息工程 / 2025 秋),与课程教学日历、 成绩构成说明、试卷保持一致。校名「中国海洋大学」真实,不虚构。
未写成 \ccschool[学部][学院]:\newcommand 只支持一个可选参数,第二个方括号 会被当成正文印出来。
\ccschool[学部][学院]
\newcommand
8984b93ee7b6
简历.pdf
全库 PDF 修复后只剩 5 处合法 ×:参考答案 里的判断题符号 判断:× 3 处 + 数学乘号 0.3 × 85 2 处。
参考答案
判断:×
0.3 × 85
用户若在浏览器仍看到旧版,属 Gitea 网页 PDF 预览器缓存,可用原始文件直链复核。
0 error / 0 Overfull / 0 Underfull
commit:69da5b4(8984b93..69da5b4 main -> main) 远程验证:通过 Gitea API 从服务器下载 简历/简历.pdf(158764 字节)、 课程执行大纲/课程执行大纲.pdf(193876 字节),与本地逐字节一致。
69da5b4
8984b93..69da5b4 main -> main
课程执行大纲/课程执行大纲.pdf
模板 err Over Under 页数 劳务发放说明表 0 0 0 1 年度考核登记表 0 0 0 2 成绩构成说明 0 0 0 1 简历 0 0 0 3 试卷题型示例 0 0 0 6 参考答案 0 1 0 3 ← 基线 1,改动前既有 试卷归档封面 0 0 0 1 试卷归档目录 0 0 0 1 课程执行大纲 0 1 0 5 ← 基线 1,改动前既有 课程教学日历 0 0 0 2 幻灯片 0 0 1 30 ← 基线 1,改动前既有 科技报告 0 0 1 10 ← 基线 1,改动前既有
四个带 Overfull/Underfull 的与基线完全一致,均为改动前既有问题,本次未引入新问题。
用户若在浏览器仍看到旧版,属 Gitea 网页 PDF 预览器缓存,可用原始文件直链复核: https://code.yangyq.net/laoyang/ouc_latex_template/raw/branch/main/简历/简历.pdf
https://code.yangyq.net/laoyang/ouc_latex_template/raw/branch/main/简历/简历.pdf
简历/ 下 _dbg1~3.*、_fontcmp*.*、_fc2_p*.png 等 27 个临时文件全部删除, 未入库。
简历/
_dbg1~3.*
_fontcmp*.*
_fc2_p*.png
\setmainfont
fonts/README.md
No dependencies set.
The note is not visible to the blocked user.
背景
用户在查看
简历/简历.pdf时提出三点:第 3 点经核实不成立(详见「核实结论」),但顺带查出一处真漏网占位符,一并修掉。
一、项目经验整块右移(排版缺陷)
现象:「项目经验」一节的日期列比其他章节明显右移,与工作经历/教育经历/奖励与荣誉对不齐。
实测坐标(pymupdf 逐词取 x 坐标):
根因:
awesome-source-cv.cls里\rightcolumnlength算早了。\RequirePackage[margin=1.5cm]{geometry}只是登记参数,geometry 真正改写\textwidth是在导言区结束时。而 cls 里那句\setlength执行得更早,读到的是article 默认的
\textwidth = 345pt:longtable默认把宽度小于版心的表格居中排(\LTleft/\LTright都是\fill),于是整块右移
167.15/2 ≈ 83.6pt。把\hfill、|竖线等因素逐一分离做了最小复现,均排除;换成
tabular排同一组列类型也正常(72.3pt),确认是longtable的居中行为放大了列宽计算错误。
修复(
简历/awesome-source-cv.cls):\AtBeginDocument,等 geometry 生效后再算;同时额外减去\arrayrulewidth(|竖线自身 0.4pt,否则表宽比版心多 0.4pt)。R列从>{\hfill}m{2.5cm}(固定宽右贴)改为>{\raggedright\arraybackslash}p{2.5cm}(左对齐)。原来短日期被\hfill推到左列右边界,落在 62.3pt,仍比别的章节多缩 13.8pt。
⚠️ 这类错误的危险之处:零 error、零 warning,日志里完全看不出来,只能量 PDF 坐标。
二、西文字体换 Cochineal
诉求:中文宋体可以,西文要更合适。
原状:TeX Gyre Termes(Times 度量兼容)。中文是思源宋体(中等粗细),Termes
笔画偏细偏紧,中英混排时西文那段视觉上会「陷进去」。
选型(10pt 下同一句英文的排印宽度,用于判断对断行的影响):
选 Cochineal 的核心理由是宽度几乎不变(窄 1.9%),断行位置和表格列宽基本不动;
其余候选宽 2.2%~10.8%,会把全库的断行推着变。
落地方式(用户选择「只改简历」,不动另外 10 个模板):
fonts/cochineal/(4 个 .otf,920 KB,附OFL.txt)fonts.tex新增\OUCLatinCochineal/\OUCLatinCochinealBold两个字族和开关命令
\oucUseCochineal,不全局生效简历/awesome-source-cv.cls在\AtBeginDocument里调用该开关⚠️ 必须放
\AtBeginDocument:cls 执行时主文件还没\input{../fonts.tex},命令尚未定义,直接调用报
Undefined control sequence。三、换字体后暴露的真实排版缺陷
换成 Cochineal 后(西文窄 1.9%,断点整体前移)出现一条 Overfull 88.49pt:
文字实际排到
x=595.5,而纸宽才595.28—— 顶到纸边了。根因:XeLaTeX 里「中文紧跟英文」的位置不是断开点,TeX 把
2023 IEEE 18th Annual Conference on Industrial Electronics and Applications (ICIEA), 88--93.当成一个长单词找断点,找到头也没有。上游模板没设
\emergencystretch,一点余量都没有。用 Termes 时只差 0.4pt,刚好挤进去,所以一直没暴露。
修复:
\setlength{\emergencystretch}{3em}。不动字体、不改内容、不影响其他环境。(没选全局
\sloppy—— 那会把所有段落的词距都放松,连正常短段落也变松散。)四、课程执行大纲漏网占位符(第 3 点的真实来源)
用户说的「代码库看到的还是带很多叉的版本」,经逐字节核实不成立(见下),
但排查时发现
课程执行大纲.pdf第 1 页确实还有 4 个×:它硬编码在
课程执行大纲/ouccourse.sty:223,上一轮(#11)只扫了.tex没扫.sty,所以漏了。
修复:拆成两个名称宏,改院名只动导言区:
默认值取自该模板的虚构设定(陈立群 / 电子信息工程 / 2025 秋),与课程教学日历、
成绩构成说明、试卷保持一致。校名「中国海洋大学」真实,不虚构。
核实结论:「代码库里的 PDF 没更新」不成立
8984b93ee7b6简历.pdf3 页 0 个×全库 PDF 修复后只剩 5 处合法
×:参考答案里的判断题符号判断:×3 处 +数学乘号
0.3 × 852 处。用户若在浏览器仍看到旧版,属 Gitea 网页 PDF 预览器缓存,可用原始文件直链复核。
验收标准
0 error / 0 Overfull / 0 Underfull×归零,院名居中正常(执行大纲 Over 1、参考答案 Over 1、幻灯片 Under 1、科技报告 Under 1,均为改动前既有)
已完成并推送
commit:
69da5b4(8984b93..69da5b4 main -> main)远程验证:通过 Gitea API 从服务器下载
简历/简历.pdf(158764 字节)、课程执行大纲/课程执行大纲.pdf(193876 字节),与本地逐字节一致。四项改动的最终数据
×数量编译回归(全库 12 项)
四个带 Overfull/Underfull 的与基线完全一致,均为改动前既有问题,本次未引入新问题。
附带核实:「代码库 PDF 没更新」不成立
8984b93ee7b6(改动前)简历.pdf3 页 0 个×用户若在浏览器仍看到旧版,属 Gitea 网页 PDF 预览器缓存,可用原始文件直链复核:
https://code.yangyq.net/laoyang/ouc_latex_template/raw/branch/main/简历/简历.pdf调试文件已清理
简历/下_dbg1~3.*、_fontcmp*.*、_fc2_p*.png等 27 个临时文件全部删除,未入库。
遗留说明
若将来要全库统一换 Cochineal,需改
fonts.tex的\setmainfont本身,并重新核对各模板断行(Cochineal 窄 1.9%,断点会整体前移一点)。
fonts/README.md新增「Cochineal」章节,含 5 款候选字体的度量对照表,供将来换字体时参考,不必重新调研。