Files
ouc_latex_template/试卷
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
..

试卷 —— 试卷与参考答案 LaTeX 模板

中国海洋大学期末考试试卷与参考答案及评分标准的 XeLaTeX 模板。 两份模板均不含真题,题目与分值都是示意,按教学大纲替换即可。

文件

文件 说明
oucexam.sty 试卷版式包。纸张 195×270mm(学校专用试卷纸),含装订栏、成绩表、页脚
ouckey.sty 答案与评分标准版式包。默认 A4;加 exampaper 选项则与试卷同纸同边距
试卷题型示例.tex 试卷范例,16 类题型,6 页
参考答案与评分标准示例.tex 答案范例,8 大题 / 满分 100,3 页

编译

xelatex 试卷题型示例.tex
xelatex 试卷题型示例.tex       # 跑两遍,第二遍才能取到正确总页数(lastpage)

必须用 XeLaTeX(fontspec + xeCJK),pdflatex 编译不过。 两份 .tex 都在本目录内自包含,不依赖任何图片文件(示例配图是 TikZ 内联画的)。

试卷模板要点

纸张、页边距、行距、装订栏位置、页脚样式都已在 oucexam.sty 里按原卷实测值定好, 一般只改 \examsetup 那一块:

\examsetup{
  year      = {2025},        % 学年(会自动印成 2025—2026)
  term      = {秋},           % 秋 / 春
  course    = {课程名称},
  college   = {××学院},
  type      = {A},            % 卷头「试卷类型:A 卷」
  foottype  = {},             % 页脚课程名后是否再印类型字母,空=不印
  proposer  = {},             % 命题人
  reviewer  = {},             % 审核人
  mode      = {闭卷},
  allowed   = {无},           % 允许携带的物品
  nsec      = {16},           % 大题数,成绩表自动按 nsec+1 栏等分
}
  • type 与 foottype 互不影响:前者只管卷头,后者只管页脚。 原卷 A 卷页脚没印字母、B 卷印了 B,这是出卷人手工差异,不是规则。
  • 大题数变了必须同步改 nsec,否则成绩表格子会错位。

答案模板要点

\keysetup{
  year = {2025}, term = {秋}, course = {课程名称}, type = {A},
  dept = {××学院}, college = {××学院},
  major = {××专业 \TNR{2024} 级},
  teacher = {×××}, examiner = {×××},
  mode = {闭卷、笔试}, total = {100},
}

如实现在试卷同一张纸上印,把 \usepackage{ouckey} 改成 \usepackage[exampaper]{ouckey}。

体例四条(学校没有统一模板,按国内高校通行做法拟定):

  1. 抬头信息齐全,留空的项自动不印、不留空横线
  2. 客观题答案集中列(\objkeys{C,B,A,...},每行 6 个自动换行),附统一给分规则
  3. 主观题内嵌分步分值(\pt{2}),阅卷时批到哪里看到哪里
  4. 每个大题末尾给【评分标准】\scoring{...}

主观题内嵌分值是有意为之:阅卷是流水作业,分值必须和答案文字贴在一起, 集中写在末尾会让批卷人来回翻页。

文末 \keytotal{20,10,12,12,12,16,8,10} 是分值汇总表,用于阅卷前核对 「各大题相加 = 满分」。签名栏 \keysign 只留命题人一处。

书写注意

  • 题干内部换行用 \\*,不要用裸 \\。裸 \\ 语义是"允许在此断页", 题干会被切到上下两页,学生看到半句话。
  • 数字、英文用 \TNR{...} 包起来(内部显式 \normalfont 收尾)。 裸用字体切换命令会让字体状态泄漏到后续段落。
  • \keyitem{题号}{分值}{答案正文} 的参数里不要嵌 tabular / tikzpicture—— 这些环境的 & 与 \\ 会被当成参数分隔符,报 File ended while scanning。 表格和图写在 \keyitem 之后。