Commit Graph
4 Commits
Author SHA1 Message Date
laoyang a29f193cff 新增成绩构成说明 LaTeX 模板(成绩构成说明/) #9 2026-10-27 09:15:58 +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