Overview Install Files SecuritySummary This source did not publish a separate summary. Review SKILL.md before using the skill.
chinese-ppt2
相对 chinese-ppt 的升级点(先读这一节)
本 skill 继承 chinese-ppt 的全部硬规则,并追加 7 项一级强规则。新规则均来自
实践中发现的排版问题与用户反馈,不得关闭 。
升级 1 — 全局行距与段距(强制)
导言区必须包含:
\usepackage{enumitem}
\usepackage{etoolbox}
% 行距 1.3 + 段前/段后 3pt(对应 Word "多倍行距 1.3")
\linespread{1.3}
\setlength{\parskip}{3pt plus 1pt minus 0pt}
\setlist[itemize]{topsep=3pt, itemsep=3pt, parsep=3pt, partopsep=0pt}
% enumerate 必须显式指定 label —— 否则 enumitem 继承的 \labelenumi 在
% ctex + fandol + beamer 下偶发自引用 (\labelenumi -> {\labelenumi),
% 引爆 "TeX capacity exceeded, input stack size=10000"。
\setlist[enumerate,1]{label=\arabic*., topsep=3pt, itemsep=3pt, parsep=3pt, partopsep=0pt}
\setlist[enumerate,2]{label=(\alph*), topsep=2pt, itemsep=2pt}
\renewcommand{\labelenumi}{\arabic{enumi}.}
% 关键:固定几何环境(tabular / tikz)内部自动重置为 1.0 行距,
% 防全局 1.3 顶破 minimum height 节点与 tabular 行高。
% 这一对 hook 是升级 7 的首选实现,免去手工逐帧包装。
% 注意:不要在 hook 里加 \selectfont —— 在 ctex+fandol+beamer 下会触发
% 中文字体重载的递归,引发 "TeX capacity exceeded, input stack size=10000"。
% 省掉 \selectfont,linespread 的新值会在环境内下一次字体切换
% (\small / \scriptsize / \node 文本)时自然生效,对 tabular / tikzpicture
% 已足够;tabular 再叠加 \arraystretch=1.0 作为第二保险。
\AtBeginEnvironment{tabular}{\linespread{1.0}\renewcommand{\arraystretch}{1.0}}
\AtBeginEnvironment{tikzpicture}{\linespread{1.0}}
理由:PPT 正文过密会让观众读不完第一屏。1.3 行距 + 3pt 段距是 Word
学术排版的默认手感,也让 beamer 10pt 字体有呼吸空间。\AtBeginEnvironment
两行 hook 自动把 tabular 与 tikzpicture 的内容行距压回 1.0,避免图表因全局
1.3 越界(见升级 7)。
升级 2 — 帧内容行数预算(强制)
启用 \linespread{1.3} 后,每帧的可用行数(正文,不含标题、页脚)
严格按下表上限 。超过 → 强制拆帧(见升级 3)。
帧类型 最多正文行数 备注 纯段落(§1 / §2) 12 行 每段 2--3 句,不超 4 段 段落 + 列表 10 行 列表 ≤ 4 项 纯列表 列表 ≤ 4 顶层项 ,每项 ≤ 2 行 嵌套 subitem ≤ 2 层
表格 + 讨论 表格 ≤ 6 中间行 ,讨论 ≤ 2 行 超了拆讨论帧 + 表格帧
短项(一句半以内、无括号引用) ≈ 1.5 行
中项(一个英文括号引用 (Xxx, 20xx) 或一句完整陈述) ≈ 2 行
长项(2--3 个串联引用 (A 等, 2022;B 等, 2023;C 等, 2024) 或双分号
的复合句) ≈ 3 行
每段 2--3 句正文引子 ≈ 2 行
写前先数:3 长项 × 3 行 = 9 行 已占满纯列表帧预算。
文献综述类(每条几乎都是长项)再加引子就必超 10 行 ,要么压引子、
要么按主线再拆。典型反例:一帧里塞 主线 A(2 长项)+ 主线 B(3 长项)
两段引子 = 约 14--16 行,必然越界 ,应拆成主线 A 单帧 + 主线 B 单帧。
升级 3 — 越界时的"均分拆帧"策略(强制) 溢出程度 首选做法 溢出 ≤ 1 行 帧内局部 \setlist[itemize]{topsep=1pt, itemsep=1pt, parsep=1pt};必要时把一个长句拆短 溢出 2--4 行(不够撑满新帧) 对半拆 :前帧只留一半内容,另一半到新帧,新帧用一段 2--3 句的承接话 + 结论扩展把空间填匀。不能前 90% 后 10%溢出 > 4 行 或 含表格 自然拆两帧,各自完整
对半拆的具体做法(关键)
按概念维度拆 ,不是按机械位置切一刀:
4 个 bullet 的机制帧 → 拆成"(上) 披露 + 责任" / "(下) 认知 + 治理",每帧 2 项
2 个表格的变量定义帧 → 拆成"核心 X" / "控制 X_it",各 1 表
两条主线 + 交叉空白 → "(一) 两条主线" / "(二) 交叉空白 + 本文切入"
每个半帧补一段承接 / 小结 ,避免稀疏:
后帧开头:一句"X—Y 的外部压力继续传导到决策层:"(衔接)
后帧结尾:一句"机制推论:…"(把下沉的结论留给后帧)
命名约定 (任选其一,一份 deck 内统一):
序号式:变量定义(二) / 变量定义(三)
概念式:机制(软实力):披露与责任 / 机制(软实力):认知与治理
上下式:主要研究结论(上) / 主要研究结论(下)
禁止前帧 5 条 bullet、后帧只有 1 条 bullet + 1 句话(后帧空虚)
禁止后帧完全是前帧的续写、没有独立的引子(观众看页码以为漏了内容)
禁止用 \begin{frame}[allowframebreaks] 自动分页(破坏手工设计的章节页码)
升级 4 — 禁止 AI 味表达(强制) 观众和导师一眼能识别"AI 写的"PPT。以下模式必须全部清除:
4a. 结论前的标签式短语 → 改成自然句 AI 味 自然表达 \textbf{关键比较:} ...的符号与显著性差异。我们重点看 β₁ 与 β₂ 在符号和显著性上是否不同。\textbf{理论映射:} 验证可观察性推论——...这与前文的可观察性逻辑一致:...\textbf{核心机制:} ...传导路径...传导路径是这样的:...\textbf{理论含义:} ...这说明 ...\textbf{政策含义:} ...对政策制定者而言,...
规则:不要以"关键 X:/ 理论 Y:/ 核心 Z:"开头 + 冒号 + 一句话 的三段式
模板写结论。直接用完整陈述句。
4b. H1/H2/H3 假设后不加章节括号
错:\textbf{H1(第四章·信号传递):} HSGT 显著提升 GTFP。
对:\textbf{H1:} HSGT 显著提升 GTFP。
章节归属在下面的 \section{} 和页脚 \insertsectionhead 已经显示,
在假设旁边再标一遍是 AI 的冗余模式。
4c. 概念后不加"(xxx)"型自注释
错:\textbf{政策窗口(样本中部):}
对:\textbf{政策窗口:}
错:双碳目标(碳达峰 + 碳中和)
对:双碳目标 —— 碳达峰 + 碳中和(用破折号自然衔接)
规则:如果括号内是对前面短语的同义复述 ,删;如果是补充事实
(人名、年份、缩写英文名),保留。
4d. 结论 / 创新 / 建议页禁用 "F1 / F2 / F3" 编号前缀 主要研究结论、创新点、政策建议这类总结页,不要在每个 bullet 前加
"F1:/ F2:/ C1:/ P1:/ 结论 1:/ 发现 1:"之类的字母或数字编号前缀 。
这是 AI 模板的典型标记,很丑,观众一眼能识别。
AI 味(禁) 自然表达(对) \textbf{F1 主效应成立。} 绿色基金...\textbf{主效应成立。} 绿色基金...\textbf{F2:} 情境依赖明显...\textbf{情境依赖明显。} ...\textbf{C1 视角创新。} ...\textbf{视角创新。} ...\textbf{P1 顶层设计:} ...\textbf{顶层设计。} ...\textbf{结论 1:} ... / \textbf{发现 1:} ...\textbf{...(自然短语)。} ...
bullet 的序号已经由 \begin{itemize} / \begin{enumerate} 自动表达,
不要在正文里再手写 F1 / C1 / P1 / 发现 1 / 结论 1 这类机械编号。
起始粗体只写自然主语短语 + 句号 / 冒号 :如"主效应成立。"、
"情境依赖明显。"、"视角创新。"、"顶层设计。"、"监督机制。"
创新点帧用 \begin{enumerate} 让 1. 2. 3. 自动编号,不要 再写
创新 1: / 1. 视角创新: —— 前者是 AI 模板,后者是重复编号。
H1/H2/H3(研究假设)可以 保留(它们是论文里的正式假设编号,读者
有预期);但结论页对应假设时 用"主效应成立 / 转型驱动获验证"等
自然短语,不要再出现"F1 / F2 / F3"这种并行编号。
升级 5 — CJK 空格与中点(·)严守规则 xeCJK 默认会对 CJK—Latin 过渡插入小空格;不要在 CJK—CJK 之间人为加空格 。
5a. 中文之间不能有空格
错:我们 重点 看 两者 差异
对:我们重点看两者差异
错:中 · 英 混排(中点两侧空格让视觉突兀)
对:中·英混排 或 中、英混排
5b. 中点(·)使用规则
允许:frame 标题的视觉分层(第五章 · 基准讨论:GII 主要在下游)
允许:作者姓名缩写(Fama · French)
禁止:正文括号内当章节注脚(如 (第四章 · 信号传递))
禁止:并列概念之间(改成 、、+、/)
5c. 中英混排空格保留 HSGT 显著提升 GTFP、N = 7{,}551、2012 年 这类英文 / 数字两侧的空格
不要去 ,xeCJK 依赖它们正确排版。
升级 6 — 表格横向越界处理 4+ 列 + 长列头("超效率 GTFP"、"非重污染子样本")横向很容易越界。
首选做法:组标题行 + \multicolumn + \cmidrule ,而不是把全部
文字塞进第二行:
\begin{tabular}{lcccc}
\toprule
& \multicolumn{2}{c}{超效率 GTFP} & \multicolumn{2}{c}{非重污染子样本} \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5}
& (1) Preresi & (2) Presenti & (3) Preresi & (4) Presenti \\
\midrule
...
\end{tabular}
配合 \setlength{\tabcolsep}{4pt} 与 \small。仍超再升级到 \scriptsize
或拆帧。
升级 7 — TikZ / 固定几何环境必须重置 \linespread{1.0}(强制) 为什么会有这条规则。 全局 \linespread{1.3}(升级 1)作用在任何会读
\baselineskip 的地方,包括:
TikZ 节点 里的 \\ 换行 —— 节点内容按 1.3× 行高排版,撑破
minimum height 设计的节点框,把整张画布顶进页脚;
tabular 的行高 —— 每行 \\ 多占 30% 垂直空间,6 行的表变成 8 行的高;
\begin{center} 的 topsep —— 画布整体向下偏移;
\includegraphics 后 caption 的垂直间距;
\node 文本与 minipage 里的 baseline。
这些都是按 linespread=1.0 设计 的固定几何元素。升级 1 的 1.3 只应该
作用在正文段落与列表项。
首选实现:全局 hook(升级 1 已内置) \usepackage{etoolbox}
\AtBeginEnvironment{tabular}{\linespread{1.0}\renewcommand{\arraystretch}{1.0}}
\AtBeginEnvironment{tikzpicture}{\linespread{1.0}}
这两行让任何 \begin{tabular}...\end{tabular} 和 \begin{tikzpicture}...
在进入时自动把行距压回 1.0,免去逐帧手工包装。这是 chinese-ppt2 的默认
方案 。
⚠ 不要在 hook 里加 \selectfont(实战教训) 早期版本的 hook 是 \linespread{1.0}\selectfont。实测在 ctex + fandol +
beamer 组合下会触发 "TeX capacity exceeded, input stack size=10000" 编译
失败。 原因是 \selectfont 在 tabular / tikzpicture 起始位置触发中文
字体重载,而 fandol 的字体表在 beamer frame 的 overlay 上下文里会与
hook 形成内部递归,push 到输入栈深度上限。
修复:去掉 \selectfont 。\linespread{1.0} 单独使用时,新 baseline
不会立刻生效,但环境内部下一次 \small / \scriptsize / TikZ \node
文本都会触发隐式 selectfont,把新 linespread 应用到后续内容,对
tabular 行高与 tikz 节点内容已足够。tabular 再叠加 \arraystretch=1.0
做第二保险,覆盖那些 baseline 来不及更新的边缘场景。
grep -n 'AtBeginEnvironment{tabular}{\\\\linespread{1.0}\\\\selectfont' report.tex
grep -n 'AtBeginEnvironment{tikzpicture}{\\\\linespread{1.0}\\\\selectfont' report.tex
# 命中任何一行说明用了老版本 hook,必须删掉 \selectfont
⚠ enumerate 必须显式指定 label(实战教训 2) 只写 \setlist[enumerate]{topsep=3pt, itemsep=3pt, parsep=3pt, partopsep=0pt}
不设 label=... 时,enumerate 帧会在 ctex + fandol + beamer 下偶发
编译失败,错误信息:
TeX capacity exceeded, sorry [input stack size=10000].
\labelenumi ->{\labelenumi
1.806 \end{frame}
\labelenumi -> {\labelenumi 是自引用——说明 enumitem 继承的 \labelenumi
在 ctex 初始化过程中被污染成递归定义,enumerate 帧展开时无限深度递归。
修复 :在 \setlist[enumerate,N] 里\textbf{显式给出 label=...},
并在导言区显式 renewcommand \labelenumi 截断递归:
\setlist[enumerate,1]{label=\arabic*., topsep=3pt, itemsep=3pt, parsep=3pt, partopsep=0pt}
\setlist[enumerate,2]{label=(\alph*), topsep=2pt, itemsep=2pt}
\renewcommand{\labelenumi}{\arabic{enumi}.}
不需要在 itemize 上做这个——itemize 的 \labelitemi 是 itemize 专用,
不走 enumi 那条被污染的路径。
grep -n 'setlist\[enumerate\]{' report.tex # 命中说明没带 ",1" + label=,必须改
grep -n 'setlist\[enumerate,1\]{label=' report.tex # 必须 >= 1
不要在 hook 已生效时再手工包装(实战教训 3) 早期版本建议"hook + 手工 {\linespread{1.0}\selectfont ... } 双保险"。
实测证明这会触发 TikZ 整帧变白 (X→M→Y 框架帧编译后空白)。怀疑原因:
\selectfont 在 frame body 开头触发时,beamer 还在做 frame 初始化,
字体状态未就绪;
外层 {...} 与 \begin{center} 嵌套后,TikZ 的 remember picture
overlay 坐标锚点错位;
或者 \selectfont 与 \AtBeginEnvironment 注入的 \selectfont 在
TikZ 节点字体切换时互相抵消。
规则 :全局 hook 已经处理好 tabular / tikzpicture 内部行距,不要 在
frame body 再包一层 {\linespread{1.0}\selectfont ... }。如果外层的
\begin{center} 或 \vspace 让画布偏下,用 \vspace*{-0.4em} ~
\vspace*{-0.8em} 向上微调,不要动 linespread。
不要用的做法
不要 在已有全局 hook 的前提下,再手工 {\linespread{1.0}\selectfont ...}
包装 frame body —— 实测会把整帧编译成空白。
不要尝试给 \linespread 设条件分支(如用 \ifx 判断环境)——不可靠。
不要去掉全局 \linespread{1.3}(升级 1 是强制的)。
不要用 \setstretch{1.0} 覆盖(效果等价但需要 setspace 包,额外依赖)。
不要只包 \begin{tikzpicture} —— 外层 \begin{center} 的 \topsep
还是按 1.3 算。要么用 hook,要么包整个 frame body 。
检测(retrofit 时) 确保导言区有 \AtBeginEnvironment{tabular} 和 \AtBeginEnvironment{tikzpicture}
两条 hook:
grep -c 'AtBeginEnvironment{tabular}' defense.tex # 应该 = 1
grep -c 'AtBeginEnvironment{tikzpicture}' defense.tex # 应该 = 1
若缺失,按"首选实现"补上。补完后只有大型 TikZ 诊断帧(例如 X→M→Y 框架图)
需要手工再加 frame body wrapper —— 通常就 1 张。
升级 8 — §7 必须包含"政策建议"帧(强制) 中文学术 PPT 的 §7 不能只有"研究结论"和"研究不足"。中文学术传统
(答辩、学术会议、组会汇报)对 §7 的预期结构里,\textbf{政策建议 /
实践启示}是必备环节——导师和听众会主动寻找"这项研究对政策 / 实践有
什么用"。缺失会被直接追问。
强制结构
主要研究结论 (1 帧)—— 对照 H1/H2/H3 逐条收束,用自然短语起头
(见升级 4d),\textbf{不要用 F1 / F2 编号}。
主要创新点 (1 帧)—— 视角 / 方法 / 结论三选一到三,用 enumerate
自动编号。
政策建议 / 实践启示 (\textbf{1--2 帧,必填})—— 分层给出具体
可操作的建议。超过 10 行按升级 3 对半拆(上 / 下)。
研究不足与未来展望 (1 帧)—— 样本、变量、机制、外部推广。
"顶层设计 + 转型机制" 为一帧;
"监督机制 + 差异化配套" 为一帧。
政策建议的写法
以实施主体为锚点 (监管部门 / 行业协会 / 企业管理层 / 金融机构 /
学界),不要以"第一、第二、第三"或"P1 / P2"开头。
每条 = 对象 + 动作 + 抓手 ,避免空洞的"加强、完善、促进":
错:完善绿色基金监管体系。
对:监管部门应制定统一的绿色基金认定标准,区分泛 ESG 基金与 绿色专项基金,并将该分类写入基金募集说明书的披露要求。
每条建议对应一个具体实证发现 (主效应 → 顶层设计;异质性 → 差异化
配套;机制 → 治理与披露),不要脱离论文自创建议。
帧标题允许"政策建议(上)/ 政策建议(下)"或"政策建议:顶层设计与
转型机制"这类概念式命名。
政策建议帧的排版(严格列表化,不用连续段落) 政策建议帧\textbf{必须用 itemize 结构},不要写成 3 段 3--4 行的粗体
段落——在 1.3 行距 + 3pt 段距下,3 段段落式写法几乎必然顶破页脚,
导致后面的帧被挤到下一页编译失败,表现为\textbf{页码停留在政策建议
帧的前一页,后续帧不出现在 PDF 中}。
正确写法 (列表化、每条 1--2 行、帧正文总行数 ≤ 10):
\begin{frame}{政策建议:顶层设计与转型机制}
\textbf{监管部门。}
\begin{itemize}
\item 制定统一的绿色基金认定标准,写入基金募集说明书披露要求;
\item 区分泛 ESG 基金与绿色专项基金,明确运作边界;
\item 按区域经济水平推行差异化监管策略。
\end{itemize}
\textbf{基金管理人。}
\begin{itemize}
\item 重点支持原创性、突破性绿色发明专利研发;
\item 将绿色责任履行水平纳入投资评价与绩效考核。
\end{itemize}
\end{frame}
错误写法 (连续段落 + 粗体引导 + 每段 3--4 行):
% 反例:实测会在编译时把后续帧挤丢
\begin{frame}{政策建议(上)}
\textbf{顶层设计。} 建议由官方对"绿色基金"作出明确定义……(3 行)
\textbf{转型机制。} 鼓励绿色基金重点支持……(3 行)
将\textbf{绿色责任履行水平}纳入……(3 行)
\end{frame}
行数预算:政策建议帧正文 ≤ 10 行 (含列表分隔)。超了就按升级 3
对半拆成"政策建议(上)/(下)"。
自检 grep -c '政策建议\|实践启示' report.tex # 必须 >= 1
若 §7 内无任何政策建议类帧,视为\textbf{结构性缺失},必须补齐。
升级 9 — 帧标题禁用"(一)(二)(三)"数字 / 汉字序号前缀(强制) 帧标题\textbf{不要}用"(一)(二)(三)(四)"或"(1)(2)(3)"
这类机械顺序号来区分同一主题的多张帧。序号由帧顺序与目录页自动表达,
观众不需要再看数字才能理解帧间关系。序号前缀也是 AI 模板的强标记。
错:研究背景(一):双碳战略 / 研究背景(二):融资困境 / 研究背景(三):已有研究 / 研究背景(四):制度窗口
对:研究背景:双碳战略与新质生产力 / 研究背景:绿色转型的融资困境 / 研究背景:绿色金融工具版图 / 研究背景:绿色基金的制度窗口
同主题的多帧用\textbf{"主题:核心概念"结构}区分,由冒号后的概念名
表达差异,不要用数字 / 汉字序号。
理论基础分多帧时,用概念副题(如"理论基础:代理视角——漂绿与私利
的双重遏制")或括号点明视角("理论基础(代理视角)"),但\textbf{不
要用"理论基础(一)(二)(三)"}。
允许的例外 :主要研究结论(上)/(下)、政策建议(上)/(下)
这类\textbf{对半拆帧}的命名约定(见升级 3)—— 它们表达的是"同一帧被
拆成两页",不是"多个平行主题的顺序编号",语义不同,允许保留。
grep -nE '\\begin\{frame\}\{[^}]*([一二三四五六七八九十0-9]+)' report.tex
升级 10 — 章节顺序:文献必须在 X→M→Y 框架之前(强制) X→M→Y 框架图是对\textbf{研究假设}的图示化总结,应当出现在读者已经
看过文献综述、理论基础、假设之后,而不是抢在文献综述之前。
§1 只放 "研究背景帧 × N + 研究问题帧"(不放 框架图);
§2 按此顺序:
文献综述(主线 / 缺口)
理论基础(至少 2 帧,见升级 11)
研究假设(H1/H2/H3)
X→M→Y 研究框架帧 (放在 §2 末尾)。
早期 chinese-ppt 模板把框架图放在 §1 研究问题之后,是一个应当纠正的
历史设计。在 chinese-ppt2 中,框架图一律进入 §2 末尾。
理由:观众在看到 X→M→Y 图之前,应当先理解"为什么是这些 X、这些 M、
这些 Y"——这需要文献缺口与理论基础铺垫。框架图抢在文献之前会让观众
误以为这是一项\textbf{事先假定好结构}的论证,而不是\textbf{从理论
推出}的框架。
升级 10.5 — 页脚只显示 \insertframenumber,不要用 "X / N" 格式(强制) 页脚\textbf{不要写}成 \insertframenumber\,/\,\inserttotalframenumber。
\inserttotalframenumber 在 ctex + fandol + beamer 组合下会\textbf{偶发
返回诡异值}——实测观察到 34 帧的 deck 在页脚输出 32 / 80 这样的奇怪
分母(真实总数 34,aux 文件里写入了一个毫无根据的 80)。原因可能与
以下因素有关:
beamer 的 \c@framenumber 计数器在 AtBeginEnvironment{tabular} /
{tikzpicture} hook 叠加时被污染;
ctex 的中文章节注入机制与 \beamer@inserttotalframenumber 的 aux
写入时机冲突;
编译轮次不足时 aux 缓存的陈旧值被直接读取。
无论根因,最稳的做法是放弃分母,直接只显示当前帧号 。观众并不需要
"X / 总数"就能理解进度,目录页已经给出了整体结构。
\raggedleft{\color{cufenavy}\footnotesize%
\insertframenumber}
\raggedleft{\color{cufenavy}\footnotesize%
\insertframenumber\,/\,\inserttotalframenumber} % ← 会输出 "X / 80"
grep -n 'inserttotalframenumber' report.tex # 必须为空
升级 11 — §2 理论基础必须具体详细(最少 2 帧) 理论基础\textbf{不能压成 1 帧大概念综述}。把两条理论视角(代理 /
融资 / 契约 / 信号 / 委托代理 / ...)合在一帧里各写 2--3 句话,观众
会感觉"理论没讲清楚"。中文答辩和学术会议对理论部分的详细度要求明显
高于英文 seminar。
§2 理论基础\textbf{最少 2 帧},每帧聚焦一条理论视角;
视角丰富的论文(≥ 3 条视角)可扩展到 3 帧,并可加 1 帧"理论整合 /
逻辑之变"作收束;
每帧\textbf{必须包含}:
视角名称 (帧标题或首行粗体);
核心文献引用 (2--3 篇代表文献);
该视角下 X → Y 的具体传导链 (2--4 条,每条 1--2 行);
可观察预期 / 落地到 H 的映射 (一句话)。
禁:一帧内把代理视角 + 融资视角压成两段 3 行的段落;
禁:只讲"绿色基金可以缓解融资约束、提升企业治理"这种无具体传导
链的高度抽象话;
禁:不引用具体文献的纯宏大叙事("基于委托代理理论,……"后面
没引就停)。
时长调节:§2 帧数表(升级自 chinese-ppt)是\textbf{下限};理论视角
多的论文可上浮 2--3 帧而不违反规则。
以下内容继承自 chinese-ppt(原硬规则全部保留)
用途 生成 可直接在 Overleaf 编译的中文 Beamer PPT ,适用于:
博士 / 硕士学位论文答辩
中文学术会议 / 研讨会汇报
课题汇报、开题答辩、中期答辩
输出 确定性 :同一篇论文 + 同一时长 ⇒ 同一套 PPT。
何时调用
"做一份中文 PPT / Beamer"(新版)
"中文 Beamer 改进版 / chinese-ppt2"
"答辩 PPT 排版优化 / 防越界"
"Retrofit 已有 chinese-ppt deck 到新版规范"
任何"做中文学术 PPT"类请求,默认优先 chinese-ppt2
输出规则 只交付 .tex + figures/ 文件夹 ,不写 compile.bat / Makefile /
latexmkrc 等本地编译脚本——用户在 Overleaf 编译(compiler 必须设为
XeLaTeX ,需连续编译两次让目录页对齐)。
硬规则(不得偏离)
引擎锁定 :xelatex(两次编译),禁止 pdflatex。
字体锁定 :\usepackage[UTF8,fontset=fandol]{ctex}。
主题锁定 :\usetheme{default} + \useinnertheme{circles} + 自建 CUFE
金融学院模板。
宽高比锁定 :aspectratio=169, 10pt。
色板锁定 :
\definecolor{cufenavy}{HTML}{1F3A60}
\definecolor{cufetext}{HTML}{2A2A2A}
\definecolor{cuferule}{HTML}{7F8FAA}
框架样式锁定 :
顶部 0.15cm 深蓝色窄带
右上角小 logo,anchor=east, yshift=-0.70cm
帧标题 TikZ 绝对定位:anchor=north west, xshift=0.40cm, yshift=-0.50cm
帧标题 text width=\paperwidth-5.0cm,字号 \large,颜色 cufetext
帧标题模板末尾 \vspace*{0.55cm}(不是 1.35cm)
页脚:左 \insertsectionhead + 右 页码
左下角不放东西
7 章节大纲锁定 :
# 章节名(默认) 1 研究背景与问题 2 文献综述与理论基础 3 数据与变量 4 [第四章实证标题] 5 [第五章实证标题] 6 [第六章实证标题] 7 三章综合对比与研究结论
X→M→Y 框架帧必填 (§1 内)。
所有回归表 Control Yes/No 格式 ,底部 Controls / Firm FE / 行业×年份 FE / N / Adj.R²,星号 ***/**/*。
每个实证结果 = 讨论帧 + 表格帧 二元对 。例外:小表合并单帧。
每个异质性维度 = 1 帧 ,按概念维度归并指标。
每个机制通道 = 1 对帧 (讨论+表,或合并)。讨论侧 > 12 行按升级 3 拆。
每个进一步分析 = 1 对帧 ,不得合并缩水。
标题页格式 :大 logo 左上、主标题深蓝加粗、副标题斜体、底部日期。
致谢页格式 :正中"敬请各位老师批评指正!" + Thank You \& Q\,\&\,A。
目录页 :footline 局部覆盖为空;\linespread{1.15}\selectfont 把
1.3 全局行距在目录页临时压回,防 7 条目溢出。
无 emoji / 无图标 / 无 tcolorbox / 无 \begin{block} (除研究
问题帧"核心问题"块)。
数值必须真实或标 [TODO 0.xxx] 。禁用占位符。
每张从 PDF 提取的图必须插入 (零孤儿)。
图片尺寸锁定 :全屏 height=0.62\textheight,双栏 0.55\textheight,
本模板默认 0.50--0.55\textheight。
表格列标题必须两行 :第一行 (1)(2)(3),第二行标签;4+ 列用
multicolumn 组标题(见升级 6)。
中文帧标题禁止 math mode :$\times$ → ×,$\to$ → →,
$\Rightarrow$ → ⇒,$+$ → +。表格内的 math 不受限。
标点符号 :中文内容全角,表格内数字英文半角。
输入收集(一次性问全)
论文标题
答辩人 / 作者
指导教师(1--2 人)
机构(默认"中央财经大学金融学院")
场合(默认"博士学位论文答辩 · 20XX")
时长(分钟)— 20 / 25 / 30 / 35 / 40 / 45 / 60 / 90
研究问题
X 和 Y
机制通道 M
异质性维度
进一步分析 / 扩展
样本区间与来源
输出目录
若用户提供 PDF/docx,先读论文 自动提取 7--12。
时长调节 时长 §1 背景帧 §2 文献+理论帧 20 min 2 2 25 min 3 2 30 min 4 3 35 min 5 3 40 min 5 4 45 min 6 4 60 min 7 5 90 min 8 6
前置章节(§1 § 2)必须用段落文字 每帧 2--4 段完整段落,每段 2--3 句、约 30--50 字,关键词用 \textbf{} 粗体。
禁止纯项目符号。升级 2 的 12 行预算仍然生效。
生成前的自检流程(新增) 写完每一帧,在标记为"最终"之前,按顺序做 9 项检查:
行数估算 :对照升级 2 的表,超了就按升级 3 拆。政策建议帧尤需
严格对照升级 8 的列表化写法,正文 ≤ 10 行。
AI 味扫描 :grep '关键比较:\|理论映射:\|核心机制:\|理论含义:\|政策含义:' —— 命中改写。
章节括号扫描 :grep '(第[四五六七]章\|(跨章'(非 \section 行)—— 命中删除。
CJK 空格 / 中点扫描 :正文行内 ·、两个中文字之间的空格 —— 命中调整。
编号前缀扫描(升级 4d) :grep -nE '\\textbf\{(F[0-9]|C[0-9]|P[0-9]|结论 ?[0-9]|发现 ?[0-9]|观察 ?[0-9])'
—— 命中删除机械编号,改成自然短语。
政策建议存在性(升级 8) :grep -c '政策建议\|实践启示' 必须 ≥ 1;
若为 0,§7 缺失政策建议帧,按升级 8 补齐。
政策建议排版检查(升级 8) :政策建议帧正文必须是 itemize 结构,
不能是 3 段连续粗体引导段落。若看到 \textbf{...。} ...\n\n\textbf{...。} ...
这种三段式,改为列表。
帧标题序号前缀(升级 9) :grep -nE '\\begin\{frame\}\{[^}]*([一二三四五六七八九十0-9]+)'
—— 命中行除"(上)/(下)"外全部改为概念式标题。
章节顺序(升级 10) :§1 最后一帧必须是"研究问题"类,不是
X→M→Y 框架帧;X→M→Y 框架帧必须出现在 §2 的最末尾(在理论与假设之后)。
页脚格式(升级 10.5) :grep -n 'inserttotalframenumber' report.tex
必须为空;页脚只显示 \insertframenumber。
对已有 deck 做 retrofit 时,按页号扫编译输出的 PDF,重复上述 4 项 + 越界检查
(PyMuPDF 提取每页文本 line,过滤掉 y ≈ 249 的 footer 行后,看 y1 是否 > 239
或 x1 是否 > 450)。
越界检测脚本模板 import fitz
doc = fitz.open('defense.pdf')
W, H = 453.54, 255.12 # 16:9 beamer page
def is_footer(bbox):
x0, y0, x1, y1 = bbox
return 239 < y0 < 250 and (x0 < 70 or x0 > 400)
for i, page in enumerate(doc):
d = page.get_text('dict')
crowd = h_over = None
for b in d['blocks']:
if 'lines' not in b: continue
for line in b['lines']:
bbox = line['bbox']
if is_footer(bbox): continue
if bbox[3] > 239 and not crowd: crowd = bbox[3]
if bbox[2] > 450 and not h_over: h_over = bbox[2]
if crowd or h_over:
print(f'Page {i+1}: crowd={crowd} h_over={h_over}')
框架帧(X→M→Y)锁定模板 §1 内,放在研究问题帧之后。参考 chinese-ppt 的三类 X / 六通道 M / 单 Y 模板,
本 skill 不变动。
表格格式自适应
自适应项
括号内容:SE 或 t,论文用什么就写什么。
固定效应行:用论文实际结构。
第二行列标签:用论文实际变量或分组。
不变项
第一行永远 (1)(2)(3)。
底部永远 Controls / FE行 / N / Adj.R²。
星号永远 ***/**/*。
宽表处理 6+ 列:\centering\scriptsize + \setlength{\tabcolsep}{3.5pt};
4+ 列长列头:升级 6 的 multicolumn 组标题。
数值提取与填充 PyMuPDF + 正则扫 Table N 和 \d\.\d{3,4}\*{1,3},直接填 .tex。
grep -c '[TODO 0' .tex 必须为 0。
图片提取 PyMuPDF page.get_images(full=True) 提取到 <outdir>/figures/:
论文图类型 文件名 框架图 fig_framework.png平行趋势 fig_ch4_parallel.pngPSM 平衡 fig_ch4_psm.pngCSDID 事件研究 fig_ch4_csdid.png安慰剂检验 fig_chN_placebo.pngCNKI 趋势 fig_cnki_trend.png
验证:每张 figures/*.png 在 .tex 中出现至少一次;零孤儿。
交付清单(必报) 生成文件:<path>/defense.tex
时长:<N> min
总帧数:<count>
排版检查(chinese-ppt2 新增):
\linespread 1.3:已启用
parskip 3pt:已启用
enumitem 列表间距:已配置
行数预算超标帧:0
AI 味短语(关键比较:/理论映射:...):0
章节括号注释((第 N 章·XX)):0
CJK—CJK 空格:0
PDF 越界页(y>239 / x>450):0
数值覆盖率:
带真实系数的表格:X / Y
[TODO 0 剩余:0
占位符检查:0
图片处理:
从 PDF 提取:N 张
已插入 .tex:N 张
尺寸:0.62 / 0.55 / 0.50 \textheight
帧清单:
§1 研究背景与问题:X 帧
§2 文献综述与理论基础:X 帧
§3 数据与变量:X 帧
§4--§6 实证:各 X 帧
§7 三章综合对比与研究结论:X 帧
Overleaf 编译:
1. 新建 Blank Project
2. 上传 defense.tex + figures/
3. Settings → Compiler → XeLaTeX
4. Recompile × 2
工作流(新建 deck)
读本 SKILL.md 和 templates/empirical_paper_cn.tex。
若用户提供 PDF/docx,先读论文提取 X、Y、机制、异质性、进一步分析、
基准系数、样本量。
一次性询问缺失的输入项。
按时长表确定 §1/§2 帧数。
按论文实际展开 §4/§5/§6。
按升级 2 的行数预算逐帧估行数 ;预判要拆的帧,按升级 3 均分拆。
按升级 4 审查每一帧 :无"关键比较 / 理论映射"标签,无章节括号注释。
按升级 5 扫空格与中点 。
升级 1 的导言区配置写入 。
复制模板 + 填充 + 图像提取 + 系数填充。
编译前做自检 4 项 + 越界检测脚本。
输出交付清单。
不生成 compile 脚本——用户在 Overleaf 编译。
工作流(retrofit 已有 chinese-ppt 的 deck) 对已经存在的 chinese-ppt 生成的 defense.tex:
注入导言 :加 \usepackage{enumitem}、\linespread{1.3}、
\setlength{\parskip}{3pt...}、\setlist[...]。
扫 AI 味 :
grep -n '关键比较:\|理论映射:\|核心机制:\|理论含义:\|政策含义:' defense.tex
每一条改写成自然句。
扫章节括号 :
grep -n '(第[四五六七]章\|(跨章' defense.tex
出现在非 \section 行的全部删除。
编译、用 PyMuPDF 扫每页 (见上方检测脚本)。
按升级 3 分级处理 :
溢出 ≤ 1 行:帧内 \setlist[itemize]{topsep=1pt,itemsep=1pt,parsep=1pt}
溢出 2--4 行:按概念对半拆帧(见升级 3 的对半拆做法)
溢出 > 4 行或含表:自然拆两帧
再编译、再扫 ,收敛到 0 越界。
注意目录页 :加 \linespread{1.15}\selectfont 局部覆盖,
防 7 条目在 1.3 行距下溢出。
为何锁定这些约束 继承 chinese-ppt 的全部理由,并追加:
行距 1.3 + 段距 3pt —— 用户反馈:"行间距:多倍行距 1.3,段前 3 磅,
段后 3 磅"(Word 标准学术排版手感)。
越界均分拆帧 —— 用户反馈:"只超出一点点就另起一页,但这一点点也
到不了一页,是否可以前面这一页拿出一半"。
禁 AI 味短语 —— 用户反馈:"关键比较和理论映射,这两个东西就很像是
AI 写的"。
禁章节括号注释 —— 用户反馈:"研究假设提出,后面别加括号"。
CJK 中点空格 —— 用户反馈:"中间空格显得很突兀"。
文件 chinese-ppt2/
├── SKILL.md # 本文件
└── templates/
├── empirical_paper_cn.tex # 模板 .tex(含占位符)
└── figures/
├── logo_cufe_full.png
└── logo_cufe_small.png
模板复用 chinese-ppt 的 templates(本 skill 复制了一份)。
后续迭代可以在模板 .tex 里直接写死升级 1 的导言区配置。