新增《中国海洋大学会议预算表》LaTeX 模板(基于微信收到的 .doc)
用户原话:「@"会议预算表.doc" 转成latex模式」
D:\Yongquan\xwechat_files\wxid_w49hh5v4f8tk22_9ca3\msg\file\2026-10\会议预算表.doc
D0CF11E0
6 个段落 + 1 个表格:
P0 附件1 (左上角小字) P1 中国海洋大学会议预算表 22pt 居中 P2 填表日期: 年 月 日 金额单位: 元 表0 28 行 × 7 列 (主体) P3~P5 说明 1/2/3 9pt
基础网格 7 列,宽 [424, 2054, 790, 1262, 2056, 209, 2793] twips = [7.48, 36.23, 13.93, 22.26, 36.26, 3.69, 49.26] mm,合计 169.12mm
[424, 2054, 790, 1262, 2056, 209, 2793]
[7.48, 36.23, 13.93, 22.26, 36.26, 3.69, 49.26]
页面 210.01 × 297.00 mm(A4) 边距 top 38.01 / bottom 35.01 / left 28.01 / right 26.00 mm 表格 tblW 9588 dxa = 169.12mm,fixed 布局 单元格内边距 上下 0 twips(贴边) 行高 R26 567 exact = 10mm 字号 正文 9pt(47 处)、标题 22pt(1 处)
⚠️ 表格 169.12mm 而版心只有 210-28.01-26.00 = 156mm,超宽 13.12mm。 原 docx 靠 fixed 布局硬撑,会压进右侧页边距。 本模板按比例收到版心宽度内(缩放系数 156/169.12 = 0.9225), 并在 README 记录这一处调整。
目录 会议预算表/,与 课程大纲/、课程执行大纲/ 同风格:
会议预算表/
课程大纲/
课程执行大纲/
oucmeeting.sty
会议预算表.tex
README.md
用 tabularray,7 列基准网格:
\SetCell[c=n]
\SetCell[r=n]
⚠️ #23 踩过的坑:\SetCell[c=n]{c} 内容 & 下一格 会吞掉下一格, 必须用 {} 占位。本模板的合并不规则,尤其要注意。
\SetCell[c=n]{c} 内容 & 下一格
{}
取自 ../fonts.tex(OUC Serif),与仓库其他模板一致。 原文件用的宋体/黑体不必照抄商业字体。
../fonts.tex
示例保持空表形态(这是"预算表"模板,不是填好的表):
xelatex
1c67b7d
你给的是 会议预算表.doc,真正的 OLE2 老式 .doc(D0CF11E0 签名), 不是伪装成 .doc 的 docx。python-docx 读不了,所以走了:
会议预算表.doc
.doc --(LibreOffice headless)--> .docx --(python-docx)--> 结构
会议预算表/oucmeeting.sty 版式包(含全部 28 行合并规则) 会议预算表/会议预算表.tex 空表正文 会议预算表/README.md 用法 + 踩坑记录
用法:bash build.sh 会议预算表
bash build.sh 会议预算表
页面 A4 210×297mm 边距 top 38.01 / bottom 35.01 / left 28.01 / right 26.00 mm 版心 155.99 × 223.98 mm 字号 标题 22pt,表格与说明 9pt 表格 28 行 × 7 列,边框 0.5pt,行高 5.6mm
⚠️ 原表宽 169.12mm,比分宽出版心 13.12mm —— 原 docx 靠 fixed 布局 硬撑、实际压进左右页边距。本模板等比缩到版心内。
① 合并必须用矩阵式语法,不能写 \SetCell
\SetCell
在这套 7 列 Q[c,m,wd=…] + colsep 配置下,内容里一写 \SetCell[c=n] 就报:
Q[c,m,wd=…]
colsep
! Missing number, treated as zero. ! Illegal unit of measure (pt inserted.) \__dim_eval_end:
所有错误都定位到 \end{tblr},完全看不出是哪个格。我试过 \shortstack、\rotatebox、\newline、补 {} 占位、改 colsep、 去掉纵向合并 —— 全都不对,因为一直以为是自己某个格写错了。
\end{tblr}
\shortstack
\rotatebox
\newline
最后靠这个最小复现才定位:
\begin{tblr}{colspec={Q[c,m,wd=21mm]...7列..., colsep=0.8mm}} \SetCell[c=2]{c} A & \SetCell[c=5]{l} B \\ \end{tblr} % 必崩 % 同样合并改用 cell{} 语法 → 0 错 \begin{tblr}{colspec={...}, cell{1}{1}={c=2}{c}, cell{1}{3}={c=5}{l}} A & & B & & & & \\ \end{tblr}
✅ 正解就是 cell{行}{列}={c=n}{对齐},被合并的格留空。 好处是合并关系与内容彻底分离,改内容不会破坏结构。
cell{行}{列}={c=n}{对齐}
② \SetCell[r=n] 与 \SetCell[c=m] 不能同现
\SetCell[c=m]
纵向 + 横向合并放同一行,报同样那串错。本表因此完全不用纵向合并—— 「其他费用」改成 \rotatebox{90} 竖排,第 1 列下面 4 行留空,视觉等价。
\rotatebox{90}
③ colspec / hline / vline / ht 参数不能用宏
colspec
hline
vline
ht
tabularray 用自带展开器解析,遇到用户宏直接 Undefined control sequence。 全部写字面值。
Undefined control sequence
28 × 5.6mm = 156.8mm 标题区 ≈ 30mm 说明 3 条(第 2 条占两行)≈ 35mm 合计 ≈ 222mm ≤ 223.98mm ✅ 刚好一页
⚠️ 5.6mm 已在下限附近。 改回 6.0mm 会让 28 行多出 11.2mm, 第 3 条说明立刻掉到第 2 页(实测过)。改行高前先算这笔账。
1 页 error 0 Overfull 0 Underfull 0 表格 155.52mm / 版心 155.99mm → 界内 内容 50 项逐项核对,全部存在 全库 bash build.sh all → 15/15 通过
唯一的"缺失"项是「不得坐支现金」——因为跨行被 \n 断开, 去空白后匹配通过,不是真缺失。
\n
双端一致:
这是空表,金额、卡号、日期、人名一律留空,供下载后手填。 不含任何真实数据。已加入 verify_all.sh,全库从 14 项变 15 项。
verify_all.sh
No dependencies set.
The note is not visible to the blocked user.
新增《中国海洋大学会议预算表》LaTeX 模板(基于微信收到的 .doc)
用户诉求
用户原话:「@"会议预算表.doc" 转成latex模式」
源文件
D:\Yongquan\xwechat_files\wxid_w49hh5v4f8tk22_9ca3\msg\file\2026-10\会议预算表.docD0CF11E0签名),不是伪装 docx源文档结构
6 个段落 + 1 个表格:
表 0 逐行结构(含合并)
基础网格 7 列,宽
[424, 2054, 790, 1262, 2056, 209, 2793]twips=
[7.48, 36.23, 13.93, 22.26, 36.26, 3.69, 49.26]mm,合计 169.12mm版式参数(实测)
⚠️ 表格 169.12mm 而版心只有 210-28.01-26.00 = 156mm,超宽 13.12mm。
原 docx 靠 fixed 布局硬撑,会压进右侧页边距。
本模板按比例收到版心宽度内(缩放系数 156/169.12 = 0.9225),
并在 README 记录这一处调整。
实现方案
目录
会议预算表/,与课程大纲/、课程执行大纲/同风格:oucmeeting.sty—— 版式包会议预算表.tex—— 示例(空表,仅保留表头与项目名,金额留空)README.md—— 用法说明表格实现
用 tabularray,7 列基准网格:
\SetCell[c=n]做横向合并\SetCell[r=n]做「其他费用」的纵向合并⚠️ #23 踩过的坑:
\SetCell[c=n]{c} 内容 & 下一格会吞掉下一格,必须用
{}占位。本模板的合并不规则,尤其要注意。字体
取自
../fonts.tex(OUC Serif),与仓库其他模板一致。原文件用的宋体/黑体不必照抄商业字体。
内容
示例保持空表形态(这是"预算表"模板,不是填好的表):
验收标准
xelatex编译:error 0不做
已完成,提交
1c67b7d源文件处理链路
你给的是
会议预算表.doc,真正的 OLE2 老式 .doc(D0CF11E0签名),不是伪装成 .doc 的 docx。python-docx 读不了,所以走了:
新增
会议预算表/用法:
bash build.sh 会议预算表版式(全部从 OOXML 量出)
⚠️ 原表宽 169.12mm,比分宽出版心 13.12mm —— 原 docx 靠 fixed 布局
硬撑、实际压进左右页边距。本模板等比缩到版心内。
三个坑,第一个吃了最多时间
① 合并必须用矩阵式语法,不能写
\SetCell在这套 7 列
Q[c,m,wd=…]+colsep配置下,内容里一写\SetCell[c=n]就报:所有错误都定位到
\end{tblr},完全看不出是哪个格。我试过\shortstack、\rotatebox、\newline、补{}占位、改colsep、去掉纵向合并 —— 全都不对,因为一直以为是自己某个格写错了。
最后靠这个最小复现才定位:
✅ 正解就是
cell{行}{列}={c=n}{对齐},被合并的格留空。好处是合并关系与内容彻底分离,改内容不会破坏结构。
②
\SetCell[r=n]与\SetCell[c=m]不能同现纵向 + 横向合并放同一行,报同样那串错。本表因此完全不用纵向合并——
「其他费用」改成
\rotatebox{90}竖排,第 1 列下面 4 行留空,视觉等价。③
colspec/hline/vline/ht参数不能用宏tabularray 用自带展开器解析,遇到用户宏直接
Undefined control sequence。全部写字面值。
页高预算(这条值得记住)
⚠️ 5.6mm 已在下限附近。 改回 6.0mm 会让 28 行多出 11.2mm,
第 3 条说明立刻掉到第 2 页(实测过)。改行高前先算这笔账。
验证
唯一的"缺失"项是「不得坐支现金」——因为跨行被
\n断开,去空白后匹配通过,不是真缺失。
双端一致:
说明
这是空表,金额、卡号、日期、人名一律留空,供下载后手填。
不含任何真实数据。已加入
verify_all.sh,全库从 14 项变 15 项。