新增成绩构成说明 LaTeX 模板(成绩构成说明/) #9

This commit is contained in:
2026-10-27 09:15:58 +08:00
parent a4589139da
commit a29f193cff
6 changed files with 873 additions and 3 deletions
+198
View File
@@ -0,0 +1,198 @@
%======================================================================
% 成绩构成说明.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)。
\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}