会议预算表:修正四处排版问题 #24
用户反馈四点,逐条修。
## ① 会议时间与会议地点位置错乱
**现象**:两个字挤在一起,中间没有留填写区。
**根因**:tabularray 的 cell{} 合并位置决定标签落在哪一格,
不是"第几个字"。R2 的合并是 2+2+2+1,即
格1(列1-2)=会议时间 格3(列3-4)=空值
格5(列5-6)=会议地点 格7(列7)=空值
「会议地点」必须写在第 5 段,我原先写在第 3 段。
**顺带查清 tabularray 的一个静默失败**(最小复现):
写 7 段 `甲 & & 乙 & & 丙 & & 丁` → 四个字全对
写 4 段 `甲 & 乙 & 丙 & 丁` → **乙、丁 被吞掉,不报错**
⇒ 段数必须等于列数,被合并的格留空。
**修正**:`会议时间 & & & & 会议地点 & & \\`
实测:会议时间 x=118.6(列1-2),会议地点 x=324.1(列5-6),
中间 193~289 是填写区。
## ② 其他费用应为竖排,不是旋转 90°
**根因**:`\rotatebox{90}` 只是把横排整句转个角度,
不是"上下排列"。用户要的是逐字竖着叠。
**修正**:改 `\shortstack{其\\[17bp]他\\[17bp]费\\[17bp]用}`,
并用 `cell{21}{1}={r=5}{c}` 做纵向合并 5 行。
实测:格高 82bp(y 517.9~611.7),四字 y=517.7/546.4/574.6/602.9,
字距 28.7bp,基本填满。
⚠️ 拉字距**不能**用局部 `\baselineskip` —— `\shortstack` 内部会重置它,
实测设 19bp 完全无效(字距仍是 11.6bp)。必须在 `\\` 上给可选参数。
⚠️ 也**不能**用 `\parbox{}{其\\他\\费\\用}` —— 会变成 4 个独立行盒子,
tabularray 排版错乱,四个字跑到不同段落(实测)。
⚠️ 之前认为「纵向合并和横向合并不能共存」,那是因为写在内容里用
`\SetCell[r=n]`;改用 cell{} 矩阵语法后**可以共存**,本条即证据。
第 2 节的说法已相应更正。
## ③ 校级领导意见是多余的
**先核实**:源 .doc 的 R26 第二格里**确实有两个段落**——
「所在单位负责人意见:」和「校级领导意见:」。
用 LibreOffice 直接转 txt 核过,原文件就有,不是转换时多出来的。
**但用户确认这份表不需要校级领导,故删除。**
代码里注明了原文件有两个段落,要恢复时加回来且必须单独一行。
## 顺带
去掉 `\RequirePackage{graphicx}` —— 不再用 \rotatebox,减少一个依赖。
## 验证
1 页 error 0 Overfull 0 Underfull 0
表格 155.52mm / 版心 155.99mm 界内
最右 521.58(版心止 521.57) 最下 722.27(版心底 742.65)
校级领导意见 出现 0 次
会议时间/会议地点 相距 205bp 中间留空
全库 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:
+11
-2
@@ -16,7 +16,8 @@
|
||||
\RequirePackage{fontspec}
|
||||
\RequirePackage{xeCJK}
|
||||
\RequirePackage{tabularray}
|
||||
\RequirePackage{graphicx} % \rotatebox —— 「其他费用」竖排用
|
||||
% 注:不再需要 graphicx。早期版本用 \rotatebox 做「其他费用」竖排,
|
||||
% 现已改为 \shortstack 逐字竖排(#24 按用户意见修正),不再依赖 graphicx。
|
||||
|
||||
%======================================================================
|
||||
% 1. 页面
|
||||
@@ -175,7 +176,15 @@
|
||||
cell{18}{1}={c=3}{l}, cell{18}{4}={c=2}{l}, cell{18}{6}={c=2}{l},
|
||||
cell{19}{1}={c=3}{l}, cell{19}{4}={c=2}{l}, cell{19}{6}={c=2}{l},
|
||||
cell{20}{1}={c=3}{l}, cell{20}{4}={c=2}{l}, cell{20}{6}={c=2}{l},
|
||||
% R21~R25 其他费用区(1+2+2+2),第 1 列竖排文字、下面 4 行留空
|
||||
% R21~R25 其他费用区(1+2+2+2)
|
||||
% ★ 「其他费用」纵向合并 5 行,文字逐字竖排(不是旋转 90°)
|
||||
% 写法:cell{21}{1}={r=5}{c} 声明纵向合并,
|
||||
% 内容用 \shortstack{其\\他\\费\\用} 逐字堆叠。
|
||||
% ⚠️ 不能用 \rotatebox{90} —— 那只是把整行文字旋转,
|
||||
% 仍然是"横向一句转个角度",不是你要的上下排列(#24 修正)。
|
||||
% ⚠️ 纵向合并也必须用 cell{} 矩阵语法。写成 \SetCell[r=5] 在
|
||||
% 内容里,会与同行的 \SetCell[c=n] 冲突报 Missing number。
|
||||
cell{21}{1}={r=5}{c},
|
||||
cell{21}{2}={c=2}{l}, cell{21}{4}={c=2}{l}, cell{21}{6}={c=2}{l},
|
||||
cell{22}{2}={c=2}{l}, cell{22}{4}={c=2}{l}, cell{22}{6}={c=2}{l},
|
||||
cell{23}{2}={c=2}{l}, cell{23}{4}={c=2}{l}, cell{23}{6}={c=2}{l},
|
||||
|
||||
Reference in New Issue
Block a user