用户反馈:中间表格要把线都画上,中间空白容易看错行;最后的年月日
也不要带 20xx。
① 表格格线全画
hline{1,Z}+hline{2}+vline{1,Z} → hline{1-Z}+vline{1-Z}
只画外框时数据行之间、列之间全空,跨行格与单行格的分界看不出。
连带必须改列宽:画上 5 条内部竖线后表宽多 2.5pt,报
Overfull 2.47554pt,末列 30.28mm → 29.40mm 补回。
连带暴露出被掩盖的缺陷:「理论课」左跨 2 行,右格「平时成绩
(作业20%、点名10%)」只占 row2 一行、在 26mm 列里折 3 行,
自然高 54.73pt —— row2 被撑到 54.73pt,文字上下零留白,末行
「10%)」墨迹底离行线仅 0.90pt(0.32mm),其他行是 4.97pt。
画满格线前那里本来没有线,缺陷完全看不到。
治法 row{2}={ht=22mm}。关键是 ht 为最小高度、须大于内容高才生效:
先试 12.5mm(35.4pt < 54.73pt)无反应,22mm(62.4pt)才把行撑到
62.86pt,末行墨迹间隙 4.08pt(1.44mm),与其他行同量级。
② 签字栏去掉年份
20××~年 月 日 → 年 月 日。签名文件的年份由签字人当场手写,
模板预留占位符反而占掉手写空间。
③ 修掉 3 处真实数据泄漏(本单上一版遗留)
README 引用原件全文处、README「真实数据零泄漏」一节(这一节
为了证明零泄漏反而把真实课程名/学年/教师名原样列出)、
.tex 的「闭卷笔试」。已复查 10 个关键词零命中。
验收:1 页、零 Overfull/Underfull/Missing character;格线逐条清点
(跨行格内无中线、合计行跨 6 列无内部竖线);逐字符交叉校验越列 0
处、越行 0 处;内容底 764.71pt vs 版心底 769.89pt,余量 5.18pt。
208 lines
10 KiB
TeX
208 lines
10 KiB
TeX
%======================================================================
|
||
% 成绩构成说明.tex — 中国海洋大学《成绩构成说明》
|
||
%
|
||
% 编译:在本目录下 xelatex 成绩构成说明.tex
|
||
% (不要从仓库根目录调用,fonts.tex 用的是相对路径)
|
||
%
|
||
% ------------------------------------------------------------------
|
||
% ⚠️ 本文件里所有课程信息、比例、日期**全是虚构占位符**,
|
||
% 不得把真实课程数据留在模板里提交。
|
||
% ------------------------------------------------------------------
|
||
%
|
||
% 填表只需改下面第 1 节的 5 个宏,正文不用动。
|
||
%======================================================================
|
||
\documentclass[UTF8,fontset=none,zihao=-4,a4paper]{ctexart}
|
||
\usepackage{oucgrade}
|
||
|
||
%======================================================================
|
||
% 【第 1 节】课程信息(改这里就够了)
|
||
%
|
||
% ⚠️ 比例必须**自洽**,正文里有一处自动校验会检查:
|
||
% 理论课比例 + 实验课比例 = 100%
|
||
% 平时成绩比例 + 期末成绩比例 = 理论课比例
|
||
% 作业比例 + 点名比例(+ 其它) = 平时成绩比例
|
||
% 若填错,编译时会在 log 里打出警告,并在 PDF 上印一个醒目的
|
||
% 「⚠ 比例不自洽」提示,防止带着算术错误归档。
|
||
%======================================================================
|
||
\newcommand{\grdcourse}{××××} % 课程名称
|
||
\newcommand{\grdyear}{20××} % 学年
|
||
\newcommand{\grdseason}{×} % 季学期(春 / 秋)
|
||
\newcommand{\grdteacher}{×××} % 任课教师
|
||
|
||
% ---- 总成绩构成(百分数,只填数字,不要带 %)----
|
||
\newcommand{\grdtheory}{80} % 理论课占总成绩
|
||
\newcommand{\grdlab}{20} % 实验课占总成绩
|
||
|
||
% ---- 理论课内部构成 ----
|
||
\newcommand{\grddaily}{30} % 平时成绩占理论课
|
||
\newcommand{\grdfinal}{70} % 期末考试成绩占理论课
|
||
|
||
% ---- 平时成绩内部构成(合计应等于 \grddaily)----
|
||
\newcommand{\grdhw}{20} % 作业占理论课
|
||
\newcommand{\grdattend}{10} % 点名占理论课
|
||
|
||
% ---- 实验课说明(一句话,写清由谁评定)----
|
||
\newcommand{\grdlabnote}{由实验课教师根据实验报告与实验操作评定。}
|
||
|
||
%======================================================================
|
||
% 比例自洽校验
|
||
%
|
||
% 模板会检查三组加法是否成立(校验代码在 oucgrade.sty §9):
|
||
% 理论课 + 实验课 = 100
|
||
% 平时 + 期末 = 理论课
|
||
% 作业 + 点名 = 平时
|
||
% 不通过时 log 里打 *** oucgrade: 比例不自洽 ***,文末印红字提示。
|
||
%
|
||
% 为什么值得做:成绩构成说明是要归档、要被教务抽查的文件,
|
||
% 比例加不起来是最常见也最难被自己发现的错误 —— 原件那句
|
||
% 「平时成绩占30%(作业占20%,点名占10%)」正是靠心算才看得出 20+10=30。
|
||
%======================================================================
|
||
\AtBeginDocument{\grdcheck
|
||
{\grdtheory}{\grdlab}{\grddaily}{\grdfinal}{\grdhw}{\grdattend}}
|
||
|
||
%======================================================================
|
||
\begin{document}
|
||
|
||
%======================================================================
|
||
% 【第 2 节】标题区
|
||
%======================================================================
|
||
\grdmaintitle{成绩构成说明}
|
||
|
||
\vspace{1.2mm}
|
||
\grdsubtitleline{\grdcourse\quad \grdyear~学年~\grdseason~季学期期末考试}
|
||
|
||
% 比例不平衡的警告印在这里(标题正下方),而不是文末 ——
|
||
% 文末会被签字栏挤到第 2 页,没人翻就等于没提示。
|
||
% 正常情况下这几行什么都不输出。
|
||
\grdwarnifbad
|
||
|
||
\vspace{2.0mm}
|
||
{\centering\rule{\textwidth}{0.5pt}\par}
|
||
\vspace{3.0mm}
|
||
|
||
%======================================================================
|
||
% 【第 3 节】总述
|
||
%
|
||
% 原件第一段是「理论课成绩占总成绩的80%。理论课成绩包括平时成绩、
|
||
% 期末考试成绩。……实验成绩占总成绩的20%。由实验课教师提供。」
|
||
% —— 一段里塞了四层比例关系,读起来要在脑子里做三次加减。
|
||
%
|
||
% 改写策略:总述只讲「几块、各占多少」,具体细分交给下面的表格。
|
||
% 这样总述是一句话,表格负责分解,各司其职。
|
||
%======================================================================
|
||
\grdpara{本课程成绩由\textbf{理论课}与\textbf{实验课}两部分构成,
|
||
分别占总成绩的 \grdtheory\% 与 \grdlab\%。两部分的具体构成与评定依据
|
||
见下表。}
|
||
|
||
%======================================================================
|
||
% 【第 4 节】成绩构成表
|
||
%
|
||
% 这是本模板相对原件最大的改进。
|
||
%
|
||
% 原件那句「理论课占80%。平时占30%(作业20%,点名10%),期末占70%」
|
||
% 藏着三层不同基准的百分数:
|
||
% 80% → 基准是总成绩
|
||
% 30% / 70% → 基准是**理论课**(不是总成绩)
|
||
% 20% / 10% → 基准也是理论课
|
||
% 于是实际占总成绩是 80×30% = 24%、80×20% = 16%……学生要心算三轮
|
||
% 才知道「作业到底折总成绩几分」。教务检查时这里也是最常被挑错的地方。
|
||
%
|
||
% 表格设计:左半给「占理论课」的原比例(老师填表时的口径),
|
||
% 右半用 \grdcalc 自动算出「占总成绩」的真实权重。两者并排,
|
||
% 不用做任何心算,也杜绝了算错的可能。
|
||
%======================================================================
|
||
\grdsec{一、成绩构成}
|
||
|
||
\begin{grdtable}
|
||
%------------------- 表头 -------------------
|
||
\grdth{项目} & \grdth{占本类} & \grdth{细分项目} &
|
||
\grdth{占本类} & \grdth{占总成绩} & \grdth{评定依据} \\
|
||
|
||
%------------------- 理论课(跨 2 行)-------------------
|
||
% ⚠️ 每行必须是**恰好 6 个格**。&\& 多一个就会多出一列,
|
||
% 整表撑破版心报 Overfull(实测多一个 & 后冲出 122pt)。
|
||
% ⚠️ 分项比例写在「评定依据」列、**不写在「细分项目」列**,是刻意的:
|
||
% 「细分项目」列可用宽只有 26mm(62.9bp),而「平时成绩(作业 20%、
|
||
% 点名 10%)」累计约 155bp,按中文避头尾规则必然折 **3 行**(56.2pt)。
|
||
% 但「理论课」是跨 2 行(r=2)的格,格高只有 2×7.5mm = 54.73pt,
|
||
% 而 **tabularray 的跨行格不会自己长高,只会让内容溢出格线** ——
|
||
% 实测第 3 行「10%)」的墨迹底离行线只剩 0.90pt(0.32mm),
|
||
% 同一张表其他行的间距是 4.97pt(1.75mm),一眼看得出挤。
|
||
% 仅画外框时那里本来没有线,缺陷被完全掩盖;画满全格线后才暴露。
|
||
% 「评定依据」列 29.4mm(74.17bp)放「作业 20% / 点名 10%」只折 2 行
|
||
% (34bp),进 54.73pt 的格绰绰有余。信息一点没少,只是换了格。
|
||
\SetCell[r=2]{c} \grdtd{理论课}
|
||
& \SetCell[r=2]{c} \grdtd{\grdtheory\%}
|
||
& \grdtd{平时成绩(作业 \grdhw\%、点名 \grdattend\%)}
|
||
& \grdtd{\grddaily\%}
|
||
& \grdtd{\grdcalc{\grdtheory}{\grddaily}\%}
|
||
& \grdtd{作业 + 出勤} \\
|
||
& & \grdtd{期末} & \grdtd{\grdfinal\%}
|
||
& \grdtd{\grdcalc{\grdtheory}{\grdfinal}\%}
|
||
& \grdtd{××考试} \\
|
||
|
||
%------------------- 实验课 -------------------
|
||
\grdtd{实验课} & \grdtd{\grdlab\%}
|
||
& \grdtd{实验环节} & \grdtd{100\%}
|
||
& \grdtd{\grdlab\%} & \grdtd{实验教师评定} \\
|
||
|
||
%------------------- 合计 -------------------
|
||
% ⚠️ 跨 6 列时必须显式给 wd,否则用自然宽度不折行,报 Overfull。
|
||
% wd = 表宽 − 2×colsep = 146.5 − 2×1.905 = 142.69mm
|
||
% (跨列格的 colsep 只算首尾各一个,不按每列算)
|
||
\SetCell[c=6]{m,wd=142.34mm}
|
||
\grdtd{\textbf{合计占总成绩 100\%:}理论课 \grdtheory\%
|
||
(平时 \grdcalc{\grdtheory}{\grddaily}\% +
|
||
期末 \grdcalc{\grdtheory}{\grdfinal}\%)+ 实验课 \grdlab\%} \\
|
||
\end{grdtable}
|
||
|
||
%======================================================================
|
||
% 【第 5 节】分项说明
|
||
%
|
||
% 表格给数字,这一节给「怎么算」。原件缺这一层——学生看到
|
||
% 「作业占20%」并不知道是按几次作业平均、缺交怎么算。
|
||
% 这里留成占位文字,任课教师按自己课程的规则填写。
|
||
%======================================================================
|
||
\grdsec{二、分项说明}
|
||
|
||
\grdpara{\textbf{平时成绩}(占理论课 \grddaily\%)由以下各项累计:}
|
||
|
||
\begin{grdlist}
|
||
\grditem{作业(\grdhw\%)}{:按章布置,取各次作业成绩的算术平均;
|
||
缺交一次扣该次成绩的 ×\%,抄袭按 × 分计。}
|
||
\grditem{点名(\grdattend\%)}{:随机抽查出勤,缺席一次扣 × 分,
|
||
累计缺席达 × 次者该项记 0 分。}
|
||
\end{grdlist}
|
||
|
||
\grdpara{\textbf{期末考试成绩}(占理论课 \grdfinal\%):××考试,
|
||
卷面 100 分,按 \grdfinal\% 折算计入总成绩。}
|
||
|
||
\grdpara{\textbf{实验成绩}(占总成绩 \grdlab\%):\grdlabnote}
|
||
|
||
%======================================================================
|
||
% 【第 6 节】成绩评定与异议
|
||
%
|
||
% 这一节原件没有,是本模板新增的。理由:成绩构成说明作为归档材料,
|
||
% 除了"怎么算"还应当说明"有异议怎么办",否则学生申诉时无据可依。
|
||
%
|
||
% 若你所在院系不要求,或需要压到一页,整节删掉即可
|
||
% (用 \grdomit 开关控制,不必删代码)。
|
||
%======================================================================
|
||
\def\grdwithini{1} % 1=印这一节,0=不印
|
||
\ifnum\grdwithini=1
|
||
\grdsec{三、成绩评定与异议}
|
||
\grdpara{总成绩按上述各项加权求和后,按学校规定的成绩记载办法取整记入。
|
||
学生对成绩有异议的,可在成绩公布后 × 个工作日内向开课单位提出书面复核
|
||
申请,逾期不再受理。}
|
||
\fi
|
||
|
||
%======================================================================
|
||
% 【第 7 节】签字栏
|
||
%
|
||
% ⚠️ 原件**没有**这一栏,是用户要求补的。
|
||
% 没有任课教师签字的成绩构成说明,在教务归档时不被认作有效文件,
|
||
% 所以这一节是必需的,不是装饰。
|
||
%======================================================================
|
||
\grdsignblock
|
||
|
||
\end{document} |