Commit Graph
28 Commits
Author SHA1 Message Date
laoyang e70339fcf6 全库脱敏:清除真实姓名、个人账号与私有域名 #17
开源前排查,发现三处真实个人信息残留,全部清除:

1. 真名「杨永全」→ 中性署名「中国海洋大学 LaTeX 模板库」
   幻灯片/ 下 6 个 sty 文件头的「%% 作者:杨永全」。

2. 个人账号 dryangyq → 占位地址
   幻灯片/slides.tex 第 66 行脚注里的 github/gitee/gitlab 三个
   dryangyq 仓库地址,改为 example.org 占位并注明开源后替换。

3. 个人域名 yangyq.net + 私有 Gitea 账号 laoyang → 占位地址
   幻灯片/README.md 与科技报告/README.md 的 clone 地址
   code.yangyq.net/laoyang/... 改为 example.org 占位。

另重编幻灯片/slides.pdf:旧 PDF 的脚注里还印着 dryangyq 与
yangyq.net 的 URL(源码改了但成品没重编),逐字提取确认后覆盖。

验证:
- 全库源码(.tex/.sty/.cls/.md)grep 杨永全 / dryangyq / yangyq /
  yongquan / 永全 全部零命中
- 全库 PDF 成品用 pymupdf 提取渲染文本,上述关键词零命中
- 幻灯片重编 30 页、0 error

未处理(遗留,需另决策):git 历史 27 个 commit 的作者签名是
「laoyang <i@yangyq.net>」,含个人域名邮箱。若推到公开平台需
git filter-repo 重写历史(改全部 SHA + force push),属破坏性操作,
本单不做。
2026-10-29 08:17:08 +08:00
laoyang 1abb3cf5ef 特殊事项说明表示例文案换为浮标维护场景 #16
原 \sxdesc 示例是「去菏泽做项目研讨与系统演示、自驾」,用户要求换掉。
改为「渤海湾生态环境监测浮标例行维护,前往昌邑近岸观测站更换传感器
并回收监测数据,该站位于滩涂养殖区公共交通无法抵达,需随车携带
备件箱、采样冷藏箱与工具,故自驾前往」。

选这段的理由:保持原示例「为什么必须自驾」的两条必要性(公共交通不便 +
携带专用设备),只把事由换成本课题范畴内的真实场景,示范作用不变。

影响面:仅 \sxdesc 一个宏,未动任何排版代码。

验证:
- xelatex 0 error / 0 Overfull / 0 Underfull / 1 页
- 四条横线 y = 172.99 / 457.49 / 516.34 / 573.64,与原件逐点一致
- 描述仍为 2 行(227.81 / 241.49),签名区、备注区、页码坐标全部未变
  说明 \vfil 正确吸收了文案长度变化,这正是本模板相对原 docx
  「8 个手写空段」的核心改进
2026-10-28 19:50:37 +08:00
laoyang 0fd6021b03 新增特殊事项说明表 LaTeX 模板 #16
把报销用的《中国海洋大学特殊事项说明表》Word 版复刻为 LaTeX 模板,
新增 特殊事项说明表/ 目录,与库内其余模板同一套约定。

三处关键设计:

1. 版心取「表格宽度」而非 docx 版心。原表 169.54mm 比 docx 版心宽
   13.54mm,靠 tblInd 负值顶出去;照搬 docx 版心必然 Overfull。
   改把 geometry 的版心直接设成表格宽度,零 Overfull 且位置逐点相同,
   代价是标题/备注需额外偏移补回 docx 版心的中心。

2. 行距不用 \baselineskip。本表行距逐行不同(10.5pt 与 12pt 混排),
   而 \baselineskip 只在同一段落内管行距 —— 每行 \par 自成一段后它
   根本没被读到(实测所有行距被压成 13.51,整表矮 2.25bp)。
   改成逐行插 \kern:基线距 = 上盒深度 + \kern + 本盒高度,
   与字体度量彻底解耦。

3. R0 改成「上下两半 + \vfil」,删掉原件那 8 个手写空段。
   描述写长写短都不再影响签名区位置,比原件更稳。

顺带记录六个实测踩出来的坑(块首行胶被丢弃、负 \kern 不能挡、
多行段 \ht 参照末行基线、\prevgen 必须在 \par 之后且在盒内取、
\vbox to N 的深度另计等),详见 sty 内注释与 README。

