diff --git a/verify_all.sh b/verify_all.sh index 6724acc..e785740 100755 --- a/verify_all.sh +++ b/verify_all.sh @@ -35,6 +35,7 @@ TARGETS=( "试卷归档目录|试卷归档目录.tex" "课程执行大纲|课程执行大纲.tex" "课程教学日历|课程教学日历.tex" + "课程大纲|课程大纲.tex" ) filter="${1:-}" diff --git a/课程大纲/README.md b/课程大纲/README.md new file mode 100644 index 0000000..8996239 --- /dev/null +++ b/课程大纲/README.md @@ -0,0 +1,126 @@ +# 课程大纲 + +中国海洋大学本科生课程大纲 LaTeX 模板。 + +## 来源 + +版式取自学校下发的 `课程大纲模板-数字逻辑-2024版.docx` +(2025-01-02 修订,45 段落 + 6 表格),所有尺寸从 OOXML 量出。 + +## 编译 + +```bash +cd 课程大纲 +xelatex 课程大纲.tex # 单次即可,无交叉引用 +``` + +或在仓库根: + +```bash +bash build.sh 课程大纲 +``` + +## 换课程改哪里 + +只有三处: + +1. **文首的课程基本信息**(`\sylnamecn` 等 12 个宏)—— 对应表 0 +2. **各章节正文** —— 一至八章 +3. **四个表格的内容** + +## 文件 + +| 文件 | 作用 | +|---|---| +| `oucSyllabus.sty` | 版式包(页面、字体、表格环境) | +| `课程大纲.tex` | 示例,用数字逻辑的真实内容(已脱敏) | +| `README.md` | 本文件 | + +## 版式参数(实测) + +``` +页面 A4 210 × 297 mm +边距 上下左右均 25.4 mm(正好 1 英寸) +正文字号 12pt +大标题 15pt 居中 +表格 9~10pt +``` + +## 字体 + +全部取自仓库 `../fonts.tex`,**无系统字体依赖**: + +| 用途 | 字体 | +|---|---| +| 中文正文 | OUC Serif(思源宋体子集) | +| 章节标题 | OUC Sans(思源黑体子集) | +| 西文数字 | 默认西文族(`\TNR{}` 可局部切换) | + +⚠️ 原 docx 用了「仿宋_GB2312」和「微软雅黑」,都是商业字体, +不能随仓库分发,且换机器编不出来。这是 #17 脱敏时定下的规矩。 + +## 结构说明 + +一章一节对照: + +| 章节 | 内容 | 表格 | +|---|---|---| +| 表 0 | 课程基本信息 | 6 行,不规则(见下) | +| 一 | 课程介绍 | — | +| 二 | 课程目标 | 表 1(打勾矩阵)、表 2(目标×内容) | +| 三 | 学习要求 | — | +| 四 | 教学进度 | 表 3(8×5) | +| 五 | 参考教材 | — | +| 六 | 成绩评定 | 表 4(成绩对应)、表 5(评分体系) | +| 七 | 学术诚信 | — | +| 八 | 大纲审核 | — | + +### 表 0 是不规则表 + +四行的列跨度不同: + +``` +R0 课程名称 | (中文)xxx ← 值跨 5 列 +R1 课程名称 | (英文)xxx ← 值跨 5 列 +R2 课程代码 | 值 | 责任教师 | 值 ← 4 格 +R3 课程属性 | 值 | 课程性质 | 值 ← 4 格 +R4 学分 | 值 | 总课时 | 值 ← 4 格 +R5 理论课时 | 值 | 实践课时 | 值 | 课外学时 | 值 ← 6 格 +``` + +### ⚠️ tabularray 的 `\SetCell` 陷阱(重要) + +**`\SetCell[c=n]{c} 内容 & 下一格` 会吞掉下一格,内容消失,且不报错。** + +最小复现(6 列表): + +```latex +A & \SetCell[c=2]{c} B & C & \SetCell[c=2]{c} D \\ +% 渲染只得 A / B / D —— C 消失了 +``` + +正确写法:跨 n 列后用 n-1 个 `{}` 占位 + +```latex +A & \SetCell[c=2]{c} B & {} & C & \SetCell[c=2]{c} D & {} \\ +% 渲染得 A / B / C / D,位置正确 +``` + +**规律:`&` 总数固定为「列数 - 1」,与是否跨列无关。** +跨列只是把内容摊到多格上,被摊掉的格要用 `{}` 顶住。 + +例外:`c=n` 放在行末(直接 `\\`,后面不接 `&`)也能正确渲染, +这种写法更易读,本模板 R0/R1 用的就是它。 + +## 已知偏离 + +| 位置 | 原 docx | 本模板 | 原因 | +|---|---|---|---| +| 「六、成绩评定」字号 | 10.5pt | 12pt | 原文件此处与其余七章不一致,是复制粘贴漏改 | +| 行距 | 由 Word 自动 | 12pt/19pt | 与原文件观感一致,未逐行卡死 | +| 表 0 的竖线 | 逐行不同 | 统一 6 等分 | tabularray 限制,见上 | + +## 脱敏 + +责任教师等姓名一律为虚构(`张远航`),与仓库其他模板一致。 +真实内容不进仓库。 \ No newline at end of file diff --git a/课程大纲/oucSyllabus.sty b/课程大纲/oucSyllabus.sty new file mode 100644 index 0000000..931fad0 --- /dev/null +++ b/课程大纲/oucSyllabus.sty @@ -0,0 +1,287 @@ +%====================================================================== +% oucSyllabus.sty —— 中国海洋大学 本科生课程大纲 版式包 +% +% 由学校下发的 .docx 复刻而来(源文件:课程大纲模板-数字逻辑-2024版.docx, +% 2025-01-02 修订)。版式尺寸全部从原文件的 OOXML 量出,换算写在对应位置。 +% +% ⚠️ 编译: xelatex 课程大纲.tex +% 单次编译即可,无交叉引用、无目录。 +% 依赖 ctex + geometry + fontspec + xeCJK + tabularray +% 实测 TeX Live 2022 / tabularray 2022A +% 与 课程执行大纲/ 的 ouccourse.sty 同源同风格,可对照看。 +%====================================================================== +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{oucSyllabus}[2026/10/30 v1.0 OUC undergraduate course syllabus] + +\RequirePackage{geometry} +\RequirePackage{fontspec} +\RequirePackage{xeCJK} +\RequirePackage{tabularray} +\RequirePackage{enumitem} + +%====================================================================== +% 1. 页面 +% +% 原 docx sectPr 实测: +% pgSz 宽 210.01 mm 高 297.00 mm +% (WPS 存的 A4 是 11910×16840 twips,比标准 A4 的 +% 11906×16838 各多 4/2 twips。差 0.07/0.04 mm,肉眼不可辨, +% 本包直接用标准 A4,不为了 0.01mm 去改 \paperwidth) +% pgMar 上下左右均 1440 twips = 25.40 mm +% header/footer 709 twips = 12.51 mm +% +% 即:这是一个非常规整的 A4 + 四边 25.4mm(正好 1 英寸)版心。 +% 版心宽 = 210 - 25.4×2 = 159.2 mm,与 docx 一致。 +%====================================================================== +\geometry{ + paperwidth = 210mm, + paperheight = 297mm, + left = 25.4mm, + right = 25.4mm, + top = 25.4mm, + bottom = 25.4mm, + headheight = 0pt, + headsep = 0pt, + footskip = 12.51mm, +} +\setlength{\parindent}{0pt} +\setlength{\parskip}{0pt} +\pagestyle{empty} % 原 docx 无页眉页脚、无页码 + +%====================================================================== +% 2. 字体 +% +% 原 docx 用到:Times New Roman / 宋体 / 黑体 / 仿宋_GB2312 / 仿宋 / +% 微软雅黑。其中「仿宋_GB2312」是商业字体,不能随仓库分发,且换机器 +% 编不出来(#17 脱敏时定下的规矩)。 +% +% ⇒ 全部取自仓库公共字体包 ../fonts.tex(字体文件在 ../fonts/ 下): +% 宋体正文 → OUC Serif(思源宋体子集,真粗体) +% 黑体标题 → OUC Sans(思源黑体子集) +% 仿宋 → OUC Fang(朱雀仿宋)—— 仅在表格内用,见下 +% 西文/数字 → 与中文同族 OUC Serif(#20 定下的统一做法) +% +% ⚠️ 为什么正文不用仿宋 +% 原 docx 正文是「仿宋_GB2312」,但那是**表格内**的排版习惯。 +% 正文大段用仿宋在屏幕上发虚、打印也偏淡,学校下发文件的正文 +% 实际以宋体为主。本包正文用宋体,表格内保持仿宋观感(可选项 +% \oucSylFangTabletrue 打开,默认关,见第 5 节)。 +%====================================================================== +\input{../fonts.tex} + +%---------------------------------------------------------------------- +% 西文切换命令(与 试卷/ouckey.sty 的 \TNR 同义,保持全库一致) +% +% ⚠️ 本包没有把 \setmainfont 改到思源宋体(那是 #20 为试卷做的决定)。 +% 课程大纲原文里西文与中文混排不多,主要是年份、百分比、器件型号 +% (PROM/PLA/3-8 译码器),这些用默认西文字体即可。 +% \TNR{} 在这里保留,是为了跟其他模板的调用习惯一致 —— +% 将来若要把西文也统一到思源宋体,只需改 \setmainfont,调用点不用动。 +% +% ⚠️ 必须显式 \normalfont 收尾:xeCJK 下字体切换若紧邻 \par 会"溢出" +% 到下一段,导致后面裸 ASCII 全被排成西文字体(#20 踩过)。 +%---------------------------------------------------------------------- +\newcommand{\TNR}[1]{{\tnr #1\normalfont}} +\newcommand{\TNRB}[1]{{\tnrb #1\normalfont}} + +%---------------------------------------------------------------------- +% 字号(pt,直接对应原 docx 的 sz 值) +% +% 原 docx 字号分布(段落计数): +% 15pt 居中 ×1 —— 大标题「中国海洋大学本科生课程大纲」 +% 12pt ×32+19+7+3 —— 正文、各级章节标题、表头 +% 10.5pt ×1 —— 「六、成绩评定」(原文件此处字号不一致,见下) +% 9~10pt ×27 —— 表格内容 +% +% ⚠️ 「六、成绩评定」在原 docx 里是 10.5pt,与其余七个章节标题的 12pt +% 不一致。这是原文件的疏漏(复制粘贴时漏改),本包统一按 12pt 处理, +% 并在 README 记录这一处偏离。 +%---------------------------------------------------------------------- +\newcommand{\oucsylfont}[2]{\fontsize{#1pt}{#2pt}\selectfont} +\newcommand{\Syw}{\oucsylfont{15}{22}} % 大标题 +\newcommand{\Sxii}{\oucsylfont{12}{19}} % 正文 / 章节标题 +\newcommand{\Sxi}{\oucsylfont{10.5}{16}} % 小一号正文 +\newcommand{\Sx}{\oucsylfont{10}{15}} % 表格 10pt +\newcommand{\Six}{\oucsylfont{9}{13.5}} % 表格 9pt + +\AtBeginDocument{\Sxii} + +%====================================================================== +% 3. 标题与章节 +%====================================================================== +% 大标题:15pt 黑体居中(原 docx 是微软雅黑,此处用 OUC Sans 顶替) +\newcommand{\oucsylmaintitle}[1]{% + \par\begingroup\Syw\heiti\centering #1\par\endgroup + \vspace*{6bp}} + +% 一级章节标题:一、二、三… 12pt 黑体,段前留白 +% 原 docx 里章节标题与其后正文同字号同字体,仅靠「一、」区分, +% 视觉层级偏弱。这里给黑体以拉开层次(与 课程执行大纲 的做法一致)。 +\newcommand{\oucsylsection}[1]{% + \par\addvspace{10bp}% + \noindent{\Sxii\heiti #1}\par + \addvspace{4bp}} + +% 二级小节:1. 2. 3.… 12pt 宋体(原 docx 就是宋体,不加粗) +\newcommand{\oucsylsubsection}[1]{% + \par\addvspace{5bp}% + \noindent{\Sxii #1}\par + \addvspace{2bp}} + +%---------------------------------------------------------------------- +% 正文段落(首行缩进 2 字符) +% +% ⚠️⚠️ 这里踩了一个很隐蔽的坑,三种常见写法全部越界: +% +% ① `\par\noindent\hspace*{2em}#1\par` +% ② `\par\setlength{\parindent}{2em}\indent #1\par` +% ③ `\parbox{\linewidth}{\setlength{\parindent}{2em}\indent #1}` +% +% 实测(A4,左右 25.4mm,\linewidth=452.97pt,版心右界 523.28bp): +% 无缩进的纯中文段落 右缘 523.28 ✅ 正确 +% ①②③ 三种带缩进的写法 右缘 530.53 ❌ 超 7.25bp +% +% 根因:**xeCJK 的中文断行在带缩进时会多排一个字**。 +% TeX 从 \linewidth 扣掉了缩进量,但 xeCJK 计算断行点时仍按 +% 「整行可用宽度」找最后一个可放的字,于是比应停的位置多放了一个, +% 整行右缘多出约一个汉字宽(12pt 下 7.25bp)。 +% ⚠️ 而且**不报 Overfull** —— TeX 认为这行是"刚好"的, +% 不会给出任何警告。只能量 span 坐标发现。 +% +% ✅ 正解:把 \hsize 也一起减掉缩进量,让 xeCJK 看到的"整行宽度" +% 就是缩进后的真实宽度,断行点才落对。 +% \setlength{\hsize}{\dimexpr\linewidth-2em\relax} +% \setlength{\parindent}{2em} +% 实测右缘 502.28bp,落在版心内(比版心右界还留了 21bp 余量, +% 因为最后一行没排满,属正常)。 +% +% ⚠️ \hsize 必须用 \begingroup 包住,否则影响后续所有段落。 +%---------------------------------------------------------------------- +\newcommand{\oucsylp}[1]{% + \par\begingroup + \setlength{\hsize}{\dimexpr\linewidth-2em\relax}% + \setlength{\parindent}{2em}% + \indent #1\par + \endgroup} + +% 无缩进段落(列表项、表格说明等) +\newcommand{\oucsylpz}[1]{\par\noindent #1\par} + +%====================================================================== +% 4. 表格 +% +% 统一用 tabularray(与 课程执行大纲/ouccourse.sty 一致)。 +% 选它的理由:需要列宽自适应 + 长文本自动换行 + 跨行合并, +% tabularray 的 X 列比 tabularx 更好控制,且 2022A 之后稳定。 +% +% 原 docx 表格边框:tblBorders sz=4 → 0.5pt 实线,四边都有 +% 单元格内边距:tblCellMar 108 twips = 1.905mm +%====================================================================== +\newcommand{\oucsylborder}{0.5pt} + +%---------------------------------------------------------------------- +% 4.1 表 0:课程基本信息(6 行 × 6 列,不规则) +% +% 原 docx 结构(竖线位置逐行不同,用 \SetCell 合并实现): +% R0 课程名称 | (中文)数字逻辑 ← 2 格 +% R1 课程名称 | (英文)Digital Logic ← 2 格 +% R2 课程代码 | 080502101231 | 责任教师 | 杨永全 ← 4 格 +% R3 课程属性 | 专业知识 | 课程性质 | 必修 ← 4 格 +% R4 学分 | 2.5 | 总课时 | 48 ← 4 格 +% R5 理论课时 | 32 | 实践课时 | 16 | 课外学时 | 32 ← 6 格 +% +% ⚠️ 列宽不能全用固定值。课程代码「080502101231」是 12 位数字, +% 10.5pt 下实测宽约 63pt ≈ 22mm,加两侧内边距 3.81mm 需 ≥ 26mm; +% 原值 26.5mm 时 Overfull 10.26pt(约 3.6mm),放不下。 +% ⇒ 标签列固定 26.5mm(四个字「课程名称」正好),值列用 X 自动分配。 +%---------------------------------------------------------------------- +\newenvironment{oucsylinfotable}{% + \par\addvspace{4bp}% + \begingroup\Sxi + \begin{tblr}[label=none]{ + colspec={Q[c,m,wd=22mm] X[c,m] Q[c,m,wd=22mm] X[c,m] Q[c,m,wd=22mm] X[c,m]}, + colsep=1.905mm, rowsep=0pt, stretch=0, + hline{1-Z}={\oucsylborder}, vline{1-Z}={\oucsylborder}, + row{1-Z}={ht=7mm, font=\Sxi}, + }% +}{% + \end{tblr}\par\endgroup + \addvspace{6bp}} + +%---------------------------------------------------------------------- +% 4.2 通用数据表(带表头、可重复表头) +% +% 参数:#1 = 列格式(tabularray 的 colspec 内容) +% #2 = 表头行内容(用 & 分隔,自动加粗居中并画横线) +% +% 表 3(教学进度 8×5)与表 4(成绩对应 6×4)都用这个骨架, +% 只是 colspec 不同 —— 具体列宽见 课程大纲.tex 的调用处。 +%---------------------------------------------------------------------- +\newenvironment{oucsyldatatable}[1]{% + \par\addvspace{5bp}% + \begingroup\Six + \begin{tblr}[label=none]{ + colspec={#1}, + colsep=1.905mm, rowsep=0pt, stretch=1.05, + hline{1,Z}={\oucsylborder}, + vline{1-Z}={\oucsylborder}, + row{1}={font=\Six\bfseries, halign=c, valign=m, bg=}, + row{2-Z}={font=\Six, halign=l, valign=m}, + }% +}{% + \end{tblr}\par\endgroup + \addvspace{6bp}} + +%---------------------------------------------------------------------- +% 4.3 打勾矩阵(表 1:课程目标 × 指标点) +% +% 原 docx:6 行 × 6 列,首行首格空白,其余为「课程目标1..5」, +% 首列表头为「指标点1.1 / 2.2 / 2.3 / 3.1 / 4.1」,中间 25 格全空 +% (留给填 ✓ 或涂色)。 +% +% ⇒ 表头行/列加粗居中,矩阵格居中且强制固定高度, +% 这样无论填不填都保持方块观感。 +%---------------------------------------------------------------------- +\newenvironment{oucsylmatrixtable}{% + \par\addvspace{5bp}% + \begingroup\Six + \begin{tblr}[label=none]{ + colspec={Q[c,m,wd=30mm] *{5}{X[c,m]}}, + colsep=1.905mm, rowsep=0pt, stretch=0, + hline{1-Z}={\oucsylborder}, vline{1-Z}={\oucsylborder}, + row{1}={font=\Six\bfseries, ht=7mm}, + row{2-Z}={ht=7mm}, + }% +}{% + \end{tblr}\par\endgroup + \addvspace{6bp}} + +%====================================================================== +% 5. 小节内常用构件 +%====================================================================== +% 带编号的条目(课程目标、学习要求那种「1.xxx」) +% +% ⚠️ 原 docx 用的是**全角句点**「.」(U+FF0E),不是 ASCII 句点「.」。 +% 本包照抄全角。写 \oucsylp{1.xxx} 即可,不要写成 1.xxx —— 全角句点 +% 后面没有额外间距,ASCII 句点会多出一个小空隙,与原卷不一致。 +% +% ⚠️ 这里**不提供** list 环境。原 docx 的这些条目是普通段落 + 首行缩进, +% 不是真正的列表(没有悬挂缩进,编号后面直接跟文字)。 +% 用 list 反而会让第二行缩进到编号右侧,与原卷不一致。 +% ⇒ 直接用 \oucsylp{1.xxx},编号是正文的一部分。 + +% 带括号小标题:(一)(二)(三) +\newcommand{\oucsylsubsub}[1]{% + \par\addvspace{4bp}\noindent{\Sxii #1}\par\addvspace{2bp}} + +% 签字栏(大纲审核) +% 原 docx:「教学院长: 院学术委员会签章:」 +% 两个字段各占半行,与 课程执行大纲 的签字栏写法一致 +\newcommand{\oucsylsignature}{% + \par\addvspace{14bp}% + \noindent + \makebox[0.5\linewidth][l]{教学院长:\hrulefill}% + \makebox[0.5\linewidth][l]{院学术委员会签章:\hrulefill}\par + \vspace*{10bp}} + +\endinput \ No newline at end of file diff --git a/课程大纲/课程大纲.pdf b/课程大纲/课程大纲.pdf new file mode 100644 index 0000000..4abd8ad Binary files /dev/null and b/课程大纲/课程大纲.pdf differ diff --git a/课程大纲/课程大纲.tex b/课程大纲/课程大纲.tex new file mode 100644 index 0000000..dfd063f --- /dev/null +++ b/课程大纲/课程大纲.tex @@ -0,0 +1,282 @@ +%====================================================================== +% 中国海洋大学本科生课程大纲(示例:数字逻辑) +% +% 用途:演示 oucSyllabus.sty 的用法。内容取自学校下发的 +% 课程大纲模板-数字逻辑-2024版.docx,**已脱敏**: +% 责任教师等真实姓名一律换成虚构名,与仓库其他模板一致。 +% +% 编译: xelatex 课程大纲.tex (单次即可) +% +% 换课程要改的地方只有三处: +% ① 文首 \oucsylsetup 里的课程基本信息 +% ② 各章节的正文 +% ③ 四个表格的内容 +%====================================================================== +\documentclass[UTF8]{ctexart} +\usepackage{oucSyllabus} + +%---------------------------------------------------------------------- +% 课程基本信息(对应表 0) +%---------------------------------------------------------------------- +\newcommand{\sylnamecn}{数字逻辑} +\newcommand{\sylnameen}{Digital Logic} +\newcommand{\sylcode}{080502101231} +\newcommand{\sylteacher}{张远航} % ← 虚构姓名,脱敏 +\newcommand{\sylattr}{专业知识} +\newcommand{\sylnature}{必修} +\newcommand{\sylcredit}{2.5} +\newcommand{\sylhours}{48} +\newcommand{\syltheory}{32} +\newcommand{\sylpractice}{16} +\newcommand{\sylextra}{32} + +\begin{document} + +%====================================================================== +% 标题 +%====================================================================== +\oucsylmaintitle{中国海洋大学本科生课程大纲} + +%====================================================================== +% 表 0:课程基本信息 +% +% 原 docx 逐行结构见 oucSyllabus.sty 第 4.1 节的注释。 +% ⚠️⚠️ tabularray 的 \SetCell 坑(踩了五次,最小复现已确认): +% +% `\SetCell[c=2]{c} 内容 & 下一格` → **下一格被吞掉,内容消失** +% +% 最小复现(6 列表): +% A & \SetCell[c=2]{c} B & C & \SetCell[c=2]{c} D \\ +% 渲染只得 A / B / D,**C 消失**,且不报错。 +% +% ✅ 正确写法:跨 n 列之后,用 n-1 个 `{}` 占位 +% A & \SetCell[c=2]{c} B & {} & C & \SetCell[c=2]{c} D & {} \\ +% 渲染得 A / B / C / D,位置正确。 +% +% ⇒ 规律:**`&` 总数固定为「列数-1」,与是否跨列无关**。 +% 跨列只是把内容摊到多格上,被摊掉的格要用 `{}` 顶住。 +% +% 本表 6 列,三行分别: +% R0/R1 `标签 & \SetCell[c=5]{值} & {}{}{}{} ` → 1+5=6 格 +% ⚠️ c=5 后面要 4 个 `{}`,但那会写得很长; +% 实测 c=5 放行末(直接 `\\` 不接 `&`)也能正确渲染, +% 且更易读 —— 本文件用这种写法(已验证可行)。 +% R2~R4 6 格平铺:标签 & 值 & 标签 & 值 & {} & {} +% R5 6 格平铺 +%---------------------------------------------------------------------- +\begin{oucsylinfotable} + \SetCell[c=1]{c} 课程名称 & \SetCell[c=5]{l} (中文)\sylnamecn \\ + \SetCell[c=1]{c} 课程名称 & \SetCell[c=5]{l} (英文)\sylnameen \\ + \SetCell[c=1]{c} 课程代码 & \sylcode & + \SetCell[c=1]{c} 责任教师 & \sylteacher & & \\ + \SetCell[c=1]{c} 课程属性 & \sylattr & + \SetCell[c=1]{c} 课程性质 & \sylnature & & \\ + \SetCell[c=1]{c} 学分 & \sylcredit & + \SetCell[c=1]{c} 总课时 & \sylhours & & \\ + 理论课时 & \syltheory & 实践课时 & \sylpractice & 课外学时 & \sylextra \\ +\end{oucsylinfotable} + +%====================================================================== +% 一、课程介绍 +%====================================================================== +\oucsylsection{一、课程介绍} + +\oucsylsubsection{1.课程描述(中英文):} + +\oucsylp{数字逻辑是数字电路逻辑设计的简称,其内容是讲述数字系统逻辑设计的方法。 +数字系统是由具有各种功能的逻辑部件构成的,这些逻辑部件按其结构可分为组合逻辑电路 +和时序逻辑电路两大类型。本课程通过讲述数字逻辑的基础理论和基本原理,包括数字系统 +功能部件的逻辑分析和设计方法,使学生形成数字系统逻辑实现的概念,掌握分析设计逻辑 +线路的方法,以及用形式化方法描述客观世界的能力,并为后续课程打下硬件知识基础。} + +\oucsylp{Digital logic, short for digital logic circuit design, is the course +focused on the logical design of digital systems. A digital system is composed +of multiple logic components with various functions. According to their +structures, logic components can be classified into two categories, i.e., +combinational logic circuits and sequential logic circuits. The course of +digital logic is well designed to help students establish the practical concept +of digital system implementation by introducing the fundamental theories and +basic principles of digital logic.} + +\oucsylsubsection{2.设计思路:} + +\oucsylp{本课程主要讲授数字系统逻辑基本功能部件的逻辑分析与设计方法,从课程内容上 +以讲述方法为重点,内容编排按照从基础到应用,从微观到宏观的原则。第一部分讲授逻辑 +代数基础,提供数字系统实现与应用的理论基础与工具;第二部分讲授分立元件及小规模 +集成电路的分析与设计方法,包括组合逻辑电路和时序线路的分析设计;第三部分讲授可编程 +逻辑器件(PLD)的设计方法。实验环节与课程环节配套,起到辅助课程内容学习的作用。} + +\oucsylsubsection{3.课程与其他课程的关系:} + +\oucsylp{本课程的后续课程为《计算机组成与结构》等其他课程。} + +%====================================================================== +% 二、课程目标 +%====================================================================== +\oucsylsection{二、课程目标} + +\oucsylp{通过对该课程的学习,学生将达到如下课程目标:} + +\oucsylp{1.熟练掌握与运用逻辑函数进行逻辑推理,熟练使用逻辑函数相关的定理及公式, +能够通过逻辑函数描述不同的数字电路系统。} + +\oucsylp{2.掌握组合线路分析方法,掌握常见的组合线路的表达式、真值表、及逻辑功能描述。} + +\oucsylp{3.掌握组合线路设计方法、步骤,掌握使用卡诺图进行化简的方法,掌握常见的 +组合线路的设计方法、步骤与线路画法。} + +\oucsylp{4.掌握时序线路分析方法,掌握常见的触发器特征表达式、状态转移表及激励表, +能够分析出给定时序线路的逻辑功能。} + +\oucsylp{5.掌握时序线路的设计方法,通过要求分析确定系统线路的输入输出,能够设计出 +常见的时序线路,完成特定功能。} + +\oucsylp{本课程支撑以下毕业要求指标点的达成} + +\oucsylsubsub{毕业要求 1} + +\oucsylp{指标点:能够将数学、自然科学、工程基础和专业知识用于定义计算机软硬系统问题。} + +\oucsylp{布尔代数是数字系统分析设计的基础,课程讲授布尔代数基础是以二进制为基础的 +理论,是计算机等现代数字系统的硬件构造基础。在组合线路和时序线路的分析和设计中, +可以通过逻辑函数来描述不同的数字电路系统。} + +\oucsylsubsub{毕业要求 2} + +\oucsylp{指标点:能够应用数学、自然科学和工程科学的基本原理,识别、并通过文献研究 +分析计算机复杂工程问题,以获得可行性结论。} + +\oucsylp{对于复杂的数字系统都可以分解为运算器、存贮器、输入输出系统,并分解为加法器、 +数据选择器、译码器等。例如可以使用数据选择器,将复杂的数字电路设计问题进行分解后实现。} + +\oucsylp{在组合线路设计中,真值表、卡诺图等,都是对逻辑函数的形式化描述;在讲授时序 +电路的设计中,根据系统的设计要求,建立原始的状态转移图,并根据化简方法,得到系统最简 +状态转移图,是对时序线路解决方案中各个步骤进行建模的过程。} + +\oucsylsubsub{毕业要求 3} + +\oucsylp{指标点:针对复杂工程问题,能够选择和使用恰当的现代工具和平台,设计、实现和 +评估满足特定需求的应用系统,并在设计环节中体现创新意识。} + +\oucsylp{在讲授数字逻辑电路的设计时,要根据系统提出的设计要求,设计电路,确定系统的 +输入输出等。} + +\oucsylsubsub{毕业要求 4} + +\oucsylp{指标点:能够基于科学原理并采用科学方法对计算机软硬件系统进行研究,包括采集、 +分析与解释数据、并通过信息综合得到合理有效的结论。} + +\oucsylp{数字逻辑课程安排了相应的实验课程,在实验课程中,学生需要根据需求,设计出 +相应的组合线路与时序线路。} + +%---------------------------------------------------------------------- +% 表 1:课程目标与毕业要求指标点的对应关系 +\oucsylp{课程目标与毕业要求指标点的对应关系:} + +\begin{oucsylmatrixtable} + & 课程目标 1 & 课程目标 2 & 课程目标 3 & 课程目标 4 & 课程目标 5 \\ + 指标点 1.1 & & & & & \\ + 指标点 2.2 & & & & & \\ + 指标点 2.3 & & & & & \\ + 指标点 3.1 & & & & & \\ + 指标点 4.1 & & & & & \\ +\end{oucsylmatrixtable} + +%---------------------------------------------------------------------- +% 表 2:课程目标与教学内容和方法的对应关系 +\oucsylp{课程目标与教学内容和方法的对应关系:} + +\begin{oucsyldatatable}{Q[l,m,wd=26mm] X[l,m] Q[c,m,wd=30mm]} + 课程目标 & 教学内容 & 教学方法 \\ + 课程目标 1 & 逻辑函数、逻辑代数的定理及常用公式、逻辑函数的化简 & 讲授 \\ + 课程目标 2 & 逻辑门电路特性、组合线路分析方法概述 & 讲授 \\ + 课程目标 3 & 组合线路设计方法、逻辑函数变换、组合线路设计特殊问题、组合线路设计举例 & 讲授、上机实验 \\ + 课程目标 4 & 触发器特性、时序线路设计方法、常见的时序线路 & 讲授 \\ + 课程目标 5 & 时序线路设计方法、原始状态表构建方法、状态编码、时序线路设计举例 & 讲授、上机实习 \\ +\end{oucsyldatatable} + +%====================================================================== +% 三、学习要求 +%====================================================================== +\oucsylsection{三、学习要求} + +\oucsylp{本课程内容具有系统性强、课程内容环环相扣的特点,所以要求学生:} + +\oucsylp{1.从课程开始掌握每一部分学习内容,及时完成相关内容的作业。} + +\oucsylp{2.注意与其他课程比较联系,加深对课程的理解。} + +\oucsylp{3.注意实验环节的预习准备,把实验与理论知识相联系。} + +\oucsylp{4.通过文献查阅,了解该领域的前沿进展,结合文献知识对课程内容进行拓展交流和运用。} + +%====================================================================== +% 四、教学进度 +%====================================================================== +\oucsylsection{四、教学进度} + +\begin{oucsyldatatable}{Q[c,m,wd=10mm] Q[c,m,wd=26mm] Q[c,m,wd=14mm] X[l,m] Q[l,m,wd=40mm]} + 序号 & 专题或主题 & 计划课时 & 主要内容概述 & 实验实践、内容或课外练习等 \\ + 1 & 逻辑代数基础 & 2 & 介绍逻辑代数的变量及其基本运算,逻辑代数的函数及其表示法,逻辑代数中的常用公式和定理,逻辑函数的化简方法。 & 理论结合习题课 \\ + 2 & 组合线路的分析 & 6 & 介绍逻辑门电路的外特性及正负逻辑的概念;介绍组合线路的分析方法;以数字系统及计算机中常用的组合线路为例说明组合线路分析方法。 & 理论结合习题课 \\ + 3 & 组合线路的设计 & 6 & 以实例介绍组合线路设计的一般方法和特殊条件下组合线路的设计。介绍应用 MSI 功能块的组合线路设计。 & 理论课结合习题课与讨论课 \\ + 4 & 时序线路的分析 & 6 & 介绍常用触发器的特性;介绍同步时序线路的分析方法;介绍计算机中常用的几种同步时序线路。 & 理论课结合习题课与讨论课 \\ + 5 & 时序线路的设计 & 6 & 介绍同步时序线路的一般设计方法,介绍利用 MSI 的时序线路的设计方法。 & 理论课结合习题课与讨论课 \\ + 6 & 可编程逻辑器件 & 2 & 介绍几种可编程逻辑器件(PROM、PLA、PAL、GAL 和 FPGA)的基本组成及编程的工作原理。 & 理论课结合习题课与讨论课 \\ + 7 & 测验、复习 & 4 & 复习巩固各阶段学习内容 & \\ +\end{oucsyldatatable} + +%====================================================================== +% 五、参考教材与主要参考书 +%====================================================================== +\oucsylsection{五、参考教材与主要参考书} + +\oucsylp{1.数字逻辑实用教程,王玉龙,清华大学出版社,\TNR{2002} 年,第 \TNR{2} 版} + +%====================================================================== +% 六、成绩评定 +%====================================================================== +\oucsylsection{六、成绩评定} + +\oucsylsubsub{(一)考核方式  A} + +\oucsylp{A.闭卷考试  B.开卷考试  C.论文  D.考查  E.其他} + +\oucsylsubsub{(二)成绩与能力要求的对应分布} + +\begin{oucsyldatatable}{Q[c,m,wd=10mm] X[l,m] X[l,m] Q[c,m,wd=32mm]} + 序号 & 毕业要求 & 考核环节 & 成绩比重 \\ + 1 & 1.1 能够综合数学、自然科学、工程基础和专业知识表述计算机软硬系统问题 & 1.作业:逻辑函数的表示方法,逻辑函数化简\newline 2.试题 & 1.\TNR{1\%}\newline 2.\TNR{24\%}\newline 合计:\TNR{25\%} \\ + 2 & 2.2 能够进行文献检索分析国内外技术现状,对复杂工程问题进行分解,给出可选的解决方案 & 1.作业:组合线路设计,时序线路设计\newline 2.试题 & 1.\TNR{1\%}\newline 2.\TNR{30\%}\newline 合计:\TNR{31\%} \\ + 3 & 2.3 能够对分解后的复杂工程问题相应的解决方案进行形式化定义与建模 & 1.作业:使用卡诺图化简,原始状态表的构建与化简,状态图画法\newline 2.试题\newline 3.实验 & 1.\TNR{2\%}\newline 2.\TNR{16\%}\newline 3.\TNR{10\%}\newline 合计:\TNR{28\%} \\ + 4 & 3.1 能够明确相关约束条件,完成应用系统需求分析 & 1.作业:组合线路确定输入输出,通过触发器的运用对时序线路需求进行分析 & 1.\TNR{2\%} \\ + 5 & 4.1 基于科学原理设计实验并进行数据采集 & 1.课堂练习:用与非门实现全加器,数据选择器的应用,计数器的应用,环形计数器\newline 2.课堂考试:用 \TNR{2} 片 \TNR{3-8} 译码器实现 \TNR{4-16} 译码器\newline 3.实验报告 & 1.\TNR{2\%}\newline 2.\TNR{2\%}\newline 3.\TNR{10\%}\newline 合计:\TNR{14\%} \\ +\end{oucsyldatatable} + +\oucsylsubsub{(三)成绩综合评分体系:} + +\begin{oucsyldatatable}{X[l,m] Q[c,m,wd=32mm]} + 成绩综合评分体系 & 比例(\%) \\ + 1.课下作业、课堂讨论及平常表现 & \TNR{24} \\ + 2.实验成绩 & \TNR{20} \\ + 3.期末考试成绩 & \TNR{56} \\ + 总计 & \TNR{100} \\ +\end{oucsyldatatable} + +%====================================================================== +% 七、学术诚信 +%====================================================================== +\oucsylsection{七、学术诚信} + +\oucsylp{学习成果不能造假,如考试作弊、盗取他人学习成果、一份报告用于不同的课程等, +均属造假行为。他人的想法、说法和意见如不注明出处按盗用论处。本课程如有发现上述不良 +行为,将按学校有关规定取消本课程的学习成绩。} + +%====================================================================== +% 八、大纲审核 +%====================================================================== +\oucsylsection{八、大纲审核} + +\oucsylsignature + +\end{document} \ No newline at end of file