# 试卷归档封面 —— 信息科学与工程学部试卷归档封面(理论课) 信息科学与工程学部**试卷归档封面**的 XeLaTeX 模板。原文件是学院/学部下发的 `.doc` 表格,本目录把它做成可直接编译的 LaTeX 版。 > **改名说明**:原文件名为「附件1:信息科学与工程学院试卷封面(理论课)」, > 内文标题写的是「信息科学与工程学院试卷」。按现行建制与文档实际用途, > 已统一改为 **学部 + 归档封面**:目录名、文件名、内文标题三处同步。 > 与 [`试卷/`](../试卷/) 的区别:`试卷/` 是**试卷正文 + 参考答案**(学校专用 > 195×270mm 试卷纸、装订栏、成绩表);本目录是**随卷归档的封面单页** > (A4、11 行两列表单)。两者用途不同,不是同一份文件的两个版本。 ## 文件 | 文件 | 说明 | |---|---| | `oucksfm.sty` | 版式包。A4、表宽 170mm、11 行固定行高,所有尺寸已注明换算过程 | | `试卷归档封面.tex` | 填写入口,【第 1 节】改课程信息即可 | | `试卷归档封面.pdf` | 成品样张 | ## 编译 ```bash xelatex 试卷归档封面.tex ``` 必须用 **XeLaTeX**(fontspec + xeCJK),pdflatex 编译不过。 本模板自包含,不依赖任何图片。 ## 填表 只改 `试卷归档封面.tex` 的【第 1 节】: ```latex \newcommand{\sfmyear} {\ph{××××}年} % 学年 \newcommand{\sfmterm} {\ph{×}季学期} % 学期 \newcommand{\sfmcno} {080502101231} % 课程号(纯数字,14pt) \newcommand{\sfmsno} {25252029} % 选课号(纯数字,14pt) \newcommand{\sfmcourse}{\ph{××××}} % 考试课程名称 \newcommand{\sfmtype} {\ph{×××}} % 课程类型 \newcommand{\sfmmajor}{...} % 面向专业(多个用、隔开) \newcommand{\sfmgrade}{\ph{××××}} % 面向年级 \newcommand{\sfmcount}{\ph{××}} % 试卷份数 \newcommand{\sfmteacher}{\ph{×××}} % 授课教师 \newcommand{\sfmdate}{...} % 日期 ``` 填真实内容后把 `\ph{...}` 整个换掉,不要留下 `×`。 ## 版式参数 全部照原 `.doc` 实测值,未做主观调整: | 项目 | 值 | 来源 | |---|---|---| | 纸张 | A4 210×297mm | `pgSz` | | 页边距 | 左右 20mm、上下 25.01mm | `pgMar` 56.7 / 70.9 pt | | 表宽 | 170mm(= 版心宽) | `tblW` 100% | | 边框 | 0.5pt 实线 | `w:sz=4`(1/8pt 单位)| | 单元格内边距 | 左右 1.4993mm、上下 0 | `tblCellMar` 85 twips | | 列宽 | 51mm + 119mm(30% : 70%) | `col_widths_pct` | | 标题 | 黑体 18pt 加粗居中 | `w:sz=36` + `w:b` | | 左列标签 | 黑体 18pt | `w:sz=36` | | 右列值 | 18pt(学年/学期)/16pt(多数)/14pt(课程号、选课号) | `w:sz=36/32/28` | | 行高 | 11 行固定高,合计 185.95mm | 各行 `trHeight` + `hRule=exact` | 实测校验(pymupdf 读 PDF): ``` 表格 左=20.0mm 右=189.91mm 宽=169.9mm ← 应为 170mm ✓ 行高 15.19/15.18/15.54/14.66/14.75/15.18/33.02/15.19/18.80/15.19/15.19 mm 表格总高 187.89mm ← 含线宽与取整,与 185.95+线宽 吻合 标题 宽 94.89mm,单行不折(版心 170mm,余量充足) ``` ## 三个坑(改之前先看) ### 1. `×` 占位符曾跑到 Times New Roman(已在公共字体包根治) xeCJK 按 Unicode 区段分类,`×`(U+00D7)落在 Latin-1,会被判成**西文**, 交给 fontspec 的西文字体(Termes / Times)。`\heiti` / `\fangsong` 只切 CJK 字体族,**管不到它** —— 包一层是没用的。TNR 的 × 宽度与汉字不一致, 混排时基线也偏。 现在这行已上移到仓库公共字体包 [`../fonts.tex`](../fonts.tex),**全局生效**: ```latex \xeCJKDeclareCharClass{CJK}{"00D7} % × 乘号 \xeCJKDeclareCharClass{CJK}{"2014} % — 破折号 \xeCJKDeclareCharClass{CJK}{"25A1} % □ 方框(勾选框) ``` 本模板不再需要自己声明。 > ✅ [`年度考核登记表/`](../年度考核登记表/) 也有同样问题,**已随本次改造一并修好** > (原先那条注释说能修,但实测 PDF 里 × 仍落在 TNR —— 因为注释在、声明也写了, > 却没有真正作用到字符类)。现在已经实测确认:10 处 `×` 全部落在 OUC Sans 上。 ### 2. 字体全部来自公共字体包 本模板原先用 SimHei / SimSun / FangSong + `AutoFakeBold` 描边,换台机器 (尤其 Linux/macOS)就编不出来,而且这些字体都不允许随仓库分发。现改为 `\input{../fonts.tex}`,字体文件在 `../fonts/` 下,来源与授权见 [`../fonts/README.md`](../fonts/README.md)。 ### 3. `\linespread` 会悄悄放大行高 ctex 默认 `\linespread` 约为 **1.3**,它会把 `\fontsize{18}{21.6}` 里的 21.6 pt 行距放大到 **28 pt 以上**,逐行累积后整张表会顶出页面。 `oucksfm.sty` 的解法是在**每个** `\fontsize` 之后紧跟 `\linespread{1}\relax`, 并且在 `\AtBeginDocument` 之后再设一次(ctex 会在 `\begin{document}` 时 把 `\linespread` 重新设回 1.3,只在导言区设是无效的): ```latex \AtBeginDocument{\linespread{1}\selectfont} ``` 没有这一步,表高会比原卷高出一大截。