验证:
- xelatex 0 error / 0 Overfull / 0 Underfull / 1 页
- 与 Word 导出 PDF 逐项对齐:33 个文字元素 dY 全部 0.00bp,
  dX ≤ 0.04bp;四条横线与页码 0.00bp
- 像素差分 3.03%,全部落在字形轮廓上,无整体错位
- 全库 12 个模板回归通过,既有 11 个 PDF 零字节变化

与原件仅 3 处有意差异:字体换本库 OUC Serif(可分发)、
标题小标宋换真粗体(商业字体不可分发)、第 3 条备注编号统一对齐
(原件是手打漏配编号,偏 0.36bp)。
2026-10-28 19:09:12 +08:00
laoyang 389ddf51f0 README 引号统一为中文引号 #15 2026-10-27 15:05:33 +08:00
laoyang ecfbcb8c67 简历软著/转化/教研改为全自动统计,README 补使用说明 #15
新增 cvlist 环境:进入环境后每个 \item 自动 +1,条目里一个标记都不用写。
三节各只改两行(itemize → cvlist{类别}),删掉全部 15 处 \cvmark。

  \begin{cvlist}{软著}
    \item 某某系统. 2024SR9999901. ...
  \end{cvlist}
  概述:登记软件著作权 \cvnum{软著} 项

实测:加 1 条 → 概述自动 5→6;删 2 条 → 自动 5→3;还原 → 回 5。
版面与基线逐行完全一致(66/75/34 行)——cvlist 内部就是普通 itemize。
普通 itemize 不受影响(实测 3 条子项未被误计)。

专利、科研项目仍用逐条 \cvmark:它们一条要算两个类别
(专利+第一发明人、科研项目+主持/负责),cvlist 一次只能管一类。

README 新增「先回答一个最常问的问题:它是全自动的吗?」用表格直接回答
三种写法的差别,并补「全自动写法」「半自动写法」「加一个全新的类别」
三个小节,含可直接抄的代码。

踩坑:\cvmark 内部用 \detokenize 处理类别名,传参前必须 \expandafter
展开 \cv@listcat,否则写进 .cvnum 的是字面串 "\cv@listcat"。

验证:0 error / 0 Overfull / 0 Underfull,3 页;全库回归与基线一致。
2026-10-27 15:04:48 +08:00
laoyang eb3b53946c 简历概述的成果数字改为自动统计(列几条算几条) #14
概述原来手写「论文 40 余篇、专利 20 余项」,每次增删条目都要回头改。
改为正文标记、概述取数:

  \item ...论文... \cvtagcount{SCI}     % 显示 SCI 并计数
  \item ...软著... \cvmark{软著}        % 只计数
  概述:论文 \cvnum*{SCI,EI,核心} 篇(SCI \cvnum{SCI} 篇)

共注册 11 类:SCI/EI/核心/专利/第一发明人/软著/科研项目/主持/负责/转化/教研。

关键技术:不用 aux,改独立数据文件 \jobname.cvnum。
中文键经 aux 往返后 \ifcsname 全部失效(xeCJK 把汉字设为活动字符,
键的 token 形态不一致;ASCII 键正常);独立文件里中文键完全正常。
累加与显示分离(cvacc@ 每遍从 0 起 / cvnum@ 读自上一遍),
否则概述在正文之前会让上一遍的值被本遍叠加,数字翻倍。

踩坑:\cvmark 不能放 \experience 的关键词参数(会被 \foreach 拆开,
报 Misplaced \omit),必须放描述参数内;也不能放 longtable 单元格之外。

验证:0 error / 0 Overfull / 0 Underfull,3 页;加标记后版面与基线
逐行一致;连续 5 次编译数字稳定;增删条目后数字自动跟随。

⚠️ 口径变化:自动统计只数列出来的条目。示例原来写「40 余篇」但正文
只列 9 篇代表作,改成自动后变「9 篇」。README 已写明这两种口径的区别。
项目总经费仍手填(\experience 无经费字段)。
2026-10-27 14:56:34 +08:00
laoyang 8e3017f359 简历左上角加中国海洋大学校徽(可选,默认不印) #13
新增 \cvlogo[<文件名>]{<宽度>},默认不调用、不出现,不影响现有版面。

- cls:导言区只登记参数,真正画图挪到 \makecvheader 开头的 \@makecvlogo,
  否则导言区产生内容报 Missing \begin{document}
- 定位用 tikzpicture[remember picture, overlay] + current page.north west,
  距纸左 10mm / 距纸顶 6mm(相对纸边,不随页边距变)
