用户反馈:「这个装订线不行,得改,需要跟之前的模板保持一致。」 ## 问题:整条装订线成了「梯子」 #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 一个宏 + 注释)
试卷 —— 试卷与参考答案 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}。
体例四条(学校没有统一模板,按国内高校通行做法拟定):
- 抬头信息齐全,留空的项自动不印、不留空横线
- 客观题答案集中列(
\objkeys{C,B,A,...},每行 6 个自动换行),附统一给分规则 - 主观题内嵌分步分值(
\pt{2}),阅卷时批到哪里看到哪里 - 每个大题末尾给【评分标准】
\scoring{...}
主观题内嵌分值是有意为之:阅卷是流水作业,分值必须和答案文字贴在一起, 集中写在末尾会让批卷人来回翻页。
文末 \keytotal{20,10,12,12,12,16,8,10} 是分值汇总表,用于阅卷前核对
「各大题相加 = 满分」。签名栏 \keysign 只留命题人一处。
书写注意
- 题干内部换行用
\\*,不要用裸\\。裸\\语义是"允许在此断页", 题干会被切到上下两页,学生看到半句话。 - 数字、英文用
\TNR{...}包起来(内部显式\normalfont收尾)。 裸用字体切换命令会让字体状态泄漏到后续段落。 \keyitem{题号}{分值}{答案正文}的参数里不要嵌tabular/tikzpicture—— 这些环境的&与\\会被当成参数分隔符,报File ended while scanning。 表格和图写在\keyitem之后。