Files
ouc_latex_template/年度考核登记表/年度考核登记表.tex
T
laoyang 8984b93ee7 模板内容填充:全库 × 占位换成完整虚构示例,README 表述同步 #11
把 11 个模板里满篇的 × 换成一套连贯的虚构数据,让样张能看出排版效果。

虚构设定(跨模板统一):
- 数字逻辑 / 2025 秋 / 张远航 / 计算机科学与技术学院,教学日历、成绩构成
  说明、试卷归档封面、试卷四份互相对得上
- 简历:张远航,1985.03,教授博导,论文/专利/项目/获奖全套虚构
- 年度考核:同一人的 2025 年度考核表,年度总结四段写满
- 执行大纲:刻意不套用上面那套(原件就是《信号与线性系统分析》的课,
  强行改课程名会让章节体系、学时分配、思政案例全对不上)

假数据都留肉眼可辨标记:DOI 统一 10.9999/、专利号 ZL209999…、
软著 2024SR99999…、手机 138 0000 0000、邮箱 example.net。
签字/日期/评语栏仍然留空——编了就分不清该改哪儿。

修掉一个既有 bug(填充时才暴露):
年度考核登记表「出生年月」的值从来不显示,连字符都不在 PDF 里。
根因是 tabularray 的 cell{r}{c}={c=n} 里那个 c 是数据行的单元序号、
不是视觉列号,表头三处 c=2 要求该行吃 15 个视觉列而表只有 11 列,
超出部分静默丢弃。迷惑点:写 12 格丢值,写 9 格反而正常。
正解是表头不写 cell{},改用行内 \SetCell[c=n]{c},每行照常写满 11 格。
同时 R0 行原件本就装不下(前六字段 115.76mm,剩 42.20mm 要放
19.68mm 标签 + 17.22mm 值,但列宽被切成 15.31/1.38/25.51),
把标签折两行「出生/年月」解决,列宽一个没改。

README 同步:根 README 与 8 个模板 README 里「一律用 × 占位」的说法
已不成立,统一改为「示例内容全部虚构」,并说明哪些位置仍必须留空。

验证:12 个模板零 error,4 处基线警告未新增;干净副本重编页数一致;
PDF 正文 × 清零;真实信息零泄漏。
2026-10-27 12:50:02 +08:00