- 距顶不照搬科技报告的 20mm:简历页边距 15mm、姓名墨迹顶 17.2mm,会压到姓名
- tikzpicture 即使全 overlay 仍占一行 17pt,用 \vspace*{-17pt} 抵消;
  \smash / \hbox to 0pt / \vbox to 0pt 三种写法实测都消不掉
- 尺寸定 28mm(横式 2400:605 ⇒ 高 7.06mm),是 15mm 边距下的上限附近

实测:logo 28.00×7.06mm,x=10.07mm、y=6.07mm,下沿 13.1mm;
姓名 y 保持 48.8pt 未位移;3 页 0 error / 0 Overfull / 0 Underfull / 0 个 ×。
体积 158KB → 573KB(内嵌 2400px 原图,实际只用 28mm≈660px)。
2026-10-27 14:25:27 +08:00
laoyang 69da5b41a6 简历排版修正:项目经验整块右移、西文换 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 项编译回归与基线一致。
2026-10-27 13:13:54 +08:00
laoyang 8984b93ee7 模板内容填充:全库 × 占位换成完整虚构示例,README 表述同步 #11
把 11 个模板里满篇的 × 换成一套连贯的虚构数据,让样张能看出排版效果。

虚构设定(跨模板统一):
- 数字逻辑 / 2025 秋 / 张远航 / 计算机科学与技术学院,教学日历、成绩构成
  说明、试卷归档封面、试卷四份互相对得上
- 简历:张远航,1985.03,教授博导,论文/专利/项目/获奖全套虚构
- 年度考核:同一人的 2025 年度考核表,年度总结四段写满
- 执行大纲:刻意不套用上面那套(原件就是《信号与线性系统分析》的课,
  强行改课程名会让章节体系、学时分配、思政案例全对不上)

假数据都留肉眼可辨标记:DOI 统一 10.9999/、专利号 ZL209999…、
软著 2024SR99999…、手机 138 0000 0000、邮箱 example.net。
签字/日期/评语栏仍然留空——编了就分不清该改哪儿。

修掉一个既有 bug(填充时才暴露):
年度考核登记表「出生年月」的值从来不显示,连字符都不在 PDF 里。
根因是 tabularray 的 cell{r}{c}={c=n} 里那个 c 是数据行的单元序号、
不是视觉列号,表头三处 c=2 要求该行吃 15 个视觉列而表只有 11 列,
超出部分静默丢弃。迷惑点:写 12 格丢值,写 9 格反而正常。
正解是表头不写 cell{},改用行内 \SetCell[c=n]{c},每行照常写满 11 格。
同时 R0 行原件本就装不下(前六字段 115.76mm,剩 42.20mm 要放
19.68mm 标签 + 17.22mm 值,但列宽被切成 15.31/1.38/25.51),
把标签折两行「出生/年月」解决,列宽一个没改。

README 同步:根 README 与 8 个模板 README 里「一律用 × 占位」的说法
已不成立,统一改为「示例内容全部虚构」,并说明哪些位置仍必须留空。

验证:12 个模板零 error,4 处基线警告未新增;干净副本重编页数一致;
PDF 正文 × 清零;真实信息零泄漏。
2026-10-27 12:50:02 +08:00
laoyang cc0dfb7257 新增个人简历模板(简历/),字体全部换成仓库自带的 #10
从个人目录的中文简历迁移为第 11 个模板,三处字体重做:

1) 字体三层依赖全部拆掉
   - 删 zh_cn-adobefonts_external/internal.sty(Adobe 宋/黑/楷/仿,56 MB,
     商业授权不可分发),中文字体改由 ../fonts.tex 提供
   - awesome-source-cv.cls 的 localFont 分支(SourceSansPro 9 个 .otf)
     整段删除,西文改走 ../fonts.tex 的 TeX Gyre Termes
   - fontawesome.sty 原按字体名找系统 FontAwesome,改成显式
     Path=../fonts/fontawesome/,并把 FontAwesome.otf 收进仓库

   顺带修掉一个设计缺陷:原 adobefonts 里 BoldFont/ItalicFont/SmallCapsFont
   全部指向 Regular,等于加粗不变、斜体不变。现用字体自带的真粗体。

2) 占位化:真实姓名/手机/邮箱/住址/出生年月/论文题名与 DOI/专利号/
   软著号/33 条获奖全部改为 ××× / 20××;真人照 a.jpg/a.png 换成
   PIL 生成的 400×400 中性剪影 photo.jpg

