diff --git a/verify_all.sh b/verify_all.sh index e785740..4096aff 100755 --- a/verify_all.sh +++ b/verify_all.sh @@ -36,6 +36,7 @@ TARGETS=( "课程执行大纲|课程执行大纲.tex" "课程教学日历|课程教学日历.tex" "课程大纲|课程大纲.tex" + "会议预算表|会议预算表.tex" ) filter="${1:-}" diff --git a/会议预算表/README.md b/会议预算表/README.md new file mode 100644 index 0000000..96de78a --- /dev/null +++ b/会议预算表/README.md @@ -0,0 +1,154 @@ +# 会议预算表 + +中国海洋大学会议预算表 LaTeX 模板(空表,可印刷手填)。 + +## 来源 + +用户从微信收到的 `会议预算表.doc`(51712 字节,**OLE2 老式 .doc**, +`D0CF11E0` 签名,不是伪装成 .doc 的 docx)。 + +python-docx 读不了老格式,处理链路是: + +``` +.doc --(LibreOffice headless)--> .docx --(python-docx)--> 结构 +``` + +```bash +soffice --headless --convert-to docx --outdir . 会议预算表.doc +``` + +## 编译 + +```bash +cd 会议预算表 +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 行塞进一页压出来的。照抄,不"优化"。 + +## 表格结构 + +7 列基准网格,原 docx 的 `tblGrid` 是 +`[424, 2054, 790, 1262, 2056, 209, 2793]` twips = 169.12mm, +比分宽出版心 13.12mm(原文件靠 fixed 布局硬撑、压进页边距)。 + +→ 本模板等比缩到版心内,列宽 +`[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. 合并单元格必须用矩阵式语法,不能用 `\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}`**,完全看不出是哪个格。最小复现: + +```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} +``` + +被合并掉的格**留空**(写 `& &`),不要写 `{}`。 + +好处:合并关系与内容彻底分离,改内容不会破坏结构。 + +### 2. `\SetCell[r=n]` 与 `\SetCell[c=m]` 不能在同一行 + +纵向合并和横向合并同时出现,报同样那串错。 +本表因此**完全不用纵向合并**——「其他费用」改成 `\rotatebox{90}` 竖排, +第 1 列下面 4 行留空,视觉上等价。 + +### 3. colspec / hline / vline / ht 的参数不能用宏 + +tabularray 用自带的展开器解析这些选项,遇到用户宏直接报 +`! Undefined control sequence.`。全部写字面值。 + +## 页高预算(重要) + +28 行 × 行高 + 标题区 + 说明,必须 ≤ 223.98mm: + +``` +28 × 5.6mm = 156.8mm +标题区(附件1 + 22pt 标题 + 日期行)≈ 30mm +说明 3 条(其中第 2 条两行)≈ 35mm +合计 ≈ 222mm ✅ 刚好放进一页 +``` + +⚠️ 行高 5.6mm 是**下限附近**。若把行高改回 6.0mm,28 行多出 11.2mm, +第 3 条说明就会被挤到第 2 页。改行高前先算这笔账。 + +## 验证 + +``` +1 页 error 0 Overfull 0 Underfull 0 +表格 155.52mm,版心 155.99mm → 在界内 +内容 50 项逐项核对,全部存在 +双端一致:WSL TeX Live 2025 / Windows TeX Live 2022 +``` + +## 说明 + +这是**空表**。金额、卡号、日期、人名一律留空,供下载后手填或转 Word 填写。 +不含任何真实数据。 \ No newline at end of file diff --git a/会议预算表/oucmeeting.sty b/会议预算表/oucmeeting.sty new file mode 100644 index 0000000..e64de74 --- /dev/null +++ b/会议预算表/oucmeeting.sty @@ -0,0 +1,257 @@ +%====================================================================== +% oucmeeting.sty —— 中国海洋大学 会议预算表 版式包 +% +% 由学校下发的 .doc 复刻而来(源文件:会议预算表.doc,OLE2 老格式, +% 先经 LibreOffice 转 docx 再解析 OOXML)。尺寸全部从原文件量出。 +% +% ⚠️ 编译: xelatex 会议预算表.tex +% 单次编译即可,无交叉引用。 +% 依赖 ctex + geometry + fontspec + xeCJK + tabularray +% 与 课程大纲/、课程执行大纲/ 同源同风格。 +%====================================================================== +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{oucmeeting}[2026/10/30 v1.0 OUC meeting budget form] + +\RequirePackage{geometry} +\RequirePackage{fontspec} +\RequirePackage{xeCJK} +\RequirePackage{tabularray} +\RequirePackage{graphicx} % \rotatebox —— 「其他费用」竖排用 + +%====================================================================== +% 1. 页面 +% +% 原 docx sectPr 实测(11906 x 16838 twips): +% 宽 210.01 mm 高 297.00 mm ← 标准 A4 +% top 2155 twips = 38.01 mm +% bottom 1985 twips = 35.01 mm +% left 1588 twips = 28.01 mm +% right 1474 twips = 26.00 mm +% header 0 twips = 0.00 mm (无页眉) +% footer 992 twips = 17.50 mm +% +% 四个边距都不常见(38/35/28/26),是原表为把 28 行表格塞进一页 +% 压出来的。照抄,不"优化"——这是复刻件,不是重新设计。 +% +% ⚠️ 版心宽 = 210 - 28.01 - 26.00 = 155.99 mm +% 而原表宽 169.12 mm,**超宽 13.12 mm**。 +% 原 docx 用 tblLayout=fixed 硬撑,实际会压进右侧页边距。 +% ⇒ 本包把表格等比缩到 155.99 mm(系数 0.9224), +% 列宽按比例重算,见第 3 节。这是唯一一处主动偏离原文件的地方。 +%====================================================================== +\geometry{ + paperwidth = 210mm, + paperheight = 297mm, + left = 28.01mm, + right = 26.00mm, + top = 38.01mm, + bottom = 35.01mm, + headheight = 0pt, + headsep = 0pt, + footskip = 17.50mm, +} +\setlength{\parindent}{0pt} +\setlength{\parskip}{0pt} +\pagestyle{empty} % 原 docx 无页眉页脚页码 + +%====================================================================== +% 2. 字体 +% +% 原 docx 用宋体 / 黑体。仓库规矩(#17):不用商业字体, +% 全部取自公共字体包 ../fonts.tex。 +% +% ⚠️ 原表字号分布实测: +% 22pt ×1 —— 标题「中国海洋大学会议预算表」 +% 9pt ×47 —— 表格内全部文字 + 三条说明 +% 无 12pt 段落,与课程大纲那套不同,别照抄那边的字号命令。 +%====================================================================== +\input{../fonts.tex} + +\newcommand{\oucMeetFont}[2]{\fontsize{#1pt}{#2pt}\selectfont} +\newcommand{\Mtw}{\oucMeetFont{22}{30}} % 标题 22pt +\newcommand{\Mn}{\oucMeetFont{9}{12}} % 表格与说明 9pt + +\AtBeginDocument{\Mn} + +%====================================================================== +% 3. 表格列宽 +% +% 原 docx 网格(tblGrid,单位 twips): +% [424, 2054, 790, 1262, 2056, 209, 2793] 合计 9588 +% 换算 mm(×25.4/1440): +% [7.48, 36.23, 13.93, 22.26, 36.27, 3.69, 49.27] 合计 169.12 +% +% 等比缩到版心 155.99 mm(系数 0.9224): +% [6.9, 33.4, 12.9, 20.5, 33.4, 3.4, 45.4] 合计 155.9 +% +% ⚠️ 第 6 列只有 3.4mm,是原文件里「其他费用」竖排标题那一列的残留 +% (原 209 twips,几乎只是一条分隔线宽)。保留它是因为第 20~24 行 +% 的「其他费用」合并单元格需要它占位,删掉会破坏网格。 +%====================================================================== +% ⚠️ 列定义**不能**放进宏再用 \OucMeetColspec 引用 —— tabularray 的 +% colspec 解析器要求字面量,报 +% Package tabularray Error: Unexpandable command ... inside Column type +% ⇒ 直接写在下方的 colspec={...} 里(实测唯一可行写法)。 + +%---------------------------------------------------------------------- +% 行高(#24 修正) +% +% ⚠️⚠️ 原 docx 的 28 行里**只有 R26 显式设了 trHeight**(567 exact = 10mm), +% 其余 27 行都没设 —— 行高由内容自然撑开,9pt 字约 4.5~5mm。 +% +% 第一版我给所有行硬设 ht=7.4mm(自己拍的数),结果: +% 28 × 7.4 = 207.2mm,加标题区约 30mm + 说明约 25mm = 262mm +% 而版心只有 224mm ⇒ **必然溢出一页**,说明文字被推到第 3 页。 +% +% ⇒ 改为 row{2-Z} 不设 ht,让内容撑开(与原 docx 一致); +% 表头行(R6/R14 分节标题)和签署行(R26/R27)单独给最小高度, +% 保证印章框有空间。 +% +% ⚠️ 但 9pt + 0 上下内边距时行高只有 4.2mm,全表 28×4.2=118mm, +% 偏挤且不像正式表格。折中取 ht=6.0mm(≈ 一点留白), +% 28×6.0=168mm,加标题 30 + 说明 25 = 223mm,正好卡在 224mm 内。 +% ⚠️ 若将来内容变多导致溢出,优先降这个值,不要动页边距。 +% (注:这个 6.0mm 是写在下方 row{1-Z}={ht=6.0mm} 里的字面量, +% 不做成宏 —— 原因见第 4 节开头的说明。) + +%====================================================================== +% 4. 主表环境 +% +% ⚠️⚠️ 合并单元格用**矩阵式语法**,绝对不能写在内容里用 \SetCell +% +% 现状(tabularray 2022A + 本表的 7 列 Q[c,m,wd=…] + colsep=1mm): +% 只要在单元格内容里写 \SetCell[c=n],编译立刻报 +% ! Missing number, treated as zero. +% ! Illegal unit of measure (pt inserted.) +% \__dim_eval_end: +% 且**全部错误都定位到 \end{tblr}**,根本看不出是哪个格。 +% 最小复现(已验证): +% \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 错。 +% +% ✅ 正确写法:在 tblr 的选项里用 +% cell{行}{列}={c=n}{对齐} +% 被合并掉的格在内容里**留空**(写 `& &`),不要写 {}。 +% +% ⚠️ 另有一个坑(#23):纵向合并 \SetCell[r=n] 与横向 \SetCell[c=m] +% 不能出现在同一行,同样报上面那串错。本表因此完全不用纵向合并, +% 「其他费用」改成竖排文字 + 该列留空(视觉上等价)。 +%====================================================================== +\newenvironment{oucmeettable}{% + \par\begingroup\Mn + \begin{tblr}[label=none]{ + colspec={ + Q[c,m,wd=6.10mm] Q[c,m,wd=29.65mm] Q[c,m,wd=11.43mm] Q[c,m,wd=18.18mm] + Q[c,m,wd=29.65mm] Q[c,m,wd=3.00mm] Q[c,m,wd=40.10mm] + }, + colsep=1.0mm, rowsep=0pt, stretch=0, + hline{1-Z}={0.5pt}, vline{1-Z}={0.5pt}, + row{1-Z}={ht=5.6mm, font=\Mn, valign=m}, + % ---- 合并规则(行号从 1 开始)---- + % R1~R6 基本信息 + cell{1}{1}={c=2}{c}, cell{1}{3}={c=5}{l}, + cell{2}{1}={c=2}{c}, cell{2}{3}={c=2}{l}, cell{2}{5}={c=2}{c}, cell{2}{7}={c=1}{l}, + cell{3}{1}={c=2}{c}, cell{3}{3}={c=5}{l}, + cell{4}{1}={c=2}{c}, cell{4}{3}={c=5}{l}, + cell{5}{1}={c=2}{c}, cell{5}{3}={c=5}{l}, + cell{6}{1}={c=2}{c}, cell{6}{3}={c=5}{l}, + % R7 收入预算标题(跨 7 列) + cell{7}{1}={c=7}{c}, + % R8~R14 收入表 + cell{8}{1}={c=2}{c}, cell{8}{3}={c=2}{c}, cell{8}{5}={c=2}{c}, cell{8}{7}={c=1}{c}, + cell{9}{1}={c=2}{l}, cell{9}{3}={c=2}{l}, cell{9}{5}={c=2}{l}, cell{9}{7}={c=1}{l}, + cell{10}{1}={c=2}{l}, cell{10}{3}={c=2}{l}, cell{10}{5}={c=2}{l}, cell{10}{7}={c=1}{l}, + cell{11}{1}={c=2}{l}, cell{11}{3}={c=2}{l}, cell{11}{5}={c=2}{l}, cell{11}{7}={c=1}{l}, + cell{12}{1}={c=2}{l}, cell{12}{3}={c=2}{l}, cell{12}{5}={c=2}{l}, cell{12}{7}={c=1}{l}, + cell{13}{1}={c=2}{l}, cell{13}{3}={c=2}{l}, cell{13}{5}={c=2}{l}, cell{13}{7}={c=1}{l}, + cell{14}{1}={c=2}{c}, cell{14}{3}={c=2}{l}, cell{14}{5}={c=2}{l}, cell{14}{7}={c=1}{l}, + % R15 支出预算标题(跨 7 列) + cell{15}{1}={c=7}{c}, + % R16~R20 支出表(3+2+2) + cell{16}{1}={c=3}{c}, cell{16}{4}={c=2}{c}, cell{16}{6}={c=2}{c}, + cell{17}{1}={c=3}{l}, cell{17}{4}={c=2}{l}, cell{17}{6}={c=2}{l}, + 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 行留空 + 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}, + cell{24}{2}={c=2}{l}, cell{24}{4}={c=2}{l}, cell{24}{6}={c=2}{l}, + cell{25}{2}={c=2}{l}, cell{25}{4}={c=2}{l}, cell{25}{6}={c=2}{l}, + % R26 合计(3+2+2) + cell{26}{1}={c=3}{c}, cell{26}{4}={c=2}{l}, cell{26}{6}={c=2}{l}, + % R27~R28 意见与签字(3+4) + cell{27}{1}={c=3}{l}, cell{27}{4}={c=4}{l}, + cell{28}{1}={c=3}{l}, cell{28}{4}={c=4}{l}, + }% +}{% + \end{tblr}\par\endgroup} + +%====================================================================== +% 5. 标题与页首 +%====================================================================== +% 左上角「附件1」小字(原 docx 无字号设置,随正文 9pt) +\newcommand{\oucmeetattach}[1]{% + \par\noindent{\Mn #1}\par\vspace*{4bp}} + +% 标题:22pt 居中 +\newcommand{\oucmeettitle}[1]{% + \par\begingroup\Mtw\heiti\centering #1\par\endgroup + \vspace*{8bp}} + +% 填表日期 / 金额单位 那一行(左右分列,中间留白) +% 原 docx 用一串空格撑开,这里用 \hfill 更稳 +\newcommand{\oucmeetdateline}[1]{% + \par\noindent{\Mn #1}\par\vspace*{4bp}} + +%====================================================================== +% 6. 表尾说明 +% +% ⚠️ 悬挂缩进不能用 \leftmargin=2em —— 实测报 +% Overfull \hbox (26.71pt too wide) +% 因为「1、」「2、」是**全角字符 + 顿号**,9pt 下实测宽约 2.4em, +% 比 2em 宽,标签凸出到左边界外。⇒ \labelwidth 要给足 2.5em。 +% +% ⚠️⚠️ \itemindent 不能设负值! +% 第一版写 \itemindent=-2.5em 想让「1、」顶格,结果整段被拉到 +% x=65.95,而版心左界是 79.40 —— **说明文字跑到版心外左侧 13.45bp**, +% 且只报一个 5.1pt 的 Overfull(因为 \hbox 宽度的计算没把左溢算进去)。 +% ⇒ 正确做法:\leftmargin 与 \labelwidth 相等,\itemindent=0, +% 标签自然落在左边界,「1、」后面直接接正文。 +% \labelwidth 要 ≥ 标签实际宽度(「1、」9pt 全角约 2.4em),给 2.5em。 +% 见下方 \oucmeetnote 的说明。环境只负责字号与上间距,不再用 list。 +\newenvironment{oucmeetnotes}{% + \par\vspace*{2bp}\begingroup\Mn +}{\par\endgroup} + +%---------------------------------------------------------------------- +% 单条说明 +% +% ⚠️ 为什么不用 list 环境:list 的 \leftmargin / \itemindent 组合极易 +% 把内容推出边界,而且**不报 Overfull**(踩过一次,文字跑到版心 +% 左外 13.45bp,日志里只有个无关的 5.1pt)。 +% +% ⚠️ 也不要用 \hangindent 悬挂缩进。「2、」后面直接接正文,续行不需要 +% 缩进;相反,\hangindent 会让续行可用宽度变窄,第 2 条 +% (50 字,两行)因此溢出 5.1pt。 +% ⇒ 就是普通的 \noindent + 段落,什么都不设。 +% +% ⚠️⚠️ \tolerance / \emergencystretch 必须在**段落开始前**设置。 +% 写成 `\noindent` 之后再改无效(\noindent 已开段落,实测 5.1pt +% 的 Overfull 纹丝不动)。 +% ⇒ 这里用 \sloppy,它在内部改 \tolerance 和 \emergencystretch, +% 且必须在 \par 之前调用 —— 下面 #1#2 之前就调了,有效。 +% +% ⚠️ 为什么会溢出:第 2 条说明正好 50 字,9pt 下版心一行放 49 字, +% 第 50 字「现」挤到第二行后,第一行欠宽极小、第二行只有「金;」 +% 两个字,TeX 判定这比"溢出 5.1pt"更难看。\sloppy 允许更松的断行, +% 两害相权取其轻。这是内容长度与版心宽度的巧合冲突,不是排版错误。 +%---------------------------------------------------------------------- +\newcommand{\oucmeetnote}[2]{% + \par\noindent\sloppy #1#2\par + \vspace*{1bp}} + +\endinput \ No newline at end of file diff --git a/会议预算表/会议预算表.pdf b/会议预算表/会议预算表.pdf new file mode 100644 index 0000000..3fd568d Binary files /dev/null and b/会议预算表/会议预算表.pdf differ diff --git a/会议预算表/会议预算表.tex b/会议预算表/会议预算表.tex new file mode 100644 index 0000000..90f507a --- /dev/null +++ b/会议预算表/会议预算表.tex @@ -0,0 +1,126 @@ +%====================================================================== +% 中国海洋大学会议预算表(空表模板) +% +% 用途:演示 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 基本信息 ---- + 会议名称 & & & & & & \\ + 会议时间 & & 会议地点 & & & & \\ + % ⚠️ 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:「其他费用」竖排,只写在第 1 列的第一行(R21), + % 下面 4 行该列留空。用 \rotatebox 真旋转,不用 \\ 换行 + % (\\ 会被 tabularray 当成行结束,破坏整表)。 + \rotatebox{90}{其他费用} & 交通费 & & & & & \\ + & 会议资料印刷费 & & & & & \\ + & 会议室使用费 & & & & & \\ + & 工作人员补助 & & & & & \\ + & 其他 & & & & & \\ + + 合计 & & & & & & \\ + + % 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)即可,手写签名空间足够。 + 经费(项目)负责人意见: & & & 所在单位负责人意见:\hspace*{4em}校级领导意见: & & & & \\ + \hfill(签字) & & & (签字)\hspace*{3em}(盖章) & & & & \\ +\end{oucmeettable} + +\begin{oucmeetnotes} + \oucmeetnote{1、}{会议借款和报销应按会议预算执行,如突破预算总额,须按原程序审批;} + \oucmeetnote{2、}{收取会务费时按要求给会议代表开具发票,收取的会务费及发票存根和记账联统一交财务处入账,不得坐支现金;} + \oucmeetnote{3、}{会议费开支实行定额控制,标准参照《中国海洋大学会议费管理办法》。} +\end{oucmeetnotes} + +\end{document} \ No newline at end of file