157 lines
8.8 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.
%======================================================================
% 中国海洋大学 教职工年度考核登记表
%
% 编译: xelatex 年度考核登记表.tex
% (跑两遍,第二遍才取到正确页码)
%
% 本文件刻意不含真人信息:姓名/职工号/出生年月/单位/岗位等一律用
% × 占位。填表时只改下面【第 1 节 基本信息】和【第 3 节 年度总结】。
%
% 版式来源:2025 年学校下发的 Word 表(A4、表宽 158.33mm、11 列、
% 仿宋 14pt)。所有尺寸已在 ouckhtb.sty 内注明换算过程;
% 要改版式请改 sty,不要在这里加 \vspace 硬撑。
%======================================================================
\documentclass[UTF8,fontset=none]{ctexart}
\usepackage{ouckhtb}
%======================================================================
% 1. 基本信息(填表时只改这一段)
%======================================================================
\khtbyear{2025}
\newcommand{\khnum}{0000000} % 职工号
% ⚠️ 占位符“×”必须包 \fangsong:它会被 fontspec 当成 ASCII 交给
% Times New Roman,而 TNR 的 × 是 1em 宽的数学符号(14pt 一格),
% 9 个就是 126pt,撑破所在列。用仿宋(全角)宽度才与汉字一致。
\newcommand{\khname}{{\fangsong 张远航}} % 姓名(2 字宽)
\newcommand{\khsex}{{\fangsong 男}} % 性别
\newcommand{\khbirth}{{\fangsong 1985.03}} % 出生年月
\newcommand{\khdept}{{\fangsong 信息科学与工程学部}} % 单位(学部/学院)
\newcommand{\khsubdept}{{\fangsong 计算机科学与技术学院}} % 系(研究所、实验室、科室)
\newcommand{\khparty}{{\fangsong 中共党员}} % 政治面貌
\newcommand{\khtitle}{{\fangsong 教授}} % 现专业技术职务
\newcommand{\khpost}{{\fangsong 教授三级}} % 所聘岗位
% 【出生年月】标签的文字。默认折成两行 —— 原因见正文 R0 那行的长注释:
% 一格 15.31mm 放不下 4 个 14pt 的字(要 19.68mm),折两行才不溢出。
\newcommand{\khbirthlabel}{出生\par 年月}
% 年度总结正文。多段之间用 \par 分隔。
\newcommand{\khsummary}{%
本人坚持以立德树人为根本任务,认真参加学校与学部组织的各项政治学习,
自觉把思政要求融入课堂教学,全年无师德失范情形。\par
教学工作方面,本年度主讲《数字逻辑》《机器学习与海洋应用》两门本科生
课程与《海洋大数据分析》研究生课程,合计 176 学时;指导本科毕业设计
6 人、硕士研究生 5 人;主持校级教研项目 1 项,参编教材 1 部。\par
科研工作方面,主持国家重点研发计划青年科学家项目 1 项、横向课题 1 项,
到账经费 320 万元;以第一或通讯作者发表学术论文 5 篇,其中 SCI 收录 4 篇;
授权发明专利 2 项,登记软件著作权 1 项。\par
人才培养与团队建设方面,协助学院组建海洋信息处理青年团队,指导青年
教师 2 人获校级项目资助;参与学部学科建设与本科培养方案修订工作。}
%======================================================================
% 2. 表外标题
%======================================================================
\begin{document}
\khtbtitle
%======================================================================
% 3. 表格主体
%
% ⚠️⚠️ 每个单元格都要写满,跨度不用管(已写死在 ouckhtb.sty 里):
% 本表 11 个网格列、9 行,每行都老老实实写 11 个格子 + 结尾 \\
% 跨列合并由 sty 的 cell{r}{c}={c=n}{c} 声明,若某格是合并的起点,
% 它后面应补 (n−1) 个空 & ,凑满 11 格。数错一位就会整体错列。
%
% ⚠️⚠️⚠️ 合并格里的文字【必须】用 \khtbfit{跨度宽宏}{文字} 包起来。
% 因为 cell{r}{c}={c=n}{c} 的 {c} 是【不折行的 LR 模式】:
% 文字比所跨各列合计更宽时,它不会折行,而是把列撑宽、整张表超出版心
% (实测“系(研究所、实验室、科室)”把表从 448.3pt 撑到 558.9pt)。
% 单列的 Q[c,m,wd=…] 没有这个问题,所以只有合并格需要包。
%======================================================================
\begin{khtbtable}
% ⚠️ 每行都按 11 列写满(10 个 & + 结尾 \\)。
% 跨列合并在格子里用行内 \SetCell[c=n]{c} 声明,**不要**用表头的
% cell{r}{c}。原因见 ouckhtb.sty 第 6 节的长注释 —— 那里踩过坑:
% 用表头 cell{} 会让某个值整格消失,而且零报错。
%---- R0 职工号 / 姓名 / 性别 / 出生年月 -------------------------------
% ⚠️ 修了一个既有 bug:这一行「出生年月」的值**原来从来不显示**,
% 原版 PDF 里那一格就是空白(用 ××××.×× 时同样丢,只是没人注意)。
%
% 原因不是合并写错,是原件这行本身就装不下:
% 职工号(c1-2) 24.09 + 值(c3) 21.52 + 姓名(c4) 18.41
% + 值(c5-6) 24.43 + 性别(c7) 16.76 + 值(c8) 10.55 = 115.76mm
% 全表 157.96mm,只剩 42.20mm(c9+c10+c11)要装「出生年月」标签 + 值。
% 而标签 4 字 14pt 就要 19.68mm,值「1985.03」14pt 要 17.22mm,
% 19.68 + 17.22 = 36.90mm —— 看似够,但列宽是被 c9=15.31 / c10=1.38
% / c11=25.51 切死的,标签占不住 c9(15.31 < 19.68),只能整体右移到
% c10-11,于是值就被挤到表外静默丢弃。
%
% 处理:标签放 c9 并折成两行「出生 / 年月」(每行 2 字 9.84mm,放得下),
% 值放 c10-11(26.89mm,17.22mm 的「1985.03」放得下)。
% **列宽一个都没改**,只是把「标签必须一行」这个原件约束让掉了 ——
% 换来的是值能显示。想还原原件那种「标签一行、值不要」,把上文
% \khbirthlabel 的定义改回一行「出生年月」即可(值会重新消失)。
\SetCell[c=2]{c} 职工号 & & \khnum & 姓名 &
\SetCell[c=2]{c} \khtbfit{\khtbspanH}{\khname} & & 性别 & \khsex
& \khbirthlabel &
\SetCell[c=2]{c} \khtbfit{\khtbspanG}{\khbirth} & \\
%---- R1 单位 / 系(研究所、实验室、科室) ----------------------------
\SetCell[c=2]{c} \khtbfit{\khtbspanA}{单\hspace{1em}位} & &
\SetCell[c=3]{c} \khtbfit{\khtbspanB}{\khdept} & & &
\SetCell[c=2]{c} \khtbfit{\khtbspanC}{\khtbxi} & &
\SetCell[c=4]{c} \khtbfit{\khtbspanD}{\khsubdept} & & & \\
%---- R2 政治面貌 / 现专业技术职务 / 所聘岗位 -------------------------
\SetCell[c=2]{c} \khtbfit{\khtbspanA}{政治面貌} & & \khparty
& \SetCell[c=2]{c} \khtbfit{\khtbspanE}{现专业技术职务} & & \khtitle
& & \SetCell[c=3]{c} \khtbfit{\khtbspanF}{所聘岗位} & & & \khpost \\
%---- R3 年度总结(竖排标签 + 正文栏) -------------------------------
% 正文与签名写进一个固定宽的 \parbox,否则会按版心宽折行冲出格子。
\khtbvert{年度总结}
& \SetCell[c=10]{c} \khtbcell{\khtbsummary{\khsummary}\khtbsummarysign}
& & & & & & & & & \\
%---- R4 系(所、实验室、科室)考评意见 -------------------------------
\khtbfit{\khtbwa}{系(所、实验室、科室)考评意见}
& \SetCell[c=10]{c} \khtbcellb{\khtbsign{负责人签名:}\khtbdate}
& & & & & & & & & \\
%---- R5 师德考核结果 ------------------------------------------------
\khtbfit{\khtbwa}{师德考核结果}
& \SetCell[c=10]{c} \khtbcell{\khtbchoices{优秀,合格,基本合格,不合格}\khtbseal}
& & & & & & & & & \\
%---- R6 单位年度考核建议档次 ----------------------------------------
\khtbfit{\khtbwa}{单位年度考核建议档次}
& \SetCell[c=10]{c} \khtbcell{\khtbsmallnote
(对考核档次为基本合格、不合格、不确定档次的人员需说明原因)\par
\khtbbodyfont
\khtbchoices{优秀,合格,基本合格,不合格,不确定档次}\khtbseal}
& & & & & & & & & \\
%---- R7 年度考核结果 ------------------------------------------------
\khtbfit{\khtbwa}{年度考核结果}
& \SetCell[c=10]{c} \khtbcell{\khtbchoices{优秀,合格,基本合格,不合格,不确定档次}\khtbseal}
& & & & & & & & & \\
%---- R8 本人意见 ----------------------------------------------------
% docx 里首列是 3 个段落(空 / “本人” / “意见”),故两词各占一行。
\khtbstack{本人,意见}
& \SetCell[c=10]{c} \khtbcell{本人知晓并同意考核结果为\khtbunderline{6em}。\par
\vspace*{0.4em}%
\khtbsign{本人签名:}\khtbdate}
& & & & & & & & & \\
\end{khtbtable}
%======================================================================
% 4. 表外脚注
%======================================================================
\khtbfootnote
\end{document}