用户原话:「@中国海洋大学特殊事项说明表.docx 改成 latex 模板,放入代码库中。」
中国海洋大学特殊事项说明表.docx
把报销用的《中国海洋大学特殊事项说明表》Word 版复刻为 LaTeX 模板,新增目录 特殊事项说明表/,与本库其余 11 个模板同一套约定(中文目录名、README.md、 <缩写>.sty 样式文件、\input{../fonts.tex} 公共字体)。
特殊事项说明表/
README.md
<缩写>.sty
\input{../fonts.tex}
新增(全部为新文件,不改动任何既有模板):
特殊事项说明表/特殊事项说明表.tex
特殊事项说明表/ouccsx.sty
特殊事项说明表/README.md
特殊事项说明表/特殊事项说明表.pdf
顺带更新根 README.md:目录表加一行,模板计数 11 → 12。
原表 tblW = 9613 twips = 169.54 mm,而 docx 版心只有 156 mm,靠 tblInd = −546 twips 向左顶出去。若 geometry 照搬 docx 版心,表格必然 超出版心 13.54 mm 报 Overfull。故把版心直接设成表格宽度 (left 16.47mm / totalwidth 169.54mm),表格正好填满、零 Overfull、 位置与原件逐点相同。代价是标题与备注区要额外偏移补回 docx 版心的中心。
tblW = 9613 twips = 169.54 mm
tblInd = −546 twips
geometry
left 16.47mm
totalwidth 169.54mm
\baselineskip
\kern
本表行距逐行不同(15.24 / 15.48 / 14.04 / 13.56 / 13.68 bp),因为 10.5 pt 与 12 pt 混排,Word 按「下一行字号 × 1.3」算。而 \baselineskip 只在同一 段落内部管行距 —— 每行 \par 自成一段后,段间基线距由「上段深度 + \parskip + 本段字高」决定,\baselineskip 根本没被读到(实测所有行距被压成 13.51,整表矮 2.25 bp)。
\par
\parskip
改成显式插胶:基线距 = 上盒深度 + \kern + 本盒高度。与字体度量彻底解耦, 换字体/换字号/描述长短都不影响行距。
基线距 = 上盒深度 + \kern + 本盒高度
\vfil
原 docx 的 R0 用 8 个空段给手写留白,描述一写长就把签名区顶到下一行。 本模板改成上下两半 + 中间可伸缩胶:描述短则空白落在两半之间,描述长则 空白被吃掉,签名区位置都不动。这比原件更稳。
xelatex
课程执行大纲/
numPr
除此之外无任何版式差异。
commit 0fd6021「新增特殊事项说明表 LaTeX 模板 #16」已推送至 main (389ddf5..0fd6021),5 files changed / 920 insertions / 2 deletions。
0fd6021
main
389ddf5..0fd6021
d49f60152d6114f8
2e51a2ffda830e17
193ed1e277c63153
dc2a704fd8f0d14d
ee420a63cb72897b
5/5 全部一致,远端与本地零差异。
(过程中踩到一个坑:urllib.request 内部对 URL 做 encode('ascii'), 路径里的中文直接抛 UnicodeEncodeError。必须 urllib.parse.quote(path, safe='/') 先做百分号编码。后续同仓库验证都走这个写法。)
urllib.request
encode('ascii')
UnicodeEncodeError
urllib.parse.quote(path, safe='/')
0fd6021 正文里把 \prevgraf 写成了 \prevgen。代码本身正确(.sty 里两处 \prevgraf 都在),仅是提交说明的错字,不改写历史。
\prevgraf
\prevgen
.sty
按四个坑(版心取表格宽、\baselineskip 管不了跨段行距、块首行必须 \kern、 \vbox to N 深度另计)连同另外几个(负 \kern 不能挡、多行段落 \ht 参照末行 基线、\prevgraf 两道坎、\offinterlineskip 继承进段落、bp vs pt)都已写进 特殊事项说明表/README.md 的「六个必须知道的坑」与头注释,后来人改版式不必重踩。
\vbox to N
\ht
\offinterlineskip
bp
pt
用户要求:「因项目研讨需要,前往菏泽进行项目研讨与系统演示,因携带大件演示设备,公共交通多有不便,因此采用自驾方式前往。这一句话删除,换成其他的内容,自己编一段。」
模板里 \sxdesc 那段是虚构示例(原为「去菏泽做项目研讨、自驾」), 用户要求换掉。仍属同一需求的补充,不新开单。
\sxdesc
因渤海湾生态环境监测浮标需要例行维护,需前往昌邑近岸观测站更换传感器并回收监测数据。 该站位于滩涂养殖区,公共交通无法抵达,且需随车携带备件箱、采样冷藏箱与工具, 故采用自驾方式前往。
commit 1abb3cf「特殊事项说明表示例文案换为浮标维护场景 #16」已推送 (0fd6021..1abb3cf),2 files changed / 4 insertions / 3 deletions。
1abb3cf
0fd6021..1abb3cf
因渤海湾生态环境监测浮标需要例行维护,前往昌邑近岸观测站更换传感器并回收监测数据。 该站位于滩涂养殖区,公共交通无法抵达,且需随车携带备件箱、采样冷藏箱与工具, 故采用自驾方式前往。
原「去菏泽做项目研讨与系统演示」整句已删除。
保留原示例的核心逻辑 —— 一段「特殊事项」要证明的是为什么必须这样花钱, 所以必须交代两条必要性:① 公共交通到不了;② 必须携带专用设备。 新文案把这两条都保住了,只把事由从「项目研讨」换成课题范畴内的 「近岸观测站设备维护」,读起来更贴近实际业务场景。
172.99 / 457.49 / 516.34 / 573.64
这次改动顺带验证了 \vfil 伸缩逻辑:描述从 63 字增到 89 字(宽度从 约 470 bp 逼近折行临界),位置一个都没动。这正是本模板相对原 docx 「8 个手写空段」的核心改进 —— 原件里描述一写长就把签名区顶到下一行。
316a8ef1a49c0d02
8afa83938fe91e4a
2/2 一致。
回归 12 个模板时发现 试卷(0.2071pt Overfull)、课程执行大纲(1 Overfull)、 幻灯片/科技报告(各 1 Underfull)。逐个查过:本次只改 \sxdesc 一个宏, 其余 11 个目录的源码一字未动,这些都是既有状态,不在本单范围内。 (其中 试卷 那处是编号「3.」与「(4 分)」之间的 0.2pt 挤行,属既有排版细节。)
试卷
课程执行大纲
幻灯片
科技报告
No dependencies set.
The note is not visible to the blocked user.
需求
用户原话:「@
中国海洋大学特殊事项说明表.docx改成 latex 模板,放入代码库中。」把报销用的《中国海洋大学特殊事项说明表》Word 版复刻为 LaTeX 模板,新增目录
特殊事项说明表/,与本库其余 11 个模板同一套约定(中文目录名、README.md、<缩写>.sty样式文件、\input{../fonts.tex}公共字体)。涉及范围
新增(全部为新文件,不改动任何既有模板):
特殊事项说明表/特殊事项说明表.tex— 主文件,填表只改第 1 节 4 行特殊事项说明表/ouccsx.sty— 版式包特殊事项说明表/README.md— 用法、版式数据来源、六个坑、实测偏差特殊事项说明表/特殊事项说明表.pdf— 编译样张顺带更新根
README.md:目录表加一行,模板计数 11 → 12。关键设计决策
1. 版心取表格宽度,不取 docx 版心
原表
tblW = 9613 twips = 169.54 mm,而 docx 版心只有 156 mm,靠tblInd = −546 twips向左顶出去。若geometry照搬 docx 版心,表格必然超出版心 13.54 mm 报 Overfull。故把版心直接设成表格宽度
(
left 16.47mm/totalwidth 169.54mm),表格正好填满、零 Overfull、位置与原件逐点相同。代价是标题与备注区要额外偏移补回 docx 版心的中心。
2. 行距不用
\baselineskip,改成逐行插\kern本表行距逐行不同(15.24 / 15.48 / 14.04 / 13.56 / 13.68 bp),因为 10.5 pt
与 12 pt 混排,Word 按「下一行字号 × 1.3」算。而
\baselineskip只在同一段落内部管行距 —— 每行
\par自成一段后,段间基线距由「上段深度 +\parskip+ 本段字高」决定,\baselineskip根本没被读到(实测所有行距被压成13.51,整表矮 2.25 bp)。
改成显式插胶:
基线距 = 上盒深度 + \kern + 本盒高度。与字体度量彻底解耦,换字体/换字号/描述长短都不影响行距。
3. R0 靠「上下两半 +
\vfil」,不用 8 个空段原 docx 的 R0 用 8 个空段给手写留白,描述一写长就把签名区顶到下一行。
本模板改成上下两半 + 中间可伸缩胶:描述短则空白落在两半之间,描述长则
空白被吃掉,签名区位置都不动。这比原件更稳。
验收标准
xelatex编译 0 error / 0 Overfull / 0 Underfull / 1 页dX ≤ 0.04 bp(备注区 ≤ 0.82 bp,为字体字宽差)
无整体错位偏移带
README.md写明用法、可改参数、数据来源、六个坑、有意差异、实测偏差与原件的有意差异(仅 3 处)
按
课程执行大纲/既定做法换真粗体)numPr),位置比前两条偏0.36 bp;本模板统一排齐
除此之外无任何版式差异。
交付完成
commit
0fd6021「新增特殊事项说明表 LaTeX 模板 #16」已推送至main(
389ddf5..0fd6021),5 files changed / 920 insertions / 2 deletions。服务器下载验证(Gitea API raw,逐字节 sha256 比对)
特殊事项说明表/ouccsx.styd49f60152d6114f8特殊事项说明表/特殊事项说明表.tex2e51a2ffda830e17特殊事项说明表/README.md193ed1e277c63153特殊事项说明表/特殊事项说明表.pdfdc2a704fd8f0d14dREADME.md(根)ee420a63cb72897b5/5 全部一致,远端与本地零差异。
(过程中踩到一个坑:
urllib.request内部对 URL 做encode('ascii'),路径里的中文直接抛
UnicodeEncodeError。必须urllib.parse.quote(path, safe='/')先做百分号编码。后续同仓库验证都走这个写法。)
最终对齐结果
xelatex编译:0 error / 0 Overfull / 0 Underfull / 1 页差异带全部落在有文字的行上(OUC Serif vs SimSun 字形轮廓差),无整体错位偏移带
三个已知的有意差异(已写入模板 README,非缺陷)
numPr),位置比前两条偏 0.36 bp;本模板统一排齐 —— 这是唯一的位置差异
一处 commit message 笔误
0fd6021正文里把\prevgraf写成了\prevgen。代码本身正确(.sty里两处\prevgraf都在),仅是提交说明的错字,不改写历史。按四个坑(版心取表格宽、
\baselineskip管不了跨段行距、块首行必须\kern、\vbox to N深度另计)连同另外几个(负\kern不能挡、多行段落\ht参照末行基线、
\prevgraf两道坎、\offinterlineskip继承进段落、bpvspt)都已写进特殊事项说明表/README.md的「六个必须知道的坑」与头注释,后来人改版式不必重踩。补充:示例文案替换
用户要求:「因项目研讨需要,前往菏泽进行项目研讨与系统演示,因携带大件演示设备,公共交通多有不便,因此采用自驾方式前往。这一句话删除,换成其他的内容,自己编一段。」
模板里
\sxdesc那段是虚构示例(原为「去菏泽做项目研讨、自驾」),用户要求换掉。仍属同一需求的补充,不新开单。
新文案
选这段的理由
需携带专用设备),新文案保留这两条必要性,只是把事由从「项目研讨」换成
「观测站设备维护」,表格的示范作用不变。
渤海湾生态系统健康预警的实际工作对得上,用户看着比「菏泽系统演示」更自然。
\vfil伸缩逻辑:描述写长时空白被吃掉、签名区位置不动,这是本模板相对原 docx 「8 个手写空段」的核心改进之一。
验收
xelatex编译 0 error / 0 Overfull / 0 Underfull / 1 页\vfil吸收增量)\sxdesc外不改任何排版代码补充完成
commit
1abb3cf「特殊事项说明表示例文案换为浮标维护场景 #16」已推送(
0fd6021..1abb3cf),2 files changed / 4 insertions / 3 deletions。换后的文案
原「去菏泽做项目研讨与系统演示」整句已删除。
为什么这么写
保留原示例的核心逻辑 —— 一段「特殊事项」要证明的是为什么必须这样花钱,
所以必须交代两条必要性:① 公共交通到不了;② 必须携带专用设备。
新文案把这两条都保住了,只把事由从「项目研讨」换成课题范畴内的
「近岸观测站设备维护」,读起来更贴近实际业务场景。
验证
xelatex:0 error / 0 Overfull / 0 Underfull / 1 页172.99 / 457.49 / 516.34 / 573.64—— 与原件逐点一致这次改动顺带验证了
\vfil伸缩逻辑:描述从 63 字增到 89 字(宽度从约 470 bp 逼近折行临界),位置一个都没动。这正是本模板相对原 docx
「8 个手写空段」的核心改进 —— 原件里描述一写长就把签名区顶到下一行。
服务器下载验证
特殊事项说明表/特殊事项说明表.tex316a8ef1a49c0d02特殊事项说明表/特殊事项说明表.pdf8afa83938fe91e4a2/2 一致。
顺带说明:全库回归时看到的几处警告与本改动无关
回归 12 个模板时发现
试卷(0.2071pt Overfull)、课程执行大纲(1 Overfull)、幻灯片/科技报告(各 1 Underfull)。逐个查过:本次只改\sxdesc一个宏,其余 11 个目录的源码一字未动,这些都是既有状态,不在本单范围内。
(其中
试卷那处是编号「3.」与「(4 分)」之间的 0.2pt 挤行,属既有排版细节。)