%====================================================================== % 成绩构成说明.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}