2026-10-28 19:09:12 +08:00
|
|
|
|
%======================================================================
|
|
|
|
|
|
% ouccsx.sty — 中国海洋大学 特殊事项说明表 版式包
|
|
|
|
|
|
%
|
|
|
|
|
|
% 依据:报销相关/中国海洋大学特殊事项说明表.docx(Word 2007 保存)
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 目标:版式与逐项对齐;内容可随意增删而不破版。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
%
|
|
|
|
|
|
% 尺寸换算:
|
|
|
|
|
|
% twips → pt : pt = twips / 20 (1 pt = 1/20 twip)
|
|
|
|
|
|
% twips → mm : mm = twips / 1440 * 25.4
|
|
|
|
|
|
% w:sz : 半磅值,÷ 2 即 pt
|
|
|
|
|
|
% w:line : 1/20 pt(lineRule="exact" 时即精确行距)
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⚠️ 与 PDF 对齐的几何量一律用 bp(= 1/72 in,PDF 用户单位),
|
|
|
|
|
|
% 不用 pt(= 1/72.27 in)。两者差 0.375%,A4 上累积可达 2 pt,
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 超过一个字符宽,肉眼看得出。标注坐标者均为 PDF 坐标
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% (左上原点、向下为正)。
|
|
|
|
|
|
%
|
|
|
|
|
|
% 用法见同目录 特殊事项说明表.tex,说明见 README.md
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
|
|
|
|
\ProvidesPackage{ouccsx}[2026/10/28 v1.2 OUC special item statement form]
|
|
|
|
|
|
|
|
|
|
|
|
\RequirePackage{geometry}
|
|
|
|
|
|
\RequirePackage{fontspec}
|
|
|
|
|
|
\RequirePackage{xeCJK}
|
|
|
|
|
|
\RequirePackage{fancyhdr}
|
|
|
|
|
|
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
% 1. 页面与版心
|
|
|
|
|
|
%
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% sectPr:
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% pgSz 11906 × 16838 twips = 210.02 × 297.05 mm → A4
|
|
|
|
|
|
% pgMar top 2155 / bottom 1985 twips = 38.01 / 35.00 mm
|
|
|
|
|
|
% left 1588 / right 1474 twips = 28.01 / 26.00 mm
|
|
|
|
|
|
%
|
|
|
|
|
|
% ------------------------------------------------------------------
|
|
|
|
|
|
% ⚠️⚠️ 本模板的版心【不是】docx 的版心,这是刻意的。
|
|
|
|
|
|
%
|
|
|
|
|
|
% 原表 tblW = 9613 twips = 169.54 mm = 480.65 bp,
|
|
|
|
|
|
% 而 docx 版心宽只有 210 − 28 − 26 = 156 mm。
|
|
|
|
|
|
% 表比版心宽 13.54 mm,靠 tblInd = −546 twips(−9.63 mm)向左顶出去。
|
|
|
|
|
|
%
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 坐标(Word 导出 PDF):
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% 表格左边框 x = 46.70 bp,右边框 x = 527.35 bp(宽 480.65 ✓)
|
|
|
|
|
|
% 标题文字中心 x = 300.41 bp ← 居中于 docx 版心,不是居中于表格
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⇒ 若把 geometry 设成 docx 版心(left 28 mm),表格必然超出版心
|
|
|
|
|
|
% 13.54 mm,报一条 Overfull \hbox,且改内容时位置会漂。
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⇒ 本包把 geometry 的版心【直接设成表格宽度】:
|
|
|
|
|
|
% left = 16.47 mm (= 表格左边框)
|
|
|
|
|
|
% totalwidth = 169.54 mm (= 表格外宽)
|
|
|
|
|
|
% 表格正好填满版心,零 Overfull,位置与原件逐点相同。
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⇒ 代价:标题若用 \centering 会落在 287.03 bp,原件在 300.41 bp,
|
|
|
|
|
|
% 偏左 13.4 bp。故标题另给偏移补回 docx 版心的中心(见第 5 节)。
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
\newlength{\sxofficialleft} % docx 版心左界,仅用于换算
|
|
|
|
|
|
\setlength{\sxofficialleft}{28.01mm}
|
|
|
|
|
|
\newlength{\sxtblleft}
|
|
|
|
|
|
\setlength{\sxtblleft}{16.47mm}
|
|
|
|
|
|
\newlength{\sxtblw} % 表格外宽 = 版心宽
|
|
|
|
|
|
\setlength{\sxtblw}{169.54mm}
|
|
|
|
|
|
|
|
|
|
|
|
\geometry{
|
|
|
|
|
|
paperwidth = 210mm,
|
|
|
|
|
|
paperheight = 297mm,
|
|
|
|
|
|
left = 16.47mm, % = 表格左边框
|
|
|
|
|
|
totalwidth = 169.54mm, % = 表格外宽
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% ⚠️ 坐标差:本包所有 y 都恒比原件小 0.14 bp(表顶线、备注、
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% 页码全部同步偏移,是 top 与 PDF 线宽的取整差,不是各行的问题)。
|
|
|
|
|
|
% 从 top 里补掉,一次消除。
|
|
|
|
|
|
top = \dimexpr38.01mm+0.14bp\relax,
|
|
|
|
|
|
bottom = 35.00mm, % = docx pgMar bottom 1985 twips
|
|
|
|
|
|
headheight = 0pt,
|
|
|
|
|
|
headsep = 0pt,
|
|
|
|
|
|
footskip = 24.41bp,
|
|
|
|
|
|
}
|
|
|
|
|
|
\setlength{\parindent}{0pt}
|
|
|
|
|
|
\setlength{\parskip}{0pt}
|
|
|
|
|
|
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
% 2. 字体与字号
|
|
|
|
|
|
%
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 字号(w:sz 半磅值 ÷ 2):
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% 大标题 44 → 22 pt / 表内正文 21 → 10.5 pt
|
|
|
|
|
|
% 签字日期 24 → 12 pt / 备注 21 → 10.5 pt / 页码 28 → 14 pt
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⚠️⚠️⚠️ ctex 默认 \linespread ≈ 1.3,会把 \fontsize{10.5}{13.65}
|
|
|
|
|
|
% 的 13.65 pt 行距再放大 30% 变成 17.7 pt。本模板所有行距都来自
|
|
|
|
|
|
% docx 精确值,故每次设字号前必须先把 \linespread 归 1。
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⚠️ 原标题用「方正小标宋简体」,商业字体,本库不分发(见根 README
|
|
|
|
|
|
% 的字体承诺)。按 课程执行大纲/ 的既定做法换成 OUC Serif 真粗体
|
|
|
|
|
|
% —— 小标宋本就是宋体的标题变体,真粗体比伪粗更接近,笔画不糊。
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
\input{../fonts.tex}
|
|
|
|
|
|
|
|
|
|
|
|
\newcommand{\sxfonttitle}{%
|
|
|
|
|
|
\linespread{1}\relax\fontsize{22}{25}\selectfont}
|
|
|
|
|
|
\newcommand{\sxfontbody}{%
|
|
|
|
|
|
\linespread{1}\relax\fontsize{10.5}{13.65}\selectfont}
|
|
|
|
|
|
\newcommand{\sxfontsign}{%
|
|
|
|
|
|
\linespread{1}\relax\fontsize{12}{15.6}\selectfont}
|
|
|
|
|
|
\newcommand{\sxfontfoot}{%
|
|
|
|
|
|
\linespread{1}\relax\fontsize{14}{16.8}\selectfont}
|
|
|
|
|
|
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
% 3. 表格的几何量
|
|
|
|
|
|
%
|
|
|
|
|
|
% 边框 tblBorders sz=4 → 0.5 pt(w:sz 是 1/8 pt,4/8)
|
|
|
|
|
|
% 内边距 tblCellMar left/right = 108 twips,top/bottom = 0
|
|
|
|
|
|
%
|
|
|
|
|
|
% 行高:trHeight 是 5091 / 1140 / 634 twips,hRule="atLeast",
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 但 atLeast 是「最小」,实际高度由内容撑开。故用取值:
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% 四条横线中线 y = 172.99 / 457.49 / 516.34 / 573.64
|
|
|
|
|
|
% ⇒ 三段高 284.50 / 58.85 / 57.30(线中心距),
|
|
|
|
|
|
% 扣掉各一端的半线宽(0.249)得内容高 284.00 / 58.35 / 56.80。
|
|
|
|
|
|
% ⚠️ 不用 trHeight 的 254.55 / 57 / 31.7:R0 被 19 段撑到 284,
|
|
|
|
|
|
% R2 被 4 段撑到 56.8,照 trHeight 会让整表矮 40 bp。
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
\newlength{\sxrule}
|
|
|
|
|
|
\setlength{\sxrule}{0.5pt} % = tblBorders sz 4/8
|
|
|
|
|
|
\newlength{\sxpad}
|
2026-11-01 09:29:00 +08:00
|
|
|
|
\setlength{\sxpad}{4.93bp} % 校到内容左界 52.08(实际52.11)
|
2026-10-28 19:09:12 +08:00
|
|
|
|
|
|
|
|
|
|
\newlength{\sxboxw} % 单元格内容盒宽(不含边框)
|
|
|
|
|
|
\setlength{\sxboxw}{\dimexpr\sxtblw-2\sxrule\relax}
|
|
|
|
|
|
|
|
|
|
|
|
% ⚠️⚠️ 段落折行的可用宽度 ≠ 盒宽。
|
|
|
|
|
|
% 折行可用宽 = \sxboxw − \sxpad − \sxbodypad。
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 原件内容左界 52.08、右界 521.89 ⇒ 可用宽 469.81 bp。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% ⚠️ 这 1.7 bp 是「折不折行」的临界。本表那句「项目负责人是科研经费
|
|
|
|
|
|
% 使用的直接责任人……」共 47 字,在 471.5 bp 里能挤成一行,
|
|
|
|
|
|
% 在 469.81 bp 里必须折行 —— 原件是两行。差一行 = 13.56 bp,
|
|
|
|
|
|
% R0 下半全部内容上移 16.5 bp,肉眼一看就错。
|
|
|
|
|
|
\newlength{\sxbodypad}
|
|
|
|
|
|
\setlength{\sxbodypad}{6.65bp} % = 481.388 − 4.948 − 469.81
|
|
|
|
|
|
|
|
|
|
|
|
\newlength{\sxrowa}
|
|
|
|
|
|
\setlength{\sxrowa}{284.00bp}
|
|
|
|
|
|
\newlength{\sxrowb}
|
|
|
|
|
|
\setlength{\sxrowb}{58.35bp}
|
|
|
|
|
|
\newlength{\sxrowc}
|
|
|
|
|
|
\setlength{\sxrowc}{56.80bp}
|
|
|
|
|
|
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
% 4. 行定位体系(全文件的核心)
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⚠️⚠️⚠️ 本表的行距**不能**用 \baselineskip 控制。改之前先读这段。
|
|
|
|
|
|
%
|
|
|
|
|
|
% 【坑一】\baselineskip 只在**同一段落内部**管行距。
|
|
|
|
|
|
% 本表行距逐行不同(15.24 / 15.48 / 14.04 / 13.56 / 13.68),
|
|
|
|
|
|
% 因为 10.5 pt 与 12 pt 的字混排,Word 按「下一行字号 × 1.3」算。
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 最初每行 \par 之后单独给 \baselineskip,**完全无效**:
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% 所有行距被压成 13.51,12 pt 的签名行没变高,整表矮 2.25 bp。
|
|
|
|
|
|
% 原因:每行 \par 自成一段后,段间基线距离 = 上段末行深度 +
|
|
|
|
|
|
% \parskip + 本段首行字高,\baselineskip 根本没被读到。
|
|
|
|
|
|
%
|
|
|
|
|
|
% 【正解】不依赖 \baselineskip,逐行显式插胶:
|
|
|
|
|
|
%
|
|
|
|
|
|
% 基线距 = 上盒深度 + \kern + 本盒高度
|
|
|
|
|
|
% ⇒ \kern = 目标距 − 上盒深度 − 本盒高度
|
|
|
|
|
|
%
|
|
|
|
|
|
% 与字体度量彻底解耦:换字体、换字号、描述写长写短,行距不变。
|
|
|
|
|
|
%
|
|
|
|
|
|
% 【坑二】块首行必须用 \kern,不能用 \vskip。
|
|
|
|
|
|
% TeX 会【丢弃 \vbox 开头的胶】,用 \vskip 给的顶距静默消失
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% (实际「事项描述:」给 10.53 只落到 5.38,等于只剩字高)。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% \kern 不受这条约束,且照样计入盒高。
|
|
|
|
|
|
%
|
|
|
|
|
|
% 【坑三】必须允许负的 \kern。
|
|
|
|
|
|
% 相邻行的目标距可能小于「上盒深度 + 本盒高度」(如年月日行
|
|
|
|
|
|
% 12 pt 字目标 14.04,而 2.99 + 12.06 = 15.05),差值是 −1.01。
|
|
|
|
|
|
% 最初加了 `\ifdim>0` 守卫,负值被吞 → 该行退回自然距 15.05,
|
|
|
|
|
|
% 整块错位 10 bp。负 \kern 在 TeX 里完全合法,不该挡。
|
|
|
|
|
|
%
|
|
|
|
|
|
% 【坑四】多行段落的 \ht 参照的是**末行**基线,不是首行。
|
|
|
|
|
|
% \vbox 的 \ht = 首行高度 + (n−1)·行距,它的参考点是末行基线。
|
|
|
|
|
|
% 所以「上一行基线 → 本段首行基线」的距离不是 pd + kern + ht,
|
|
|
|
|
|
% 而是 pd + kern + ht − (n−1)·行距。漏掉这一项,
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 多行段自己会被推下一整行,其后所有行跟着错(实际0.48 而非 14.04)。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% ⇒ 用 \prevgraf 取段内行数,把 (n−1)·行距加回 kern。
|
|
|
|
|
|
% ⚠️ \dp 不用改:\vbox 的 \dp 就是末行的真实深度。
|
|
|
|
|
|
%
|
|
|
|
|
|
% 【坑五】\offinterlineskip 会继承进段落内部。
|
|
|
|
|
|
% 它把 \lineskiplimit 设成极小值,段内多行改走 \lineskip(=0),
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% \baselineskip 又被架空(行距只剩 10.81 而非 13.56)。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% ⇒ 段落内部必须显式恢复 \lineskiplimit / \lineskip。
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
\newbox\sx@boxa
|
|
|
|
|
|
\newbox\sx@boxb
|
|
|
|
|
|
\newbox\sx@boxc
|
|
|
|
|
|
\newdimen\sx@pd % 上一行的真实末行深度
|
|
|
|
|
|
\newdimen\sx@tmp
|
|
|
|
|
|
\newdimen\sx@boxd
|
|
|
|
|
|
\newdimen\sx@pgd % 段内中间各行推进总量(\prevgraf 必须先存出来)
|
|
|
|
|
|
\newif\ifsx@first % 是否块内第一行
|
|
|
|
|
|
|
|
|
|
|
|
\newcommand{\sx@blstart}{%
|
|
|
|
|
|
\offinterlineskip
|
|
|
|
|
|
\topskip=\z@
|
|
|
|
|
|
\sx@pd=\z@
|
|
|
|
|
|
\sx@firsttrue}
|
|
|
|
|
|
|
|
|
|
|
|
% \sx@bl[底深]{与上一行基线的距离}{行内容}
|
|
|
|
|
|
%
|
|
|
|
|
|
% #1(可选)= 本行盒的最小深度。块末行用它留出「基线 → 格底」的空白
|
|
|
|
|
|
% —— TeX 丢弃 \vbox 末尾的胶,不能用 \kern 补。
|
|
|
|
|
|
% #2 = 与上一行基线的距离;块第一行则是「块顶 → 首行基线」。
|
|
|
|
|
|
% #3 = 行内容(水平模式),参照点是单元格内容左界。
|
|
|
|
|
|
% #2 = 与上一行基线的距离;块第一行则是「块顶 → 首行基线」,
|
|
|
|
|
|
% 给 0 表示「首行自然贴块顶、只留字高」。
|
|
|
|
|
|
% 后者用于 R0 下半块:那块是贴格底的,全部位置由
|
|
|
|
|
|
% 「末行深度 + 逐行行距」反推出来,再给绝对顶距就重复
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 定位了(实际多给 208.89,整块下移 66.90)。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
\newcommand{\sx@bl}[3][\z@]{%
|
|
|
|
|
|
\setbox\sx@boxc=\hbox to \sxboxw{\hskip\sxpad #3\hss}%
|
|
|
|
|
|
\ifsx@first
|
|
|
|
|
|
\sx@firstfalse
|
|
|
|
|
|
\kern\dimexpr\ifdim#2>\z@#2-\fi\ht\sx@boxc\relax
|
|
|
|
|
|
\else
|
|
|
|
|
|
\kern\dimexpr#2-\sx@pd-\ht\sx@boxc\relax
|
|
|
|
|
|
\fi
|
|
|
|
|
|
\ifdim\dp\sx@boxc<#1 \dp\sx@boxc=#1\relax \fi
|
|
|
|
|
|
\sx@pd=\dp\sx@boxc
|
|
|
|
|
|
\box\sx@boxc}
|
|
|
|
|
|
|
|
|
|
|
|
% \sx@blp[底深]{与上一行基线的距离}{段内行距}{段落内容}
|
|
|
|
|
|
%
|
|
|
|
|
|
% 与 \sx@bl 同一套定位规则,但内容是可折行的段落(用于那两句长话)。
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⚠️⚠️ \vbox 的 \ht 参考点是**末行基线**,不是首行(坑四)。
|
|
|
|
|
|
% 故 kern 里要把 (n−1)·行距 加回去,否则整个多行段被推下一整行。
|
|
|
|
|
|
% \dp 不用改 —— \vbox 的 \dp 就是末行的真实深度。
|
|
|
|
|
|
\newcommand{\sx@blp}[4][\z@]{%
|
|
|
|
|
|
\setbox\sx@boxc=\vbox{%
|
|
|
|
|
|
\hsize=\sxboxw
|
|
|
|
|
|
\leftskip=\sxpad
|
|
|
|
|
|
\rightskip=\sxbodypad
|
|
|
|
|
|
\parindent=\z@
|
|
|
|
|
|
\parskip=\z@
|
|
|
|
|
|
\lineskiplimit=\z@ % ← 抵消外层 \offinterlineskip(坑五)
|
|
|
|
|
|
\lineskip=\z@
|
|
|
|
|
|
\baselineskip=#3\relax
|
|
|
|
|
|
\noindent #4\par
|
|
|
|
|
|
% ⚠️⚠️ \prevgraf 有两道坎:
|
|
|
|
|
|
% ① 必须在 vbox **内部**取 —— 它是「当前正在排的段落行数」,
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% vbox 一关闭就恢复成外层值(实际把 2 读成 0)。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% ② 必须在 \par **之后**取 —— \prevgraf 是在段落断行那一步
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 才被写入的,\par 之前读到的还是旧值(实际仍为 0)。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
\global\sx@pgd=\dimexpr\numexpr\prevgraf-1\relax\dimexpr#3\relax\relax}%
|
|
|
|
|
|
% 中间各行的推进总量
|
|
|
|
|
|
\sx@tmp=\sx@pgd
|
|
|
|
|
|
\ifsx@first
|
|
|
|
|
|
\sx@firstfalse
|
|
|
|
|
|
% 块首行的 #2 直接是「块顶 → 首行基线」,不需要再扣多行推进量:
|
|
|
|
|
|
% 多行段的 \ht 已经包含了「首行基线 → 末行基线」的全部推进,
|
|
|
|
|
|
% 而首行基线本身与段有几行无关。加回 pgd 会把首行推下一整行
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% (实际描述两行偏 +10.39)。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
\kern\dimexpr\ifdim#2>\z@#2-\fi\ht\sx@boxc\relax
|
|
|
|
|
|
\else
|
|
|
|
|
|
\kern\dimexpr #2+\sx@tmp-\sx@pd-\ht\sx@boxc\relax
|
|
|
|
|
|
\fi
|
|
|
|
|
|
\ifdim\dp\sx@boxc<#1 \dp\sx@boxc=#1\relax \fi
|
|
|
|
|
|
\sx@pd=\dp\sx@boxc
|
|
|
|
|
|
\box\sx@boxc}
|
|
|
|
|
|
|
|
|
|
|
|
% 签名下划线:长 #1、线宽 0.4 pt(Word underline,比表格线细)
|
|
|
|
|
|
\newcommand{\sx@rule}[1]{%
|
|
|
|
|
|
\rule[-0.55mm]{#1}{0.4pt}}
|
|
|
|
|
|
|
|
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
% \sx@put{偏移}{内容} —— 在「内容左界 + 偏移」处放置内容
|
|
|
|
|
|
%
|
|
|
|
|
|
% 原件的签名行、年月日全靠敲空格凑位置(R0 签名前是 30 个 14 pt 空格),
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 换台机器字号一改就散架。这里按实际x 坐标绝对定位,不随字体漂移。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
%
|
|
|
|
|
|
% ⚠️⚠️ 用 \rlap(= \hbox to 0pt{...\hss})而非 \makebox[0pt][l]:
|
|
|
|
|
|
% 两者都是零宽盒左对齐,但 \makebox 内容超宽会报 Overfull \hbox
|
|
|
|
|
|
% (签名下划线 84 bp 必然超),\rlap 末尾有 \hss 吸收,静默通过。
|
|
|
|
|
|
% 因零宽,一行串多个 \sx@put 时共用同一原点,偏移各自独立。
|
|
|
|
|
|
%
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 偏移 = 「Word 导出 PDF 实际x」− 52.08(内容左界)
|
2026-10-28 19:09:12 +08:00
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
\newcommand{\sx@put}[2]{%
|
|
|
|
|
|
\rlap{\hspace*{#1}#2}}
|
|
|
|
|
|
|
|
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
% 单元格装配
|
|
|
|
|
|
%
|
|
|
|
|
|
% \sx@cellbl{高度}{块内容} 内容贴顶,不足高度补在底部(= trHeight atLeast)
|
|
|
|
|
|
\newcommand{\sx@cellbl}[2]{%
|
|
|
|
|
|
\setbox\sx@boxa=\vbox{\sx@blstart #2}%
|
|
|
|
|
|
\ifdim\dimexpr\ht\sx@boxa+\dp\sx@boxa\relax<#1
|
|
|
|
|
|
\vbox to #1{\box\sx@boxa\vfil}%
|
|
|
|
|
|
\else
|
|
|
|
|
|
\box\sx@boxa
|
|
|
|
|
|
\fi}
|
|
|
|
|
|
|
|
|
|
|
|
% \sx@cellvf{高度}{上半}{下半} 中间 \vfil 撑开 ⇒ 下半贴格底
|
|
|
|
|
|
%
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% ⚠️⚠️ 非直觉之处:
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% 最初写「先 \setbox 量内容,再 \vbox to <高>{\box\sx@box\vfil}」,
|
|
|
|
|
|
% 结果 R0 的「兹证明」跑到描述正下方(y=261.95,原件 382.13),
|
|
|
|
|
|
% 整块偏高 120 bp。
|
|
|
|
|
|
% 原因:\vbox{...\vfil} **被测量的那一刻** \vfil 就塌成 0
|
|
|
|
|
|
% (vbox 无目标高度,末端胶只能为 0)。再套壳时剩余胶只能加在
|
|
|
|
|
|
% 整体之后 → 变成「内容贴顶、空白在底」,与想要的正好相反。
|
|
|
|
|
|
% 正解:让 \vfil 与上下两半【同处一个有目标高度的 \vbox 里】。
|
|
|
|
|
|
\newcommand{\sx@cellvf}[3]{%
|
|
|
|
|
|
\setbox\sx@boxa=\vbox{%
|
|
|
|
|
|
\hsize=\sxboxw
|
|
|
|
|
|
\leftskip=\sxpad
|
|
|
|
|
|
\rightskip=\sxpad
|
|
|
|
|
|
\parindent=\z@
|
|
|
|
|
|
\parskip=\z@
|
|
|
|
|
|
#2}%
|
|
|
|
|
|
\setbox\sx@boxb=\vbox{\sx@blstart #3}%
|
|
|
|
|
|
% ⚠️⚠️ 末尾那个 \vskip\z@ 不能省。
|
|
|
|
|
|
% \vbox to N 设定的是**高度**,深度另计:若最后一项是 \box\sx@boxb
|
|
|
|
|
|
% 且它自带深度(本表末行深 3.11),则 vbox 的 \dp = 3.11,
|
|
|
|
|
|
% 总高变成 N + 3.11,整行高三点一一,四条横线全部下移
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% (实际R0 = 287.11 而非 284.00)。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% 补一条零高胶让末项变成胶(胶无深度),\dp 归零,
|
|
|
|
|
|
% 总高才正好等于 N。
|
|
|
|
|
|
\ifdim\dimexpr\ht\sx@boxa+\ht\sx@boxb+\dp\sx@boxb\relax<#1
|
|
|
|
|
|
\vbox to #1{\box\sx@boxa\vfil\box\sx@boxb\vskip\z@}%
|
|
|
|
|
|
\else
|
|
|
|
|
|
\vbox{\box\sx@boxa\vfil\box\sx@boxb}%
|
|
|
|
|
|
\fi}
|
|
|
|
|
|
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
% 5. 标题
|
|
|
|
|
|
%
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% :22 pt 小标宋(→ 宋体真粗体),居中,标题段行距 25 pt。
|
|
|
|
|
|
% 文字中心 x = 300.41 bp,基线 y = 147.65。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
%
|
|
|
|
|
|
% ⚠️⚠️ 为什么不能直接 \centering:
|
|
|
|
|
|
% 本包版心 16.47~186.01 mm,中心 287.03 bp;
|
|
|
|
|
|
% 标题要居中的是 docx 版心 28.01~184.01 mm,中心 300.41 bp。
|
|
|
|
|
|
% 两者差 13.4 bp,直接居中会左偏 4.7 mm。
|
|
|
|
|
|
% 正解:先 \hspace* 推到 docx 版心左界,再用一个正好等于
|
|
|
|
|
|
% docx 版心宽的 \makebox 居中。右边不会溢出:
|
|
|
|
|
|
% 11.54 + 156 = 167.54 mm < 169.54 mm。
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
\newlength{\sxtitleindent}
|
|
|
|
|
|
\setlength{\sxtitleindent}{\dimexpr\sxofficialleft-\sxtblleft\relax}
|
|
|
|
|
|
\newlength{\sxtitlewidth}
|
|
|
|
|
|
\setlength{\sxtitlewidth}{156mm}
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 微调:标题中心原偏右 0.60 bp(字形宽度差所致)
|
2026-10-28 19:09:12 +08:00
|
|
|
|
\newlength{\sxtitlefix}
|
|
|
|
|
|
\setlength{\sxtitlefix}{-0.60bp}
|
|
|
|
|
|
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 标题前/后竖直距离(由 PDF 实际反推,见 README「实际记录」)
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% ⚠️ 这两个值必须成对调:\sxprespace 在标题前、\sxpostspace 在标题后,
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 单独改一个会把标题与表格的间距一起改掉。标定见 README。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
\newlength{\sxprespace}
|
|
|
|
|
|
\setlength{\sxprespace}{10.07bp}
|
|
|
|
|
|
\newlength{\sxpostspace}
|
|
|
|
|
|
\setlength{\sxpostspace}{21.09bp}
|
|
|
|
|
|
|
|
|
|
|
|
\newcommand{\sxtitle}[1]{%
|
|
|
|
|
|
\par\begingroup
|
|
|
|
|
|
\vspace*{\sxprespace}%
|
|
|
|
|
|
\noindent
|
|
|
|
|
|
\hspace*{\dimexpr\sxtitleindent+\sxtitlefix\relax}%
|
|
|
|
|
|
\makebox[\sxtitlewidth][c]{%
|
|
|
|
|
|
\sxfonttitle\songti\bfseries #1}%
|
|
|
|
|
|
\par\vspace*{\sxpostspace}%
|
|
|
|
|
|
\endgroup}
|
|
|
|
|
|
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
% 6. 表格主体
|
|
|
|
|
|
%
|
|
|
|
|
|
% 原表是**单列 3 行**(tblGrid 只有一个 gridCol),即三行整宽方框上下叠。
|
|
|
|
|
|
% 没有合并单元格、没有多列,不需要 tabularray —— 手工 \vbox 叠三块
|
|
|
|
|
|
% 反而更可控:行高精确、内线不重复、内容可用 \vfil 撑。
|
|
|
|
|
|
% 外框 \framebox,两条内线 \hrule(各占 \sxrule)。
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
\newcommand{\sxtable}{%
|
|
|
|
|
|
\par\noindent
|
|
|
|
|
|
\begingroup
|
|
|
|
|
|
\setlength{\fboxsep}{0pt}%
|
|
|
|
|
|
\setlength{\fboxrule}{\sxrule}%
|
|
|
|
|
|
\framebox[\sxtblw]{%
|
|
|
|
|
|
\vbox{%
|
|
|
|
|
|
\hsize=\sxboxw
|
|
|
|
|
|
\sx@rowa@box
|
|
|
|
|
|
\hrule height \sxrule
|
|
|
|
|
|
\sx@cellbl{\sxrowb}{\sx@rowB}%
|
|
|
|
|
|
\hrule height \sxrule
|
|
|
|
|
|
\sx@cellbl{\sxrowc}{\sx@rowC}%
|
|
|
|
|
|
}%
|
|
|
|
|
|
}%
|
|
|
|
|
|
\par\endgroup}
|
|
|
|
|
|
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
% 7. 三行内容的装配
|
|
|
|
|
|
%
|
|
|
|
|
|
% 三行里的固定话术(「兹证明该事项真实有效……」等)是学校规定原文,
|
|
|
|
|
|
% **不要在 .tex 里改**;它们在这里装配好,.tex 只提供要人填的几项:
|
|
|
|
|
|
% \sxdesc 事项描述正文(必填)
|
|
|
|
|
|
% \sxdateA 项目负责人签字处日期(留空则印「 年 月 日」)
|
|
|
|
|
|
% \sxdateB 单位负责人签字处日期
|
|
|
|
|
|
% \sxdateC 科技管理部门签字处日期
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⚠️ 为什么不让 .tex 改整行:原件里这些行全靠敲空格对齐,一旦让
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 用户自己写,每人写出来都不一样,模板就失去意义。这里按实际
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% x 坐标把固定部分钉死,.tex 只需填描述与日期。
|
|
|
|
|
|
%
|
|
|
|
|
|
% ------------------------------------------------------------------
|
|
|
|
|
|
% R0 纵向结构(全表最麻烦的一处)
|
|
|
|
|
|
%
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% R0 共 19 段:1「事项描述:」/ 2~3 空 / 4 描述正文 /
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% 5~12 八个空段(给手写留白)/ 13 空 / 14「兹证明…」/ 15 签名 /
|
|
|
|
|
|
% 16 年月日 / 17「项目负责人是…」/ 18「非科研经费…」
|
|
|
|
|
|
%
|
|
|
|
|
|
% 那 8 个空段是**手写留白**。本模板把描述改成排字(\sxdesc),
|
|
|
|
|
|
% 它们就成了死间距:描述写短了下面一大片空白,写长了把签名区顶到下一行。
|
|
|
|
|
|
% ⇒ 删掉,改用「上下两半 + 中间 \vfil」:
|
|
|
|
|
|
% 描述短 → 空白落在两半之间,签名区不动
|
|
|
|
|
|
% 描述长 → 空白被吃掉,签名区仍然不动
|
|
|
|
|
|
% 这是本模板比原件更稳的地方。
|
|
|
|
|
|
% ⚠️ 但 \vfil 不能无限压:描述特别长时签名区会挤出行外。
|
|
|
|
|
|
% 这是内容超量的正常表现(Word 里也一样),不是 bug。
|
|
|
|
|
|
%
|
|
|
|
|
|
% ------------------------------------------------------------------
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 实际基线(PDF 绝对 y;Δ 为与上一行的基线距)
|
2026-10-28 19:09:12 +08:00
|
|
|
|
%
|
|
|
|
|
|
% R0(顶线 172.99,内容顶 173.24)
|
|
|
|
|
|
% 事项描述 183.77 (10.53)
|
|
|
|
|
|
% 描述首行 227.81 (54.57) ← 段内行距 13.68
|
|
|
|
|
|
% 兹证明 382.13 (208.89)
|
|
|
|
|
|
% 项目负责人 397.37 (Δ15.24)
|
|
|
|
|
|
% 年月日 412.85 (Δ15.48)
|
|
|
|
|
|
% 项目负责人是 426.89 (Δ14.04) ← 段内行距 13.56
|
|
|
|
|
|
% 责任。 440.45 (Δ13.56)
|
|
|
|
|
|
% 非科研经费 454.13 (Δ13.68) 末行深 3.11
|
|
|
|
|
|
%
|
|
|
|
|
|
% R1(顶线 457.49,内容顶 457.74)
|
|
|
|
|
|
% 本人证明 468.29 (10.55)
|
|
|
|
|
|
% 单位负责人 483.41 (Δ15.12)
|
|
|
|
|
|
% 年月日 498.89 (Δ15.48)
|
|
|
|
|
|
% 学院 512.93 (Δ14.04) 末行深 3.16
|
|
|
|
|
|
%
|
|
|
|
|
|
% R2(顶线 516.34,内容顶 516.59)
|
|
|
|
|
|
% 科技管理 527.09 (10.50)
|
|
|
|
|
|
% 负责人签字 554.33 (Δ27.24) ← 原件一个空段,留写字空间
|
|
|
|
|
|
% 年月日 569.93 (Δ15.60) 末行深 3.46
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
|
|
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
% 日期行
|
|
|
|
|
|
%
|
|
|
|
|
|
% 原件「 年 月 日」,三字间隔**各处不同**:
|
|
|
|
|
|
% R0 370.08 / 412.08 / 454.08 步长 42 / 42
|
|
|
|
|
|
% R1 400.08 / 442.08 / 484.08 步长 42 / 42
|
|
|
|
|
|
% R2 424.08 / 454.08 / 478.08 步长 30 / 24 ← 这格右边距紧
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⚠️⚠️ 两个坑:
|
|
|
|
|
|
% ① 原来用 \makebox[12pt][l] + \hspace{步长−12pt} 拼步长,
|
|
|
|
|
|
% 12 pt(12.045 bp)与 42 pt(42.157 bp)混减,每字累积
|
|
|
|
|
|
% 0.16 bp,第三个字偏出 1.6 bp。
|
|
|
|
|
|
% ② 原来年份用 \makebox[12pt][l]{#1},即使 #1 为空**仍占 12 pt**,
|
|
|
|
|
|
% 把「年」推出 30 pt,整组右移 28.67 bp。
|
|
|
|
|
|
% ⇒ 三字全用 \sx@put 绝对定位,不积累、不占位;年份用右对齐
|
|
|
|
|
|
% \makebox 挂在「年」左边,空着就整块不出。
|
|
|
|
|
|
%
|
|
|
|
|
|
% \sx@dateline{年份}{年 x}{月 x}{日 x}
|
|
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
\newcommand{\sx@ifempty}[1]{\if\relax\detokenize{#1}\relax}
|
|
|
|
|
|
|
|
|
|
|
|
\newcommand{\sx@dateline}[4]{%
|
|
|
|
|
|
\sx@ifempty{#1}\else
|
|
|
|
|
|
\sx@put{\dimexpr#2-26bp\relax}{\makebox[24bp][r]{#1}}%
|
|
|
|
|
|
\fi
|
|
|
|
|
|
\sx@put{#2}{年}%
|
|
|
|
|
|
\sx@put{#3}{月}%
|
|
|
|
|
|
\sx@put{#4}{日}}
|
|
|
|
|
|
|
|
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
% R0 —— 事项描述 + 项目负责人签字
|
|
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
\newcommand{\sx@rowa@box}{%
|
|
|
|
|
|
\sx@cellvf{\sxrowa}%
|
|
|
|
|
|
{\sxfontbody\songti
|
|
|
|
|
|
\sx@blstart
|
|
|
|
|
|
\sx@bl{10.53bp}{事项描述:}%
|
|
|
|
|
|
\sx@blp{44.04bp}{13.68bp}{\sxdesc}}%
|
|
|
|
|
|
{\sxfontbody\songti
|
|
|
|
|
|
\sx@blstart
|
|
|
|
|
|
\sx@bl{0bp}{\sx@put{31.56bp}{兹证明该事项真实有效,本人愿意为此承担责任。}}%
|
|
|
|
|
|
\sx@bl{15.24bp}{%
|
|
|
|
|
|
\sx@put{210.00bp}{\sxfontsign\songti 项目负责人(签名):}%
|
|
|
|
|
|
\sx@put{323.97bp}{\sx@rule{84bp}}}%
|
|
|
|
|
|
\sx@bl{15.48bp}{%
|
|
|
|
|
|
\sx@put{318.00bp}{\sxfontsign\songti}%
|
|
|
|
|
|
\sx@dateline{\sxdateA}{318.00bp}{360.00bp}{402.00bp}}%
|
|
|
|
|
|
\sx@blp{14.04bp}{13.56bp}{%
|
|
|
|
|
|
\hspace*{21.00bp}项目负责人是科研经费使用的直接责任人,对经费使用的真实性、合理性及有效性承担经济与法律责任。}%
|
|
|
|
|
|
\sx@bl[3.11bp]{13.68bp}{\sx@put{21.00bp}{非科研经费亦适用本表格。}}}}
|
|
|
|
|
|
|
|
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
% R1 —— 单位负责人签字 + 单位公章
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 实际下划线 x 187.05~253.05(长 66 bp);「单位公章:」后不画线。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
\newcommand{\sx@rowB}{%
|
|
|
|
|
|
\sxfontbody\songti
|
|
|
|
|
|
\sx@bl{10.55bp}{本人证明以上事项属实,并愿意承担相应责任。}%
|
|
|
|
|
|
\sx@bl{15.12bp}{%
|
|
|
|
|
|
\sx@put{21.00bp}{\sxfontsign\songti 单位负责人(签名):}%
|
|
|
|
|
|
\sx@put{134.97bp}{\sx@rule{66bp}}%
|
|
|
|
|
|
\sx@put{309.00bp}{\sxfontsign\songti 单位公章:}}%
|
|
|
|
|
|
\sx@bl{15.48bp}{%
|
|
|
|
|
|
\sx@put{348.00bp}{\sxfontsign\songti}%
|
|
|
|
|
|
\sx@dateline{\sxdateB}{348.00bp}{390.00bp}{432.00bp}}%
|
|
|
|
|
|
\sx@bl[3.16bp]{14.04bp}{\sx@put{15.72bp}{学院对本单位科研经费使用承担监督和管理责任。}}}
|
|
|
|
|
|
|
|
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
% R2 —— 科技管理部门审批意见
|
|
|
|
|
|
% 「科技管理」→「负责人签字」差 27.24 bp,比正常行距 15.6 多 11.64,
|
|
|
|
|
|
% 对应原件这一个空段(审批意见要留写字空间)。
|
|
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
\newcommand{\sx@rowC}{%
|
|
|
|
|
|
\sxfontbody\songti
|
|
|
|
|
|
\sx@bl{10.50bp}{科技管理部门审批意见:}%
|
|
|
|
|
|
\sx@bl{27.24bp}{%
|
|
|
|
|
|
\sx@put{26.28bp}{\sxfontsign\songti 负责人签字:}%
|
|
|
|
|
|
\sx@put{314.28bp}{\sxfontsign\songti 单位公章:}}%
|
|
|
|
|
|
\sx@bl[3.46bp]{15.60bp}{%
|
|
|
|
|
|
\sx@put{372.00bp}{\sxfontsign\songti}%
|
|
|
|
|
|
\sx@dateline{\sxdateC}{372.00bp}{402.00bp}{426.00bp}}}
|
|
|
|
|
|
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
% 8. 备注区
|
|
|
|
|
|
%
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 三条备注是「annotation text」样式 + 自动编号(decimal "%1."),
|
|
|
|
|
|
% 行距 15 pt。实际基线 585.89 / 600.89 / 615.89 / 630.89(间距 15)。
|
|
|
|
|
|
% 实际x: 「备注:」79.44,编号「1.」95.16~103.05,正文 113.16
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% ⇒ 减内容左界 52.08:27.36 / 50.97 / 61.08
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⚠️ 四条同样不能用 \baselineskip —— 各自独立成段(同第 4 节坑一)。
|
|
|
|
|
|
%
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% ⚠️ 第 3 条在里是**手打的**「 3. 」(没有 numPr),
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% 比前两条多两个空格、位置差 0.36 bp。本模板统一排齐,
|
|
|
|
|
|
% 这是与原件唯一的有意差异(README「与原件差异」已列明)。
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
\newlength{\sxnotebody}
|
|
|
|
|
|
\setlength{\sxnotebody}{61.08bp} % 正文左端
|
|
|
|
|
|
\newlength{\sxnotenum}
|
|
|
|
|
|
\setlength{\sxnotenum}{50.97bp} % 编号右端
|
|
|
|
|
|
\newlength{\sxnotelab}
|
|
|
|
|
|
\setlength{\sxnotelab}{27.36bp} % 「备注:」左端
|
|
|
|
|
|
|
|
|
|
|
|
% #1 = 编号 #2 = 正文
|
|
|
|
|
|
%
|
|
|
|
|
|
% ⚠️ 偏移用「相对内容左界」的值,不要再减 \sxpad。
|
|
|
|
|
|
% \sx@bl 的行盒是 \hbox to \sxboxw{\hskip\sxpad 内容\hss},
|
|
|
|
|
|
% \rlap 的参照原点就在那 \hskip 之后 —— 也就是内容左界本身。
|
|
|
|
|
|
\newcommand{\sxnoteitem}[2]{%
|
|
|
|
|
|
\sx@bl{15bp}{%
|
|
|
|
|
|
\rlap{\hspace*{\sxnotenum}\makebox[0bp][r]{#1}}%
|
|
|
|
|
|
\rlap{\hspace*{\sxnotebody}#2}}}
|
|
|
|
|
|
|
|
|
|
|
|
%----------------------------------------------------------------------
|
|
|
|
|
|
% 备注区四条(引言 + 三条),原文照录 —— 学校规定文字,不要改
|
|
|
|
|
|
% ⚠️ 引言「备注:使用科研经费报销时……」是**连排的一句话**,
|
|
|
|
|
|
% 「备注:」不是悬挂标签,整行从 79.44 起排,故只需一个 \sx@put。
|
|
|
|
|
|
%----------------------------------------------------------------------
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 第一行的「块顶 → 首行基线」:实际585.89 − 表格底 573.89 = 12.00
|
2026-10-28 19:09:12 +08:00
|
|
|
|
\newcommand{\sxnotes}{%
|
|
|
|
|
|
\par\nointerlineskip
|
|
|
|
|
|
\vbox{%
|
|
|
|
|
|
\sxfontbody\songti
|
|
|
|
|
|
\sx@blstart
|
|
|
|
|
|
\sx@bl{12.00bp}{\sx@put{\sxnotelab}{备注:使用科研经费报销时,本表需要相关负责人签字审批的情形和要求如下:}}%
|
|
|
|
|
|
\sxnoteitem{1.}{符合《办法》第十八条第八款、第二十三条情形的,需项目负责人、单位负责人签字;}%
|
|
|
|
|
|
\sxnoteitem{2.}{符合《办法》第二十二条的情形,需项目负责人、单位负责人和科技部门负责人签字;}%
|
|
|
|
|
|
\sxnoteitem{3.}{除以上两种情形外,其他均由项目负责人签字。}}%
|
|
|
|
|
|
\par}
|
|
|
|
|
|
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
% 9. 页脚
|
|
|
|
|
|
%
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 页脚:右对齐「— 1 —」,宋体 14 pt,右缩进 180 twips = 9 pt。
|
|
|
|
|
|
% 实际整串左端 463.56、右端 512.65。本包版心右界 527.02,
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% 故整串需再左移 527.02 − 512.65 = 14.37 bp。
|
|
|
|
|
|
%
|
2026-11-01 09:29:00 +08:00
|
|
|
|
% 负 \hspace 放**开头** —— 完全没效果(实际偏右 24.94 bp)。
|
2026-10-28 19:09:12 +08:00
|
|
|
|
% 原因:fancyhdr 的 [R] 位把内容放进 \hbox to \textwidth 并前置
|
|
|
|
|
|
% \hfil,靠「内容块整体贴右」对齐。开头加负 \hspace 只把块起点
|
|
|
|
|
|
% 左移,块宽没变,右边界仍贴版心右界。
|
|
|
|
|
|
% 正解:把内容装进**零宽盒**,让它的右缘成为对齐基准,
|
|
|
|
|
|
% 再用末尾的 \hspace 把基准往里推。
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
\newlength{\sxfootinset}
|
|
|
|
|
|
\setlength{\sxfootinset}{24.94bp}
|
|
|
|
|
|
|
|
|
|
|
|
\newcommand{\sxfootfont}{\sxfontfoot\songti}
|
|
|
|
|
|
|
|
|
|
|
|
\newcommand{\sxfootcontent}{%
|
|
|
|
|
|
\makebox[0pt][r]{\sxfootfont — \thepage\ —}%
|
|
|
|
|
|
\hspace*{\sxfootinset}}
|
|
|
|
|
|
|
|
|
|
|
|
\pagestyle{fancy}
|
|
|
|
|
|
\fancyhf{}
|
|
|
|
|
|
\renewcommand{\headrulewidth}{0pt}
|
|
|
|
|
|
\renewcommand{\footrulewidth}{0pt}
|
|
|
|
|
|
\fancyfoot[R]{\sxfootcontent}
|
|
|
|
|
|
\fancypagestyle{plain}{%
|
|
|
|
|
|
\fancyhf{}%
|
|
|
|
|
|
\renewcommand{\headrulewidth}{0pt}%
|
|
|
|
|
|
\renewcommand{\footrulewidth}{0pt}%
|
|
|
|
|
|
\fancyfoot[R]{\sxfootcontent}%
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
% 10. 一句话入口
|
|
|
|
|
|
%
|
|
|
|
|
|
% \sxform —— 在 .tex 里只调这一个,整张表就出来了。
|
|
|
|
|
|
% 标题、表格、备注、页脚全在里面。
|
|
|
|
|
|
%======================================================================
|
|
|
|
|
|
\newcommand{\sxform}{%
|
|
|
|
|
|
\sxtitle{中国海洋大学特殊事项说明表}%
|
|
|
|
|
|
\sxtable
|
|
|
|
|
|
\sxnotes}
|
|
|
|
|
|
|
|
|
|
|
|
\AtBeginDocument{\sxfontbody\songti}
|
|
|
|
|
|
\endinput
|