Files
ouc_latex_template/试卷
laoyang fb7c76b944 装订线虚线方向修正:横杠改回竖杠 #20
用户反馈:「这个装订线不行,得改,需要跟之前的模板保持一致。」

## 问题:整条装订线成了「梯子」

#20 把连字符虚线改成几何线画时,方向画反了。逐像素对比基线与修改后:

  基线(18bp 连字符 rotate 90°):x 51.10~52.10(宽 1.10)、y 跨 4.30
  改后(我画的水平线)    :x 49.40~53.70(宽 4.30)、y 跨 1.00

即基线的每一笔是**竖着的短杠**,我画成了**横着的短杠**。一排横杠叠在
竖线位置上,视觉上就是一把梯子,与原卷完全不同。

## 根因:量数据时没分辨长宽各自对应哪个轴

上一轮 720dpi 扫描得到「长 4.40bp、粗 1.10bp、x 中心 51.60bp」,
三个数都对,但**装配时把「长」放到了 x 轴、「粗」放到了线宽**。
连字符经 rotate=90 后,字面长度落到**纵轴**、线粗落到**横轴**:

  竖:y 跨 4.30bp(连字符的字面长度)
  横:x 跨 1.10bp(连字符的笔画粗细)
  中心 x = 51.60bp

## 修法

  - \draw[line width=1.10bp] (49.40, -y) -- (53.70, -y);     ← 水平线(错)
  + \draw[line width=1.10bp] (51.60, -y) -- (51.60, -y-4.30); ← 竖直线(对)

x 恒定在 51.60,y 跨 4.30bp。单笔画长度用 4.30(720dpi 实测的墨迹边界),
不是之前写的 4.40(那是含抗锯齿溢出的粗估值)。

## 验证:与基线逐像素同值

装订线区域(x 48~56, y 55~690)在 300dpi 下的墨迹像素数:

  基线  7553 像素(8.40%)
  新版  7553 像素(8.40%)  ← 完全相同

逐段比对(720dpi 逐行扫描,过滤掉「装订线」三个汉字的干扰):

  段  笔数   顶端 y    末笔底 y   单笔长   笔距
   1   24    62.20     204.90     4.30    6.00
   2   24   216.50     358.60     4.30    6.00
   3    3   364.80     379.50     4.30    6.00
   4   13   393.40     469.60     4.30    6.00
   5   16   475.80     568.30     4.30    6.00
   6   16   582.10     676.30     4.30    6.00

新版逐段同值,单笔长 4.20 vs 4.30 的 0.1bp 差异是抗锯齿边缘取整。
x 位置 51.00~52.00 vs 51.10~52.10 同样差 0.1bp(亚像素取整),肉眼不可见。

## 编译验证

  Windows / TeX Live 2022   试卷 rc=0 err=0 over=0 6页
                            答案卷 rc=0 err=0 over=0 3页
  WSL / TeX Live 2025       试卷 rc=0 err=0 over=0 6页
                            答案卷 rc=0 err=0 over=0 3页

答案卷不走装订线(\oucexam 的 shipout 钩子只属于试卷),未受影响。

涉及文件:试卷/oucexam.sty(仅 \ouc@dashseg 一个宏 + 注释)
2026-10-29 21:35:57 +08:00
..

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

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

样张是《数字逻辑》2025 秋的一份完整虚构 A 卷:16 类题型(填空 / 选择 / 判断 / 化简 / 分析 / 设计 / 时序 / 计数器 / 状态机 / 存储器 / ADC-DAC / Verilog / 综合设计 …)+ 对应参考答案与评分标准(8 大题 / 满分 100)。 题目是按数字逻辑课程内容真编的、答案算过是对的,不是「略」或「×××」—— 这样既能看清版式,也能看出各题型的排版难度(比如卡诺图、时序波形图 都是 TikZ 内联画的)。

与 课程教学日历/、成绩构成说明/、 试卷归档封面/ 是同一门课,四份一起看是自洽的。 唯一故意留空的是命题人 / 审核人 / 各题得分栏 —— 那是要签字担责的, 编名字上去容易被误当真实署名。

文件

文件 说明
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 栏等分
}
  • proposer / reviewer 样张里故意留空:命题人、审核人是要签字担责的, 编一个名字上去容易被误当真实署名。留空时模板自动不印该项、不留空横线。
  • type 与 foottype 互不影响:前者只管卷头,后者只管页脚。 原卷 A 卷页脚没印字母、B 卷印了 B,这是出卷人手工差异,不是规则。
  • 大题数变了必须同步改 nsec,否则成绩表格子会错位。

答案模板要点

\keysetup{
  year = {2025}, term = {秋}, course = {数字逻辑}, type = {A},
  dept = {计算机科学与技术学院}, college = {信息科学与工程学院},
  major = {计算机科学与技术专业 \TNR{2023} 级},
  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 之后。