3) 排版修正
   - 左栏宽度改为 \dimexpr\linewidth-\leftcolumn-4\tabcolsep\relax 自适应,
     修掉长表格 Overfull 4.48pt(原来没把 4 个 \tabcolsep 算进去)
   - 抬头两处 \vspace*{...}\\、\smallskip\\ 改为 \\[...],
     修掉 Underfull \hbox (badness 10000)
   - \socialinfo 末尾多余的 \\ 去掉

fonts.tex 的改动(全库共享):\textsc 用的 sc 档改用
\DeclareFontShape{TU}{OUCSerif(0)}{m}{sc}{<->ssub * OUCSerif(0)/m/n}{}
做形状替换,而不是 SmallCapsFont 选项 —— 后者与本文件 ItalicFeatures 的
跨目录 Path 互斥,任何写法都报 The font "OUCSerif-Regular" cannot be found.

回归:11 个模板全部零 error 编译通过;科技报告/试卷/课程执行大纲
文本与改动前逐字一致,4 个既有 boxwarn 为改动前基线,未新增。

编译:cd 简历 && xelatex 简历.tex 跑两遍,3 页,零 error/Underfull/Overfull。
嵌入字体仅 OUCSerif-{Regular,Bold}、TeXGyreTermes-{Regular,Bold}、FontAwesome。
2026-10-27 11:17:24 +08:00
laoyang 95afc9caa6 成绩构成说明:表格格线全画 + 签字栏去掉年份占位 #9
用户反馈:中间表格要把线都画上,中间空白容易看错行;最后的年月日
也不要带 20xx。

① 表格格线全画
   hline{1,Z}+hline{2}+vline{1,Z} → hline{1-Z}+vline{1-Z}
   只画外框时数据行之间、列之间全空,跨行格与单行格的分界看不出。

   连带必须改列宽:画上 5 条内部竖线后表宽多 2.5pt,报
   Overfull 2.47554pt,末列 30.28mm → 29.40mm 补回。

   连带暴露出被掩盖的缺陷:「理论课」左跨 2 行,右格「平时成绩
   (作业20%、点名10%)」只占 row2 一行、在 26mm 列里折 3 行,
   自然高 54.73pt —— row2 被撑到 54.73pt,文字上下零留白,末行
   「10%)」墨迹底离行线仅 0.90pt(0.32mm),其他行是 4.97pt。
   画满格线前那里本来没有线,缺陷完全看不到。

   治法 row{2}={ht=22mm}。关键是 ht 为最小高度、须大于内容高才生效:
   先试 12.5mm(35.4pt < 54.73pt)无反应,22mm(62.4pt)才把行撑到
   62.86pt,末行墨迹间隙 4.08pt(1.44mm),与其他行同量级。

② 签字栏去掉年份
   20××~年 月 日 → 年 月 日。签名文件的年份由签字人当场手写,
   模板预留占位符反而占掉手写空间。

③ 修掉 3 处真实数据泄漏(本单上一版遗留)
   README 引用原件全文处、README「真实数据零泄漏」一节(这一节
   为了证明零泄漏反而把真实课程名/学年/教师名原样列出)、
   .tex 的「闭卷笔试」。已复查 10 个关键词零命中。

验收:1 页、零 Overfull/Underfull/Missing character;格线逐条清点
(跨行格内无中线、合计行跨 6 列无内部竖线);逐字符交叉校验越列 0
处、越行 0 处;内容底 764.71pt vs 版心底 769.89pt,余量 5.18pt。
2026-10-27 09:45:58 +08:00
laoyang a29f193cff 新增成绩构成说明 LaTeX 模板(成绩构成说明/) #9 2026-10-27 09:15:58 +08:00
laoyang a4589139da 教学日历删掉表格末尾的「课程考核及评价方式」行(另有独立成绩构成说明) #8 2026-10-27 09:15:54 +08:00
laoyang 88b3e088d6 签字栏去掉年份占位符,只保留手写填空位「年 月 日」 #8 2026-10-27 08:55:30 +08:00
laoyang 3b67659689 修复签字栏年月日重叠:年份改用定宽右对齐盒子 #8 2026-10-27 08:48:17 +08:00
laoyang 25dc872062 新增课程教学日历 LaTeX 模板(课程教学日历/) #8
把学校下发的通用空白表「附件3:中国海洋大学课程教学日历(理论课程)」
做成 XeLaTeX 模板,与 试卷归档封面/、试卷归档目录/ 同一套做法。

