重写全部 README,只保留使用说明
17 个 README 统一改成使用说明书,去掉来源、踩坑、需求过程等内容。 只保留: - 怎么编译、跑几遍 - 文件结构 - 要改哪些参数(逐项列出宏名与含义) - 用到的命令(表格) - 版式参数 删除: - 原文件来源、抽取过程 - 踩坑记录、最小复现、实测数据 - 用户需求、工单号、历史沿革 - 改造前后对比 行数 4185 → 2261。 全库 16/16 编译通过。
This commit is contained in:
+53
-160
@@ -1,198 +1,91 @@
|
||||
# 会议预算表
|
||||
|
||||
中国海洋大学会议预算表 LaTeX 模板(空表,可印刷手填)。
|
||||
|
||||
## 来源
|
||||
|
||||
用户从微信收到的 `会议预算表.doc`(51712 字节,**OLE2 老式 .doc**,
|
||||
`D0CF11E0` 签名,不是伪装成 .doc 的 docx)。
|
||||
|
||||
python-docx 读不了老格式,处理链路是:
|
||||
|
||||
```
|
||||
.doc --(LibreOffice headless)--> .docx --(python-docx)--> 结构
|
||||
```
|
||||
|
||||
```bash
|
||||
soffice --headless --convert-to docx --outdir . 会议预算表.doc
|
||||
```
|
||||
中国海洋大学会议经费预算表,A4 单页,空表可直接印刷手填。
|
||||
|
||||
## 编译
|
||||
|
||||
```bash
|
||||
cd 会议预算表
|
||||
xelatex 会议预算表.tex # 单次即可,无交叉引用
|
||||
xelatex 会议预算表.tex
|
||||
```
|
||||
|
||||
或仓库根:`bash build.sh 会议预算表`
|
||||
|
||||
## 文件
|
||||
|
||||
| 文件 | 作用 |
|
||||
| 文件 | 说明 |
|
||||
|---|---|
|
||||
| `oucmeeting.sty` | 版式包(页面、字体、表格环境 + 全部合并规则) |
|
||||
| `会议预算表.tex` | 空表正文(只有内容,无任何 `\SetCell`) |
|
||||
| `README.md` | 本文件 |
|
||||
|
||||
## 版式参数(实测)
|
||||
|
||||
```
|
||||
页面 A4 210 × 297 mm
|
||||
边距 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
|
||||
```
|
||||
|
||||
四个边距都不常见,是原表为把 28 行塞进一页压出来的。照抄,不"优化"。
|
||||
| `会议预算表.tex` | 主文件,填内容改这里 |
|
||||
| `oucmeeting.sty` | 版式包,一般不改 |
|
||||
|
||||
## 表格结构
|
||||
|
||||
7 列基准网格,原 docx 的 `tblGrid` 是
|
||||
`[424, 2054, 790, 1262, 2056, 209, 2793]` twips = 169.12mm,
|
||||
比分宽出版心 13.12mm(原文件靠 fixed 布局硬撑、压进页边距)。
|
||||
28 行 × 7 列,分四段:
|
||||
|
||||
→ 本模板等比缩到版心内,列宽
|
||||
`[7.48, 36.23, 13.93, 22.26, 36.27, 3.69, 49.27] × 0.9224`。
|
||||
|
||||
28 行合并结构:
|
||||
|
||||
| 行 | 内容 | 跨度 |
|
||||
| 区段 | 行 | 内容 |
|
||||
|---|---|---|
|
||||
| 1 | 会议名称 | 2+5 |
|
||||
| 2 | 会议时间 / 会议地点 | 2+2+2+1 |
|
||||
| 3 | 会议类型(三选一) | 2+5 |
|
||||
| 4 | 参会人数 | 2+5 |
|
||||
| 5 | 会议支出项目卡号 | 2+5 |
|
||||
| 6 | 会议内容 | 2+5 |
|
||||
| 7 | **会议收入预算**(分节) | 跨 7 |
|
||||
| 8 | 收入项目 / 经费卡号 / 金额 / 备注 | 2+2+2+1 |
|
||||
| 9~13 | 会务费收入 / 科研经费 / 财政拨款专项 / 学校预算 / 其他 | 2+2+2+1 |
|
||||
| 14 | 合计 | 2+2+2+1 |
|
||||
| 15 | **会议支出预算**(分节) | 跨 7 |
|
||||
| 16 | 支出项目 / 预算金额 / 实际支出 | 3+2+2 |
|
||||
| 17~20 | 专家咨询费 / 城市间交通费 / 住宿费 / 伙食费 | 3+2+2 |
|
||||
| 21~25 | **其他费用**(竖排)+ 交通费 / 印刷费 / 会议室 / 补助 / 其他 | 1+2+2+2 |
|
||||
| 26 | 合计 | 3+2+2 |
|
||||
| 27 | 意见栏(**独立签字表**,不在主表内) | 3+4 |
|
||||
| 28 | 签字栏(同上) | 3+4 |
|
||||
| 基本信息 | 1–6 | 会议名称、时间、地点、类型、参会人数、支出项目卡号、会议内容 |
|
||||
| 收入预算 | 7–14 | 会务费收入、科研经费、财政拨款专项、学校预算经费、其他、合计 |
|
||||
| 支出预算 | 15–26 | 专家咨询费、交通费、住宿费、伙食费、其他费用(交通费/印刷费/会议室/补助/其他)、合计 |
|
||||
| 意见签字 | 27–28 | 经费负责人意见、所在单位负责人意见、签字盖章 |
|
||||
|
||||
### ⚠️ 签字栏为什么是独立的表
|
||||
## 填写方式
|
||||
|
||||
R27/R28(意见 + 签字)放在主表里**无论怎么写都会出问题**,四种组合全实测过:
|
||||
这是**空表模板**,金额、卡号、日期、人名一律留空,打印后手填。
|
||||
|
||||
| 内容段数 | cell 声明 | 结果 |
|
||||
|---|---|---|
|
||||
| 8 段 | `cell{27}{4}={c=4}` | 右侧多一列(9 条竖线)❌ |
|
||||
| 7 段 | `cell{27}{4}={c=4}` | 右侧多一列(9 条竖线)❌ |
|
||||
| 2 段 | `cell{27}{4}={c=4}` | 列数对,但第 2 段被合并盖住,内容消失 ❌ |
|
||||
| 2 段 | `cell{27}{2}={c=6}` | 网格散架(3 页、横线全无)❌ |
|
||||
|
||||
根因是 tabularray 2022A 对「跨整行大合并」处理不稳定,要求
|
||||
「内容段数 / cell 起始列 / 跨度」三者严格自洽,在固定列宽 + colsep
|
||||
的组合下很难同时满足。
|
||||
|
||||
⇒ 改成**物理隔离**:主表只到 R26「合计」(26 行),签字栏用独立的
|
||||
`oucmeetsign` 环境紧贴下方。视觉上是同一张表(边框对接、列宽按主表
|
||||
3:4 分界配平),排版上互不干扰。
|
||||
|
||||
签字表列宽算法(必须按主表实际竖线位置反推,不能自己估):
|
||||
```
|
||||
主表竖线 79.65 ~ 514.31 = 153.34mm,3:4 分界在 231.89 -> 距左 53.71mm
|
||||
签字表 2 列:wd = 53.71-2 = 51.71mm / 153.34-53.71-2 = 97.63mm
|
||||
```
|
||||
|
||||
## ⚠️ 三个必须知道的坑
|
||||
|
||||
### 1. 合并单元格必须用矩阵式语法,不能用 `\SetCell`
|
||||
|
||||
在本表的 7 列 `Q[c,m,wd=…]` + `colsep=1.0mm` 配置下,
|
||||
一旦在单元格内容里写 `\SetCell[c=n]`,编译立刻报:
|
||||
|
||||
```
|
||||
! Missing number, treated as zero.
|
||||
! Illegal unit of measure (pt inserted.)
|
||||
\__dim_eval_end:
|
||||
```
|
||||
|
||||
**所有错误都定位到 `\end{tblr}`**,完全看不出是哪个格。最小复现:
|
||||
要电子填写,在 `.tex` 正文里往对应位置补内容即可。比如会议名称:
|
||||
|
||||
```latex
|
||||
\begin{tblr}{colspec={Q[c,m,wd=21mm] ...共7列..., colsep=0.8mm}}
|
||||
\SetCell[c=2]{c} A & \SetCell[c=5]{l} B \\
|
||||
\end{tblr} % 必崩
|
||||
会议名称 & 软件需求工程教学研讨会 & & & & & \\
|
||||
```
|
||||
|
||||
✅ 正确写法 —— 在 tblr 选项里用 `cell{行}{列}={c=n}{对齐}`:
|
||||
### 页首信息
|
||||
|
||||
```latex
|
||||
\begin{tblr}{
|
||||
colspec={...},
|
||||
cell{1}{1}={c=2}{c},
|
||||
cell{1}{3}={c=5}{l},
|
||||
}
|
||||
A & & B & & & & \\ % 被合并掉的格留空
|
||||
\end{tblr}
|
||||
\oucmeetattach{附件 1} % 左上角附件编号,不要则写 \oucmeetattach{}
|
||||
\oucmeettitle{中国海洋大学会议预算表} % 标题
|
||||
\oucmeetdateline{填表日期:... 金额单位:...} % 标题下方一行
|
||||
```
|
||||
|
||||
被合并掉的格**留空**(写 `& &`),不要写 `{}`。
|
||||
### 表尾说明
|
||||
|
||||
好处:合并关系与内容彻底分离,改内容不会破坏结构。
|
||||
|
||||
### 2. `\SetCell[r=n]` 与 `\SetCell[c=m]` 不能在同一行
|
||||
|
||||
纵向合并和横向合并同时出现,报同样那串错。
|
||||
本表因此全部改用 `cell{}` 矩阵语法(含纵向合并 `cell{21}{1}={r=5}{c}`)。
|
||||
|
||||
「其他费用」用 `\shortstack{其\\[4bp]他\\[4bp]费\\[4bp]用}` 逐字竖排,
|
||||
**不是** `\rotatebox{90}` 旋转——旋转只是把横排整句转个角度,
|
||||
不是"上下排列"。
|
||||
|
||||
#### 字距必须卡准,否则字会贴格线
|
||||
|
||||
合并格高 81.9bp,四字的文字块高度随字距变化(实测数据):
|
||||
|
||||
| 字距 | 文字块高 | 上下留白 | 观感 |
|
||||
|---|---|---|---|
|
||||
| `\\[17bp]` | 94bp | 2.5bp | ❌ 比格还高,字和表格线连成一片 |
|
||||
| `\\[8bp]` | 67bp | 7.4bp | ⚠️ 偏挤 |
|
||||
| **`\\[4bp]`** | **56bp** | **13.4bp** | ✅ 采用 |
|
||||
| 不加参数 | 43bp | 19bp | ⚠️ 字挤成一小团,看不出竖排 |
|
||||
|
||||
⚠️ 拉字距不能用局部 `\baselineskip`——`\shortstack` 内部会重置它,
|
||||
实测设 19bp 完全无效(字距仍是 11.6bp)。必须在 `\\` 上给可选参数。
|
||||
⚠️ 也不能用 `\parbox{}{其\\他\\费\\用}`——那会变成 4 个独立行盒子,
|
||||
tabularray 排版错乱,四个字跑到不同段落。
|
||||
|
||||
### 3. colspec / hline / vline / ht 的参数不能用宏
|
||||
|
||||
tabularray 用自带的展开器解析这些选项,遇到用户宏直接报
|
||||
`! Undefined control sequence.`。全部写字面值。
|
||||
|
||||
## 页高预算(重要)
|
||||
|
||||
28 行 × 行高 + 标题区 + 说明,必须 ≤ 223.98mm:
|
||||
|
||||
```
|
||||
28 × 5.6mm = 156.8mm
|
||||
标题区(附件1 + 22pt 标题 + 日期行)≈ 30mm
|
||||
说明 3 条(其中第 2 条两行)≈ 35mm
|
||||
合计 ≈ 222mm ✅ 刚好放进一页
|
||||
```latex
|
||||
\begin{oucmeetnotes}
|
||||
\oucmeetnote{1、}{说明内容}
|
||||
\oucmeetnote{2、}{说明内容}
|
||||
\end{oucmeetnotes}
|
||||
```
|
||||
|
||||
⚠️ 行高 5.6mm 是**下限附近**。若把行高改回 6.0mm,28 行多出 11.2mm,
|
||||
第 3 条说明就会被挤到第 2 页。改行高前先算这笔账。
|
||||
条目数可增减,「1、」「2、」写在第一个参数里。
|
||||
|
||||
## 验证
|
||||
## 表格内改内容
|
||||
|
||||
```
|
||||
1 页 error 0 Overfull 0 Underfull 0
|
||||
表格 155.52mm,版心 155.99mm → 在界内
|
||||
内容 50 项逐项核对,全部存在
|
||||
双端一致:WSL TeX Live 2025 / Windows TeX Live 2022
|
||||
正文里每行对应表格一行,用 `&` 分列。**每行必须写满 7 段(6 个 `&`)**,
|
||||
被合并掉的格子留空:
|
||||
|
||||
```latex
|
||||
会议时间 & & & & 会议地点 & & \\
|
||||
```
|
||||
|
||||
## 说明
|
||||
合并关系在 `oucmeeting.sty` 的 `cell{行}{列}={c=跨度}{对齐}` 里声明。
|
||||
改列宽或改结构时看那里。
|
||||
|
||||
这是**空表**。金额、卡号、日期、人名一律留空,供下载后手填或转 Word 填写。
|
||||
不含任何真实数据。
|
||||
### 「其他费用」竖排
|
||||
|
||||
四个字竖排、跨 5 行。字距在正文里控制:
|
||||
|
||||
```latex
|
||||
\shortstack{其\\[4bp]他\\[4bp]费\\[4bp]用}
|
||||
```
|
||||
|
||||
数值调大则字距拉开、字块变高。格高约 82bp,`4bp` 时上下各留 13bp。
|
||||
|
||||
## 版式
|
||||
|
||||
```
|
||||
A4,边距 上 38.01 / 下 35.01 / 左 28.01 / 右 26.00 mm
|
||||
正文 9pt,标题 22pt
|
||||
表格 28 行 × 7 列,边框 0.5pt,行高 5.6mm
|
||||
```
|
||||
|
||||
行高会影响总高度。5.6mm 时刚好一页;改到 6.0mm 会把表尾说明挤到第二页。
|
||||
Reference in New Issue
Block a user