- 删除 WORKFLOW.md(开发流程文档,已移入记忆库) - build.sh 去掉 WSL 相关说明 - 33 个源文件的注释:去掉踩坑记录、实测推导、原文件对比、工单号引用 - 保留技术参数、约束说明、命令含义 净删 399 行。全库 16/16 编译通过。
224 lines
13 KiB
TeX
224 lines
13 KiB
TeX
%======================================================================
|
||
% 中国海洋大学 课程教学日历(理论课程)
|
||
%
|
||
% 编译: xelatex 课程教学日历.tex
|
||
%
|
||
% 这是学校下发的**通用空白表**(附件3),本模板只复刻版式。
|
||
%
|
||
% ⚠️ 模板里的课程信息、周次、日期、教学内容**全部是虚构占位**,
|
||
% 与里的真实课程无关。填自己的课时请改【第 1 节】与表格。
|
||
%
|
||
% 版式来源:学校下发的《附件3:中国海洋大学课程教学日历(理论课程)》.doc
|
||
%
|
||
% 与的差异(有意为之):
|
||
% · 原字体「宋体 + Times New Roman」换成 OUC Serif + TeX Gyre Termes
|
||
% (全部开源可商用,字宽逐字相同)
|
||
% · 纸张、页边距、表宽、列宽、字号、行距、对齐一律照原值
|
||
% (详见 oucal.sty 的注释,每一项都附了换算过程)
|
||
% · 表格跨页位置不复刻(断点取决于行高取整,不可靠,见 sty §10)
|
||
%======================================================================
|
||
\documentclass[UTF8,fontset=none]{ctexart}
|
||
\usepackage{oucal}
|
||
|
||
%======================================================================
|
||
% 【第 1 节】课程信息 —— 换成你自己的
|
||
%
|
||
% ⚠️ 下面全部是虚构值,请逐项替换。不要把真实信息留在模板里提交。
|
||
%======================================================================
|
||
\newcommand{\calcno}{附件3} % 附件编号
|
||
\newcommand{\calcname}{数字逻辑} % 课程名称(4 字示例)
|
||
\newcommand{\calyear}{2025} % 学年
|
||
\newcommand{\calseason}{秋} % 季学期(春/秋)
|
||
\newcommand{\caldept}{计算机科学与技术学院(系)} % 开课单位
|
||
\newcommand{\calcodenum}{080502101231} % 开课号(12 位数字)
|
||
\newcommand{\calteacher}{张远航} % 任课教师
|
||
\newcommand{\calcredit}{4.0} % 课程学分
|
||
\newcommand{\calhour}{64} % 总学时
|
||
\newcommand{\calstudent}{86} % 学生人数
|
||
\newcommand{\calassess}{闭卷考试} % 考核方式
|
||
% 注:签字栏的「年 月 日」不设宏 —— 那是**手写**填空位,模板里保持空白。
|
||
|
||
\begin{document}
|
||
|
||
%======================================================================
|
||
% 【第 2 节】表格上方的抬头
|
||
%
|
||
% ⚠️ 下面每个 \calskip{} 的数值都是标定值。
|
||
%
|
||
% 正文用 460 twips 固定行距,段与段之间没有段前/段后间距,段距完全
|
||
% 由行盒的 ascent/descent 堆出来。TeX 的行盒模型与之不同(同样单行
|
||
% 段落,TeX 的盒子更矮),故逐段补差。
|
||
%
|
||
% 调整方法:导出 PDF 后读每行基线 y,与目标位置逐段比对,把差值加到
|
||
% 对应的 \calskip 上。响应是线性的,一轮即收敛。
|
||
%======================================================================
|
||
\begin{caloutside}
|
||
\calskip{-4.330mm} % 顶端补偿:首行基线距版心顶 20.69pt
|
||
\calfontA\bfseries \calcno:\par
|
||
\calskip{2.894mm}
|
||
{\calfontA\bfseries \centering 中国海洋大学 \calcname 课程教学日历(理论课程)\par}
|
||
\calskip{1.243mm}
|
||
{\calfontB\bfseries \centering \calyear~学年~\calseason~季学期\par}
|
||
\calskip{6.493mm}
|
||
|
||
%---- 课程信息:两行 ----
|
||
% ⚠️ 原件这两段带 w:ind left="-540"(−9.525mm) firstLine="210"(+3.704mm),
|
||
% 相对原版心 31.75mm 的净起点 = 31.75 − 9.525 + 3.704 = 25.929mm
|
||
% = 73.48pt,与实际x=73.44pt 吻合。
|
||
% caloutside 已把段落起点放回 31.75mm,故此处只需再左移 5.821mm。
|
||
%
|
||
% ⚠️ 两行之间用 \newline 而不是 \par —— 这是关键。
|
||
% 原件的两行是 460 twips 固定行距、段距 0,基线相差 23.04pt。
|
||
% 若用 \par 分成两段,**\baselineskip 不跨段落**,两段的间距变成
|
||
% 「上段末行深度 + \parskip(0) + 下段首行高度」≈ 20.9pt,短 2.1pt,
|
||
% 而且这个缺口**补不上**:实际\vspace*{-2.11pt} 与 \calskip{-0.734mm}
|
||
% 都会被 TeX 在 \par 处丢弃(负的垂直胶不能压缩已有间距)。
|
||
% \newline 让两行落在同一段落里,\baselineskip = 23bp 直接生效。
|
||
\calfontC
|
||
% 用一个段落 + \newline 排两行,缩进用 \leftskip 负值 + \parindent 补偿:
|
||
% \newline 后的行是"段中行",不吃 \parindent,只认 \leftskip。
|
||
% 故把缩进整体前移 5.821mm 后,第二行会自动跟着走。
|
||
\setlength{\leftskip}{\dimexpr\caloutsideskip-5.821mm\relax}
|
||
\setlength{\parindent}{0pt}
|
||
【开课单位】~\caldept\hfill 【开课号】~\calcodenum\hfill 【任课教师】~\calteacher\newline
|
||
【课程学分】~\calcredit\hfill 【总学时】~\calhour\hfill 【学生人数】~\calstudent\hfill 【考核方式】~\calassess\par
|
||
\setlength{\leftskip}{\caloutsideskip}
|
||
\calskip{2.873mm} % 课程信息第 2 行到表格顶线
|
||
\end{caloutside}
|
||
|
||
%======================================================================
|
||
% 【第 3 节】教学日历表
|
||
%
|
||
% 每行格式:
|
||
% \calweek{第X周} & \caldate{日期} & \calhourn{学时} & 教学内容 & 教学方式 & 课堂讨论/其它环节 & 课下作业/必读章节 \\
|
||
%
|
||
% · 周次列前 10 行原件是左对齐、第 11 行起居中 —— 照抄原件这个不一致
|
||
% (见 README「已知差异」)。若想全列统一,把 \calctr 换 \calcell。
|
||
% · 空格用 \\ 前的最后一个 & 结束;内容为空就留空。
|
||
%======================================================================
|
||
\begin{caltable}
|
||
%------------------- 表头 -------------------
|
||
\calctr{周次} & \calctr{日期} & \calctr{学时} & \calctr{教学内容} &
|
||
\calctr{教学方式} & \calctr{课堂讨论内容及其它教学环节} &
|
||
\calctr{课下作业及课后必读教材或参考书章节} \\
|
||
|
||
%------------------- 16 周(示例内容全为虚构)-------------------
|
||
% ⚠️ 关于第一周行距 15.6pt:原件只有这一行的段落没写 w:spacing,随
|
||
% docGrid(linePitch=312 twips)排,行距 15.6pt,而其余 17 行都是
|
||
% 23pt。**本模板不复制这个不一致**,全表统一 23pt。
|
||
%
|
||
% 后果:这一行比常规高 22.2pt(69.5 → 46.5),总高多 22pt,表格
|
||
% 从 2 页变 3 页。这是有意取舍 —— 保真版式的同时不复制原件的疏漏,
|
||
% 理由记在 README「已知差异」第 1 条。
|
||
% (若你确实要 2 页,把这一行改成 \calfall 系列宏、并把 sty 里
|
||
% row{2} 的 ht 改回 24.30pt。注意 \calfall 对 \par 分段无效,
|
||
% 只对自动折行有效,改之前先读 sty §6 的说明。)
|
||
\calcell{第一周} & \calcell{9.1—9.7} & \calcell{4} &
|
||
\calcell{课程基本情况介绍\par 引例\par 补充知识} &
|
||
\calcell{多媒体讲课} & & \\
|
||
\calcell{第二周} & \calcell{9.8—9.14} & \calcell{4} &
|
||
\calcell{第一章,数制与编码\par 第一节,数制的基本概念} &
|
||
\calcell{多媒体讲课} & & \\
|
||
\calcell{第三周} & \calcell{9.15—9.21} & \calcell{4} &
|
||
\calcell{第一章,数制与编码\par 数制的三种表现形式,常用编码,常见的几个定理。} &
|
||
\calcell{多媒体讲课} & & \\
|
||
\calcell{第四周} & \calcell{9.22—9.28} & \calcell{4} &
|
||
\calcell{第一章,数制与编码\par 常用的公式、逻辑代数法化简、卡诺图化简。\par 第二章,组合逻辑分析} &
|
||
\calcell{多媒体讲课} & & \calcell{作业1.1—1.6} \\
|
||
\calcell{第五周} & \calcell{9.29—10.5} & \calcell{4} &
|
||
\calcell{第二章,组合逻辑分析\par 组合逻辑分析方法、常见的组合逻辑电路} &
|
||
\calcell{多媒体讲课} & \calcell{国庆假期调课} & \calcell{作业1.7—1.10} \\
|
||
\calcell{第六周} & \calcell{10.6—10.12} & \calcell{4} &
|
||
\calcell{第三章,组合逻辑设计\par 组合逻辑设计方法、任意项} &
|
||
\calcell{多媒体讲课} & & \\
|
||
\calcell{第七周} & \calcell{10.13—10.19} & \calcell{4} &
|
||
\calcell{第三章,组合逻辑设计\par 无反变量设计,考虑多个输出的设计,使用数据选择器进行设计} &
|
||
\calcell{多媒体讲课} & & \calcell{作业2.1,2.3,2.5} \\
|
||
\calcell{第八周} & \calcell{10.20—10.26} & \calcell{4} &
|
||
\calcell{第四章,时序逻辑分析,时序逻辑的基本内容} &
|
||
\calcell{多媒体讲课} & & \\
|
||
\calcell{第九周} & \calcell{10.27—11.2} & \calcell{4} &
|
||
\calcell{第四章,时序逻辑分析\par 时序逻辑分析基本方法} &
|
||
\calcell{多媒体讲课} & & \\
|
||
\calcell{第十周} & \calcell{11.3—11.9} & \calcell{4} &
|
||
\calcell{第四章,时序逻辑分析\par 常见的时序逻辑电路} &
|
||
\calcell{多媒体讲课} & & \calcell{作业3.1—3.4} \\
|
||
\calctr{第十一周} & \calctr{11.10—11.16} & \calcell{4} &
|
||
\calcell{第五章,时序逻辑设计,状态表} &
|
||
\calctr{多媒体讲课} & \calcell{期中测验} & \\
|
||
\calctr{第十二周} & \calctr{11.17—11.23} & \calcell{4} &
|
||
\calcell{第五章,时序逻辑设计,状态表化简} &
|
||
\calctr{多媒体讲课} & & \\
|
||
\calctr{第十三周} & \calctr{11.24—11.30} & \calcell{4} &
|
||
\calcell{第五章,时序逻辑设计,状态转移表} &
|
||
\calctr{多媒体讲课} & & \\
|
||
\calctr{第十四周} & \calctr{12.1—12.7} & \calcell{4} &
|
||
\calcell{第五章,时序逻辑设计,状态图、状态表} &
|
||
\calctr{多媒体讲课} & & \calcell{作业4.1} \\
|
||
\calctr{第十五周} & \calctr{12.8—12.14} & \calcell{4} &
|
||
\calcell{复习、答疑} &
|
||
\calctr{多媒体讲课} & & \\
|
||
\calctr{第十六周} & \calctr{12.15—12.21} & \calcell{4} &
|
||
\calcell{复习、答疑} &
|
||
\calctr{多媒体讲课} & & \\
|
||
|
||
\end{caltable}
|
||
|
||
%----------------------------------------------------------------------
|
||
% 表格到此为止,共 17 行(表头 + 16 周)。
|
||
%
|
||
% ⚠️ 原件表格末尾还有一行跨 7 列的「课程考核及评价方式:」大格
|
||
% (原 18 行)。**本模板已删除这一行**,因为学校另有单独的
|
||
% 《成绩构成说明》文件详细说明考核构成,教学日历里重复一遍既
|
||
% 冗余又容易与说明文件不一致。考核方式改在表头上方的课程信息里
|
||
% 用一个字段(\calassess)点到即可。
|
||
%
|
||
% 若你要恢复那一行:在 sty 的 colspec 之后补回
|
||
% row{18}={ht=69.00pt},
|
||
% 并在上方 \\ 之后加:
|
||
% \SetCell[c=7]{m,wd=170.638mm}
|
||
% \calcell{课程考核及评价方式:}\par
|
||
% \calcell{...说明文字...} \\
|
||
% (跨列格必须显式给 wd,否则报 Overfull —— 原因见下)
|
||
%----------------------------------------------------------------------
|
||
|
||
%======================================================================
|
||
% 【第 4 节】签字栏
|
||
%
|
||
% 的这两段(P008/P009):
|
||
% 「院(系)负责人签字:」 w:ind firstLine=4515 firstLineChars=2150
|
||
% 「××××年 月 日」 无 ind,用空格顶到位置
|
||
%
|
||
% firstLine = 4515 twips = 4515/1440×25.4 = 79.6396 mm
|
||
% ⇒ 相对原版心左边界 31.75mm,起点 = 31.75 + 79.6396 = 111.3896 mm = 315.75 pt
|
||
% 实际x = 321.00pt —— 差 5.25pt,因为第一个字「院」的左边界
|
||
% 与盒子起点之间还有字形的左边距(word 的 4515 是"首行缩进",量的
|
||
% 是盒子起点,不是字形起点)。故按实际321.00pt 反解:
|
||
% 缩进 = 321.00 − (31.75mm→89.999pt) = 231.00 pt = 81.49 mm
|
||
%
|
||
% ⚠️ 两行的水平位置**不一样**:
|
||
% 「院(系)」x=321.00 年份 x=352.50
|
||
% 原件第二行是用空格顶的(不是缩进),照抄即可。
|
||
%
|
||
% ⚠️ 第二行的三个锚点(逐字符实际原件 PDF,10.45pt 宋体):
|
||
% 年字形 x = 355.08 月 x = 376.08 日 x = 397.08
|
||
% 年→月 21.00pt,月→日 21.00pt(都是一个全角字 + 10.55pt 空档)
|
||
%
|
||
% 原件被填过,年份位印着 4 个半角数字(x=331.44~352.50),
|
||
% 后面跟一个空格,再是「年」。**本模板不写年份**,那一段留白给
|
||
% 老师手写签日期 —— 这是空白模板该有的样子。
|
||
%
|
||
% 但「年 月 日」三个字仍留在原件的印刷位置上(355.08 起),
|
||
% 这样打出来的表格与学校原表逐字对齐,手写填空处一目了然。
|
||
%
|
||
% ⚠️ 不要用负 \hspace 去挪:它只能压缩后续间距,减到负数就是重叠。
|
||
% 结果三个字叠成一个墨团。现已彻底去掉年份占位符,问题不存在了。)
|
||
%======================================================================
|
||
\begin{caloutside}
|
||
\calskip{5.60mm}
|
||
\hspace*{81.49mm}\calfontC 院(系)负责人签字:\par
|
||
\calskip{1.10mm}
|
||
\hspace*{93.517mm}\calfontC 年\hspace*{10.55pt}月\hspace*{10.55pt}日\par
|
||
\end{caloutside}
|
||
|
||
\end{document} |