版式按原 .doc 逐项还原并实测标定:
- 表宽 174.625mm(tblW 9900 twips),tblInd 为负(−13.97mm),
  表格比版心更靠左,可见左边界 15.875mm
- 7 列宽度取 gridCol − 2×colsep − 线宽
- 边框 0.5pt(w:sz=4),内边距 1.905mm(108 twips)
- 字号 14 / 12 / 10.5bp 三档,全部用 bp(Word 的 pt 是 PostScript pt)
- 行高按「行数 × 23pt」显式给 ht(原件 w:line=460 exact)

实测校验(pymupdf 读两版 PDF):
- 8 条竖线 x 偏差 ≤ 0.004mm
- 纵向锚点:附件号 / 标题 / 表格顶线 Δ = 0.00pt,其余 ≤ 0.03pt
- 行高 18 行中 17 行 Δ ≤ 0.4pt
- 字号 14.00 / 12.00 / 10.50 精确
- 零警告(无 Overfull / Underfull / 缺字)

真实数据零泄漏:原 .doc 是填过的实例,模板把所有字段换成占位符
(××××、000000000000、×、20××),已 grep 确认课程名、开课号、
教师姓名、年份、16 周日期与章节名均零命中。

README 记录五类坑:bp 单位、固定行距在 TeX 里不等于 baselineskip、
linespread 必须在 fontsize 之后、SetCell 的 c 列不折行、leftskip 与
geometry 叠加;以及原件五处不一致(第一周行距 15.6pt、周次列对齐
前后不同、表头折行数、表头不加粗、签字栏用空格顶位)。

注:本模板 3 页,原件 2 页 —— 因不复制第一周行距的疏漏,该行多 22pt。
2026-10-27 08:37:28 +08:00
laoyang 8fa44b138c 新增试卷归档目录 LaTeX 模板 #7
把「附件2:信息科学与工程学院归档目录(理论课).doc」做成 LaTeX 模板,
落在 试卷归档目录/。版式逐项照原 .doc 还原,尺寸全部注明换算过程。

- oucgddir.sty:A4、表宽 150.81mm、13 行固定行高、单元格宏
- 试卷归档目录.tex:12 项核对清单
- README.md:用法 / 版式参数表 / 实测数据 / 踩坑记录
- 根 README.md、fonts.tex:模板清单加一项,「七个」改「八个」

与原稿实测对比(pymupdf 读 PDF):
  表格竖线 x Δ ≤ 0.001mm,横线 y Δ ≤ 0.006mm
  32 行文字水平中心 Δ ≤ 0.11pt,字号 24/18/12/10.45 全部精确
  编译 1 页,零 Overfull / Underfull / 缺字

踩到并解决的五个坑:
  1. \fontsize 必须用 bp(TeX pt 比 PostScript pt 大 0.36%,24pt 实测 23.91)
  2. xeCJK 吞连续半角空格 → 标题字间用 \gdgap 手动 kern 24bp
  3. xeCJK 默认 PunctStyle=quanjiao 会挤压全角括号,使含括号的行整行
     右移 4.23pt → 必须 \xeCJKsetup{PunctStyle=plain}
  4. tabularray 把线宽算进列宽、ht 不含 hline 线宽、boxes 比 Σwd 多
     0.4945pt → 三处都要实测标定
  5. 单元格整体下移只有「尾部 \vspace*」有效,顶部 \vspace*/rule 会被
     首行 ascent 吃掉,\raisebox 被 m 居中抵销

