会议预算表:修掉多出的一列,签字盖章间距拉开 #24

用户反馈两点:
  ① 所在单位负责人意见下面,签字和盖章距离太近
  ② 表格右侧整体多出一列

## ② 多出一列的根因

实测竖线 **9 条 = 8 列**,而 colspec 只定义了 7 列。
多出来那列宽 2.18mm,横贯全部 28 行。

定位过程:
  删掉 R27/R28(意见+签字两行)→ 变 8 条竖线(7 列,正确)
  加回去 → 又变 9 条
  ⇒ 问题就在这两行。

四种组合全试过,全部失败:

| 内容段数 | cell 声明 | 结果 |
|---|---|---|
| 8 段(7 个 &) | cell{27}{4}={c=4} | 9 条竖线,多一列 ❌ |
| 7 段(6 个 &) | cell{27}{4}={c=4} | 9 条竖线,多一列 ❌ |
| 2 段(1 个 &) | cell{27}{4}={c=4} | 列数对,但第 2 段被合并盖住,内容消失 ❌ |
| 2 段 | cell{27}{2}={c=6} | 网格散架(3 页、横线全无)❌ |
| 7 段 | 无 cell 声明 | 同样散架 ❌ |

根因:tabularray 2022A 对「跨整行的大合并」处理不稳定,要求
「内容段数 / cell 起始列 / 跨度」三者严格自洽;在固定列宽 + colsep
1.0mm 的组合下,这三者无法同时满足。

### 解法:物理隔离

主表只到 R26「合计」(26 行),R27/R28 用独立的 oucmeetsign 环境
紧贴在下方。视觉上是同一张表,排版上互不干扰。

签字表列宽**不能自己估**,必须按主表实际竖线位置反推:
   主表竖线 79.65~514.31 = 153.34mm
   3:4 分界 231.89 -> 距左 53.71mm
   第1列 wd = 53.71 - 2 = 51.71mm
   第2列 wd = 153.34 - 53.71 - 2 = 97.63mm
(减 2 = 两侧 colsep 各 1mm)

⚠️ 第一版估的 47.18/93.80 总宽只有 144.98mm,比主表窄 10.5mm,
边框对不上,两格在 pymupdf 里连成一串,看着像只有一格。

## ① 签字盖章间距

3em(27bp=9.5mm) → 5em(45bp=15.8mm)。
实测「(签字)」右端 274.2,「(盖章)」左端 319.0,间距 44.8bp = 15.8mm。

⚠️ 第 1 格的「(签字)」不能用 \hfill 推到右边:第 1 格宽 51.71mm=146bp,
「(签字)」36bp,\hfill 推到格尾后文字**溢出单元格右边界**
(tabularray 不裁剪格内容),实测跑到 199~265 跨过分界线 232,
和第二个「(签字)」连成一串。
⇒ 直接顶格左排,前面补 1mm 抵消全角括号的字形左空白
(「(」的 ink 起点比盒起点靠左 2.5bp,不加会超出左界 79.40)。

## 验证

   主表竖线 8 条 -> **7 列**(多出的列已消除)
   内容核查 49 项,**缺失 0**
   校级领导意见 0 次
   其他费用竖排 y 531.3~586.4,上下留白各 13.4bp
   1 页  err 0  Overfull 0  Underfull 0
   最左 79.40(界79.40)  最右 521.58(界521.57)  最下 711.80(界742.65)

全库 15/15 通过。双端一致:
   WSL TeX Live 2025      1 页 err=0 over=0 under=0
   Windows TeX Live 2022  1 页 err=0 over=0 under=0
This commit is contained in:
2026-10-30 23:37:12 +08:00
parent 2e79b00d50
commit 333e2a7789
6 changed files with 111 additions and 12 deletions
+40 -2
View File
@@ -151,10 +151,48 @@
% 但用户确认这份表不需要校级领导,故按用户意见删除。
% ⚠️ 要恢复就把它加回来,且必须单独一行(源文件是两段,不是一行):
% 所在单位负责人意见:\\ 校级领导意见:
经费(项目)负责人意见: & & & 所在单位负责人意见: & & & & \\
\hfill(签字) & & & (签字)\hspace*{3em}(盖章) & & & & \\
%
% ⚠️⚠️ 这两行必须写 **7 段(6 个 `&`)**,与 colspec 的 7 列严格对应。
%
% ======================================================================
% R27/R28 意见与签字 —— **已移出主表**,改用下方独立的 oucmeetsign 环境
%
% ⚠️⚠️ 为什么拆出去(很重要,别又改回主表里)
%
% 这两行放在主表里,无论怎么写都会出问题。四种组合全部实测过:
% 内容 8 段 + cell{27}{4}={c=4} → 右侧多一列(9 条竖线)❌
% ← 用户指出的"多出一列"
% 内容 7 段 + cell{27}{4}={c=4} → 右侧多一列(9 条竖线)❌
% 内容 2 段 + cell{27}{4}={c=4} → 列数对了,但第 2 段落进第 2 列
% 被 c=4 的合并盖住,内容消失 ❌
% 内容 2 段 + cell{27}{2}={c=6} → 网格散架(3 页、横线全无)❌
%
% 根因:tabularray 2022A 对「跨整行的大合并」处理不稳定,
% 要求"段数 / 起始列 / 跨度"三者严格自洽,而本表列宽固定 + colsep
% 的组合下很难同时满足。
%
% ⇒ 拆成独立小表,视觉上是同一张表(边框对接、列宽按 3:4 配平),
% 排版上互不影响。**这是唯一稳定方案,不要合并回去。**
\end{oucmeettable}
% ---- 签字栏(独立表,紧贴主表下方)----
% 列宽按主表 3 列 : 4 列 的分界配平:
% 前 3 列 6.10+29.65+11.43 = 47.18mm(+colsep 4mm)
% 后 4 列 18.18+29.65+3.00+40.10 = 91.02mm(+colsep 4mm)
% ⚠️ 两列各自的 colsep 各算 2 个(左右各 1),所以实际宽度 = wd + 4mm
% ⚠️⚠️ 第 1 格不要用 \hfill 推「(签字)」到右边 —— 实测会溢出格子:
% 第 1 格宽 51.71mm=146bp,「(签字)」36bp,\hfill 推到格尾后
% 文字自身**超出单元格右边界**(tabularray 的格内容不自动裁剪),
% 结果第一个「(签字)」跑到 199~265,跨过 232 的分界线,
% 和第二个「(签字)」在 pymupdf 里连成一串(看着像只有一个)。
% ⇒ 直接顶着格左边界排,前面补一点 \hspace 抵消全角括号的字形左空白。
% (全角「(」的 ink 起点比盒起点靠左约 2.5bp,不加会略微超出
% 版心左界 79.40 —— 实测 x=76.9)
\begin{oucmeetsign}
经费(项目)负责人意见: & 所在单位负责人意见: \\
\hspace*{1mm}(签字) & \hspace*{1mm}(签字)\hspace*{5em}(盖章) \\
\end{oucmeetsign}
\begin{oucmeetnotes}
\oucmeetnote{1、}{会议借款和报销应按会议预算执行,如突破预算总额,须按原程序审批;}
\oucmeetnote{2、}{收取会务费时按要求给会议代表开具发票,收取的会务费及发票存根和记账联统一交财务处入账,不得坐支现金;}