把学校下发的《2025秋数字逻辑课程执行大纲.docx》处理成 LaTeX 模板,放入仓库独立子目录 course/。
course/
用户原话:
把这个文件,也处理成 latex,比较复杂,仔细比对。弄一个虚拟课程出来,别用我的真实数据。
三条硬要求:
ouccourse.sty
课程执行大纲.tex
README.md
sectPr
pgSz 11910×16840
pgMar top 1420 / right 1300 / bottom **280** / left 1560
w:ins
w:del
tblHeader
course/README.md
已完成并推送 main:e032aec..6584dfa(2 个提交,均带 #2)。
main
e032aec..6584dfa
#2
course/ouccourse.sty
course/课程执行大纲.tex
course/课程执行大纲.pdf
页数 5 (与原 docx 一致) 编译 零错误、零 Overfull、零 Underfull 表 0 宽 156.753 目标 156.930 差 −0.177 左 27.608 目标 27.520 高 40.040 目标 40.050 列 131.830 / 24.924 目标 131.921 / 25.012 行高 8.010 目标 8.010(5 行全等) 表 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 (逐列误差均 < 0.032mm) R0 16.334 目标 16.170 R14 32.385 目标 32.190 R15 56.339 atLeast 下限 18.930,被 12 段内容撑高(Word 里同样如此) 各页最低点 286.53 / 263.23 / 240.09 / 284.82 / 125.19 mm 均 ≤ 292.06(版心下沿),无越界 字号 正文 12pt、表 0 12pt、表 1 9pt、表头 11pt、R15 10.5pt 全部一致
数字逻辑 0 080502101231 0 杨永全 0 25252029 0 王玉龙 0 玛考威茨 0 Marcovitz 0 华为 0 抗美援朝 0 秦依康 0 逻辑代数 0 卡诺图 0 触发器 0 译码器 0 2025 0
虚构课程对标:信号与系统基础 / 081203304517 / 99663311 / ××× / 电子信息工程。 思政案例全部换掉(改北斗导航、高速模数转换芯片、反馈放大器自激振荡)。
gridCol
\leftskip
\hspace*
longtblr
\halign
wd=
ht=
ht=7.834mm
presep/headsep
0pt
0pt0pt0pt0pt
cells={font=...}
font=
contHead/contFoot
conthead-text
empty
LaTeX3 Error: Erroneous variable \l__tblr_template_conthead_text_tl
\DefTblrTemplate{...}{normal}{}
\linespread
\ccszix
\linespread{1.2}
\fontsize{10.5}{12.6}
README
不靠肉眼。用 pymupdf 读 PDF 的 get_drawings() 拿线段坐标、get_text('dict') 拿 span bbox,全部换算成 mm(原点左上、与 docx 同向)后逐项比对。
pymupdf
get_drawings()
get_text('dict')
一个容易踩的脚本坑:同一条竖线会被重复计入多次(每个单元格一段),做列宽计算前必须 sorted(set(round(x,2) ...)) 去重,否则 xs[1]-xs[0] 算出来恒为 0 —— 我第一版校验脚本就栽在这里,误报了 6 项 FAIL。
sorted(set(round(x,2) ...))
xs[1]-xs[0]
No dependencies set.
The note is not visible to the blocked user.
需求来源
把学校下发的《2025秋数字逻辑课程执行大纲.docx》处理成 LaTeX 模板,放入仓库独立子目录
course/。用户原话:
三条硬要求:
涉及范围
course/:ouccourse.sty(版式宏包)、课程执行大纲.tex(虚构示例)、README.mdREADME.md目录表,补course/一行原 docx 的关键结构(解析结论)
sectPr:pgSz 11910×16840(WPS 的非标准 A4)、pgMar top 1420 / right 1300 / bottom **280** / left 1560w:ins插入修订、0 处w:del;1 处硬分页(在「年 月 日」之后)验收标准
tblHeader)course/README.md写清用法、参数表、版式数据来源、字体降级、坑位、校验方法已完成并推送
main:e032aec..6584dfa(2 个提交,均带#2)。交付物
course/ouccourse.stycourse/课程执行大纲.texcourse/课程执行大纲.pdfcourse/README.mdREADME.mdcourse/一行验收结果:26/26 项量化达标
真实数据零残留(逐词扫描)
虚构课程对标:信号与系统基础 / 081203304517 / 99663311 / ××× / 电子信息工程。
思政案例全部换掉(改北斗导航、高速模数转换芯片、反馈放大器自激振荡)。
过程中踩到的六个坑(已全部写进 README)
gridCol,用\leftskip把整块左移 5.29mm。\hspace*对longtblr的\halign盒子无效,会被吞掉,横向位移一点没生效。wd=是内容宽,不含竖线自身 0.5pt。表 1 是 6 列 7 线,每列要承担 7/6 条;漏算会让总宽多出 1mm。同理ht=含横线预算,要 8.01mm 得给ht=7.834mm。presep/headsep是 outer 键,误写进 inner spec 不报错,但会把0pt当表内容印在表头 —— 第一版渲染出来表头有一串0pt0pt0pt0pt垃圾字。表级默认字号也一样:必须写cells={font=...},单独写font=被静默忽略,表内退回 12pt。longtblr跨页提示要清两组模板。只清contHead/contFoot实例不够(第 5 页仍出现「表0:」和「(Continued)」);而conthead-text又不能设成empty,会报LaTeX3 Error: Erroneous variable \l__tblr_template_conthead_text_tl。要用\DefTblrTemplate{...}{normal}{}重定义为空。\linespread乘的是外层基准字号,不是当前字号。在\ccszix(9pt) 上下文里写\linespread{1.2}得到的是 10.8pt 而非 12.6pt,空行高度直接失控(5 个空行占 39.85mm)。要钉死得用\fontsize{10.5}{12.6}。两个已知偏差(可接受)
README写明装了之后改哪 4 行校验方法
不靠肉眼。用
pymupdf读 PDF 的get_drawings()拿线段坐标、get_text('dict')拿 span bbox,全部换算成 mm(原点左上、与 docx 同向)后逐项比对。一个容易踩的脚本坑:同一条竖线会被重复计入多次(每个单元格一段),做列宽计算前必须
sorted(set(round(x,2) ...))去重,否则xs[1]-xs[0]算出来恒为 0 —— 我第一版校验脚本就栽在这里,误报了 6 项 FAIL。