字体:方正楷体_GB2312(商业,不可分发)→ OUC Kai(霞鹜文楷子集,OFL 1.1),
西文 Times New Roman → TeX Gyre Termes。字宽逐字相同(60.00 / 120.00pt 全等)。
2026-10-27 07:51:10 +08:00
laoyang 8aa979739a 字体统一:建公共字体目录,全部改用开源可商用字体 (#6)
七个模板原先分两套做法:幻灯片/fonts(49MB 鸿蒙 18 个字重)与
科技报告/font(92MB,含 5 款方正商业字体),其余模板直接调系统
SimSun/SimHei/KaiTi/FangSong/Times New Roman。换机器就编不出来,
方正系列也不允许随仓库分发。

统一到仓库根的 fonts/ + fonts.tex:
- OUC Serif(思源宋体 SC 子集)   —— 宋体
- OUC Sans(思源黑体 SC 子集)    —— 黑体
- OUC Kai(霞鹜文楷子集)          —— 楷体
- Zhuque Fangsong(朱雀仿宋)      —— 仿宋
- TeX Gyre Termes                  —— 西文 Times 等价(度量逐字相同)
- HarmonyOS Sans                   —— 幻灯片/科技报告原有字体

fonts.tex 是唯一允许声明字体的地方,7 个模板全部 \input 它。
字体体积 141MB -> 49MB(去掉重复),全库共用一套最小集合。

几处踩过的坑(均已写进源码注释):
- \newCJKfontfamily 与 ctex 默认 fontset 冲突会中断编译,改用
  \setCJKfamilyfont + \def
- \newfontfamily 缺粗体档会让 \bfseries 静默失效,四档必须全给
- UprightFont= 与主参数不能同时给,否则文件名被拼两次
- Path= 相对编译时工作目录,不是相对 .sty
- ×/□/○ 等符号按 Unicode 区段被判成西文,需 \xeCJKDeclareCharClass
- 中文斜体的 ItalicFont 与主字体不在同一目录,须在 ItalicFeatures
  里单独写 Path/Extension(否则报 OUCKai-Regular cannot be found)

顺带:
- 科技报告 report.tex 的字体演示正文改为新字体名(原文写着方正系列)
- 试卷归档封面新模板并入本库
- 科技报告 shell 命令框底色改海大蓝(#5 遗留)

验证(7 个模板 8 个 PDF 全量重编 + 逐行 A/B 对照):
- 错误 0,缺字 0
- 幻灯片 362 行逐行完全一致,零漂移
- 年度考核登记表 / 劳务发放说明表 / 试卷题型示例 / 参考答案 文本完全一致
- 课程执行大纲 仅 2 处断字连字符差异(throughout、processing),
  1 条 6.39pt Overfull 已论证不可见(距纸张右边缘仍有 20.7mm)
- 科技报告 内嵌字体方正归零,只剩 OUC Serif/Sans/Kai + Zhuque
- 全库正文 857 个非 ASCII 字符,四款中文字体(含粗体)覆盖 100%
2026-10-27 00:43:14 +08:00
laoyang c69f4461dc 科技报告配色统一为幻灯片同一套海大标准色 #5
改前用的是 xcolor 通用色,跟海大无关:notebox 用 NavyBlue、importantbox
用 Orange、代码关键字纯蓝 rgb(0,0,1)、注释纯绿、代码标题 violet、水印纯灰。
同一个学校两个模板的「蓝」和「红」不是一回事。

新增 cls/color.cls 作为唯一配色入口:
- 10 个基色与 幻灯片/theme/beamercolorthemeOUCSlide.sty 逐值相同
  (前 7 个是官方 2021 版 VI 标准色,后 3 个是幻灯片补充的第三色)
- 8 个语义词别名(oucprimary / oucaccent / oucinfo / oucalert /
  ouccaption / oucrule / ouclink / oucmuted),按语义引用而非色名,
  将来调色只改一行
- 代码配色从标准色派生:关键字→海大蓝、注释→苍松绿、
  字符串→海大红、类型→海大天蓝、边框→专银

各文件改为引用语义色,不再硬写 RGB:
- boxes.cls:notebox NavyBlue→oucinfo,importantbox Orange→oucalert
- code.cls:删掉本地 5 个 definecolor;bashstyle NavyBlue→oucblue;
  bashoutputstyle black!10→codecolorbg + 专银线;行号 gray→oucmuted;
  代码标题 violet→ouccaption
- hyperref.cls:硬写 black→ouclink
- setting.tex:水印纯灰→海大蓝 4%(原 Lightness 会强制切 gray 模型覆盖颜色,已去掉)
- report.cls:加 \input{cls/color.cls},必须有在 boxes/code 之前

有意保持中性的两处(已在注释里说明理由):
- shellbox / invertedshellbox:终端反白块语义就该是黑底,
  换成蓝会变成「强调块」抢正文注意力
- 页眉线:彩色页眉线会跟正文海大蓝标题抢视觉层级,仍 0.5pt 黑

验证:错误 0,10 页,Overfull 0,Underfull 保持既有 2 条;
PDF 逐 span 提取文字色只剩 #004098 / #C81528 / #000000,
矢量填充与描边全部落在标准色内,无 NavyBlue / Orange / violet 残留。
2026-10-26 22:50:19 +08:00
laoyang 62649ef6d6 科技报告封面加校徽:补入 logo 素材与 cover.tex 改动 #4
上一提交只带进了 logos/README.md,图片与 cover.tex 因暂存顺序问题漏掉,
此处补齐。改动内容与前次提交说明相同:
- 新增 10 张官方 VI 校徽 PNG(横式 4 + 方形 6)
- cover.tex 加 \coverlogo,tikz current page 锚点定位在纸边
  内 20mm,宽 38mm,overlay 不占正文流
- report.pdf 重编,封面含校徽,10 页

验证:错误 0,10 页,Overfull 0,Underfull 保持既有 2 条。
2026-10-26 22:49:39 +08:00
laoyang 168f4bae5d 科技报告封面加中国海洋大学校徽(官方 VI 横式四色版)#4
位置:首页左上角,距纸左/纸顶各 20mm,宽 38mm。

用 tikz 的 current page 锚点相对【纸边】定位,而非相对正文框:
- overlay 使 logo 不占正文流,封面下方原有排版位置零变化
  (实测首条横线仍在 41.97mm,改动前后一致)
- 锚点绑在纸边,以后改 cls/geometry.cls 的边距不会让 logo 走位

参数依据:
- 距边 20mm:版心左边距 27mm,logo 再外伸 7mm「挂在页眉区」,
  同时留足 A4 印刷裁切余量(一般 10~12mm)
- 宽 38mm:官方横版比例 3.97,高约 9.6mm;logo 下沿距首条横线
  实测 12.32mm,疏密合适,不再额外加空

新增 logos/ 目录:官方 2021 版 VI 素材,10 张(横式 4 + 方形 6),
含 README 说明每张的适用场合与禁止改动的注意事项。

验证:错误 0,10 页,Overfull 0,Underfull 保持既有 2 条。
2026-10-26 22:49:32 +08:00
laoyang 1f807e9cce 所有模板目录改为中文名,并入幻灯片与科技报告两个仓库(#3)
目录改名(git mv 保留历史,包名不变):
  exam/   -> 试卷/
  form/   -> 年度考核登记表/
  form2/  -> 劳务发放说明表/
  course/ -> 课程执行大纲/

改名即可编译:实测 6 个模板在含中文的目录下 XeLaTeX 均零报错,
PDF 逐页文本与改名前的版本完全一致(0 页差异,仅元数据时间戳变化)。

并入两个此前独立维护的仓库:
  ouc-slide-latex-template  -> 幻灯片/
  ouc-report-latex-template -> 科技报告/
带入了 theme/ fonts/ logos/ figs/ cls/ input/ 与 fontawesome.pdf,
字体随模板附带(无须在系统安装)。中间文件一律不入库。

同步修正的文档:根 README 目录表改为中文名并说明统一维护;
四个子 README 的标题;ouclw.sty 注释里对 form/ 的交叉引用;
幻灯片与科技报告 README 里「从旧仓库 clone」「按年份切分支」等已失效的说明
(并入后只有 main 一个分支,各年份 TeX Live 通用)。

两个迁入模板的 PDF 保留源仓库原版(逐字节一致),未重新编译:
源 PDF 出自 TeX Live 2026,本机为 2022,重新编译会让结尾页装饰层定位
产生细微偏移,保留原版以保证样张与原来完全一致。
2026-10-26 18:31:04 +08:00
laoyang 6584dfac88 更新 course/ 编译产物(#2)
重新编译后 PDF 元数据(时间戳)变化,内容与上一版一致:5 页、零 Overfull/Underfull。

#2
2026-10-26 17:44:16 +08:00
laoyang d353aaa324 新增课程教学执行大纲 LaTeX 模板 course/(#2)
把学校下发的《本科课程教学执行大纲》Word 模板复刻为 XeLaTeX,
内容全部虚构(课程名、代码、开课号、教师、教材、思政案例)。

- ouccourse.sty:版式宏包,尺寸全部从 OOXML 量出
  · 页面:左 27.52 / 右 22.93 / 上 25.05 / 下 4.94 mm(照抄原文件的不对称与极小下边距)
  · 表 0:156.93mm,5 行 × 8.01mm,两列 131.921/25.012mm
  · 表 1:165.54mm(超版心 5.91mm,居中溢出),6 列逐列对齐 gridCol
- 课程执行大纲.tex:虚构课程「信号与系统基础」完整示例,5 页
- README.md:用法、参数表、twips→mm 对照、字体降级、六个坑、校验方法
- 根 README.md 目录表补 course/ 一行

关键技术点(README 有详述):
- 表宽 > 版心时不能按比例缩列宽(会让长文字提前折行),要用 \leftskip 整块左移;
  \hspace* 对 longtblr 的 \halign 盒子无效
- tabularray 的 wd= 是内容宽,不含竖线自身 0.5pt;ht= 含横线预算
- presep/headsep 是 outer 键,误写进 inner spec 会把 "0pt" 印成垃圾文字且不报错
- 表级默认字号须写 cells={font=...},单独写 font= 被静默忽略
- longtblr 跨页提示要清两组模板;*-text 不能设 empty(会报 LaTeX3 变量错误)
- ctex 默认 \linespread≈1.3 会覆盖 \fontsize 的行距

验收:26/26 项量化达标,编译零错误零 Overfull/Underfull,5 页
2026-10-26 17:43:50 +08:00
laoyang e032aec228 新增劳务发放说明表 LaTeX 模板(form2/)#1
把实验室《劳务发放说明表》docx 复刻为 XeLaTeX 模板,与 exam/、form/ 同一套做法:
自包含子目录、版式逐项对齐原 docx、模板不含真人信息。

- form2/ouclw.sty      版式包:A4 + left=31.70mm + 表宽 150.32mm,
                       4 列 / 5 行、14pt 宋体、15.6pt 行距、0.5pt 边框、
                       1.905mm 单元格内边距,全部尺寸附 twips→mm 换算注释
- form2/劳务发放说明表.tex  主文件,填表只改 4 个变量
- form2/README.md      用法、换算表、四个坑、量化校验方法与实测数据
- README.md            目录表登记 form2/

文字改写:原文「聘请秦依康等2位研究生参与《观测数据驱动的渤海生态系统健康
评估关键技术研发》项目的研究工作。」改为「聘请xxx等x位研究生参与《xxx》
项目的研究工作。」,句式未动;其余内容一律 × 占位。

量化验收(pdftocairo -svg + pdftotext -bbox):
  表宽 150.137mm(目标 150.319,差 -0.18)
  表左  31.662mm(目标  31.700,差 -0.04)
  R0 11.172 / R1 5.668 / R2 49.646 / R3 22.159 / R4 11.172 mm 全部达标
  三个签字格标签基线、日期行基线完全重合
  编译零错误、零 Overfull / Underfull,输出 1 页

本次踩到并记录在 README 的四个坑:
1. ctex 默认 \linespread≈1.3 会把 \fontsize{14}{15.6} 放大成 20.28pt
2. 合并格 {c} 是 LR 模式,不折行而是撑宽整表;\hsize 也未重设
3. 合并格内容可用宽要补回 2*colsep*(n-1),否则长文本提前折行
4. \parbox[t] 与 tabularray 的 strut 叠加会每行多出 3.6pt
2026-10-26 16:18:58 +08:00
laoyang 565ec7c505 add form: 教职工年度考核登记表 LaTeX 模板
按学校下发的 Word 表逐项复刻,尺寸全部从 docx 的 OOXML 数值换算
(twips→mm/pt),不含真人信息。

- form/ouckhtb.sty          版式包:页面/字体/11 列宽/9 行高/表格环境
- form/年度考核登记表.tex   主文件:占位数据 + 表格 + 年度总结
- form/README.md            用法、版式数据来源、四个排版坑、校验方法

关键排版结论(sty 内均有注释):
- 合并格 cell{r}{c}={c=n}{c} 的 {c} 是不折行的 LR 模式,文字超宽会
  把列撑宽、整表超出版心(实测 448pt→559pt),故合并格一律包
  \khtbfit{跨度宽}{文字}
- 合并格里 \hsize 未被重设,长文本须用定宽 \parbox
- 跨度声明只有 {c=n}{c} 一种写法
- colspec/row{} 不能放宏(Unexpandable command)
- longtblr 须 stretch=0,且要清空四个 caption 模板去掉「表 0」

校验:零 Overfull/Underfull,2 页,表宽 157.96mm(目标 158.33mm)。
2026-10-23 12:01:32 +08:00
laoyang 47158f2add add exam: 试卷与参考答案及评分标准模板
- exam/oucexam.sty    试卷版式包(195x270mm 专用试卷纸)
- exam/ouckey.sty     答案与评分标准版式包(默认 A4,可选 exampaper)
- exam/试卷题型示例.tex        16 类题型,6 页
- exam/参考答案与评分标准示例.tex  8 大题 / 满分 100,3 页
- exam/README.md      用法与书写注意事项
- .gitignore          忽略 LaTeX 编译中间文件
2026-10-22 16:27:54 +08:00
laoyang c70c063915 Initial commit 2026-10-22 08:15:07 +00:00