Files
ouc_latex_template/会议预算表/会议预算表.tex
T
laoyang f42e6e398a 会议预算表:修正四处排版问题 #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
2026-10-30 20:11:50 +08:00

157 lines
7.9 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
%======================================================================
% 中国海洋大学会议预算表(空表模板)
%
% 用途:演示 oucmeeting.sty 的用法,并作为可直接印刷使用的空表。
%
% 编译: xelatex 会议预算表.tex (单次即可)
%
% ⚠️ 这是**空表**。金额、卡号、日期、人名一律留空,供手填。
%
% ⚠️⚠️ 本文件的表格**只写内容,不写任何 \SetCell**。
% 所有合并规则都在 oucmeeting.sty 的 oucmeettable 环境里,
% 用 cell{行}{列}={c=n}{对齐} 矩阵式声明。
% 原因(踩了两小时):在这套 7 列 Q[c,m,wd=…] + colsep 配置下,
% 一写 \SetCell 就报一串 Missing number,且错误全指向 \end{tblr}。
% 详见 sty 第 4 节的记录。
%
% ⚠️ 被合并掉的格在内容里**留空**(写 `& &`),不要写 {}。
%
% 28 行的合并结构(行号 = 表格第几行,从 1 起):
% R1 会议名称 2+5
% R2 会议时间/地点 2+2+2+1
% R3 会议类型 2+5
% R4 参会人数 2+5
% R5 支出项目卡号 2+5
% R6 会议内容 2+5
% R7 会议收入预算 跨 7 列
% R8 收入表头 2+2+2+1
% R9 会务费收入 2+2+2+1
% R10 科研经费 2+2+2+1
% R11 财政拨款专项 2+2+2+1
% R12 学校预算经费 2+2+2+1
% R13 其他 2+2+2+1
% R14 合计 2+2+2+1
% R15 会议支出预算 跨 7 列
% R16 支出表头 3+2+2
% R17 专家咨询费 3+2+2
% R18 城市间交通费 3+2+2
% R19 住宿费 3+2+2
% R20 伙食费 3+2+2
% R21 其他费用/交通费 1+2+2+2
% R22 会议资料印刷费 1+2+2+2
% R23 会议室使用费 1+2+2+2
% R24 工作人员补助 1+2+2+2
% R25 其他 1+2+2+2
% R26 合计 3+2+2
% R27 意见栏 3+4
% R28 签字栏 3+4
%======================================================================
\documentclass[UTF8]{ctexart}
\usepackage{oucmeeting}
\begin{document}
\oucmeetattach{附件 1}
\oucmeettitle{中国海洋大学会议预算表}
\oucmeetdateline{填表日期:\hspace*{4em}年\hspace*{2em}月\hspace*{2em}日%
\hfill 金额单位:\hspace*{3em}元}
\begin{oucmeettable}
% ---- R1~R6 基本信息 ----
%
% ⚠️⚠️ 每行必须写满 7 段(6 个 `&`),被 cell{} 合并掉的格**留空**。
% 实测(最小复现):同样的 cell{} 配置下
% 写 7 段 `甲 & & 乙 & & 丙 & & 丁` → 四个字全部正确
% 写 4 段 `甲 & 乙 & 丙 & 丁` → **乙、丁 被吞掉**
% ⇒ 段数 ≠ 列数时,多出来的内容会静默丢失,不报错。
%
% ⚠️ 标签落在哪一格,取决于 cell{} 的合并位置,不是"第几个字":
% R2 的 cell 配置是 2+2+2+1,即
% 格1(列1-2)=会议时间 格3(列3-4)=空值 格5(列5-6)=会议地点 格7(列7)=空值
% 所以「会议地点」必须写在**第 5 段**,写在第 3 段就会挤到左边、
% 与「会议时间」贴在一起(踩过)。
会议名称 & & & & & & \\
会议时间 & & & & 会议地点 & & \\
% ⚠️ R3/R4 的填空横线用 \hspace 撑,宽度必须控制。
% 跨 5 列约 122mm,三个选项各带一对(\hspace{3em})就要 6×3em=18em
% 再加文字,实测撑到 529.7bp(版心止于 521.57),超 8bp。
% ⇒ 单个填空收到 2.2em(约 7mm,手写两三个字够用)。
会议类型 & & 国内业务会议(\hspace*{2.2em})\hspace*{1em}%
国内管理会议(\hspace*{2.2em})\hspace*{1em}%
在华举办国际会议(\hspace*{2.2em}) & & & & \\
参会人数 & & 总数\hspace*{2.2em}人\hspace*{1em}%
(其中参会代表\hspace*{2.2em}人;工作人员\hspace*{2.2em}人;%
外宾\hspace*{2.2em}人) & & & & \\
会议支出项目卡号 & & & & & & \\
会议内容 & & & & & & \\
% ---- R7~R14 收入预算 ----
\bfseries 会议收入预算 & & & & & & \\
收入项目 & & 项目经费卡号 & & 金额 & & 备注 \\
会务费收入 & & & & & & 每人\hspace*{2.5em}元 \\
科研经费 & & & & & & \\
财政拨款会议专项经费 & & & & & & \\
学校预算经费 & & & & & & \\
其他 & & & & & & \\
合计 & & & & & & \\
% ---- R15~R26 支出预算 ----
\bfseries 会议支出预算 & & & & & & \\
支出项目 & & & 预算金额 & & 实际支出金额(由财务处填写) & \\
专家咨询费(含讲课及评审费) & & & & & & \\
专家城市间交通费 & & & & & & \\
住宿费 & & & & & & \\
伙食费 & & & & & & \\
% R21~R25:「其他费用」**逐字竖排**,占 5 行高(不是旋转 90°)
% 纵向合并由 sty 里的 cell{21}{1}={r=5}{c} 声明,
% 这里用 \shortstack 让四个字上下堆叠。
% ⚠️ 不能用 \rotatebox{90}:那只是把横排整句转个角度,
% 不是"上下排列"(#24 按用户意见修正)。
% ⚠️ \shortstack 里的 \\ 是**普通换行**,tabularray 在 cell{} 语法下
% 不会把它误当行结束(旧版 \SetCell 语法下会崩,那是另一个坑)。
%
% ★ 字距按 5 行高(约 82bp)拉开:四字之间有 3 个间隔,
% 基础行距 12bp + \\[17bp] ≈ 29bp/字,总高约 87bp,正好填满格高。
% 做法:给 \\ 加可选参数显式指定额外行距。
% ⚠️ 不能靠局部设 \baselineskip —— \shortstack 内部会重置它,
% 实测设 19bp 无效(字距仍是 11.6bp)。
% ⚠️ 也不能用 \parbox{}{其\\他\\费\\用} —— 那会变成 4 个独立行盒子,
% tabularray 排版错乱(实测四个字跑到不同 y 段落)。
\shortstack{其\\[17bp]他\\[17bp]费\\[17bp]用} & 交通费 & & & & & \\
& 会议资料印刷费 & & & & & \\
& 会议室使用费 & & & & & \\
& 工作人员补助 & & & & & \\
& 其他 & & & & & \\
合计 & & & & & & \\
% R27~R28 意见与签字(跨 3+4)
% ⚠️⚠️ 这里的 \hspace 会把**单元格撑宽,进而把表格右边框推出纸外**,
% 而且文字本身仍在版心内 —— 所以逐 span 查文字查不出来,
% 只有查竖线坐标才能发现(实测最右竖线跑到 526.40,版心止于 521.57)。
% 实测数据:\hspace*{7em} → 超 4.83bp;4.5em → 仍超 4.83bp(跨列宽度已定死,
% hspace 只是让内容溢出单元格,不改列宽)。
% ⇒ 该单元格内容必须能在一行内放下。「(签字) (盖章)」共 9 个全角字符
% ≈ 9×9bp = 81bp,跨 4 列约 96mm = 272bp,够放,只要 hspace 不太大。
% 给 3em(约 9.5mm)即可,手写签名空间足够。
%
% ⚠️ 关于「校级领导意见」:源 .doc 的 R26 第二格里确实有**两个段落** ——
% 「所在单位负责人意见:」和「校级领导意见:」,不是转换时多出来的
% (用 LibreOffice 直接转 txt 核过,原文件就有)。
% 但用户确认这份表不需要校级领导,故按用户意见删除。
% ⚠️ 要恢复就把它加回来,且必须单独一行(源文件是两段,不是一行):
% 所在单位负责人意见:\\ 校级领导意见:
经费(项目)负责人意见: & & & 所在单位负责人意见: & & & & \\
\hfill(签字) & & & (签字)\hspace*{3em}(盖章) & & & & \\
\end{oucmeettable}
\begin{oucmeetnotes}
\oucmeetnote{1、}{会议借款和报销应按会议预算执行,如突破预算总额,须按原程序审批;}
\oucmeetnote{2、}{收取会务费时按要求给会议代表开具发票,收取的会务费及发票存根和记账联统一交财务处入账,不得坐支现金;}
\oucmeetnote{3、}{会议费开支实行定额控制,标准参照《中国海洋大学会议费管理办法》。}
\end{oucmeetnotes}
\end{document}