新增课程教学执行大纲 LaTeX 模板 course/(#2)
把学校下发的《本科课程教学执行大纲》Word 模板复刻为 XeLaTeX,
内容全部虚构(课程名、代码、开课号、教师、教材、思政案例)。
- ouccourse.sty:版式宏包,尺寸全部从 OOXML 量出
· 页面:左 27.52 / 右 22.93 / 上 25.05 / 下 4.94 mm(照抄原文件的不对称与极小下边距)
· 表 0:156.93mm,5 行 × 8.01mm,两列 131.921/25.012mm
· 表 1:165.54mm(超版心 5.91mm,居中溢出),6 列逐列对齐 gridCol
- 课程执行大纲.tex:虚构课程「信号与系统基础」完整示例,5 页
- README.md:用法、参数表、twips→mm 对照、字体降级、六个坑、校验方法
- 根 README.md 目录表补 course/ 一行
关键技术点(README 有详述):
- 表宽 > 版心时不能按比例缩列宽(会让长文字提前折行),要用 \leftskip 整块左移;
\hspace* 对 longtblr 的 \halign 盒子无效
- tabularray 的 wd= 是内容宽,不含竖线自身 0.5pt;ht= 含横线预算
- presep/headsep 是 outer 键,误写进 inner spec 会把 "0pt" 印成垃圾文字且不报错
- 表级默认字号须写 cells={font=...},单独写 font= 被静默忽略
- longtblr 跨页提示要清两组模板;*-text 不能设 empty(会报 LaTeX3 变量错误)
- ctex 默认 \linespread≈1.3 会覆盖 \fontsize 的行距
验收:26/26 项量化达标,编译零错误零 Overfull/Underfull,5 页
This commit is contained in:
@@ -0,0 +1,256 @@
|
||||
# `course/` —— 本科课程教学执行大纲、教学日历(LaTeX 模板)
|
||||
|
||||
中国海洋大学下发的《本科课程教学执行大纲》Word 模板的 XeLaTeX 复刻版。
|
||||
内容全部**虚构**(课程名、课程代码、开课号、教师、教材、思政案例),只复刻版式。
|
||||
|
||||
| 文件 | 说明 |
|
||||
|---|---|
|
||||
| `课程执行大纲.tex` | 主文件。虚构课程的一份完整示例 |
|
||||
| `ouccourse.sty` | 版式宏包。尺寸全部从原 docx 的 OOXML 量出 |
|
||||
| `课程执行大纲.pdf` | 编译产物,5 页(与原 docx 一致) |
|
||||
|
||||
## 编译
|
||||
|
||||
```bash
|
||||
xelatex 课程执行大纲.tex # 单次即可,无交叉引用
|
||||
```
|
||||
|
||||
需要 `ctex` + `geometry` + `fontspec` + `xeCJK` + `tabularray`。
|
||||
实测环境:TeX Live 2022 / tabularray 2022A。
|
||||
|
||||
## 换成一门真实的课
|
||||
|
||||
**只改 `课程执行大纲.tex` 顶部的宏定义,不要动 `ouccourse.sty`。**
|
||||
|
||||
```latex
|
||||
\newcommand{\cfcourse}{信号与系统基础} % 课程名
|
||||
\newcommand{\cfyear}{2026} % 学年
|
||||
\newcommand{\cfseason}{秋} % 季学期
|
||||
\newcommand{\cfmode}{考试} % 考核方式:考试/考查/论文
|
||||
\newcommand{\cfcode}{081203304517} % 课程代码
|
||||
\newcommand{\cfhour}{56} % 总课时
|
||||
\newcommand{\cfcredit}{3.0} % 学分
|
||||
\newcommand{\cfprac}{18} % 实践学时
|
||||
\newcommand{\cfteacher}{×××} % 任课教师
|
||||
\newcommand{\cfteachno}{99663311} % 开课号
|
||||
\newcommand{\cfmajor}{电子信息工程} % 面向专业
|
||||
\newcommand{\cfattr}{专业核心必修课} % 课程属性
|
||||
```
|
||||
|
||||
正文各节直接用 `\ccsec{}`(一级标题)、`\ccp{}`(带 2 字首行缩进的正文)。
|
||||
|
||||
### 表 0 —— 成绩综合评分体系
|
||||
|
||||
```latex
|
||||
\begin{ccscoretable}
|
||||
成绩综合评分体系 & 比例\% \\ % 表头
|
||||
1.课下作业、课堂讨论及平常表现 & 24 \\
|
||||
2.实验成绩 & 20 \\
|
||||
3.期末考试成绩 & 56 \\
|
||||
总计 & 100 \\
|
||||
\end{ccscoretable}
|
||||
```
|
||||
|
||||
行数可以增减,行高自动(每行 7.834mm)。
|
||||
|
||||
### 表 1 —— 教学日历
|
||||
|
||||
```latex
|
||||
\begin{cctable}
|
||||
{\ccfang\ccszxi\bfseries 周次} & ... & {\ccszix 内容} & 2 & {\ccszix ...} & {\ccszix ...} \\
|
||||
\end{cctable}
|
||||
```
|
||||
|
||||
- 6 列,顺序固定:周次 / 内容顺序 / 主题 / 计划课时 / 教学内容及教学方式 / 思政点及支撑指标点情况
|
||||
- 纵向合并周次段用 `\SetCell[r=2]{c}`(跨 2 行,`r=N` 即跨 N 行)
|
||||
- 表尾「合计」行后有两个 `\SetCell[c=6]{c}` 的整行合并(任课老师签字 / 审核意见)
|
||||
- 表内默认 9pt;表头用 `\ccszxi`(11pt)加粗;审核意见格内部钉死 10.5pt/12.6pt
|
||||
|
||||
## 版式数据来源(twips → mm)
|
||||
|
||||
原 docx 的 `sectPr`:
|
||||
|
||||
| 属性 | twips | mm | 说明 |
|
||||
|---|---|---|---|
|
||||
| `pgSz w` | 11910 | 210.08 | WPS 存的"非标准 A4",本包用标准 210 |
|
||||
| `pgSz h` | 16840 | 297.04 | 同上,用 297 |
|
||||
| `pgMar top` | 1420 | 25.05 | 上边距 |
|
||||
| `pgMar bottom` | 280 | **4.94** | 下边距极小,原文件为塞进 5 页压出来的 |
|
||||
| `pgMar left` | 1560 | 27.52 | 左边距 |
|
||||
| `pgMar right` | 1300 | 22.93 | 右边距(左右不对称,照抄) |
|
||||
| `pgMar header/footer` | 720 | 12.70 | 无页眉页脚内容,仅占位 |
|
||||
|
||||
换算:`mm = twips / 1440 × 25.4`,`pt = twips / 20`。
|
||||
|
||||
### 表 0(成绩综合评分体系)
|
||||
|
||||
| 项目 | twips | mm |
|
||||
|---|---|---|
|
||||
| `gridCol` | 7479 + 1418 | 131.921 + 25.012 |
|
||||
| 表宽 | 8897 | **156.93** |
|
||||
| `tblCellMar left/right` | 108 | 1.905 |
|
||||
| `trHeight`(exact) | 454 | 8.01(本包用 7.834,见坑 3) |
|
||||
| 边框 `sz` | 4 | 0.5pt |
|
||||
|
||||
`tblLayout fixed`、`jc center`、`tblW 0 auto`。全表 12pt 方正仿宋。
|
||||
|
||||
### 表 1(教学日历)
|
||||
|
||||
| 项目 | twips | mm |
|
||||
|---|---|---|
|
||||
| `gridCol` | 846,1134,1877,850,2835,1843 | 14.922, 20.002, 33.108, 14.993, 50.006, 32.508 |
|
||||
| 表宽 | 9385 | **165.54**(超版心 5.91) |
|
||||
| `trHeight` R0(atLeast) | 917 | 16.17 |
|
||||
| `trHeight` R14(atLeast) | 1825 | 32.19 |
|
||||
| `trHeight` R15(atLeast) | 1073 | 18.93(只是下限,实际被撑到 56mm) |
|
||||
|
||||
**16 行**。R1~R13 无 `trHeight`,行高由内容决定。纵向合并 5 组(R1-R2、R3-R4、
|
||||
R5-R6、R7-R8、R9-R10);R14/R15 是 `gridSpan=6` 的整行合并。
|
||||
|
||||
## 六个必须知道的坑
|
||||
|
||||
### 1. 表宽 > 版心时,不要缩放列宽
|
||||
|
||||
docx 里表 1 是 165.54mm,版心只有 159.55mm。Word 允许表格超出、居中后压进左右页边距。
|
||||
|
||||
**不要按 159.55/165.54 按比例缩列宽。** 缩了之后长文字会提前折行,行高、页数全变。
|
||||
正确做法:列宽照抄 `gridCol`,用 `\leftskip` 把整块左移。
|
||||
|
||||
```latex
|
||||
\hsize=\cctblw \linewidth=\cctblw % 让表内得下,不报 Overfull
|
||||
\leftskip=-\cctblshift \rightskip=0pt % 整块左移 5.29mm,落到 22.23mm
|
||||
```
|
||||
|
||||
`\hspace*` 对 `longtblr` 生成的 `\halign` 盒子**无效**,会被吞掉,必须用 `\leftskip`。
|
||||
|
||||
### 2. `wd=` 是内容宽,不含竖线自身的宽度
|
||||
|
||||
tabularray 的 `Q[...,wd=X]` 里 X 是**内容宽**。每条 `vline` 自身还占 0.5pt = 0.17639mm。
|
||||
|
||||
```
|
||||
表 1:6 列 7 条线,每列承担 7/6 条 ⇒ wd = gridCol − 2×colsep − 0.2058
|
||||
表 0:2 列 3 条线,每列承担 1.5 条 ⇒ wd = gridCol − 2×colsep − 0.2646
|
||||
```
|
||||
|
||||
漏算的后果很隐蔽:表看起来对,但总宽每列多 0.18mm,6 列就差出 1mm。
|
||||
|
||||
### 3. `ht=` 也含横线宽度预算
|
||||
|
||||
`row{1-Z}={ht=8.01mm}` 画出来是 **8.19mm**(每行多一条 0.5pt 横线)。
|
||||
要得到 8.01mm 的真实行高,`ht` 要给 **7.834mm**。
|
||||
|
||||
### 4. `presep/postsep/headsep/footsep` 是 outer 键
|
||||
|
||||
写进 `\begin{longtblr}[...]` 的**方括号**里;写进花括号(inner spec)不会生效,
|
||||
反而会把 `0pt` 当表内容印在表格第一行 —— 表头上会出现一串
|
||||
`0pt0pt0pt0pt` 的垃圾文字,而且**不报错**。
|
||||
|
||||
同理,表级默认字号必须写 `cells={font=\ccszix}`,单独写 `font=` 会被静默忽略。
|
||||
|
||||
### 5. 跨页续页提示要清两组模板
|
||||
|
||||
`longtblr` 跨页时默认印 `( Continued )`、表尾印 `Continued on next page`,
|
||||
有 caption 时还印 `表0:`。清干净要动两组:
|
||||
|
||||
```latex
|
||||
% (a) 内容模板 *-text —— 不能设成 empty!会报
|
||||
% "LaTeX3 Error: Erroneous variable \l__tblr_template_conthead_text_tl"
|
||||
\DefTblrTemplate{conthead-text}{normal}{}
|
||||
\DefTblrTemplate{contfoot-text}{normal}{}
|
||||
\SetTblrTemplate{conthead-text}{normal}
|
||||
\SetTblrTemplate{contfoot-text}{normal}
|
||||
% (b) 模板实例
|
||||
\SetTblrTemplate{caption-tag}{empty}
|
||||
\SetTblrTemplate{caption-sep}{empty}
|
||||
\SetTblrTemplate{caption-text}{empty}
|
||||
\SetTblrTemplate{caption}{empty}
|
||||
\SetTblrTemplate{conthead}{empty}
|
||||
\SetTblrTemplate{contfoot}{empty}
|
||||
```
|
||||
|
||||
只做 (b) 时第 5 页仍会出现「表0:」与「(Continued)」,因为模板实例里调的是
|
||||
`\UseTblrTemplate{...}{default}`,会回退到 `normal` 内容。
|
||||
|
||||
### 6. `\linespread` 是乘在基准字号上的
|
||||
|
||||
ctex 默认 `\linespread ≈ 1.3`,会把 `\fontsize{12}{18}` 的行距放大到 23.4pt。
|
||||
|
||||
给字号设行距时**必须**先归 1:
|
||||
|
||||
```latex
|
||||
\newcommand{\ccfont}[2]{\linespread{1}\relax\fontsize{#1}{#2}\selectfont}
|
||||
```
|
||||
|
||||
反过来,在已经缩小过字号的上下文里,**不能**用 `\linespread{1.2}` 当"1.2 倍行距"
|
||||
(它乘的是外层的 9pt,不是当前的 10.5pt),要直接钉 `\fontsize{10.5}{12.6}`。
|
||||
|
||||
## 字体降级
|
||||
|
||||
原 docx 用了 4 个字体,其中 3 个是**方正商业字体**,嵌在 docx 里但本机没装:
|
||||
|
||||
| docx 原字体 | 用在哪 | 本包替代 |
|
||||
|---|---|---|
|
||||
| 方正小标宋简体 | 校名、副标题、大标题、教学日历 | 宋体 + 伪粗(`AutoFakeBold=3.2`) |
|
||||
| 方正仿宋_GB2312 | 正文、表 0、签字栏 | 仿宋(`FangSong`) |
|
||||
| 黑体 | 各级标题 | 黑体(`SimHei`) |
|
||||
| 宋体 | 教学日历表 9pt | 宋体(`SimSun`) |
|
||||
|
||||
装过方正字体的话,改 `ouccourse.sty` 第 75~78 行的 `\newCJKfontfamily` 即可,其余不动。
|
||||
|
||||
同时 `\xeCJKsetup{CJKecglue={}}` 关掉了西文与汉字之间的自动空隙 —— 原 docx 没有这种空隙,
|
||||
不关会出现「×× 学部×× 学院」这种多出来的空格。
|
||||
|
||||
## 与 docx 的已知差异
|
||||
|
||||
| 项目 | docx | 本模板 | 原因 |
|
||||
|---|---|---|---|
|
||||
| 纸张 | 210.08 × 297.04 | 210 × 297 | 标准 A4,肉眼不可辨 |
|
||||
| 表格是否跨页 | 表 1 跨第 4/5 页 | 同 | 表高 334mm > 版心 267mm |
|
||||
| 跨页处表头 | 不重复(无 `tblHeader`) | 不重复 | 一致 |
|
||||
| 行内是否允许断开 | 允许(无 `cantSplit`) | 允许 | 一致 |
|
||||
| 表 0 每行高 | 8.01 | 8.01 | 一致 |
|
||||
| 表 1 表宽 | 165.54 | 165.36(−0.18) | 竖线宽度舍入 |
|
||||
| 字体 | 方正小标宋/仿宋 | 宋体加粗/仿宋 | 商业字体未安装 |
|
||||
| 修订标记 | 46 处 `w:ins` | 不保留 | 已接受全部插入修订 |
|
||||
| 46 处 `w:ins` 中的红字 | `color=C00000` | 黑色 | 那是修订高亮,非正式版式 |
|
||||
|
||||
## 校验方法
|
||||
|
||||
不靠肉眼,靠量。
|
||||
|
||||
```bash
|
||||
pdftocairo -svg -f 4 -l 4 课程执行大纲.pdf /tmp/p4.svg # 矢量线条
|
||||
pdftotext -bbox 课程执行大纲.pdf /tmp/bbox.html # 字坐标
|
||||
```
|
||||
|
||||
或用 `pymupdf` 直接读(推荐,能同时拿到线段与 span 的 bbox):
|
||||
|
||||
```python
|
||||
import pymupdf
|
||||
d = pymupdf.open('课程执行大纲.pdf')
|
||||
for dr in d[3].get_drawings(): # 表格横竖线
|
||||
for it in dr['items']:
|
||||
if it[0] == 'l':
|
||||
print(it[1], it[2]) # 两端点,单位 pt
|
||||
```
|
||||
|
||||
**注意**:同一条竖线会被重复计入多次(每个单元格一段),做列宽计算前必须
|
||||
`sorted(set(round(x,2) ...))` 去重,否则 `xs[1]-xs[0]` 算出来是 0。
|
||||
|
||||
### 验收结果(实测,26/26 项达标)
|
||||
|
||||
```
|
||||
表 0 宽 156.753 目标 156.930 差 −0.177
|
||||
左 27.608 目标 27.520
|
||||
高 40.040 目标 40.050
|
||||
列 131.830 / 24.924 目标 131.921 / 25.012
|
||||
表 1 宽 165.358 目标 165.540 差 −0.182
|
||||
左 22.320 目标 22.270
|
||||
列 14.894 / 19.971 / 33.076 / 14.965 / 49.975 / 32.477
|
||||
目标 14.922 / 20.002 / 33.108 / 14.993 / 50.006 / 32.508
|
||||
R0 16.334(目标 16.170) R14 32.385(目标 32.190)
|
||||
R15 56.339(atLeast 下限 18.930,被 12 段内容撑高)
|
||||
页数 5(与原 docx 一致)
|
||||
编译 零错误、零 Overfull、零 Underfull
|
||||
各页最低点均 ≤ 292.06mm 版心下沿,无越界
|
||||
```
|
||||
@@ -0,0 +1,458 @@
|
||||
%======================================================================
|
||||
% ouccourse.sty —— 中国海洋大学 本科课程教学执行大纲、教学日历
|
||||
%
|
||||
% 由学校下发的 .docx 复刻而来。版式尺寸全部从原文件的 OOXML 量出,
|
||||
% 换算过程逐条写在对应位置。
|
||||
%
|
||||
% ⚠️ 编译: xelatex 课程执行大纲.tex (单次即可,无交叉引用)
|
||||
% 需要 ctex + geometry + fontspec + xeCJK + tabularray
|
||||
% 实测 TeX Live 2022 / tabularray 2022A
|
||||
%======================================================================
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesPackage{ouccourse}[2026/10/26 v1.0 OUC course syllabus form]
|
||||
|
||||
\RequirePackage{geometry}
|
||||
\RequirePackage{fontspec}
|
||||
\RequirePackage{xeCJK}
|
||||
\RequirePackage{tabularray}
|
||||
\RequirePackage{enumitem}
|
||||
\RequirePackage{xcolor}
|
||||
|
||||
\ExplSyntaxOn
|
||||
\cs_set_eq:NN \ccurlength \dim_use:N
|
||||
\ExplSyntaxOff
|
||||
|
||||
%======================================================================
|
||||
% 1. 页面
|
||||
%
|
||||
% 原 docx sectPr:
|
||||
% pgSz 11910 x 16840 twips → 210.08 x 297.04 mm
|
||||
% pgMar top 1420 right 1300 bottom 280 left 1560
|
||||
% header 720 footer 720
|
||||
%
|
||||
% ⚠️ 注意两件事:
|
||||
% (a) WPS 存的 A4 是 11910x16840,比标准 A4 的 11906x16838 各多 4/2 twips。
|
||||
% 差异 0.07/0.04 mm,肉眼不可辨,本包直接用标准 A4。
|
||||
% (b) 下边距只有 4.94 mm,明显是原文件为“塞进 5 页”压出来的。
|
||||
% 照抄会让最后一行几乎贴到纸边,故此处保留原值(复刻优先),
|
||||
% 并在 README 里注明这一处的不合理。
|
||||
%======================================================================
|
||||
\geometry{
|
||||
paperwidth = 210mm,
|
||||
paperheight = 297mm,
|
||||
left = 27.52mm, % 1560 twips
|
||||
right = 22.93mm, % 1300 twips
|
||||
top = 25.05mm, % 1420 twips
|
||||
bottom = 4.94mm, % 280 twips ← 原文件如此,见上注
|
||||
headheight = 0pt,
|
||||
headsep = 0pt,
|
||||
footskip = 12.70mm, % 720 twips
|
||||
}
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{0pt}
|
||||
\pagestyle{empty} % 原 docx 无页眉页脚、无页码
|
||||
|
||||
%======================================================================
|
||||
% 2. 字体
|
||||
%
|
||||
% 原 docx 用到 4 个字体,其中 3 个是方正商业字体,本机【没有】:
|
||||
% 方正小标宋简体 标题(嵌在 docx 里,系统未安装)
|
||||
% 方正仿宋_GB2312 正文(同上)
|
||||
% 黑体 各级标题
|
||||
% 宋体 教学日历表正文、9pt
|
||||
%
|
||||
% ⇒ 降级方案(视觉上最接近的替代):
|
||||
% 方正小标宋简体 → 宋体加粗 (小标宋本身就是宋体的标题变体)
|
||||
% 方正仿宋_GB2312 → 仿宋 (同一字体族,GB2312 版)
|
||||
% 黑体 → SimHei
|
||||
% 宋体 → SimSun
|
||||
% 若你的机器装了方正字体,把下面几个 \newCJKfontfamily 的名字改掉即可,
|
||||
% 其余代码不用动。README 里有说明。
|
||||
%======================================================================
|
||||
\setmainfont{Times New Roman}
|
||||
\setCJKmainfont{SimSun}[AutoFakeBold=2.5]
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% ⚠️ xeCJK 默认会在[汉字 ↔ 西文/数字]之间自动插一段空白(CJKecglue)。
|
||||
% 原 docx 里没有这种空白,例如「××学部××学院」「2026 学年」「56/3.0」
|
||||
% 在 Word 里是紧挨着的。不关掉会出现「×× 学部×× 学院」这种多出来的空隙。
|
||||
% 此处把 CJKecglue 设为 0,并关掉自动间距(xeCJK 的 punct/ec 两类)。
|
||||
%----------------------------------------------------------------------
|
||||
\xeCJKsetup{
|
||||
CJKecglue = {},
|
||||
xeCJKactive = true,
|
||||
}
|
||||
\setlength{\parindent}{0pt}
|
||||
|
||||
\newCJKfontfamily\ccsong{SimSun}[AutoFakeBold=2.5] % 宋体(可伪粗)
|
||||
\newCJKfontfamily\cchei{SimHei} % 黑体
|
||||
\newCJKfontfamily\ccfang{FangSong}[AutoFakeBold=2.5] % 仿宋
|
||||
\newCJKfontfamily\ccbiaosong{SimSun}[AutoFakeBold=3.2] % 小标宋的替代(加粗宋体)
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% ⚠️⚠️⚠️ ctex 默认 \linespread ≈ 1.3,会把 \fontsize{12}{X} 的行距放大 30%。
|
||||
% 本例所有行距都来自 docx 的精确值(460 twips = exact 23pt 等),
|
||||
% 被放大就全错,故每次设字号前先把 \linespread 归 1。
|
||||
%----------------------------------------------------------------------
|
||||
\newcommand{\ccfont}[2]{%
|
||||
\linespread{1}\relax\fontsize{#1}{#2}\selectfont}
|
||||
|
||||
% 常用字号(都是 docx 里实际出现的)
|
||||
% 15pt = sz30 14pt = sz28 12pt = sz24 11pt = sz22 10.5pt = sz21 9pt = sz18
|
||||
\newcommand{\ccszxv}{\ccfont{15}{23}} % 15pt(首页校名)
|
||||
\newcommand{\ccszxiii}{\ccfont{14}{21}} % 14pt
|
||||
\newcommand{\ccszxii}{\ccfont{12}{18}} % 12pt 正文
|
||||
\newcommand{\ccszxi}{\ccfont{11}{16.5}} % 11pt
|
||||
\newcommand{\ccszxxi}{\ccfont{10.5}{15.75}}% 10.5pt
|
||||
\newcommand{\ccszix}{\ccfont{9}{13.5}} % 9pt 教学日历表
|
||||
|
||||
\AtBeginDocument{\ccszxii\ccsong}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% 3. 首页字段区
|
||||
%
|
||||
% 原 docx P3~P8 共用同一个 pPr:
|
||||
% <w:tabs><w:tab w:val="left" w:pos="7020"/></w:tabs>
|
||||
% <w:spacing w:line="460" w:lineRule="exact"/>
|
||||
% <w:ind w:left="-565" w:leftChars="-257" w:firstLine="220" w:firstLineChars="100"/>
|
||||
%
|
||||
% → 行距 460 twips exact = 23 pt
|
||||
% → 左缩进 −565 twips = −9.97 mm(负缩进,把整行往左拉出版心)
|
||||
% → 首行再 +220 twips = +3.88 mm
|
||||
% → 制表位 7020 twips = 123.81 mm
|
||||
%
|
||||
% ⚠️⚠️ 实测 docx 这几行是【溢出】的,不能照抄:
|
||||
% 制表位绝对位置 = 27.52(左边距)+ 123.81 = 141.33 mm,
|
||||
% 而右侧内容【开课时间】 2026 学年 秋 季学期 宽 58.20 mm,
|
||||
% ⇒ 行尾落在 199.53 mm,已越过版心右边界 187.07 mm 达 12.5 mm,
|
||||
% 钻进了 22.93 mm 的右边距里。原文件靠负缩进硬塞,视觉上不易察觉。
|
||||
%
|
||||
% ⇒ 本包改为干净的两栏等宽布局,两栏都对齐、整体不溢出:
|
||||
% 左栏宽 100 mm(容纳【课程名】+值,实测最长 48.7 mm)
|
||||
% 右栏从 100 mm 起,实测最长【开课时间】58.2 mm,合计 158.2 mm
|
||||
% 版心 159.55 mm,留 1.35 mm 余量
|
||||
% 各行左标签起点一致、右标签起点也一致,比原文件更整齐。
|
||||
%----------------------------------------------------------------------
|
||||
\newlength{\cccolw}
|
||||
\setlength{\cccolw}{100mm}
|
||||
|
||||
% 下划线:把「值 + 尾部空格」一起划上,复现原文件里可填写的空档
|
||||
\newcommand{\ccuv}[1]{\underline{#1}}
|
||||
|
||||
% \ccfieldrow{左标签}{左值}{右标签}{右值}
|
||||
% 标签不加下划线,值加;原文件里值前后带空格,用以撑出填空长度
|
||||
\newcommand{\ccfieldrow}[4]{%
|
||||
\par\noindent
|
||||
\makebox[\cccolw][l]{#1\ccuv{#2}}%
|
||||
#3\ccuv{#4}%
|
||||
\par}
|
||||
|
||||
% 单栏字段(任课教师、面向专业两行只占左半)
|
||||
\newcommand{\ccfieldone}[2]{%
|
||||
\par\noindent
|
||||
#1\ccuv{#2}%
|
||||
\par}
|
||||
|
||||
%======================================================================
|
||||
% 4. 标题
|
||||
%
|
||||
% P0 校名+院名 小标宋 15pt / 14pt,居中
|
||||
% P1 副标题 小标宋 14pt,居中
|
||||
% P10 大标题 小标宋 15pt,居中,段后 240 twips = 12pt
|
||||
% P11/P26/P39/P43/P46 一~五级标题:黑体 14pt
|
||||
% —— 但 P46「五、学习要求…」的 run 是 黑体 14pt,
|
||||
% 段落 rPr 却写 12pt + 下划线 + 红色(C00000)。这是原文件的
|
||||
% 遗留脏属性,实际渲染按 run 的 14pt 黑体走,故本包按 14pt 黑体。
|
||||
%======================================================================
|
||||
\newcommand{\ccschool}{%
|
||||
\par\begingroup\centering
|
||||
{\ccbiaosong\ccszxv 中国海洋大学\par}%
|
||||
{\ccbiaosong\ccszxiii ××学部××学院\par}%
|
||||
\endgroup}
|
||||
|
||||
\newcommand{\ccsubtitle}{%
|
||||
\par\begingroup\centering
|
||||
{\ccbiaosong\ccszxiii 本科课程教学执行大纲、教学日历\par}%
|
||||
\endgroup}
|
||||
|
||||
\newcommand{\ccmaintitle}[1]{%
|
||||
\par\begingroup\centering
|
||||
\vspace*{0pt}%
|
||||
{\ccbiaosong\ccszxv #1\par}%
|
||||
\vspace*{12pt}% % spacing after=240 twips
|
||||
\endgroup}
|
||||
|
||||
% 一~五级标题:黑体 14pt,段前 120 twips = 6pt
|
||||
% \ccsec{一、课程基本信息}
|
||||
\newcommand{\ccsec}[1]{%
|
||||
\par\begingroup
|
||||
\vspace*{6pt}% % spacing before=120 twips
|
||||
\noindent{\cchei\ccszxiii #1\par}%
|
||||
\endgroup}
|
||||
|
||||
% 不带段前的标题(四、教材及参考资料 用 firstLine 708 缩进)
|
||||
\newcommand{\ccsecind}[1]{%
|
||||
\par\begingroup
|
||||
\vspace*{6pt}%
|
||||
\noindent\hspace*{12.50mm}{\cchei\ccszxiii #1\par}% 708 twips = 12.50mm
|
||||
\endgroup}
|
||||
|
||||
%======================================================================
|
||||
% 5. 正文段落
|
||||
%
|
||||
% 正文(P12 起)统一:
|
||||
% <w:ind w:firstLine="480" w:firstLineChars="200"/> 首行缩进 2 字
|
||||
% 字体 方正仿宋_GB2312 12pt
|
||||
% 无 spacing 设定 ⇒ 单倍行距
|
||||
%
|
||||
% 480 twips = 8.47mm,正好是 12pt 汉字的两个字宽(12pt×2 = 24pt = 8.47mm)
|
||||
% ⇒ 用 2em 更稳,与字号自动匹配。
|
||||
%======================================================================
|
||||
\newcommand{\ccp}[1]{\par\noindent\hspace*{2em}#1\par}
|
||||
|
||||
% 无缩进段(用于表后、空行等)
|
||||
\newcommand{\ccpz}[1]{\par\noindent #1\par}
|
||||
|
||||
% 空行:\ccblank{n} 产生 n 个 12pt 空行
|
||||
\newcommand{\ccblank}[1]{%
|
||||
\par\begingroup\ccszxii
|
||||
\@tempcnta=0
|
||||
\loop\ifnum\@tempcnta<#1\relax \mbox{}\par\advance\@tempcnta by 1 \repeat
|
||||
\endgroup}
|
||||
|
||||
%======================================================================
|
||||
% 6. 表 0 —— 成绩综合评分体系
|
||||
%
|
||||
% docx:
|
||||
% tblW 0 auto(实际由 gridCol 撑开) gridCol = 7479 + 1418 = 8897 twips
|
||||
% tblLayout fixed jc center
|
||||
% tblBorders 六边 sz=4 → 0.5pt
|
||||
% tblCellMar left/right 108 twips = 1.905mm,top/bottom 0
|
||||
% 每行 trHeight 454 exact = 22.70pt = 8.01mm
|
||||
% trPr 里还有 <w:jc w:val="center"/>(行内容居中)
|
||||
% 字号 12pt 方正仿宋
|
||||
%
|
||||
% 8897 twips = 156.93 mm,版心 159.63 mm ⇒ 不超版心,可用 colsep 还原内边距
|
||||
%
|
||||
% ⚠️ 行高 454 twips 是 exact(固定),换算 22.70pt = 8.01mm。
|
||||
% tabularray 的 ht= 是最小值语义,与 exact 略有差别;本表内容都是
|
||||
% 单行文字,实际高度就等于 ht,故等价。
|
||||
%======================================================================
|
||||
\newcommand{\ccscoretblw}{156.93mm}
|
||||
\newcommand{\ccscorecA}{131.921mm} % 7479 twips
|
||||
\newcommand{\ccscorecB}{25.012mm} % 1418 twips
|
||||
\newcommand{\ccborder}{0.5pt} % sz=4 → 0.5pt
|
||||
\newcommand{\cccellsm}{1.905mm} % tblCellMar 108 twips
|
||||
|
||||
% 列宽:content 宽 = gridCol − 2·colsep − 线宽分摊
|
||||
%
|
||||
% 与表 1 同一个坑:tabularray 的 wd= 是【内容宽】,
|
||||
% 每条 vline 自身还占 0.5pt = 0.17639mm。2 列 3 条线,每列承担 1.5 条 ⇒ 0.2646mm。
|
||||
% ⇒ wd = gridCol − 3.81 − 0.2646 = gridCol − 4.0746mm
|
||||
% A: 131.921 − 4.0746 = 127.846
|
||||
% B: 25.012 − 4.0746 = 20.937
|
||||
% Σ(wd + 2·colsep) + 3×0.176 = 148.783 + 7.62 + 0.529 = 156.932 ≈ 156.93 ✔
|
||||
\newcommand{\ccscoreAwd}{127.846mm}
|
||||
\newcommand{\ccscoreBwd}{20.937mm}
|
||||
|
||||
% ⚠️ 行高:docx 是 trHeight 454 exact = 22.70pt = 8.01mm。
|
||||
% tabularray 的 ht= 含 hline 线宽预算,实测给 8.01mm 画出来是 8.19mm
|
||||
% (每行多 0.18 = 一条 0.5pt 横线)。故减掉 0.176mm。
|
||||
\newcommand{\ccscorerowht}{7.834mm}
|
||||
|
||||
\newenvironment{ccscoretable}{%
|
||||
\par\begingroup\ccszxii\ccfang
|
||||
\begin{tblr}[label=none]{
|
||||
colspec={Q[c,m,wd=127.846mm] Q[c,m,wd=20.937mm]},
|
||||
colsep=1.905mm, rowsep=0pt, stretch=0,
|
||||
hline{1-Z}={\ccborder}, vline{1-Z}={\ccborder},
|
||||
row{1-Z}={ht=7.834mm},
|
||||
}%
|
||||
}{%
|
||||
\end{tblr}\par\endgroup}
|
||||
|
||||
%======================================================================
|
||||
% 7. 表 1 —— 教学日历
|
||||
%
|
||||
% docx:
|
||||
% tblW 9385 dxa gridCol = 846,1134,1877,850,2835,1843 = 9385 twips
|
||||
% tblLayout autofit jc center
|
||||
% tblBorders sz=4 0.5pt
|
||||
% tblCellMar 108 twips 1.905mm
|
||||
% R0 trHeight 917 atLeast = 16.17mm,表头 11pt 粗
|
||||
% R1~R13 无 trHeight,行高由内容决定,数据 9pt 宋体
|
||||
% R14 trHeight 1825 atLeast = 32.19mm(任课老师签字)
|
||||
% R15 trHeight 1073 atLeast = 18.93mm(审核意见)
|
||||
%
|
||||
% ⚠️⚠️ 9385 twips = 165.54 mm,而版心只有 159.63 mm —— 超宽 5.91 mm!
|
||||
% docx 里它靠 jc=center 硬居中、两边各溢约 3 mm,压进左右页边距。
|
||||
% Word 允许表格比版心宽,照原样复刻,不做缩放(缩放会让长文字提前折行)。
|
||||
% 本包做法:列宽照抄 gridCol,用 \hspace* 把表左边界推到实际的 27.4mm。
|
||||
%
|
||||
% ⚠️⚠️ 这张表【总高 334 mm】,版心只有 267 mm —— 必须跨页!
|
||||
% 这就是原 docx 排成 5 页的原因。表内 16 行,R1~R13 无 trHeight,
|
||||
% 行高由内容(9pt 宋体多行)决定,实测各段行高见 README。
|
||||
% docx 没有 tblHeader(跨页不重复表头)、没有 cantSplit(允许行内断开),
|
||||
% 故本包用 longtblr,且清空表头/表尾模板,行为与 Word 一致。
|
||||
%======================================================================
|
||||
\newcommand{\cctblw}{165.54mm} % 9385 twips,与 docx 完全一致
|
||||
|
||||
% 原始 gridCol(mm)= twips / 1440 × 25.4
|
||||
\newcommand{\cccA}{14.922mm} % 846
|
||||
\newcommand{\cccB}{20.002mm} % 1134
|
||||
\newcommand{\cccC}{33.108mm} % 1877
|
||||
\newcommand{\cccD}{14.993mm} % 850
|
||||
\newcommand{\cccE}{50.006mm} % 2835
|
||||
\newcommand{\cccF}{32.508mm} % 1843
|
||||
|
||||
% content 宽 = gridCol − 2·colsep − 线宽分摊
|
||||
%
|
||||
% ⚠️ tabularray 的 wd= 是【内容宽】,但每条 vline 自身还占 0.5pt = 0.17639mm。
|
||||
% 6 列共 7 条竖线,若全摊到 6 列上,每列承担 7/6 条 ⇒ 0.2058mm。
|
||||
% ⇒ wd = gridCol − 3.81 − 0.2058 = gridCol − 4.0158mm
|
||||
%
|
||||
% 实测校验(改前 wd 按 gridCol−3.856 给,结果表宽 166.493 差 +0.95):
|
||||
% 每列宽 = wd + 2·colsep + 0.176 = 11.066+3.81+0.176 = 15.052 ✔ 与量到的完全一致
|
||||
% 改后 Σ(wd+2·colsep) + 7×0.176 = 141.443+22.86+1.232 = 165.535 ≈ 165.54 ✔
|
||||
\newcommand{\ccAwd}{10.906mm} % 14.922 − 4.0158
|
||||
\newcommand{\ccBwd}{15.986mm} % 20.002 − 4.0158
|
||||
\newcommand{\ccCwd}{29.092mm} % 33.108 − 4.0158
|
||||
\newcommand{\ccDwd}{10.977mm} % 14.993 − 4.0158
|
||||
\newcommand{\ccEwd}{45.990mm} % 50.006 − 4.0158
|
||||
\newcommand{\ccFwd}{28.492mm} % 32.508 − 4.0158
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% 单元格包装
|
||||
%
|
||||
% ⚠️ 合并格 {c} 是不折行的 LR 模式,长文字会撑宽列 —— 必须包定宽 parbox。
|
||||
% 合并格内容可用宽 = Σ所跨各列 wd + 2·colsep·(n−1)
|
||||
% R14/R15 是 g=6 的合并格:
|
||||
% Σ wd = 10.906+15.986+29.092+10.977+45.990+28.492 = 141.443
|
||||
% + 2·1.905·5 = 19.050
|
||||
% = 160.493 mm
|
||||
%----------------------------------------------------------------------
|
||||
\newcommand{\ccspanall}{160.493mm} % R14/R15 合并格可用宽
|
||||
|
||||
% 表内单格(9pt 宋体,按 docx 原样:C0/C1/C3 居中,C2/C4/C5 左对齐)
|
||||
\newcommand{\ccl}[1]{\parbox{\linewidth}{\raggedright #1}}
|
||||
\newcommand{\ccc}[1]{\parbox{\linewidth}{\centering #1}}
|
||||
|
||||
% 表宽 165.54mm > 版心 159.63mm,docx 里 jc=center 让它居中,
|
||||
% 左边界落在 (210 − 165.54)/2 = 22.23mm,比版心左 27.52mm 还靠左 5.29mm。
|
||||
%
|
||||
% ⚠️ longtblr 生成的是一整块 \halign 盒子,【\hspace* 对它无效】(会被吞掉)。
|
||||
% 正确做法是 \leftskip:它把段落每一行的起点整体左移。
|
||||
% \hsize = 165.54mm → 让表内得下,不报 Overfull
|
||||
% \leftskip = −5.29mm → 整块左移,落到 22.23mm
|
||||
\newlength{\cctblshift}
|
||||
\setlength{\cctblshift}{5.29mm}
|
||||
|
||||
% ⚠️ 不能用 \NewTblrEnviron + \SetTblrInner:预展开会报
|
||||
% "Unexpandable command \ccfang inside column type"。
|
||||
% 直接写 \begin{longtblr} 环境最稳。
|
||||
%
|
||||
% ⚠️ longtblr 默认会在跨页处印 "( Continued )"、印 "表N:" 题注、
|
||||
% 页尾印 "Continued on next page"。而原 docx 没有 tblHeader、
|
||||
% 没有题注、没有任何续页提示。
|
||||
%
|
||||
% 清干净需要动【两组】东西,只清一组不够:
|
||||
% (a) 内容模板 *-text:contfoot-text / conthead-text / caption-tag / caption-sep
|
||||
% (模板实例里调的是 \UseTblrTemplate{...}{default},
|
||||
% 只把 conthead 设成 empty 而留着 conthead-text,仍会印出 "( Continued )")
|
||||
% (b) 模板实例:caption / conthead / contfoot
|
||||
% 实测只做 (b) 时第 5 页仍会出现 "表0:" 与 "(Continued)"。
|
||||
%
|
||||
% ⚠️⚠️ conthead-text / contfoot-text 不能设成 empty!那会报
|
||||
% "! Use of \??? doesn't match its definition.
|
||||
% LaTeX3 Error: Erroneous variable \l__tblr_template_conthead_text_tl"
|
||||
% (因为 normal 实例会 \tl_use 这个变量,empty 变体里没定义它)。
|
||||
% 正确做法:用 \DefTblrTemplate 重新定义成「内容为空」的 normal 模板。
|
||||
\DefTblrTemplate{conthead-text}{normal}{}
|
||||
\DefTblrTemplate{contfoot-text}{normal}{}
|
||||
\SetTblrTemplate{conthead-text}{normal}
|
||||
\SetTblrTemplate{contfoot-text}{normal}
|
||||
\SetTblrTemplate{caption-tag}{empty}
|
||||
\SetTblrTemplate{caption-sep}{empty}
|
||||
\SetTblrTemplate{caption-text}{empty}
|
||||
\SetTblrTemplate{caption}{empty}
|
||||
\SetTblrTemplate{conthead}{empty}
|
||||
\SetTblrTemplate{contfoot}{empty}
|
||||
|
||||
\newenvironment{cctable}{%
|
||||
\par\begingroup
|
||||
\hsize=\cctblw \linewidth=\cctblw
|
||||
\leftskip=-\cctblshift \rightskip=0pt \parindent=0pt
|
||||
\begin{longtblr}[
|
||||
label=none,
|
||||
% ⚠️⚠️ presep/postsep/headsep/footsep 是【outer】键,只能写在这个方括号里。
|
||||
% 写进下面的花括号(inner spec)里不会生效,反而会把 "0pt" 当表内容
|
||||
% 印在表格第一行 —— 实测表头上出现了一串 "0pt0pt0pt0pt" 垃圾字。
|
||||
presep=0pt, postsep=0pt, headsep=0pt, footsep=0pt,
|
||||
]{
|
||||
colspec={
|
||||
Q[c,m,wd=10.906mm] Q[c,m,wd=15.986mm] Q[l,m,wd=29.092mm]
|
||||
Q[c,m,wd=10.977mm] Q[l,m,wd=45.990mm] Q[l,m,wd=28.492mm]
|
||||
},
|
||||
colsep=1.905mm, rowsep=0pt, stretch=0,
|
||||
hline{1-Z}={\ccborder}, vline{1-Z}={\ccborder},
|
||||
% ⚠️ 表级默认字号必须写 cells={font=...},不能只写 font=。
|
||||
% tabularray 的 inner 已知键里【没有 font】,单独写 font=\ccszix
|
||||
% 会被当成未知键静默忽略(不会报错!),表内就退回到文档的 12pt。
|
||||
% docx 里表 1 绝大多数格是 sz18 = 9pt。
|
||||
cells={font=\ccszix},
|
||||
% 下列三行照 docx 的 trHeight atLeast 复刻:
|
||||
% R0 917 twips = 16.17mm(表头)
|
||||
% R14 1825 twips = 32.19mm(任课老师签字)
|
||||
% R15 1073 twips = 18.93mm(审核意见)
|
||||
row{1}={ht=16.17mm},
|
||||
row{15}={ht=32.19mm},
|
||||
row{16}={ht=18.93mm},
|
||||
}%
|
||||
}{%
|
||||
\end{longtblr}\par\endgroup}
|
||||
|
||||
%======================================================================
|
||||
% 8. 签字栏(第一页末尾)
|
||||
%
|
||||
% docx P53~P62:全部 14pt 方正仿宋,段前 120 twips = 6pt
|
||||
% P55 任课老师(签字):
|
||||
% P57 教学院长审核意见:
|
||||
% P60 教学院长签字:
|
||||
% P62 「年 月 日」首行缩进 708 twips = 12.50mm,前面 41 个半角空格
|
||||
%
|
||||
% ⚠️ 原文件这里不是表格,是纯段落 + 空格凑出来的空白。
|
||||
% 本包改为等价的 \vspace 与右对齐,结构更干净、位置一致。
|
||||
%======================================================================
|
||||
\newcommand{\ccsignlab}[1]{%
|
||||
\par\begingroup\ccfang\ccszxiii
|
||||
\vspace*{6pt}\noindent #1\par\endgroup}
|
||||
|
||||
\newcommand{\ccdateblank}{%
|
||||
\par\begingroup\ccfang\ccszxiii
|
||||
\vspace*{6pt}%
|
||||
\noindent\hspace*{12.50mm}%
|
||||
\makebox[90mm][r]{年\hspace{2em}月\hspace{2em}日}%
|
||||
\par\endgroup}
|
||||
|
||||
%======================================================================
|
||||
% 9. 教学日历页标题
|
||||
%
|
||||
% docx P64:小标宋 14pt 加粗,居中,行距 360 auto(= 1.5 倍)
|
||||
%======================================================================
|
||||
\newcommand{\ccdaytitle}[1]{%
|
||||
\par\begingroup\centering
|
||||
{\ccbiaosong\ccszxiii #1\par}%
|
||||
\endgroup}
|
||||
|
||||
\newcommand{\ccnewpage}{\par\newpage}
|
||||
|
||||
%======================================================================
|
||||
% 10. 表尾「合计」行后的说明性小字(10.5pt)
|
||||
%======================================================================
|
||||
\newcommand{\ccsmall}{\ccszxxi}
|
||||
|
||||
\RequirePackage{ifthen}
|
||||
\makeatletter
|
||||
\providecommand{\@tempcnta}{}
|
||||
\makeatother
|
||||
\endinput
|
||||
Binary file not shown.
@@ -0,0 +1,367 @@
|
||||
%======================================================================
|
||||
% 中国海洋大学 本科课程教学执行大纲、教学日历
|
||||
%
|
||||
% 编译: xelatex 课程执行大纲.tex
|
||||
%
|
||||
% ⚠️⚠️ 本文件中的课程是一门【虚构课程】,仅用于演示模板用法。
|
||||
% 课程名、课程代码、开课号、任课教师、教材、周次安排、思政案例
|
||||
% 全部为编造的示例数据,不对应任何真实课程或真实人员。
|
||||
% 实际使用时只改下面【第 1 节】和表体内容。
|
||||
%
|
||||
% 版式来源:授课/数字逻辑/2025/归档/2025秋数字逻辑课程执行大纲.docx
|
||||
% 所有尺寸已在 ouccourse.sty 内注明 twips→mm 换算,要改版式请改 sty。
|
||||
%======================================================================
|
||||
\documentclass[UTF8,fontset=none]{ctexart}
|
||||
\usepackage{ouccourse}
|
||||
|
||||
%======================================================================
|
||||
% 1. 首页字段(填表时只改这一段)
|
||||
%======================================================================
|
||||
\newcommand{\cfcourse}{信号与系统基础} % 课程名
|
||||
\newcommand{\cfyear}{2026} % 开课年份
|
||||
\newcommand{\cfseason}{秋} % 季
|
||||
\newcommand{\cfmode}{考试} % 考核方式
|
||||
\newcommand{\cfcode}{081203304517} % 课程代码
|
||||
\newcommand{\cfhour}{56} % 总课时
|
||||
\newcommand{\cfcredit}{3.0} % 学分
|
||||
\newcommand{\cfprac}{18} % 实践学时
|
||||
\newcommand{\cfteacher}{×××} % 任课教师
|
||||
\newcommand{\cfteachno}{99663311} % 开课号
|
||||
\newcommand{\cfmajor}{电子信息工程} % 面向专业
|
||||
\newcommand{\cfattr}{专业核心必修课} % 课程属性
|
||||
|
||||
%======================================================================
|
||||
% 2. 正文
|
||||
%======================================================================
|
||||
\begin{document}
|
||||
|
||||
%---- 首页抬头 --------------------------------------------------------
|
||||
\ccschool
|
||||
\ccsubtitle
|
||||
|
||||
\vspace*{8pt}
|
||||
|
||||
\ccfieldrow{【课程名】}{\cfcourse}{【开课时间】 }{\cfyear\ 学年 \cfseason\ 季学期}
|
||||
\ccfieldrow{【考核方式】}{\cfmode}{【课程代码】}{\cfcode}
|
||||
\ccfieldrow{【总课时/学分】}{\cfhour/\cfcredit}{【实践学时】}{\cfprac}
|
||||
\ccfieldone{【任课教师/开课号】}{\cfteacher/\cfteachno}
|
||||
\ccfieldone{【面向专业/课程属性】}{\cfmajor/\cfattr}
|
||||
|
||||
\vspace*{6pt}
|
||||
|
||||
%---- 大标题 ----------------------------------------------------------
|
||||
\ccmaintitle{本科课程执行大纲}
|
||||
|
||||
%======================================================================
|
||||
% 一、课程基本信息
|
||||
%======================================================================
|
||||
\ccsec{一、课程基本信息}
|
||||
|
||||
\ccp{1.课程描述(中英文):}
|
||||
|
||||
\ccp{本课程是电子信息类专业的核心基础课,主要讲授确定性信号通过线性时不变系统时
|
||||
的基本规律与分析方法。课程以连续时间与离散时间两条主线并行展开,涵盖信号的时域
|
||||
描述、傅里叶变换、拉普拉斯变换、$z$ 变换以及系统的时域与变换域分析等内容。通过
|
||||
本课程的学习,学生应能建立“信号—系统—响应”的整体观念,掌握将复杂工程问题抽象
|
||||
为数学模型并求解的基本能力,为后续的数字信号处理、通信原理、自动控制等课程奠定
|
||||
基础。}
|
||||
|
||||
\ccp{This course is a core foundation subject for electronic information majors,
|
||||
covering the fundamental laws and analytical methods of deterministic signals
|
||||
passing through linear time-invariant systems. Two parallel threads, continuous
|
||||
time and discrete time, are developed throughout the course, including time-domain
|
||||
description of signals, the Fourier transform, the Laplace transform, the $z$
|
||||
transform, and both time-domain and transform-domain analysis of systems. Upon
|
||||
completion, students are expected to establish a holistic view of
|
||||
signal--system--response, to grasp the ability of abstracting complex engineering
|
||||
problems into mathematical models and solving them, and to build a solid
|
||||
foundation for subsequent courses such as digital signal processing,
|
||||
communication principles, and automatic control.}
|
||||
|
||||
\ccp{2.设计思路:}
|
||||
|
||||
\ccp{本课程按“先时域、后变换域,先连续、后离散,先分析、后综合”的顺序编排。
|
||||
第一部分建立信号与系统的基本概念,讲授信号的分类、基本运算与系统的线性时不变
|
||||
性质;第二部分讲授连续时间系统的时域分析与傅里叶分析,重点训练卷积积分与频谱
|
||||
概念;第三部分讲授拉普拉斯变换与复频域分析,引入系统函数与稳定性判据;第四部分
|
||||
平移到离散时间系统,讲授采样定理、$z$ 变换与离散系统的差分方程求解。实验环节
|
||||
与理论同步推进,通过软件仿真验证课堂结论,形成“理论—仿真—实测”的闭环。}
|
||||
|
||||
\ccp{3.课程与其他课程的关系:}
|
||||
|
||||
\ccp{本课程的先修课程为《高等数学》《复变函数与积分变换》《电路分析基础》,
|
||||
后续课程为《数字信号处理》《通信原理》等。}
|
||||
|
||||
\ccp{4.本课程支撑以下毕业要求指标点的达成:}
|
||||
|
||||
\ccp{1)毕业要求2,指标点:能够基于科学原理并采用科学方法对复杂工程问题进行研究,
|
||||
包括设计实验、分析与解释数据、并通过信息综合得到合理有效的结论。}
|
||||
|
||||
\ccp{信号与系统的分析过程本身就是一次完整的“建模—求解—验证”训练。学生需要把
|
||||
一个物理系统抽象成微分方程或差分方程,选择合适的变换域求解,再回到时域解释结果
|
||||
的物理意义。这一过程与工程研究中“设计实验、分析数据、综合结论”的思路完全一致,
|
||||
是毕业要求2在课程层面的具体承载。}
|
||||
|
||||
\ccp{2)毕业要求4,指标点:能够针对复杂工程问题,选择与使用恰当的技术、资源、
|
||||
现代工程工具和信息技术工具,包括对复杂工程问题的预测与模拟,并能够理解其局限性。}
|
||||
|
||||
\ccp{课程实验要求学生使用数值计算工具对连续与离散系统进行仿真,并把仿真结果与
|
||||
解析解逐点比对。通过刻意设置采样率不足、数值积分步长过大等“错误用法”,让学生
|
||||
亲眼看到工具失效的边界,从而理解现代工程工具的适用条件与局限性。}
|
||||
|
||||
\ccp{在频域分析部分,频谱混叠、吉布斯现象等现象都是对“模型与真实之间存在差距”的
|
||||
直观说明,可用于训练学生对计算结果保持审慎态度的工程素养。}
|
||||
|
||||
%======================================================================
|
||||
% 二、学习目标与成果
|
||||
%======================================================================
|
||||
\ccsec{二、学习目标与成果}
|
||||
|
||||
\ccp{通过对该课程的学习,学生将达到如下课程目标:}
|
||||
|
||||
\ccp{1.能够准确判断信号的类型与基本性质,熟练完成信号的平移、反转、尺度变换等
|
||||
基本运算,并能用解析式、波形图、序列三种方式相互转换描述同一信号。}
|
||||
|
||||
\ccp{2.掌握线性时不变系统的判定方法,能够由系统的微分方程或差分方程求出冲激响应
|
||||
与阶跃响应,并用卷积积分(卷积和)求取任意激励下的零状态响应。}
|
||||
|
||||
\ccp{3.掌握傅里叶级数与傅里叶变换的定义、性质与常用变换对,能够对给定信号进行
|
||||
频谱分析,正确解释频谱的物理含义,理解带宽、抽样定理与频谱混叠的关系。}
|
||||
|
||||
\ccp{4.掌握拉普拉斯变换与 $z$ 变换的基本性质,能够由系统函数判断系统的因果性与
|
||||
稳定性,画出零极点图并据此定性分析系统的频率响应特性。}
|
||||
|
||||
\ccp{5.能够综合运用时域与变换域方法分析一个实际的简单系统,写出完整求解过程,
|
||||
对结果的合理性作出判断,并能用仿真手段加以验证。}
|
||||
|
||||
\ccblank{1}
|
||||
|
||||
\ccp{课程思政点设计:}
|
||||
|
||||
\ccp{1.在讲授傅里叶变换时,介绍我国科学家在雷达信号处理、北斗导航信号体制设计
|
||||
方面的工作,说明频域分析这一“数学工具”如何支撑国家重大工程,引导学生认识基础
|
||||
理论的现实价值,增强专业认同感。}
|
||||
|
||||
\ccp{2.通过抽样定理的教学,结合我国在高速模数转换芯片领域的进展与短板,讨论
|
||||
“采样率”这一指标如何制约整机性能,让学生理解关键核心技术自主可控的意义。}
|
||||
|
||||
\ccp{3.在系统稳定性分析中,以反馈放大器的自激振荡为例,引出“系统需要留有余量”
|
||||
这一工程常识,并延伸到个人成长中的自我约束与调节,引导学生建立稳健、可持续的
|
||||
发展观念。}
|
||||
|
||||
%======================================================================
|
||||
% 三、考核方式及评分标准
|
||||
%======================================================================
|
||||
\ccsec{三、考核方式及评分标准}
|
||||
|
||||
\ccp{(一)考核方式\ \ \cfmode\ \ :A.闭卷考试\ B.开卷考试\ C.论文\ D.考查\ E.其他}
|
||||
|
||||
\ccp{(二)成绩综合评分体系:}
|
||||
|
||||
\begin{ccscoretable}
|
||||
成绩综合评分体系 & 比例\% \\
|
||||
1.课下作业、课堂讨论及平常表现 & 24 \\
|
||||
2.实验成绩 & 20 \\
|
||||
3.期末考试成绩 & 56 \\
|
||||
总计 & 100 \\
|
||||
\end{ccscoretable}
|
||||
|
||||
%======================================================================
|
||||
% 四、教材及参考资料
|
||||
%======================================================================
|
||||
\ccsecind{四、教材及参考资料}
|
||||
|
||||
\ccp{1.选用教材《信号与线性系统分析》,作者:×××,出版社:××大学出版社,
|
||||
出版时间:2021年\ 版次:5}
|
||||
|
||||
\ccp{2.主要参考书《信号与系统》,作者:×××,出版社:××工业出版社,
|
||||
出版时间:2019年\ 版次:3}
|
||||
|
||||
%======================================================================
|
||||
% 五、学习要求及学术诚信规定
|
||||
%======================================================================
|
||||
\ccsec{五、学习要求及学术诚信规定}
|
||||
|
||||
\ccp{本课程理论性强、前后章节依赖紧密,一次缺课往往会影响后续多章的理解,
|
||||
所以要求学生:}
|
||||
|
||||
\ccp{1.每次课前预习当次内容,课后当天完成对应习题,不要积压。}
|
||||
|
||||
\ccp{2.重视变换域方法与时域方法之间的联系,遇到问题先想“换一个域看会不会更简单”。}
|
||||
|
||||
\ccp{3.实验前完成仿真脚本的编写与自测,带着问题进实验室,而不是照着步骤抄。}
|
||||
|
||||
\ccp{4.主动查阅课程之外的文献与开源工具文档,了解本领域的最新进展并在讨论课中分享。}
|
||||
|
||||
\ccp{学习成果不能造假,如考试作弊、盗取他人学习成果、一份报告用于不同的课程等,
|
||||
均属造假行为。他人的想法、说法和意见如不注明出处按盗用论处。本课程如发现上述
|
||||
不良行为,将按学校有关规定取消本课程的学习成绩。}
|
||||
|
||||
%---- 签字栏 ----------------------------------------------------------
|
||||
\ccblank{1}
|
||||
|
||||
\ccsignlab{任课老师(签字):}
|
||||
|
||||
\ccblank{1}
|
||||
|
||||
\ccsignlab{教学院长审核意见:}
|
||||
|
||||
\ccblank{2}
|
||||
|
||||
\ccsignlab{教学院长签字:}
|
||||
|
||||
\ccdateblank
|
||||
|
||||
%======================================================================
|
||||
% 教学日历(另起一页)
|
||||
%======================================================================
|
||||
\ccnewpage
|
||||
|
||||
\ccdaytitle{教学日历}
|
||||
|
||||
\vspace*{2pt}
|
||||
|
||||
\begin{cctable}
|
||||
%---- 表头(11pt 粗体,9pt 数据)------------------------------------
|
||||
{\ccfang\ccszxi\bfseries 周次} &
|
||||
{\ccfang\ccszxi\bfseries 内容顺序} &
|
||||
{\ccfang\ccszxi\bfseries 主题} &
|
||||
{\ccfang\ccszxi\bfseries 计划课时} &
|
||||
{\ccfang\ccszxi\bfseries 教学内容及\par 教学方式} &
|
||||
{\ccfang\ccszxi\bfseries 思政点及\par 支撑指标点情况} \\
|
||||
|
||||
%---- 1-2 周 --------------------------------------------------------
|
||||
\SetCell[r=2]{c} 1-2周 &
|
||||
\SetCell[r=2]{c} 信号与系统的基本概念 &
|
||||
{\ccszix 1.信号的分类与基本运算\par 2.系统的性质与分类\par} &
|
||||
2 &
|
||||
{\ccszix 连续与离散信号、周期与非周期信号、能量与功率信号;平移、反转、尺度变换。\par
|
||||
线性、时不变性、因果性、稳定性的判定。} &
|
||||
\SetCell[r=2]{l}
|
||||
{\ccszix 介绍频域分析在北斗导航信号体制设计中的应用,说明基础理论如何支撑国家重大工程。} \\
|
||||
|
||||
{\ccszix 3.冲激函数及其性质\par 4.系统的框图表示\par} &
|
||||
2 &
|
||||
{\ccszix 冲激函数的定义、抽样性质与导数性质;系统框图的化简与等效。\par} &
|
||||
\\
|
||||
|
||||
%---- 3-4 周 --------------------------------------------------------
|
||||
\SetCell[r=2]{c} 3-4周 &
|
||||
\SetCell[r=2]{c} 连续系统的时域分析 &
|
||||
{\ccszix 1.微分方程的经典解法\par 2.零输入响应与零状态响应\par} &
|
||||
3 &
|
||||
{\ccszix 齐次解与特解、初始条件的确定;零输入与零状态分解的物理含义。\par} &
|
||||
\SetCell[r=2]{l}
|
||||
{\ccszix 通过“系统需要留有余量”的工程常识,延伸到个人成长中的自我约束与调节。} \\
|
||||
|
||||
{\ccszix 3.冲激响应与阶跃响应\par 4.卷积积分\par} &
|
||||
3 &
|
||||
{\ccszix 由微分方程求冲激响应;卷积积分的定义、图解法、性质与计算技巧。\par} &
|
||||
\\
|
||||
|
||||
%---- 5-7 周 --------------------------------------------------------
|
||||
\SetCell[r=2]{c} 5-7周 &
|
||||
\SetCell[r=2]{c} 傅里叶分析 &
|
||||
{\ccszix 1.周期信号的傅里叶级数\par 2.傅里叶变换及其性质\par} &
|
||||
4 &
|
||||
{\ccszix 三角形式与指数形式的傅里叶级数;频谱的概念与画法。\par
|
||||
傅里叶变换的定义、常用变换对、线性/时移/频移/尺度/卷积性质。\par} &
|
||||
\SetCell[r=2]{l}
|
||||
{\ccszix 以雷达信号处理为例,说明频域分析如何从数学工具变成工程能力。} \\
|
||||
|
||||
{\ccszix 3.抽样定理\par 4.频域分析的应用\par} &
|
||||
4 &
|
||||
{\ccszix 抽样定理的时域与频域解释、频谱混叠的成因与后果。\par
|
||||
系统频率响应的求取、无失真传输条件、理想滤波器与实际滤波器的差距。\par} &
|
||||
\\
|
||||
|
||||
%---- 8-9 周 --------------------------------------------------------
|
||||
\SetCell[r=2]{c} 8-9周 &
|
||||
\SetCell[r=2]{c} 拉普拉斯变换与复频域分析 &
|
||||
{\ccszix 1.拉普拉斯变换的定义与性质\par 2.拉氏逆变换\par} &
|
||||
3 &
|
||||
{\ccszix 单边与双边拉氏变换、收敛域的概念;部分分式展开法求逆变换。\par} &
|
||||
\SetCell[r=2]{l}
|
||||
{\ccszix 结合高速模数转换芯片的进展与短板,讨论关键核心技术自主可控的意义。} \\
|
||||
|
||||
{\ccszix 3.系统函数与稳定性\par 4.复频域分析举例\par} &
|
||||
3 &
|
||||
{\ccszix 系统函数的定义、零极点图与频率响应的关系;稳定性判据(罗斯判据)。\par
|
||||
用拉氏变换求解含初始条件的微分方程。\par} &
|
||||
\\
|
||||
|
||||
%---- 10-13 周 ------------------------------------------------------
|
||||
\SetCell[r=2]{c} 10-13周 &
|
||||
\SetCell[r=2]{c} 离散系统的分析 &
|
||||
{\ccszix 1.离散信号与采样恢复\par 2.$z$ 变换及其性质\par} &
|
||||
5 &
|
||||
{\ccszix 采样信号的频谱、零阶保持器与信号重建;离散信号的表示与运算。\par
|
||||
$z$ 变换的定义、收敛域、常用变换对、移位与卷积性质。\par} &
|
||||
\SetCell[r=2]{l}
|
||||
{\ccszix 以“采样率不足导致信息丢失”为喻,讨论决策中信息完备性的重要性。} \\
|
||||
|
||||
{\ccszix 3.差分方程与系统函数\par 4.离散系统的稳定性\par 5.离散系统分析举例\par} &
|
||||
5 &
|
||||
{\ccszix 差分方程的时域解法与 $z$ 域解法;离散系统函数的求取。\par
|
||||
$z$ 平面单位圆与稳定性的关系;离散系统的频率响应。\par
|
||||
数字滤波器的简单分析与设计入门。\par} &
|
||||
\\
|
||||
|
||||
%---- 14 周 ----------------------------------------------------------
|
||||
14周 & 实验综合 & 综合实验与课程设计 & 2 &
|
||||
{\ccszix 连续系统仿真、采样与重建实验、简单数字滤波器设计。\par
|
||||
以小组形式完成,提交实验报告与仿真代码。\par} & \\
|
||||
|
||||
%---- 15-16 周 ------------------------------------------------------
|
||||
15-16周 & 测验、复习 & 复习巩固各阶段学习内容 & 4 &
|
||||
{\ccszix 全课程知识点串讲,重点与难点回顾,典型题型分析。\par} & \\
|
||||
|
||||
%---- 合计 ----------------------------------------------------------
|
||||
合计 & & & 42 & & \\
|
||||
|
||||
%---- 签字(跨 6 列)------------------------------------------------
|
||||
% ⚠️ R14 是 9pt、行距 460 exact;R15 是 10.5pt、行距 288 auto,共 12 个段落。
|
||||
% docx 里「任课老师(签字):」前面有 27 个半角空格,用来把它推到右侧。
|
||||
\SetCell[c=6]{c}
|
||||
{\ccfang\ccszix\hspace*{7.5em}任课老师(签字):\hspace*{6em}} \\
|
||||
|
||||
% ⚠️ R15 的 trHeight 1073 atLeast = 18.93mm 只是【下限】。
|
||||
% docx 里这一格有 12 个 10.5pt 段落、行距 288 auto(= 1.2 倍 ≈ 15.75pt):
|
||||
% P0 审核意见:
|
||||
% P1~P4 空
|
||||
% P5 「□ 同意 □ 不同意」(前面 50 个半角空格,推到中间)
|
||||
% P6 空
|
||||
% P7 教学院长(签字):
|
||||
% P8/P9 空
|
||||
% P10 「年 月 日」(前面 55 个半角空格)
|
||||
% P11 空
|
||||
% 内容自然总高 ≈ 12 × 15.75pt = 189pt = 66.7mm,远超 18.93mm
|
||||
% ⇒ Word 里这一行本来就是被内容撑高的,18.93 从来没起作用。
|
||||
%
|
||||
% ⚠️ 行距:docx 是 w:line=288 w:lineRule=auto,即 288/240 = 1.2 倍单倍行距。
|
||||
% 宋体单倍行距 ≈ 1.0 × 字号,故 10.5 × 1.2 = 12.6pt。
|
||||
% 不要用 \linespread{1.2} —— 它是乘在【基准字号】上的,外面套着
|
||||
% \ccszix(9pt) 时只算出 10.8pt,空行高度又会退回外层行距,
|
||||
% 实测 5 个空行占了 39.85mm(每行 22.6pt),严重偏大。
|
||||
\SetCell[c=6]{c}
|
||||
{\begin{minipage}{\ccspanall}
|
||||
\linespread{1}\relax\fontsize{10.5}{12.6}\selectfont
|
||||
\setlength{\parskip}{0pt}\setlength{\parindent}{0pt}%
|
||||
审核意见:\par
|
||||
\mbox{}\par
|
||||
\mbox{}\par
|
||||
\mbox{}\par
|
||||
\mbox{}\par
|
||||
\mbox{}\par
|
||||
\hspace*{7.5em}□\ 同意\quad □\ 不同意\par
|
||||
\mbox{}\par
|
||||
教学院长(签字):\par
|
||||
\mbox{}\par
|
||||
\mbox{}\par
|
||||
\hspace*{8.2em}年\hspace{2em}月\hspace{2em}日\par
|
||||
\mbox{}\par
|
||||
\end{minipage}} \\
|
||||
|
||||
\end{cctable}
|
||||
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user