一、项目经验整块右移(简历/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 项编译回归与基线一致。
10 KiB
中国海洋大学个人简历 LaTeX 模板
中文个人简历模板,A4 单页两栏式排版:左侧窄栏放时间与阶段,右侧宽栏放具体内容,抬头带圆形头像与联系方式图标行。
本目录的版式来自一份在用的中文简历(
awesome-source-cv系的衍生版)。字体、占位内容、头像三处都已重做,详见下文「与上游的差别」。
特性
- 字体全部取自仓库公共字体包:中文 OUC Serif(宋体)/ OUC Sans(黑体)/ OUC Kai(楷体)/ Zhuque Fangsong(仿宋),西文 Cochineal,图标 FontAwesome —— 没有任何一个字体来自系统或 TeX Live 安装,换机器编译结果一致;
- 真粗体:标题、姓名、区块头用的都是字体自带的粗体,不是算法描边;
- 分区可拆:
section_01~section_10各自一个文件,不想要哪块就把对应\input注释掉; - 圆形头像:
\photo{2.5cm}{photo}自动裁成圆形,尺寸随参数走; - 条目化排版:论文、专利、项目、获奖等用
\emptySeparator分条,时间栏自动对齐。
环境要求
- TeX Live 2022 及以上,必须 XeLaTeX 编译;
- 不需要安装任何字体,
fonts/里有全套。
编译
在本目录下编译(不要在仓库根调用,fonts.tex 里的 Path=../fonts/ 是相对当前工作目录的):
cd 简历
xelatex 简历.tex
xelatex 简历.tex # 跑两遍:第一遍写 .aux,第二遍才能取到正确的页码与交叉引用
编译结果:3 页,日志零 error、零 Underfull、零 Overfull。嵌入字体只有 7 个,全部来自本仓库:
| 字体 | 用途 |
|---|---|
OUCSerif-Regular / OUCSerif-Bold |
中文正文与标题 |
Cochineal-Roman / -Bold / -Italic |
西文正文、标题与斜体 |
OUCKai-Regular |
中文斜体(楷体代斜体,中文惯例) |
FontAwesome |
联系方式行图标 |
改什么、在哪儿改
| 要改的内容 | 位置 |
|---|---|
| 姓名、职称、联系方式 | 简历.tex 的 \name / \tagline / \socialinfo |
| 头像 | 替换 photo.jpg(正方形,400×400 以上,会自动裁圆) |
| 各区块正文 | section_01_headline.tex ~ section_10_awards.tex |
| 不想显示的区块 | 在 简历.tex 里把对应 \input 注释掉 |
| 左侧时间栏宽度 | awesome-source-cv.cls 的 \setlength{\leftcolumn}{2.5cm},右侧栏宽会自动跟着算 |
| 主题色 | awesome-source-cv.cls 的 accentcolor |
与上游的差别(改动都在文件头注释里写明了原因)
1. 字体:三层依赖全部拆掉
上游那份简历的字体走三条路,每条都不能随仓库分发或不可复现:
| 上游做法 | 问题 | 本模板的处理 |
|---|---|---|
zh_cn-adobefonts_external.sty 设 Adobe 宋/黑/楷/仿 |
56 MB 商业字体,无授权不可分发 | 删掉这两个文件,改由 ../fonts.tex 提供中文字体 |
awesome-source-cv.cls 的 localFont 分支设 SourceSansPro-*(9 个 .otf) |
同上,且与仓库已有西文字体重复 | cls 里的 \setmainfont 整段删除,西文改走 ../fonts.tex 提供的 Cochineal |
fontawesome.sty 用字体名找系统 FontAwesome |
机器上没装就编不过 | 改成显式 Path=../fonts/fontawesome/,字体文件已入仓库 |
删掉的两个文件里还有个隐藏问题值得记一笔:原 zh_cn-adobefonts_external.sty 里
BoldFont / ItalicFont / SmallCapsFont 全部指向 Regular 那一档 ——
等于加粗不变、斜体不变,标题层次全靠字号撑。换成真粗体后版面明显立起来了。
2. 内容:真人信息全部换成一套完整虚构示例
模板必须能公开分发,所以原件里的真人姓名、手机、邮箱、住址、出生年月、论文题名与 DOI、 专利号、软著登记号、获奖名称一个都没保留。
替换方式不是全打 ×××——满篇叉号的样张既看不出排版效果,也没法直接对着改,
一页纸全是 ×,读的人都不知道哪行该填什么。所以填的是一整套自洽的虚构人物:
| 项 | 虚构值 |
|---|---|
| 姓名 / 单位 | 张远航,中国海洋大学 信息科学与工程学部 计算机科学与技术学院 教授、博导 |
| 出生 / 籍贯 | 1985.03,山东青岛 |
| 方向 | 海洋遥感信息处理、机器学习与海洋大数据 |
| 手机 / 邮箱 | (+86) 138 0000 0000 / yhzhang@ouc.edu.cn |
| 学历 | 2002–2006 本科 → 2006–2009 硕士 → 2009–2013 博士(2011–2012 南安普顿大学联培) |
| 工作 | 2013.07 博士后 → 2016.09 副教授 → 2021.12 教授 |
正文十节(section_01~section_10)也一并填满:80 余字个人简介、3 段工作经历、
4 段学历、9 篇论文、9 项专利、5 项软著、5 个项目、3 项成果转化、4 项教研项目、16 项获奖。
假数据都留了肉眼可辨的标记,不会被人误当真的抄走:
- 论文 DOI 统一
10.9999/…(.9999段是编造专用段,真实 DOI 不走这里) - 专利号统一
ZL20999900000N.x,软著登记号统一2024SR999990N - 期刊名是真实的(IEEE TGRS、Remote Sensing 等),但题名全是编的
- 成果转化的受让单位一律带「(示例)」后缀
- 头像
a.jpg/a.png(2085×2085 的真人照)换成 PIL 生成的 400×400 中性剪影photo.jpg
替换时把 section_01~section_10 整段换成自己的即可,版式不受影响;
字数变化会自动重排,不需要动 .cls。
3. 排版小修
- 项目经验不再「缩进一大截」:这一节原来整块右移了约 3.4 cm,与其他章节的
日期列对不齐(145.1pt vs 48.5pt)。根因不是
\hfill也不是竖线,而是\rightcolumnlength算早了——geometry的边距要到导言区结束才生效, 而 cls 里那句\setlength执行得更早,读到 article 默认的 345pt 文字宽, 算出 249.87pt,比应有的 417.02pt 少了 167.15pt;longtable把这张窄表居中排, 于是整块右移 167.15/2 ≈ 83.6pt。修法两条:计算挪进\AtBeginDocument(并额外减去|竖线的\arrayrulewidth=0.4pt);R列由>{\hfill}m{2.5cm}(固定宽右贴)改为>{\raggedright\arraybackslash}p{2.5cm}。 改后日期左边缘 145.1 → 48.5pt,与工作经历/教育经历/奖励与荣誉严格一致。 ⚠️ 这类错误零 error、零 warning,只看日志发现不了,必须量 PDF 坐标。 - 左栏宽度改按版心反算:原来
\leftcolumn 2.5cm + \rightcolumnlength 14.8cm看着小于版心 18 cm,但两列共 4 个\tabcolsep(≈0.85 cm)没算进去,实际 18.15 cm, 日志有Overfull 4.48pt。改成由\textwidth减去左列、列间距与竖线宽度, 改页边距也不用再调数字。 - 中西文之间加断行弹性:论文条目里「…Applications (ICIEA), 88--93. 中国青岛…」
这类「长英文名紧跟中文」的串,XeLaTeX 默认不在中英交界处断开,会把整串当
一个长单词硬冲出去(实测冲出 88.5pt,文字顶到纸边)。给 itemize 加
\emergencystretch=3em解决,不动字体、不改内容、不影响其他环境。 - 抬头去掉两处空盒:
\vspace*{0.3cm}\\和\smallskip\\会在换行前多产生一个 空 hbox(日志刷Underfull \hbox (badness 10000)),改成\\[0.3cm]/\\[\smallskipamount],间距效果不变。 \socialinfo末尾不要留\\:简历.tex里最后一行\address{...}后面加了\\同样会多一个空行。中间的\\是分行,必须保留。
4. 西文字体换成 Cochineal
中文用思源宋体(中等粗细),原先配的 TeX Gyre Termes 是 Times 的度量兼容替代,
笔画偏细偏紧,中英混排时西文那一段视觉上会「陷进去」。改用 Cochineal
(Michael Sharpe 据 Minion 设计,SIL OFL 1.1,920 KB 已入 ../fonts/cochineal/)。
| 字体 | 同一句英文宽(10pt) | 相对 Termes | x 高 |
|---|---|---|---|
| TeX Gyre Termes(原) | 229.68pt | 100.0% | 0.450 |
| Cochineal(现) | 225.42pt | 98.1% | 0.433 |
| Libertinus Serif | 234.62pt | 102.2% | 0.433 |
| XCharter | 246.69pt | 107.4% | 0.481 |
| TeX Gyre Pagella | 254.40pt | 110.8% | 0.472 |
选 Cochineal 的理由是宽度几乎不变(窄 1.9%),断行位置和表格列宽基本不动; Pagella / XCharter 宽 7~11%,会把全库的断行推着变。
⚠️ 三点务必注意:
- 只影响简历。切换命令
\oucUseCochineal定义在../fonts.tex, 但不是全局生效,只有本模板的 cls 调用。改全库请改\setmainfont本身。 - 必须放在
\AtBeginDocument里。cls 执行时主文件还没\input{../fonts.tex}, 那个命令尚未定义,直接调用会报Undefined control sequence。 - 换西文字体后必须复查 Overfull。字体窄 1.9% 会让断点位置整体前移, 原本「刚好挤进去」的长串就会暴露成真溢出——本次换字体就是这样才发现 ICIEA 那条论文冲出 88.5pt 的。
写的时候容易踩的三个坑
\newExperience的参数顺序是「结束在前、开始在后」 —— 上游定义就是先印#1(结束时间)再印#5(开始时间),第一次用极易写反,写反了两栏内容会错位。- 每条后面必须跟
\emptySeparator,否则下一条会并进同一格,不换行。 - 关键词用英文逗号
,分隔(\foreach按,切分)。用中文逗号会把整串当成 一个标签,撑出一个超宽的大框。
字体换成 SmallCaps 时的坑(已在 ../fonts.tex 里解决)
\user / \resumetitle / \experience 都用了 \textsc,而中文没有小型大写字形,
不处理会每页刷 6 条 Font shape 'TU/OUCSerif(0)/m/sc' undefined。
修的时候注意:\setCJKmainfont 里加 SmallCapsFont 与本仓库的 ItalicFeatures
互斥 —— 斜体那一档带跨目录 Path,会把小型大写的字体查找带偏,无论写
*-Regular、全名、还是带 .otf 全报
The font "OUCSerif-Regular" cannot be found.。
正解在 ../fonts.tex 里用的是 LaTeX 原生的形状替换:
\DeclareFontShape{TU}{OUCSerif(0)}{m}{sc}{<->ssub * OUCSerif(0)/m/n}{}
\DeclareFontShape{TU}{OUCSerif(0)}{b}{sc}{<->ssub * OUCSerif(0)/b/n}{}
比 fontspec 的选项低一层,不受选项间相互作用影响,效果等价。
授权
LICENSE 沿用上游。字体授权见仓库根 ../fonts/README.md,全部允许免费商用与再分发。