Upgrades relative to chinese-ppt (read this section first)
This skill inherits all hard rules of chinese-ppt and appends 7 first-level strong rules. The new rules all come from typography issues found in practice and user feedback,must not be disabled。
Upgrade 1 — Global line spacing and paragraph spacing (mandatory)
The preamble must contain:
\usepackage{enumitem}
\usepackage{etoolbox}
% Line spacing 1.3 + 3pt before/after paragraphs (corresponds to Word "Multiple line spacing 1.3") \linespread{1.3} \setlength{\parskip}{3pt plus 1pt minus 0pt} \setlist[itemize]{topsep=3pt, itemsep=3pt, parsep=3pt, partopsep=0pt} % enumerate must explicitly specify label —— otherwise the \labelenumi inherited by enumitem under % ctex + fandol + beamer occasionally self-references (\labelenumi -> {\labelenumi), % triggering "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}.}
% Key: inside fixed-geometry environments (tabular / tikz), automatically reset to 1.0 line spacing, % to prevent the global 1.3 from bursting the minimum height nodes and tabular row heights. % This pair of hooks is the preferred implementation of Upgrade 7, eliminating the need for manual per-frame wrapping. % Note: do not add \selectfont in the hook —— under ctex+fandol+beamer it triggers % recursion in Chinese font reloading, causing "TeX capacity exceeded, input stack size=10000". % Omitting \selectfont, the new linespread value will take effect naturally within the environment at the next font switch % (\small / \scriptsize / \node text), which is already sufficient for tabular / tikzpicture; % for tabular, additionally add \arraystretch=1.0 as a second safeguard. \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 行 | 超了拆讨论帧 + 表格帧 |
| 表格单帧 | 表格 ≤ **10 中间行** | 超了拆两张表 |
行数估算(重要):
- 短项(一句半以内、无括号引用) ≈ **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`**,而不是把全部
文字塞进第二行:
```latex
\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}
In combination with \setlength{\tabcolsep}{4pt} and \small. If still over, upgrade further to \scriptsize
or split the frame.
Upgrade 7 — TikZ / fixed-geometry environments must reset \linespread{1.0}(mandatory)
Why this rule exists. The global \linespread{1.3}(Upgrade 1) acts on anywhere that reads
\baselineskip , including:
- Line breaksinside
\\TikZ nodes —— node content is typeset at 1.3× line height, burstingminimum heightthe node box designed at - Row height of tabular —— each row
\\takes 30% more vertical space, turning a 6-row table into the height of 8 rows; \begin{center}thetopsepof\includegraphicsthe vertical spacing of the caption after:\nodetheminipagebaseline of
These are all fixed-geometry elements designed for linespread=1.0 . The 1.3 of Upgrade 1 should only apply to body paragraphs and list items.
Preferred implementation: global hooks (already built into Upgrade 1)
In the preamble (in the configuration block of Upgrade 1), add:
\usepackage{etoolbox}
\AtBeginEnvironment{tabular}{\linespread{1.0}\renewcommand{\arraystretch}{1.0}}
\AtBeginEnvironment{tikzpicture}{\linespread{1.0}}
These two lines make any \begin{tabular}...\end{tabular} and \begin{tikzpicture}...
automatically push the line spacing back to 1.0 on entry, eliminating manual per-frame wrapping.This is the default approach of chinese-ppt2。
⚠ Do not add \selectfontin the hook (lesson from practice)
The hook in earlier versions was \linespread{1.0}\selectfont。In practice, under the ctex + fandol +
beamer combination, it triggers a "TeX capacity exceeded, input stack size=10000" compilation
failure. The reason is that \selectfont triggers Chinese
font reloading at the tabular / tikzpicture starting position, and fandol's font table, in the beamer frame's overlay context, forms internal recursion with the
hook, pushing to the input stack depth limit.
Fix:Remove \selectfont。\linespread{1.0} when used alone, the new baseline
will not take effect immediately, but inside the environment the next \small / \scriptsize / TikZ \node
text will trigger an implicit selectfont, applying the new linespread to subsequent content, which is enough for
tabular row height and tikz node content.tabular Then add \arraystretch=1.0
as a second safeguard, covering those edge cases where the baseline cannot be updated in time.
Self-check:
grep -n 'AtBeginEnvironment{tabular}{\\\\linespread{1.0}\\\\selectfont' report.tex
grep -n 'AtBeginEnvironment{tikzpicture}{\\\\linespread{1.0}\\\\selectfont' report.tex
# 命中任何一行说明用了老版本 hook,必须删掉 \selectfont
⚠ enumerate must explicitly specify a label (Lesson 2 from practice)
When only writing \setlist[enumerate]{topsep=3pt, itemsep=3pt, parsep=3pt, partopsep=0pt}
without setting label=... , the enumerate frame will occasionally
fail to compile under ctex + fandol + beamer, with the error message:
TeX capacity exceeded, sorry [input stack size=10000].
\labelenumi ->{\labelenumi
1.806 \end{frame}
\labelenumi -> {\labelenumi is self-referential—indicating that the \labelenumi
inherited by enumitem was contaminated into a recursive definition during ctex initialization, and the enumerate frame expands into infinite-depth recursion.
Fix: in \setlist[enumerate,N] \textbf{explicitly give label=...},
and in the preamble explicitly renewcommand \labelenumi to cut off the recursion:
\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}.}
There is no need to do this for itemize—itemize's \labelitemi is itemize-specific,
and does not go through the contaminated enumi path.
Self-check:
grep -n 'setlist\[enumerate\]{' report.tex # 命中说明没带 ",1" + label=,必须改
grep -n 'setlist\[enumerate,1\]{label=' report.tex # 必须 >= 1
Do not manually wrap again when the hook is already in effect (Lesson 3 from practice)
An earlier version recommended "hook + manual {\linespread{1.0}\selectfont ... } double safeguard".
Testing proved that this triggers the entire TikZ frame turning blank(the X→M→Y framework frame compiles to blank). Suspected reasons:
\selectfontwhen triggered at the beginning of the frame body, beamer is still doing frame initialization, and the font state is not ready;- outer
{...}and\begin{center}nested, TikZ'sremember pictureoverlay coordinate anchors are misaligned; - or
\selectfontand\AtBeginEnvironmentinjected\selectfontcancel each other out during TikZ node font switching.
Rule: the global hook already handles line spacing inside tabular / tikzpicture,do not wrap another layer of {\linespread{1.0}\selectfont ... }around the
frame body. If the outer
\begin{center} or \vspace makes the canvas lower, use \vspace*{-0.4em} ~
\vspace*{-0.8em} to fine-tune upward, and do not touch linespread.
Approaches not to use
- Do not , given that a global hook already exists, manually
{\linespread{1.0}\selectfont ...}wrap the frame body—testing shows it compiles the entire frame to blank. - Do not try to set a conditional branch for
\linespread(such as using\ifxto detect the environment)—it is unreliable. - Do not remove the global
\linespread{1.3}(upgrade 1 is mandatory). - Do not use
\setstretch{1.0}to override (the effect is equivalent but requires thesetspacepackage, an extra dependency). - Do not wrap only
\begin{tikzpicture}— the outer\begin{center}'s\topsepis still calculated as 1.3.Either use the hook, or wrap the entire frame body。
Detection (when retrofitting)
Make sure the preamble has \AtBeginEnvironment{tabular} and \AtBeginEnvironment{tikzpicture}
Two hooks:
grep -c 'AtBeginEnvironment{tabular}' defense.tex # 应该 = 1
grep -c 'AtBeginEnvironment{tikzpicture}' defense.tex # 应该 = 1
If missing, fill it in according to the "preferred implementation." After filling it in, only the large TikZ diagnostic frames (for example, the X→M→Y framework diagram) need a manually added frame body wrapper — usually just 1.
Upgrade 8 — §7 must include a "policy recommendations" frame (mandatory)
In Chinese academic PPTs, §7 cannot contain only "research conclusions" and "research limitations." In the structure expected by the Chinese academic tradition (defense, academic conference, group meeting presentation) for §7, \textbf{policy recommendations / practical implications} is an essential part — advisors and audience members will actively look for "what use this research has for policy / practice." If it is missing, you will be directly questioned about it.
Mandatory structure
§7 must include at least the following 4 types of frames in this order:
- Main research conclusions(1 frame) — close out item by item against H1/H2/H3, starting with natural phrases (see Upgrade 4d), \textbf{do not use F1 / F2 numbering}.
- Main innovations(1 frame) — choose one to three from perspective / method / conclusions, use
enumerateautomatic numbering. - Policy recommendations / practical implications(\textbf{1--2 frames, required}) — give specific actionable recommendations by layer. If more than 10 lines, split in half according to Upgrade 3 (upper / lower).
- Research limitations and future prospects(1 frame) — sample, variables, mechanisms, external generalizability.
A common way to split "policy recommendations" in half:
- "Top-level design + transformation mechanism" as one frame;
- "Supervision mechanism + differentiated supporting measures" as one frame.
How to write policy recommendations
- Anchor on the implementing actor(regulatory authorities / industry associations / corporate management / financial institutions / the academic community), do not start with "First, second, third" or "P1 / P2."
- Each item = object + action + lever, avoid empty phrases like "strengthen, improve, promote":
- Wrong:
完善绿色基金监管体系。 - Right:
监管部门应制定统一的绿色基金认定标准,区分泛 ESG 基金与 绿色专项基金,并将该分类写入基金募集说明书的披露要求。
- Wrong:
- Each recommendation corresponds to a specific empirical finding(main effect → top-level design; heterogeneity → differentiated supporting measures; mechanism → governance and disclosure), do not create recommendations detached from the paper.
- Frame titles may use "Policy Recommendations (Part 1) / Policy Recommendations (Part 2)" or conceptual naming such as "Policy Recommendations: Top-Level Design and Transformation Mechanism."
Layout of the policy recommendations frame (strictly itemized, do not use continuous paragraphs)
The policy recommendations frame \textbf{must use the itemize structure}, do not write it as 3 bold
paragraphs of 3--4 lines — under 1.3 line spacing + 3pt paragraph spacing, a 3-paragraph style almost inevitably overflows the footer,
causing the following frames to be pushed to the next page and fail to compile, manifesting as \textbf{the page number staying on the page before the policy recommendations
frame, with subsequent frames not appearing in the PDF}.
Correct way(itemized, 1--2 lines per item, total body lines in the frame ≤ 10):
\begin{frame}{政策建议:顶层设计与转型机制}
\textbf{监管部门。}
\begin{itemize}
\item 制定统一的绿色基金认定标准,写入基金募集说明书披露要求;
\item 区分泛 ESG 基金与绿色专项基金,明确运作边界;
\item 按区域经济水平推行差异化监管策略。
\end{itemize}
\textbf{基金管理人。}
\begin{itemize}
\item 重点支持原创性、突破性绿色发明专利研发;
\item 将绿色责任履行水平纳入投资评价与绩效考核。
\end{itemize}
\end{frame}
Wrong way(continuous paragraphs + bold lead-ins + 3--4 lines per paragraph):
% 反例:实测会在编译时把后续帧挤丢
\begin{frame}{政策建议(上)}
\textbf{顶层设计。} 建议由官方对"绿色基金"作出明确定义……(3 行)
\textbf{转型机制。} 鼓励绿色基金重点支持……(3 行)
将\textbf{绿色责任履行水平}纳入……(3 行)
\end{frame}
Line budget: policy recommendations frame body ≤ 10 lines(including list separators). If exceeded, split in half according to Upgrade 3 into "Policy Recommendations (Part 1)/(Part 2)."
Self-check
grep -c '政策建议\|实践启示' report.tex # 必须 >= 1
If there is no policy recommendation frame of any kind within §7, treat it as a \textbf{structural omission} and it must be completed.
Upgrade 9 — Frame titles must not use "(One) (Two) (Three)" numeric / Chinese numeral prefixes (mandatory)
Frame titles \textbf{must not} use "(One) (Two) (Three) (Four)" or "(1) (2) (3)" mechanical sequence numbers to distinguish multiple frames on the same topic. Sequence is already expressed automatically by frame order and the table of contents page; the audience does not need to see numbers to understand the relationship among frames. Numeric prefixes are also a strong marker of AI templates.
- Wrong:
研究背景(一):双碳战略/研究背景(二):融资困境/研究背景(三):已有研究/研究背景(四):制度窗口 - Right:
研究背景:双碳战略与新质生产力/研究背景:绿色转型的融资困境/研究背景:绿色金融工具版图/研究背景:绿色基金的制度窗口
Rule:
- For multiple frames on the same topic, use the \textbf{"Topic: Core Concept" structure} to distinguish them, letting the concept name after the colon express the difference, and do not use numeric / Chinese numeral sequence numbers.
- When the theoretical foundation is split across multiple frames, use conceptual subtitles (such as "Theoretical Foundation: Agency Perspective — The Dual Containment of Greenwashing and Self-Interest") or use parentheses to clarify the perspective ("Theoretical Foundation (Agency Perspective)"), but \textbf{do not use "Theoretical Foundation (One) (Two) (Three)"}.
- Allowed exception:
主要研究结论(上)/(下)、政策建议(上)/(下)These \textbf{split-frame} naming conventions (see Upgrade 3) — what they express is "the same frame is split into two pages," not "sequential numbering of multiple parallel topics"; the semantics are different, so they are allowed to remain.
Self-check:
grep -nE '\\begin\{frame\}\{[^}]*([一二三四五六七八九十0-9]+)' report.tex
Rewrite each matching line one by one as a concept-style title.
Upgrade 10 — Section order: literature must come before the X→M→Y framework (mandatory)
The X→M→Y framework diagram is a graphical summary of the \textbf{research hypotheses} and should appear after the reader has already seen the literature review, theoretical foundation, and hypotheses, not before the literature review.
Mandatory order:
- §1 Include only "Research background frames × N + research question frame" (do not includethe framework diagram);
- §2 in this order:
- Literature review (main line / gap)
- Theoretical foundation (at least 2 frames, see Upgrade 11)
- Research hypotheses (H1/H2/H3)
- X→M→Y research framework frame(placed at the end of §2).
Early chinese-ppt templates placed the framework diagram after the research questions in §1; this is a historical design that should be corrected. In chinese-ppt2, the framework diagram always goes at the end of §2.
Rationale: Before seeing the X→M→Y diagram, the audience should first understand "why these X, these M, these Y" — this requires laying the groundwork with the literature gap and theoretical foundation. If the framework diagram comes before the literature, the audience may mistakenly think this is an argument with a \textbf{structure assumed in advance}, rather than a framework \textbf{derived from theory}.
Upgrade 10.5 — Footer should display only \insertframenumber, and not use the "X / N" format (mandatory)
The footer \textbf{must not be written} as \insertframenumber\,/\,\inserttotalframenumber。
\inserttotalframenumber Under the ctex + fandol + beamer combination, it will \textbf{occasionally
return bizarre values} — in testing, a 34-frame deck was observed to output in the footer 32 / 80 such a strange
denominator (the true total is 34, but an unfounded 80 was written into the aux file). The cause may be related to
the following factors:
- beamer's
\c@framenumbercounter is contaminated whenAtBeginEnvironment{tabular}/{tikzpicture}hooks are stacked; - ctex's Chinese section injection mechanism conflicts with
\beamer@inserttotalframenumber's aux write timing; - when there are insufficient compilation rounds, stale values cached in the aux are read directly.
Regardless of the root cause,the most robust approach is to give up the denominator and directly display only the current frame numberThe audience does not need "X / total" to understand the progress; the table of contents page already gives the overall structure.
Correct way to write it:
\raggedleft{\color{cufenavy}\footnotesize%
\insertframenumber}
Forbidden way to write it:
\raggedleft{\color{cufenavy}\footnotesize%
\insertframenumber\,/\,\inserttotalframenumber} % ← 会输出 "X / 80"
Self-check:
grep -n 'inserttotalframenumber' report.tex # 必须为空
Upgrade 11 — §2 Theoretical foundation must be specific and detailed (minimum 2 frames)
The theoretical foundation \textbf{must not be compressed into a 1-frame overview of big concepts}. If two theoretical perspectives (agency / financing / contract / signaling / principal-agent / ...) are combined into one frame with 2--3 sentences each, the audience will feel that "the theory was not explained clearly." Chinese defenses and academic conferences have clearly higher requirements for the level of detail in the theory section than English seminars.
Mandatory structure:
- §2 Theoretical foundation \textbf{minimum 2 frames}, each frame focuses on one theoretical perspective;
- Papers with rich perspectives (≥ 3 perspectives) can be expanded to 3 frames, and 1 frame on "theoretical integration / logic shifts" may be added as a closing;
- Each frame \textbf{must include}:
- Perspective name(frame title or first line in bold);
- Core literature citations(2--3 representative works);
- The specific transmission chain from X → Y under this perspective(2--4 items, each 1--2 lines);
- Observable expectations / mapping to H(one sentence).
Forbidden:
- Forbidden: compressing the agency perspective + financing perspective into two 3-line paragraphs in one frame;
- Forbidden: only discussing highly abstract statements such as "green funds can alleviate financing constraints and improve corporate governance" without a specific transmission chain;
- Forbidden: purely grand narrative without citing specific literature ("Based on principal-agent theory, ..." and then stopping without a citation).
Duration adjustment: the §2 frame count table (upgraded from chinese-ppt) is a \textbf{lower bound}; papers with many theoretical perspectives may add 2--3 frames without violating the rules.
The following content is inherited from chinese-ppt (all original hard rules are retained)
Purpose
Generate Chinese Beamer PPT that can be compiled directly in Overleaf, suitable for:
- Doctoral / master's thesis defense
- Chinese academic conference / seminar presentation
- Project report, proposal defense, midterm defense
Output determinism: the same paper + the same duration ⇒ the same set of PPT.
When to invoke
- "Make a Chinese PPT / Beamer" (new version)
- "Chinese Beamer improved version / chinese-ppt2"
- "Defense PPT layout optimization / prevent overflow"
- "Retrofit an existing chinese-ppt deck to the new specification"
- For any "make a Chinese academic PPT" type request, default to chinese-ppt2 first
Output rules
Deliver only the .tex + figures/ folder, do not write compile.bat / Makefile /
latexmkrc or other local compilation scripts—the user compiles in Overleaf (the compiler must be set to
XeLaTeX, and it must be compiled twice in succession to align the table of contents page).
Hard rules (must not be deviated from)
-
Engine locked:
xelatex(compile twice), forbiddenpdflatex。 -
Font locked:
\usepackage[UTF8,fontset=fandol]{ctex}。 -
Theme locked:
\usetheme{default} + \useinnertheme{circles}+ self-built CUFE School of Finance template. -
Aspect ratio locked:
aspectratio=169, 10pt。 -
Color palette locked:
\definecolor{cufenavy}{HTML}{1F3A60} \definecolor{cufetext}{HTML}{2A2A2A} \definecolor{cuferule}{HTML}{7F8FAA} -
Frame style locked:
- Top 0.15cm dark blue narrow band
- Small logo in the upper-right corner,
anchor=east, yshift=-0.70cm - Frame title TikZ absolute positioning:
anchor=north west, xshift=0.40cm, yshift=-0.50cm - Frame title
text width=\paperwidth-5.0cm, font size\large, colorcufetext - At the end of the frame title template
\vspace*{0.55cm}(not 1.35cm) - Footer: left
\insertsectionhead+ right page number - Do not put anything in the lower-left corner
-
7 Chapter outline locked:
# Chapter name (default) 1 Research background and questions 2 Literature review and theoretical foundation 3 Data and variables 4 [Chapter 4 empirical title] 5 [Chapter 5 empirical title] 6 [Chapter 6 empirical title] 7 Comprehensive comparison of the three chapters and research conclusions -
X→M→Y framework frame required(within §1).
-
All regression tables in Control Yes/No format, bottom
Controls / Firm FE / 行业×年份 FE / N / Adj.R², asterisks***/**/*。 -
Each empirical result = discussion frame + table frame binary pair. Exception: small tables merged into a single frame.
-
Each heterogeneity dimension = 1 frame, merge indicators by conceptual dimension.
-
Each mechanism channel = 1 frame pair(discussion + table, or merged). If the discussion side exceeds 12 lines, split according to Upgrade 3.
-
Each further analysis = 1 frame pair, must not be merged or reduced.
-
Title page format: large logo in the upper-left, main title in dark blue bold, subtitle in italics, date at the bottom.
-
Acknowledgments page format: centered "Respectfully invite all teachers to criticize and correct!" +
Thank You \& Q\,\&\,A。 -
Table of contents page: footline locally overridden to empty;
\linespread{1.15}\selectfonttemporarily compress the 1.3 global line spacing back on the table of contents page to prevent the 7 entries from overflowing. -
No emoji / no icons / no tcolorbox / no
\begin{block}(except the "Core Question" block of the research question frame). -
Numerical values must be real or marked
[TODO 0.xxx]. Placeholders are prohibited. -
Every figure extracted from the PDF must be inserted(zero orphans).
-
Image size locked: full screen
height=0.62\textheight, two-column0.55\textheight, this template defaults to0.50--0.55\textheight。 -
Table column headers must have two lines: first line
(1)(2)(3), second line label; for 4+ columns use multicolumn group headers (see Upgrade 6). -
Chinese frame titles prohibit math mode:
$\times$→×,$\to$→→,$\Rightarrow$→⇒,$+$→+. Math inside tables is not restricted. -
Punctuation: Chinese content in full-width, numerals and English inside tables in half-width.
Input collection (ask everything at once)
- Thesis title
- Presenter / author
- Advisor (1--2 people)
- Institution (default "Central University of Finance and Economics, School of Finance")
- Occasion (default "Doctoral Dissertation Defense · 20XX")
- Duration (minutes) — 20 / 25 / 30 / 35 / 40 / 45 / 60 / 90
- Research question
- X and Y
- Mechanism channel M
- Heterogeneity dimension
- Further analysis / extension
- Sample period and sources
- Output directory
If the user provides a PDF/docx,read the paper first,and automatically extract 7--12.
Duration adjustment
| Duration | §1 Background frame | §2 Literature + theory frame |
|---|---|---|
| 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 |
§3--§7 do not change with duration.
The front chapters (§1 § 2) must use paragraph text
Each frame has 2--4 complete paragraphs, each paragraph has 2--3 sentences, about 30--50 characters, with keywords in \textbf{} bold.
Pure bullet points are prohibited. The 12-line budget of Upgrade 2 still applies.
Self-check process before generation (new)
After writing each frame, before marking it as "final", perform 9 checks in order:
- Line-count estimate: compare against the table in Upgrade 2; if it exceeds, split according to Upgrade 3. The policy recommendation frame especially needs to strictly follow the list-style writing of Upgrade 8, with body text ≤ 10 lines.
- AI-flavor scan:
grep '关键比较:\|理论映射:\|核心机制:\|理论含义:\|政策含义:'— if hit, rewrite. - Chapter-bracket scan:
grep '(第[四五六七]章\|(跨章'(non-\sectionlines) — if hit, delete. - CJK space / middle dot scan: within body text lines,
·, spaces between two Chinese characters — if hit, adjust. - Numbering-prefix scan (Upgrade 4d):
grep -nE '\\textbf\{(F[0-9]|C[0-9]|P[0-9]|结论 ?[0-9]|发现 ?[0-9]|观察 ?[0-9])'— if hit, delete mechanical numbering and change to natural phrases. - Policy recommendation existence (Upgrade 8):
grep -c '政策建议\|实践启示'must be ≥ 1; if it is 0, §7 is missing a policy recommendation frame, fill it in according to Upgrade 8. - Policy recommendation layout check (Upgrade 8): the body text of the policy recommendation frame must be in
itemizestructure, and must not be 3 consecutive bold lead-in paragraphs. If you see\textbf{...。} ...\n\n\textbf{...。} ...this three-part form, change it to a list. - Frame title numbering prefix (Upgrade 9):
grep -nE '\\begin\{frame\}\{[^}]*([一二三四五六七八九十0-9]+)'— for hit lines, change all except "(upper)/(lower)" to concept-style titles. - Chapter order (Upgrade 10): the last frame of §1 must be a "research question" type, not an X→M→Y framework frame; the X→M→Y framework frame must appear at the very end of §2 (after theory and hypotheses).
- Footer format (Upgrade 10.5):
grep -n 'inserttotalframenumber' report.texmust be empty; the footer only displays\insertframenumber。
When retrofitting an existing deck, scan the compiled PDF by page number, repeat the above 4 items + out-of-bounds check (use PyMuPDF to extract the text line of each page, filter out footer lines with y ≈ 249, then see whether y1 > 239 or x1 > 450).
Out-of-bounds detection script template
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}')
Framework frame (X→M→Y) locked template
Within §1, placed after the research question frame. Refer to the three types of X / six channels M / single Y template of chinese-ppt, this skill does not change it.
Table format adaptation
Adaptive items
- Bracket content: SE or t, write whatever the paper uses.
- Fixed effects row: use the paper's actual structure.
- Second-row column labels: use the paper's actual variables or groupings.
Fixed items
- First row always
(1)(2)(3)。 - Bottom always
Controls / FE行 / N / Adj.R²。 - Asterisks always
***/**/*。
Wide table handling
6+ columns:\centering\scriptsize + \setlength{\tabcolsep}{3.5pt};
4+ column long headers: multicolumn group titles promoted to level 6.
Numeric extraction and filling
PyMuPDF + regex scans Table N and \d\.\d{3,4}\*{1,3}, directly fills .tex。
grep -c '[TODO 0' .tex must be 0.
Image extraction
PyMuPDF page.get_images(full=True) extracts to <outdir>/figures/:
| Paper figure type | Filename |
|---|---|
| Framework diagram | fig_framework.png |
| Parallel trends | fig_ch4_parallel.png |
| PSM balance | fig_ch4_psm.png |
| CSDID event study | fig_ch4_csdid.png |
| Placebo test | fig_chN_placebo.png |
| CNKI trends | fig_cnki_trend.png |
Verify: each figures/*.png appears in .tex at least once; zero orphans.
Delivery checklist (must report)
生成文件:<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
Workflow (new deck)
- Read this
SKILL.mdandtemplates/empirical_paper_cn.tex。 - If the user provides PDF/docx, first read the paper to extract X, Y, mechanisms, heterogeneity, further analysis, baseline coefficients, sample size.
- Ask once for all missing inputs.
- Determine the frame counts for §1/§2 based on the duration table.
- Expand §4/§5/§6 according to the actual paper.
- Estimate line counts frame by frame according to the line budget in upgrade 2; predict which frames need splitting, and split evenly according to upgrade 3.
- Review each frame according to upgrade 4: no "key comparison / theoretical mapping" labels, no section bracketed annotations.
- Scan spaces and middle dots according to upgrade 5。
- Write the preamble configuration from upgrade 1 into。
- Copy template + fill + image extraction + coefficient filling.
- Before compiling, run the 4-item self-check + out-of-bounds detection script.
- Output the delivery checklist.
- Do not generate a compile script—the user compiles in Overleaf.
Workflow (retrofit an existing chinese-ppt deck)
For an already existing deck generated by chinese-ppt defense.tex:
- Inject preamble: add
\usepackage{enumitem}、\linespread{1.3}、\setlength{\parskip}{3pt...}、\setlist[...]。 - Scan for AI flavor:
Rewrite each one into a natural sentence.grep -n '关键比较:\|理论映射:\|核心机制:\|理论含义:\|政策含义:' defense.tex - Scan section brackets:
Delete all occurrences in non-grep -n '(第[四五六七]章\|(跨章' defense.tex\sectionlines. - Compile, use PyMuPDF to scan each page(see the detection script above).
- Handle by severity according to upgrade 3:
- Overflow ≤ 1 line: in-frame
\setlist[itemize]{topsep=1pt,itemsep=1pt,parsep=1pt} - Overflow 2--4 lines: split the frame in half by concept (see the half-split method in upgrade 3)
- Overflow > 4 lines or contains a table: naturally split into two frames
- Overflow ≤ 1 line: in-frame
- Compile again, scan again, converge to 0 out-of-bounds.
- Note the table of contents page: add
\linespread{1.15}\selectfontlocal override, to prevent 7 entries from overflowing at 1.3 line spacing.
Why these constraints are locked in
Inherit all the rationale of chinese-ppt, and add:
- Line spacing 1.3 + paragraph spacing 3pt —— user feedback: "line spacing: multiple 1.3, 3pt before paragraph, 3pt after paragraph" (the feel of standard Word academic typesetting).
- Out-of-bounds even splitting —— user feedback: "just a tiny bit over and it starts a new page, but this tiny bit can't fill a page either; can we take half from the previous page".
- Ban AI-flavored phrases —— user feedback: "key comparison and theoretical mapping, these two things really look like something AI wrote".
- Remove Chapter Parenthetical Notes — User feedback: "When the research hypothesis is proposed, do not add parentheses afterward."
- CJK Middle Dot Spacing — User feedback: "The space in the middle looks very abrupt."
File
chinese-ppt2/
├── SKILL.md # 本文件
└── templates/
├── empirical_paper_cn.tex # 模板 .tex(含占位符)
└── figures/
├── logo_cufe_full.png
└── logo_cufe_small.png
The template reuses the templates from chinese-ppt (this skill has made a copy). In subsequent iterations, the preamble configuration for upgrade 1 can be hardcoded directly in the template .tex.