七个模板原先分两套做法:幻灯片/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%
121 lines
5.4 KiB
TeX
121 lines
5.4 KiB
TeX
%======================================================================
|
||
% 中国海洋大学 信息科学与工程学部 试卷归档封面(理论课)
|
||
%
|
||
% 编译: xelatex 试卷归档封面.tex
|
||
%
|
||
% 本模板不含真人信息:课程名、课程号、选课号、班级、教师姓名一律用
|
||
% × 占位。填表时只改下面【第 1 节】。
|
||
%
|
||
% 版式来源:SynologyDrive/授课/数字逻辑/2025/归档/
|
||
% 附件1:信息科学与工程学院试卷封面(理论课).doc
|
||
% (原文件名与内文标题写的是「学院」,现按现行建制改为「学部」)
|
||
% 所有尺寸已在 oucksfm.sty 内注明换算过程;要改版式请改 sty。
|
||
%
|
||
% 与原 .doc 的差异(有意为之):
|
||
% · 原文件里的真实课程信息已全部换成 × 占位
|
||
% · 单位名「学院」按现行建制改为「学部」,标题相应改为
|
||
% 「信息科学与工程学部试卷归档封面」
|
||
% · 纸张、边距、表宽、行高、字号、字体一律照原值,未做任何调整
|
||
%======================================================================
|
||
\documentclass[UTF8,fontset=none]{ctexart}
|
||
\usepackage{oucksfm}
|
||
|
||
%======================================================================
|
||
% 1. 表内内容(填表时只改这一段)
|
||
%
|
||
% ⚠️ 左列标签是学部制式用语,一般不用改;只改右列的值。
|
||
%======================================================================
|
||
|
||
%---- 左列标签(11 个,与学部原表的字一模一样,含字间空格)------------
|
||
\newcommand{\sfmyearlabel} {学\quad 年} % 原文件用两个半角空格
|
||
\newcommand{\sfmtermlabel} {学\quad 期}
|
||
\newcommand{\sfmcnolabel} {课程号}
|
||
\newcommand{\sfmsnolabel} {选课号}
|
||
\newcommand{\sfmcourselabel}{考试课程名称}
|
||
\newcommand{\sfmtypelabel} {课程类型}
|
||
\newcommand{\sfmmajorlabel} {面向专业}
|
||
\newcommand{\sfmgradelabel} {面向年级}
|
||
\newcommand{\sfmcountlabel} {试卷份数}
|
||
\newcommand{\sfmteacherlabel}{授课教师}
|
||
\newcommand{\sfmdatelabel} {日\quad 期}
|
||
|
||
%---- 右列的值(填表时改这里)------------------------------------------
|
||
%
|
||
% ⚠️⚠️【必须看】占位符「×」一律用 \ph{} 包起来,不要裸写 ×。
|
||
%
|
||
% 原因(在 年度考核登记表/ 里踩过):字体的 ASCII 区段由 fontspec 交给
|
||
% 西文字体(这里是 Times New Roman),而「×」U+00D7 属于 Latin-1,
|
||
% 会被判成 ASCII ⇒ 用 TNR 的 ×,那是 1em 宽的数学乘号,
|
||
% 与汉字的 1em 字宽【不一样】(TNR 的 × 略窄、位置也偏)。
|
||
% 结果是一串 × 撑不满预期宽度,与汉字混排时基线也参差。
|
||
%
|
||
% \ph{} 把它强制交回黑体(全角),宽度才与汉字一致。
|
||
% 本表全文黑体,所以用 \heiti 收尾即可。
|
||
%
|
||
% ⚠️ 填表时把 \ph{×××} 整体替换成真实内容(不要保留 × ):
|
||
% 例如 \newcommand{\sfmcourse}{数字逻辑},一行的 \ph 都不要留。
|
||
%----------------------------------------------------------------------
|
||
\newcommand{\ph}[1]{{\heiti #1\normalfont}}
|
||
|
||
% 学年。原文件写「2025年」,学期行写「秋季学期」。
|
||
% ⚠️ 注意:学部原表是「学年」+「2025年」这种写法,不是「2025—2026」。
|
||
% 若学校要求写成区间,改这里即可,行高涨一点不会溢出。
|
||
\newcommand{\sfmyear} {\ph{××××}年}
|
||
|
||
% 学期:秋 / 春,或「秋季学期」「春季学期」
|
||
\newcommand{\sfmterm} {\ph{×}季学期}
|
||
|
||
% 课程号 / 选课号:纯数字,14pt(比其余值小一档,原表如此)
|
||
% ⚠️ 纯数字是真正的 ASCII,本来就该用 TNR,所以不用 \ph 包。
|
||
\newcommand{\sfmcno} {080502101231}
|
||
\newcommand{\sfmsno} {25252029}
|
||
|
||
% 考试课程名称
|
||
\newcommand{\sfmcourse}{\ph{××××}}
|
||
|
||
% 课程类型:专业课 / 公共基础课 / 通识课 …
|
||
\newcommand{\sfmtype} {\ph{×××}}
|
||
|
||
% 面向专业。多个专业之间用「、」隔开。
|
||
% ⚠️⚠️ 这一格是全表唯一的高行(32.844mm),能容 3 行 16pt 文字。
|
||
% 专业名超过 3 行会自动把行撑高,整表就顶出版心了——届时请把
|
||
% oucksfm.sty 里 row{7} 的 ht 改大,或者把专业名精简。
|
||
\newcommand{\sfmmajor}{%
|
||
\ph{××××××××}、\ph{××××}、\ph{××××××}、\ph{××××××}、\ph{××××××}}
|
||
|
||
% 面向年级
|
||
\newcommand{\sfmgrade}{\ph{××××}}
|
||
|
||
% 试卷份数
|
||
\newcommand{\sfmcount}{\ph{××}}
|
||
|
||
% 授课教师
|
||
\newcommand{\sfmteacher}{\ph{×××}}
|
||
|
||
% 日期
|
||
\newcommand{\sfmdate}{\ph{××××}年\ph{××}月\ph{××}日星期\ph{×}}
|
||
|
||
%======================================================================
|
||
% 2. 正文
|
||
%======================================================================
|
||
\begin{document}
|
||
|
||
\sfmtitle{信息科学与工程学部试卷归档封面}
|
||
|
||
\begin{sfmtable}
|
||
\sfmlabel{\sfmyearlabel} & \sfmvalbig{\sfmyear} \\
|
||
\sfmlabel{\sfmtermlabel} & \sfmvalbig{\sfmterm} \\
|
||
\sfmlabel{\sfmcnolabel} & \sfmvalsmall{\sfmcno} \\
|
||
\sfmlabel{\sfmsnolabel} & \sfmvalsmall{\sfmsno} \\
|
||
\sfmlabel{\sfmcourselabel} & \sfmval{\sfmcourse} \\
|
||
\sfmlabel{\sfmtypelabel} & \sfmval{\sfmtype} \\
|
||
\sfmlabel{\sfmmajorlabel} & \sfmval{\sfmmajor} \\
|
||
\sfmlabel{\sfmgradelabel} & \sfmval{\sfmgrade} \\
|
||
\sfmlabel{\sfmcountlabel} & \sfmval{\sfmcount} \\
|
||
\sfmlabel{\sfmteacherlabel} & \sfmval{\sfmteacher} \\
|
||
\sfmlabel{\sfmdatelabel} & \sfmval{\sfmdate} \\
|
||
\end{sfmtable}
|
||
|
||
\sfmtail
|
||
|
||
\end{document} |