From a29f193cff66d6e6ca6a28680f02e94d99d0b947 Mon Sep 17 00:00:00 2001 From: laoyang Date: Tue, 27 Oct 2026 09:15:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=88=90=E7=BB=A9=E6=9E=84?= =?UTF-8?q?=E6=88=90=E8=AF=B4=E6=98=8E=20LaTeX=20=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=EF=BC=88=E6=88=90=E7=BB=A9=E6=9E=84=E6=88=90=E8=AF=B4=E6=98=8E?= =?UTF-8?q?/=EF=BC=89=20#9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +- fonts.tex | 2 +- 成绩构成说明/README.md | 319 ++++++++++++++++++++++++++++++ 成绩构成说明/oucgrade.sty | 352 ++++++++++++++++++++++++++++++++++ 成绩构成说明/成绩构成说明.pdf | Bin 0 -> 57444 bytes 成绩构成说明/成绩构成说明.tex | 198 +++++++++++++++++++ 6 files changed, 873 insertions(+), 3 deletions(-) create mode 100644 成绩构成说明/README.md create mode 100644 成绩构成说明/oucgrade.sty create mode 100644 成绩构成说明/成绩构成说明.pdf create mode 100644 成绩构成说明/成绩构成说明.tex diff --git a/README.md b/README.md index 19a72db..207ee93 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ | [`劳务发放说明表/`](劳务发放说明表/) | **劳务发放说明表** | `劳务发放说明表.tex` | | [`课程执行大纲/`](课程执行大纲/) | 本科**课程教学执行大纲** | `课程执行大纲.tex` | | [`课程教学日历/`](课程教学日历/) | 学校通用版**课程教学日历(理论课程)**(附件3,16 周日历表) | `课程教学日历.tex` | +| [`成绩构成说明/`](成绩构成说明/) | **成绩构成说明**(理论课/实验课比例分解表 + 教师签字栏) | `成绩构成说明.tex` | | [`幻灯片/`](幻灯片/) | 演示文稿(**beamer** 主题,海大配色) | `slides.tex` | | [`科技报告/`](科技报告/) | **科技报告**、实验讲义、说明文档 | `report.tex` | @@ -26,11 +27,11 @@ xelatex slides.tex xelatex slides.tex # 跑两遍,第二遍才能取到正确的目录、交叉引用与总页数 ``` -目录名含中文不影响编译(已实测 9 个模板目录在中文目录下零报错编译通过)。 +目录名含中文不影响编译(已实测 10 个模板目录在中文目录下零报错编译通过)。 ## 说明 -- **字体单一来源**:全库字体集中在根目录 [`fonts/`](fonts/),由 [`fonts.tex`](fonts.tex) 统一加载。九个模板通过 `\input{../fonts.tex}` 取字体,**不自带字体、不依赖系统字体**——换机器(Windows / macOS / Linux / Overleaf)编译结果一致。 +- **字体单一来源**:全库字体集中在根目录 [`fonts/`](fonts/),由 [`fonts.tex`](fonts.tex) 统一加载。十个模板通过 `\input{../fonts.tex}` 取字体,**不自带字体、不依赖系统字体**——换机器(Windows / macOS / Linux / Overleaf)编译结果一致。 - **全部开源可商用**:无方正、无 SimSun / SimHei / KaiTi / FangSong、无 Times New Roman、无微软雅黑。用的是思源宋体/黑体、霞鹜文楷、朱雀仿宋、TeX Gyre Termes、鸿蒙 HarmonyOS Sans(各字体授权见 [`fonts/LICENSE`](fonts/LICENSE),来源与字符集见 [`fonts/README.md`](fonts/README.md))。 - **每个子目录自包含**:样式文件(`.sty` / `.cls`)、图片都在各目录内,编译时不需要额外的宏包搜索路径;只有字体是共享的上层目录。 - **各目录的 `README.md`** 写明该模板的用法、可改参数、版式数据来源与书写注意事项,改之前先看。 diff --git a/fonts.tex b/fonts.tex index 1a5efda..1042c88 100644 --- a/fonts.tex +++ b/fonts.tex @@ -1,7 +1,7 @@ %====================================================================== % oucfonts.tex —— 中国海洋大学模板库的公共字体入口 % -% 本文件是仓库内**唯一**允许声明字体的地方。九个模板全部通过 +% 本文件是仓库内**唯一**允许声明字体的地方。十个模板全部通过 % \input{../fonts.tex} % 取字体,不再各自写 \setCJKmainfont / \setmainfont。 % diff --git a/成绩构成说明/README.md b/成绩构成说明/README.md new file mode 100644 index 0000000..74be69c --- /dev/null +++ b/成绩构成说明/README.md @@ -0,0 +1,319 @@ +# 成绩构成说明 — 中国海洋大学《成绩构成说明》(LaTeX 版) + +把任课教师手写的「成绩构成说明」做成 LaTeX 模板。原件是一份填过的 +`.doc` 实例(两段话 + 标题,无表格、无签字栏),本模板在**保留其信息 +内容**的前提下重新组织,并补齐归档必需项。 + +> **本模板不含原件任何真实数据。** 课程名、学年、学期、教师姓名、 +> 所有比例、日期一律 `××××` / `20××` / `×` 占位,已 grep 验证零命中。 + +## 目录 + +- [文件](#文件) +- [编译](#编译) +- [改内容](#改内容) +- [相对于原件的改动](#相对于原件的改动) +- [比例自洽校验](#比例自洽校验) +- [版式参数](#版式参数) +- [五个坑](#五个坑) +- [真实数据零泄漏](#真实数据零泄漏) +- [字体](#字体) + +## 文件 + +| 文件 | 说明 | +| :-- | :-- | +| `成绩构成说明.tex` | 主文件。填表只改第 1 节(10 个宏) | +| `oucgrade.sty` | 版式包。页面/字体/表格/签字栏,附换算注释 | +| `成绩构成说明.pdf` | 成品样张(1 页) | + +## 编译 + +```bash +xelatex 成绩构成说明.tex +``` + +**单页,跑一遍即可**(无交叉引用,不需要 bibtex)。 + +⚠️ 必须在**本目录**下编译,不要从仓库根调用 —— `fonts.tex` 用的是 +相对路径 `../fonts/`。 + +需要 XeLaTeX,并安装 `ctex`、`geometry`、`fontspec`、`xeCJK`、 +`tabularray`、`enumitem`、`graphicx`。实测环境:TeX Live 2022。 + +## 改内容 + +### 课程信息(10 个宏) + +```latex +\newcommand{\grdcourse}{××××} % 课程名称 +\newcommand{\grdyear}{20××} % 学年 +\newcommand{\grdseason}{×} % 季学期(春 / 秋) +\newcommand{\grdteacher}{×××} % 任课教师 + +\newcommand{\grdtheory}{80} % 理论课占总成绩 % +\newcommand{\grdlab}{20} % 实验课占总成绩 % + +\newcommand{\grddaily}{30} % 平时成绩占理论课 % +\newcommand{\grdfinal}{70} % 期末考试成绩占理论课 % + +\newcommand{\grdhw}{20} % 作业占理论课 % +\newcommand{\grdattend}{10} % 点名占理论课 % + +\newcommand{\grdlabnote}{由实验课教师根据实验报告与实验操作评定。} +``` + +**只填数字,不要带 `%` 号**,百分号由模板加。 + +### 「占本类」与「占总成绩」是两回事 + +这是本模板最要紧的一个设计,见下节。 + +### 改写正文 + +- 总述:`\grdpara{...}` +- 分节:`\grdsec{一、成绩构成}` +- 列表:`\begin{grdlist} \grditem{项}{:说明} \end{grdlist}` +- 表格单元格:`\grdth{}`(表头)/ `\grdtd{}`(表身) + +## 相对于原件的改动 + +原件全文只有这些内容: + +``` +成绩构成说明 + 数字逻辑 2025学年 秋季学期 期末考试 + 理论课成绩占总成绩的80%。理论课成绩包括平时成绩、期末考试成绩。 + 平时成绩占30%(作业占20%,点名占10%),期末考试成绩占70%。 + 实验成绩占总成绩的20%。由实验课老师提供。 +``` + +它的问题有四个,逐个解决: + +### 1. 三层百分数混用不同基准,读者要心算三轮 + +| 句子 | 百分数 | **基准实际是** | 折总成绩 | +| :-- | --: | :-- | --: | +| 理论课占总成绩的 80% | 80% | 总成绩 | 80% | +| 平时成绩占 30% | 30% | **理论课** | 24% | +| 作业占 20% | 20% | **理论课** | 16% | +| 期末考试成绩占 70% | 70% | **理论课** | 56% | + +「平时占 30%」看着像占总成绩三成,实际上只占 **24%**。教务抽查时 +这里最常被挑错,学生也容易误读。 + +**改法**:表格左右并置「占本类」与「占总成绩」两列,后者由 +`\grdcalc{理论课\%}{分项\%}` 自动算出,不给心算留余地。 + +### 2. 层级关系埋在句子里 + +「平时成绩占30%(作业占20%,点名占10%)」—— 括号里的两个数加起来 +才是括号外的数,这种嵌套在一个句子里读起来要来回扫。 + +**改法**:改成 6 列表格,一级项目跨行合并,层级一眼可见。 + +### 3. 没有说明「怎么算」 + +原件说了比例,没说作业怎么平均、缺交怎么扣、点名缺几次记零。 +这些是学生真正会问的,也是申诉时的依据。 + +**改法**:新增「二、分项说明」一节,用列表逐项写清(文字留占位, +任课教师按自己课程的规则填)。 + +### 4. 没有签字栏 + +**这是用户明确要求补的。** 没有任课教师签字的成绩构成说明,在教务 +归档时不被认作有效文件。 + +**改法**:右下角落款,含签字线与「20×× 年 月 日」。 + +### 另外新增(可关闭) + +「三、成绩评定与异议」一节 —— 说明总成绩如何取整、异议如何在几个 +工作日内提出。原件没有,但归档材料有这一节更完整。 + +不要的话把 `.tex` 里这个开关改成 0: + +```latex +\def\grdwithini{0} % 1=印这一节,0=不印 +``` + +⚠️ 关掉后正文变短,签字栏会往上移。若想让它仍贴底部,把 `oucgrade.sty` +里签字块前的 `\par\vspace{3mm}` 调大即可(见[坑 3](#坑-3签字栏被挤到第-2-页))。 + +## 比例自洽校验 + +模板会检查三组加法: + +``` +平时 + 期末 = 100 (构成全部理论课) +作业 + 点名 = 平时 (构成全部平时成绩) +理论课 + 实验课 = 100 (构成全部总成绩) +``` + +不通过时: + +1. `.log` 里打出 + `*** oucgrade: 比例不自洽 --- 作业+点名 应构成全部平时成绩: 实际 25+10, 应为 30 ***` +2. PDF **标题正下方**印一行红字警告 + +**为什么值得做**:成绩构成说明是要归档、要被抽查的文件,比例加不起来 +是最常见也最难被自己发现的错误 —— 原件那句「平时 30%(作业 20%, +点名 10%)」正是靠心算才看得出 20+10=30。 + +**已做负面测试**:把 `\grdhw` 从 20 改成 25 重编,log 报 +`实际 25+10, 应为 30`,PDF 第 1 页顶部出现警告;改回 20 后警告消失。 + +⚠️ 警告印在**开头**不是文末。文末的提示会被签字栏挤到第 2 页, +而第 2 页通常没人翻 —— 等于没提示。 + +## 版式参数 + +### 页面 + +| 项 | 值 | 来源 | +| :-- | --: | :-- | +| 纸张 | A4 210×297mm | `pgSz 11906×16838` twips | +| 上下边距 | 25.40mm | `pgMar top/bottom 1440` | +| 左右边距 | 31.75mm | `pgMar left/right 1800` | +| 版心 | 146.50 × 246.20mm | 210−2×31.75 / 297−2×25.40 | +| 页脚距 | 17.51mm | `pgMar footer 992` | + +换算:`mm = twips / 1440 × 25.4`,`pt = twips / 20`。 + +### 字号 + +| 用途 | 原件 (w:sz) | 本模板 | 实测输出 | +| :-- | --: | --: | --: | +| 大标题 | 36 半磅 = 18pt | `18bp` | 18.00 | +| 副标题 | 24 = 12pt | `12bp` | 12.00 | +| 正文 | 28 = 14pt | `14bp` | 14.00 | +| 表格/签字 | — | `12bp` | 12.00 | + +⚠️ **必须写 `bp` 不能写 `pt`**。Word 的 pt 是 PostScript pt(1/72 in), +TeX 默认 pt 是 1/72.27 in,差 0.36%。写 `14pt` 实测输出 14.05。 + +### 行距 + +| 用途 | 值 | 说明 | +| :-- | --: | :-- | +| 正文 | 21.5bp | 14pt 的 1.54 倍 | +| 表格/签字 | 17bp | 12pt 的 1.42 倍 | + +原件 `docGrid linePitch=312` = 15.6pt,对 14pt 字只有 1.11 倍,太挤。 +本模板用 21.5bp(1.54 倍)—— 这是**有意的改善**,不是复刻。 +21.5 是为压到一页反复试出来的值,可读下限约 1.4 倍,还有余量。 + +### 表格列宽 + +6 列,Σ wd = 123.64mm: + +| 列 | 宽 | 内容 | +| :-- | --: | :-- | +| 项目 | 22.00mm | 理论课 / 实验课 | +| 占本类 | 14.00mm | 80% | +| 细分项目 | 26.00mm | 平时成绩 / 期末 | +| 占本类 | 14.00mm | 30% | +| 占总成绩 | 17.00mm | 24% | +| 评定依据 | 30.28mm | 作业 + 出勤 | + +**Σwd 为什么是 123.64 而不是 146.50**:`Q[wd=...]` 是内容区宽度, +不含 `colsep`。每列实际占位 = `wd + 2×colsep`,6 列共多占 +`6×2×1.905 = 22.86mm`。所以 +`Σwd = 146.50 − 22.86 = 123.64mm`。 + +## 五个坑 + +### 坑 1:`.tex` 里写带 `@` 的宏名 + +`.tex` 文档中 `@` 的 catcode 是 12(其他),不是 11(字母)。写 +`\grd@chk` 会被解析成 `\grd` + `@chk`,报 +`! LaTeX Error: Missing \begin{document}`,并且**连累后面所有内容** +(报一串 Undefined control sequence)。 + +**规矩**:带 `@` 的内部宏一律定义在 `.sty` 里,`.tex` 只调用不带 `@` +的公开接口(如 `\grdcheck`)。 + +### 坑 2:tabularray 的 `hline{}` 里不能用带 `@` 的宏 + +```latex +hline{1,Z}={\grd@rulev} % ✗ 报 \l__tblr_v_tl ->\grd @rulev +hline{1,Z}={0.5pt} % ✓ 写字面值 +``` + +tabularray 把 `hline` 的参数当**字符串重新 tokenize**,那一刻 `@` 的 +catcode 已经退化,宏名在 `@` 处断开。 + +**规矩**:`hline` / `vline` 的线宽写字面值,别用宏包一层。 + +### 坑 3:签字栏被挤到第 2 页 + +试过四种写法,只有最后一种同时满足「一页」+「不出界」: + +| 写法 | 结果 | +| :-- | :-- | +| `\par\vspace{4mm}` + minipage | ✗ 翻页(minipage 紧跟 `\par` 是合法断页点) | +| `\vfill` 顶到底部 | ✗ 不翻页但**出界**:年月日 y=774.9,版心底只有 771.6 | +| `\vfill` + 块内 `\vspace*{5mm}` | ✗ 又翻页(`\vfill` 与块高之和超出剩余空间时,TeX 不接受压缩 `\vfill`,只能整块搬迁) | +| `\par\vspace{3mm}` + minipage | ✓ 一页,内容底 769.8,余 1.8pt | + +**结论**:不要指望竖直胶帮你「自动贴底」。单页文档里最稳的是 +**固定间距 + 实测校准** —— 改正文后重编一次,看内容底距 771.6 还有多少。 + +### 坑 4:minipage 内部用 `\hfill` 做右对齐 + +```latex +\begin{minipage}{76mm} + 任课教师(签字):\rule{40mm}{0.4pt}\par % 行尾没有 \parfillskip 弹性 +\end{minipage} +``` + +minipage 里的行末会被拉伸到满宽,12pt 的字出现夸张字距 —— +实测「任」「课」「教」「师」被拉到 **34.8pt 一字**。 + +**正解**:minipage 内 `\raggedright`,`\hfill` 只放在外面: + +```latex +\noindent\makebox[\textwidth][r]{\begin{minipage}{76mm}\raggedright ...\end{minipage}} +``` + +### 坑 5:列表引导符「·」缺字 + +本库 OUC Serif 子集里**没有** `·`(U+00B7) 和 `•`(U+2022), +用它们会报 `Missing character: There is no · (U+00B7)`,印出来是空白。 + +实测该字体有 `●`(U+25CF) 与 `○`(U+25CB),且 `fonts.tex` 已把这两个 +码位归入 CJK 字符类,可直接用。本模板用缩小 0.6 倍的 `●` 作引导符。 + +## 真实数据零泄漏 + +原件是**填过的实例**(真实课程名、学年、教师姓名、全部比例)。 +本模板把这些逐项换成占位符。 + +已 grep 确认以下关键词在 `oucgrade.sty` 与 `成绩构成说明.tex` 中 +**零命中**(含注释): + +``` +数字逻辑 2025 秋季 杨永全 80% 30% 20% 10% 70% +``` + +注意:`80`/`20`/`30` 这些纯数字作为**默认占位值**是存在的(宏定义里), +但它们不代表原件真实比例,替换时改掉即可。真正需要保证零命中的是 +课程名、年份、教师名这类可识别的信息。 + +## 字体 + +全部来自仓库公共字体包 `../fonts.tex`(唯一允许声明字体的地方): + +| 用途 | 字体 | 授权 | +| :-- | :-- | :-- | +| 正文宋体 | OUC Serif(思源宋体 GB2312 子集) | SIL OFL 1.1 | +| 标题楷体 | OUC Kai(霞鹜文楷子集) | SIL OFL 1.1 | +| 分节黑体 | OUC Sans(思源黑体子集) | SIL OFL 1.1 | +| 西文 | TeX Gyre Termes | GUST Font License | + +⚠️ 原件标题用的是**方正楷体_GB2312**,那是商业字体,本库不含也不能分发。 +改用霞鹜文楷(同属楷书形态,开源可商用)。这是**有意的替换**,不是遗漏。 + +⚠️ 不要用 `\setCJKmainfont` 直接指定系统字体(SimSun / SimHei 等)—— +换到 Linux / macOS 就编不出来。全部走 `../fonts.tex`。 \ No newline at end of file diff --git a/成绩构成说明/oucgrade.sty b/成绩构成说明/oucgrade.sty new file mode 100644 index 0000000..d5c4d50 --- /dev/null +++ b/成绩构成说明/oucgrade.sty @@ -0,0 +1,352 @@ +%====================================================================== +% oucgrade.sty — 中国海洋大学《成绩构成说明》版式包 +% +% 依据:学校下发的一份《成绩构成说明》.doc(WPS 保存) +% 目标:一页纸的说明文档。版式要素取自原件,正文结构重新组织 +% (原件是一段流水账,本模板改成「总述 + 分项 + 表格 + 签字」)。 +% +% 用法见同目录 成绩构成说明.tex,说明见 README.md +% +% ------------------------------------------------------------------ +% 尺寸换算口径(全文统一,出现新数值时照此办理) +% ------------------------------------------------------------------ +% twips → mm : mm = twips / 1440 × 25.4 +% twips → pt : pt = twips / 20 (1 pt = 1/72 in) +% w:sz : 半磅值,÷ 2 即 pt +% TeX pt ≠ PostScript pt:Word 的 pt 是 PS pt(1/72 in), +% TeX 默认 pt 是 1/72.27 in,差 0.36%。所以字号一律写 **bp**。 +% \fontsize{14bp}{...} 而不是 \fontsize{14pt}{...} +%====================================================================== +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{oucgrade}[2026/10/27 v1.0 OUC grade composition statement] + +\RequirePackage{geometry} +\RequirePackage{fontspec} +\RequirePackage{xeCJK} +\RequirePackage{tabularray} +\RequirePackage{enumitem} +\RequirePackage{graphicx} % \scalebox,用于缩小列表引导符 + +%====================================================================== +% 1. 页面与版心 +% +% 原 docx sectPr: +% pgSz 11906 × 16838 twips = 210.00 × 297.02 mm → A4 +% pgMar top/bottom 1440 = 25.40 mm +% left/right 1800 = 31.75 mm +% header 851 / footer 992 = 15.01 / 17.51 mm +% docGrid linePitch 312 → 行距 15.6 pt +% +% ⇒ 版心宽 = 210 − 2×31.75 = 146.50 mm +% 版心高 = 297 − 2×25.40 = 246.20 mm +% +% 原件的正文距页面顶端 186.29pt 才有第一行文字,是因为上方有 +% 18pt 大标题 + 12pt 副标题 + 空段。本模板保留这个竖向节奏, +% 但内容改成结构化列表后自然变长,故不强行复刻原件的留白高度。 +%====================================================================== +\geometry{ + paperwidth = 210mm, + paperheight = 297mm, + left = 31.75mm, % = pgMar left 1800 twips + right = 31.75mm, + top = 25.40mm, % = pgMar top 1440 twips + bottom = 25.40mm, + headheight = 0pt, + headsep = 0pt, + footskip = 17.51mm, +} +\setlength{\parindent}{0pt} +\setlength{\parskip}{0pt} +\pagestyle{empty} % 原件无页码,一页纸不需要页码 + +%====================================================================== +% 2. 字体 +% +% 全部取自仓库公共字体包 ../fonts.tex(唯一允许声明字体的地方)。 +% 原件的标题用「方正楷体_GB2312」——那是商业字体,本库不含。 +% 改用 **霞鹜文楷**(\kaiti):同为楷体形态,SIL OFL 1.1 可免费商用。 +% 正文原为宋体,用 \songti(思源宋体子集)。 +% +% 这一处替换是**有意的**,不是遗漏:方正楷体不能随仓库分发, +% 换成语义等价的开源楷体是唯一可行方案。视觉上两者都是楷书, +% 细微笔画差异不影响「标题用楷体」这个观感。 +%====================================================================== +\input{../fonts.tex} + +% xeCJK 的 PunctStyle 默认是 quanjiao,会把全角括号的 advance 从 +% 1.0em 压到 0.5em,省下的空间记在行内盒子起点 —— 表现为含「()」 +% 的行整行右移,居中格看起来不居中。改成 plain 取消挤压。 +\xeCJKsetup{PunctStyle=plain} + +%====================================================================== +% 3. 字号 +% +% 原件实测(导出 PDF 读 span 的 size): +% 大标题 18.00pt ← w:sz=36 半磅 = 18pt +% 副标题 12.00pt ← w:sz=24 = 12pt +% 正文 14.05pt ← w:sz=28 = 14pt +% +% ⚠️ 正文实测 14.05 而非 14.00:WPS 内部按 1/20 pt 取整后再乘缩放 +% 系数,0.05 是渲染误差。本模板写 14bp,实测输出 14.00。 +% +% ⚠️ 行距:原 docGrid linePitch=312 twips = 15.60pt。 +% 但 14pt 字配 15.6pt 行距太挤(1.11 倍),原件正文段与段之间 +% 靠 docGrid 的"整数行"撑开,视觉上并不挤。 +% 本模板正文用 23bp 行距(14×1.64),接近 Word 的中文单倍行距观感, +% 比原件的 15.6pt 更易读 —— 这是**有意的改善**,不是复刻。 +%====================================================================== +% \linespread 必须在 \fontsize 之后调用:\fontsize 会重设 \baselineskip, +% 把先前 \linespread 的系数覆盖掉。写反了行距纹丝不动。 +\newcommand{\grd@ls}{\linespread{1}\relax} + +\newcommand{\grdtitle}{% 大标题 18bp + \grd@ls\fontsize{18bp}{30bp}\selectfont} +\newcommand{\grdsubtitle}{% 副标题 12bp + \grd@ls\fontsize{12bp}{23bp}\selectfont} +\newcommand{\grdbody}{% 正文 14bp + % 行距 23bp → 21.5bp:为压到一页而收紧。21.5 / 14 = 1.54 倍, + % 中文正文可读下限约 1.4 倍,离下限还有余量,不是硬挤。 + \grd@ls\fontsize{14bp}{21.5bp}\selectfont} +\newcommand{\grdsmall}{% 表格/签字栏 12bp + \grd@ls\fontsize{12bp}{17bp}\selectfont} + +%====================================================================== +% 4. 标题区 +% +% 原件: +% 大标题 18pt 粗体 楷体 居中 baseline y=108.89 +% 副标题 12pt 常规 楷体 居中 baseline y=138.17 +% 两者相距 29.28pt +% +% 本模板加了一条细分隔线(原件没有),理由:标题与正文之间原件 +% 留了 48pt 空白,空得没有依据;加一条 0.5pt 细线既收住标题区, +% 又比纯留白更像正式文件。若你不要这条线,把 \grd@rule 设为 0pt。 +%====================================================================== +\newlength{\grd@rulev}\setlength{\grd@rulev}{0.5pt} +\newlength{\grd@rulewd}\setlength{\grd@rulewd}{\textwidth} + +\newcommand{\grdmaintitle}[1]{% + \par\begingroup + \centering \grdtitle\kaiti\bfseries #1\par + \endgroup} +\newcommand{\grdsubtitleline}[1]{% + \par\begingroup + \centering \grdsubtitle\kaiti #1\par + \endgroup} + +%====================================================================== +% 5. 分节标题(一、二、三…) +% +% 原件没有分节,全文两段流水账。本模板拆成「总述 / 理论课 / 实验课」 +% 三节,每节一个小标题,便于教务检查时逐项核对。 +%====================================================================== +\newcommand{\grdsec}[1]{% + \par\vspace{2.8mm}% 原 4.0mm,压缩以保一页 + {\grdbody\heiti\bfseries #1}\par + \vspace{0.6mm}% 原 1.2mm +} + +%====================================================================== +% 6. 正文段落与列表 +% +% 正文首行缩进 2 字:原件 w:ind firstLineChars=200(=2 字符)。 +% firstLine = 560 twips = 9.88 mm,对 14pt 字正好 2 字。 +%====================================================================== +\newcommand{\grdpara}[1]{% + \par\begingroup + \grdbody\songti + \setlength{\parindent}{2\ccwd}% + #1\par + \endgroup} + +% 分项列表:用「●」引导,悬挂缩进,比 Word 的自动编号更稳 +% (不依赖 counters,复制粘贴不会串号) +% +% ⚠️ 引导符不能用中点「·」(U+00B7):本库的 OUC Serif 子集里**没有** +% 这个字形,会报 "Missing character: There is no · (U+00B7)", +% 印出来是空白。实测该字体有 ●(U+25CF) 与 ○(U+25CB), +% 且 fonts.tex 已把这两个码位归入 CJK 字符类,可直接用。 +% 也考虑过「•」(U+2022),同样缺字,不要用。 +\newenvironment{grdlist}{% + \par\begingroup + \grdbody\songti + \begin{list}{}{\setlength{\leftmargin}{2\ccwd}% + \setlength{\itemindent}{0pt}% + \setlength{\labelwidth}{1\ccwd}% + \setlength{\labelsep}{1\ccwd}% + \setlength{\itemsep}{0.3mm}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0.8mm}}% +}{% + \end{list}\endgroup} + +\newcommand{\grditem}[2]{% + \item[{\grdbody\songti\raisebox{0.15ex}{\scalebox{0.6}{●}}}]% + {\grdbody\songti #1}#2} + +%====================================================================== +% 7. 成绩构成表 +% +% ⚠️⚠️ 列宽算法(这里踩过一次,务必按此办): +% tabularray 的 Q[wd=...] 是**内容区宽度**,不含 colsep。 +% 每列实际占位 = wd + 2×colsep(左右各一个 1.905mm)。 +% 所以 6 列总共要多占 6×2×1.905 = 22.86mm。 +% +% 最初按「wd 之和 = 版心宽」分配(24+15+30+15+18+30 = 132mm), +% 结果表格实际宽到 560.8pt,冲出页面 146.03pt —— 因为漏了 colsep。 +% +% 正确算法:Σwd = 版心宽 − 6×2×colsep = 146.50 − 22.86 = 123.64mm +% +% 列宽分配(Σ = 123.64mm): +% 项目 22.00mm 「理论课」「实验课」三个字 + 边距 +% 占本类 14.00mm 「80%」 +% 细分项目 26.00mm 「平时成绩」「实验环节」 +% 占本类 14.00mm 「30%」 +% 占总成绩 17.00mm 「24%」 +% 评定依据 30.64mm 余下,最长列的「由实验课教师评定」两行放得下 +%====================================================================== +\newenvironment{grdtable}{% + \par\begingroup\centering + \begin{tblr}{ + colspec={Q[c,m,wd=22mm] Q[c,m,wd=14mm] Q[c,m,wd=26mm] + Q[c,m,wd=14mm] Q[c,m,wd=17mm] Q[l,m,wd=30.28mm]}, + colsep=1.905mm, rowsep=0pt, stretch=0, + % ⚠️ 线宽必须写字面值 0.5pt,**不能**写成 \grd@rulev 之类的宏。 + % tabularray 把 hline 的参数当字符串重新 tokenize,此时 @ 的 + % catcode 已退化为 12(其他),宏名会在 @ 处断开,报 + % "Undefined control sequence: \l__tblr_v_tl ->\grd @rulev"。 + % 这个坑在所有用 tabularray 的模板里都成立。 + hline{1,Z}={0.5pt}, hline{2}={0.5pt}, + vline{1,Z}={0.5pt}, + row{1}={ht=8.5mm}, + row{2-Z}={ht=7.5mm}, + }% +}{% + \end{tblr}\par\endgroup} + +% 表头格 +\newcommand{\grdth}[1]{{\grdsmall\songti\bfseries #1}} +% 表身格 +\newcommand{\grdtd}[1]{{\grdsmall\songti #1}} + +%====================================================================== +% 8. 落款与签字栏 +% +% 原件**没有**签字栏(只有一段说明文字就结束了)。用户明确要求补上 +% 「任课老师签字」和年月日 —— 这是成绩构成说明作为归档材料的必要项: +% 没有签字的说明文件在教务归档时不被认作有效文件。 +% +% 版式(右侧靠齐,与公文落款习惯一致): +% 任课教师(签字):____________ +% 20×× 年  月  日 +% +% ⚠️⚠️ 踩过的两个坑(都表现成「内容不多却翻到下一页」): +% +% 坑① minipage 内部用 \hfill 撑右对齐 +% → 内部行末被拉伸,12pt 的字被拉成 34.8pt 一字 +% (实测「任」「课」「教」「师」间距 34.8pt)。 +% 正解:\hfill 只放在 minipage **外面**,内部 \raggedright。 +% +% 坑② 用 \noindent\hfill\begin{minipage}... 推右 +% → \hfill 出现在段落开头,TeX 把「\hfill+minipage」视作 +% 一个不可分页的整体,加上它是 \par 之后的第一件事, +% 整个块被迫整页搬迁:上一页还剩 88pt,它仍翻页。 +% 正解:用 \makebox[\textwidth][r]{...} 一次性给足宽度, +% 排版器眼里这就是一个普通行内盒子,可以正常与上文同页。 +% +% 实测:改法②后 2 页 → 1 页,零 Overfull。 +%====================================================================== +\newlength{\grd@signline}\setlength{\grd@signline}{40mm} + +\newcommand{\grdsignblock}{% + % ⚠️⚠️ 这一块踩了三次「内容不多却翻页」,最终解法是**不用 \vfill**: + % + % 尝试① \par\vspace{4mm} + minipage + % → 翻页。minipage 是不可分对象,紧跟 \par 后成为合法断页点。 + % 尝试② \vfill 顶到底部 + % → 不翻页了,但会一直顶到版心底线,年月日落到 y=774.9, + % 而版心底只有 771.6 —— 出界 3.3pt,打印被裁。 + % 尝试③ \vfill + 块内 \vspace*{5mm} 留白 + % → 又翻页了。\vfill 与块高加起来超过剩余空间时, + % TeX 不接受压缩 \vfill,只能整块搬迁。 + % + % 最终解法:**固定间距 + 精确控制块高**,不依赖任何竖直胶。 + % \vspace 用一个实测够用的定值,块高用 minipage 内容决定。 + % 正文字数变了就调这个 3mm —— 文档只有一页,回归成本极低。 + % 实测 3mm 时内容底 769.8,距版心底 771.6 余 1.8pt,刚好不出界。 + \par\vspace{3mm} + \begingroup + \grdsmall\songti + \setlength{\parindent}{0pt}% + \noindent + \makebox[\textwidth][r]{% + \begin{minipage}[t]{76mm}% + \grdsmall\songti + \setlength{\parindent}{0pt}% + \raggedright % ← 左对齐不拉伸,见坑① + 任课教师(签字):\rule[-0.6mm]{\grd@signline}{0.4pt}\par + \vspace{1.5mm}% + \hspace*{2\ccwd}20××~年\hspace*{1.2em}月\hspace*{1.2em}日\par + \end{minipage}}% + \par + \endgroup} + +%====================================================================== +% 9. 比例自洽校验 +% +% 为什么要在模板里做算术检查:成绩构成说明是要归档、要被教务抽查的 +% 文件,比例加不起来是最常见也最难被自己发现的错误。 +% +% ⚠️ 原件里最容易搞错的一点:那些百分数的**基准不是同一个**。 +% 「理论课占总成绩 80%」——基准是总成绩 +% 「平时占 30%」——基准是**理论课**(不是总成绩!) +% 「作业占 20%」——基准也是理论课 +% 所以实际占总成绩是 80%×30% = 24%,而不是 30%。 +% 教材/教务检查时最常挑的毛病就是这里算错。 +% 本模板的表格直接把「折算后占总成绩」算出来印上,不让读者心算。 +% +% 校验三组: +% 平时 + 期末 = 100 (两者构成全部理论课) +% 作业 + 点名 = 平时 (两者构成全部平时成绩) +% 理论课 + 实验课 = 100 (两者构成全部总成绩) +% +% 调用(在 .tex 里,\begin{document} 之后): +% \grdcheck{理论课宏}{实验课宏}{平时宏}{期末宏}{作业宏}{点名宏} +% +% ⚠️ 这些宏名带 @,只能在 .sty 里定义。.tex 文档中 @ 不是 letter, +% 直接写 \grd@chk 会报 "Missing \begin{document}" 并连累后文。 +%====================================================================== +\newif\ifgrd@ok +\grd@oktrue + +\newcommand{\grd@chk}[3]{% + \ifnum\numexpr#1\relax=\numexpr#2\relax\else + \grd@okfalse + \typeout{^^J*** oucgrade: 比例不自洽 --- #3: 实际 #1, 应为 #2 ***^^J}% + \fi} + +\newcommand{\grdcheck}[6]{% + \grd@chk{#3+#4}{100}{平时+期末 应构成全部理论课}% + \grd@chk{#5+#6}{#3}{作业+点名 应构成全部平时成绩}% + \grd@chk{#1+#2}{100}{理论课+实验课 应构成全部总成绩}% +} + +% 折算:占总成绩 = 理论课比例 × 分项比例 ÷ 100 +% 例:80 × 30 / 100 = 24 +\newcommand{\grdcalc}[2]{\the\numexpr#1*#2/100\relax} + +% 校验失败时的醒目提示(印在文末) +\newcommand{\grdwarnifbad}{% + \ifgrd@ok\else + \par\vspace{2mm}% + {\centering\grdsmall\heiti\bfseries + ⚠ 警告:各分项比例不平衡(详见 .log),请核对第 1 节的数字。\par}% + \vspace{2mm}% + \fi} + +%====================================================================== +% 10. 文档级初始化 +%====================================================================== +\AtBeginDocument{\grdbody\songti} + +\endinput \ No newline at end of file diff --git a/成绩构成说明/成绩构成说明.pdf b/成绩构成说明/成绩构成说明.pdf new file mode 100644 index 0000000000000000000000000000000000000000..07c3ec244cbbdb9c0a7158c53ba9510994b4b7fa GIT binary patch literal 57444 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%0AJrEkw*ESL*VH~_hu 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