数学 LaTeX 课件专用技能(ZYF Math LaTeX PowerfulPoint)
> 只做一件事:把数学课的知识点做成能编译、能放映、公式正常、动画能懂的 Beamer PDF 课件。
> 不产出 HTML / PPTX / Markdown 教案;需要那些请用 zfy-math-courseware-final。
> 默认署名:赵营峰,河南科技学院数学科学学院。
负一、先查环境再开工(依赖型 Skill 顶层规则)
本技能依赖本机 XeLaTeX 与 Python,属于依赖型技能。开始制作前先只读检查环境:
python scripts/check_environment.py --capability generate-project --capability compile-pdf
按结果路由,不要重复讲安装教程:
ready→ 直接走下面的弹窗与生成流程,跳过所有配置说明。partial→ 继续执行可用功能,在最终交付里标注受影响功能与降级范围
(本机当前即为此状态:Adobe Reader 未安装,放映验证只能标「未验证」)。needs_setup→ 只展示缺失必需项的精确配置步骤,等用户装好重检;不生成半成品 PDF。unavailable→ 给出原因、恢复步骤与可用降级;核心正确性无法保障时停止受影响流程。
依赖清单在 skill-dependencies.json,配置入口、最小权限、验证命令与降级矩阵在
references/setup-guide.md。全流程离线可用,不需要账号、Token、MCP 或网络。
零、加载即弹窗(最高优先级)
本技能被引用后、动笔写任何 .tex 之前,若用户未一次性给齐配置,必须用 AskUserQuestion 一次问完下面 4 组。不得只在正文里问,不得跳过,不得擅自默认堆满动画。用户已明确给出的选择不重复问;用户说「你决定」时按每组标注的默认值执行。
弹窗 4 组
| # | 问题 | 选项 | 默认 |
|---|---|---|---|
| 1 | 配色与主题方案(可多选,多选则逐套生成) | 5 套见 references/schemes.md:学术深蓝·圆角卡片 / 海军蓝金·直角权威 / 松烟青绿·左竖条 / 黑白灰·细线极简 / 赭石暖橙·胶囊标签;另给「全部 5 套」 |
学术深蓝·圆角卡片 |
| 2 | 动画与交互互动频次 | 精简(整帧出现,仅推导结尾停顿;0 个连续动画、0 个互动控件)/ 适中(每个逻辑点一次覆盖,≤3 步/帧;保留 1 个核心连续动画,如折线逼近/趋近/运动轨迹;目录跳转按钮)(默认)/ 丰富(逐行推导 ≤5 步/帧,TikZ 路径分步 + 2–4 个连续动画 + 点击显答 OCG + 按钮跳转 + 反例辨析互动)/ 无动画(讲义式静态稿) | 适中 |
| 3 | 内容模块(多选) | 课前测试 / 课中测试 / 课后测试 / 课后作业(分层 A·B·C 含参考答案)/ 课程思政案例 / OBE 成果导向案例 / 都不加 | 课中测试 + 课后作业 + 课程思政 + OBE |
| 4 | 构成元素与导航(多选) | 封面 / 总目录 / 节转场页 / 总结页 / 作业页 / 底部导航条 / 顶部导航条 / 不要导航条 / 启用二级导航(内容分级多时) | 封面 + 总目录 + 节转场 + 总结 + 底部紧凑导航条;节数 ≥3 自动开二级导航 |
第 4 组的三个默认观感(生成时也可由 new_project.py 参数覆盖):导航带为紧凑档(约 0.62 页宽、0.30 cm 高、5.2pt 标签、淡化配色),右下角页码默认不显示(进度条已承担进度提示),幻灯片上不显示 Adobe Reader 提示(阅读器要求写进工程根目录的 放映说明.md,不占版面)。需要恢复时分别用 --nav-compact off、--show-page-number on、--show-reader-hint on。
第 1 组的每套方案同时决定配色、定理/定义/例题/易错四类色块的形状(圆角、直角带阴影、左竖条、细线框、胶囊标签)、封面装饰与节转场样式,不是只换颜色。方案完整 \definecolor + 盒子参数在 references/schemes.md。
科目判断(不占弹窗):从课题名推断科目,用于选宏包白名单(见 references/package-conflicts.md 第 4 节)。例:弧长/定积分/中值定理→高等数学;ε–δ/级数/一致收敛→数学分析;矩阵/行列式/线性变换→高等代数;分布/假设检验/大数定律→概率论与数理统计;单纯形/图论/动态规划→运筹学。推断不出用通用白名单,不阻塞流程。用户明确指定科目时以用户为准。
弹窗结束后,把 4 组选择写成 config.json 存到工程根目录,后续所有脚本只读它——配置单一真源。
一、开工前:先写设计蓝图,再写 TeX
这是本技能与「直接让大模型吐 .tex」最大的区别。任何内容生成式大模型(包括你)在写第一帧之前,必须先产出 design/蓝图.md,逐条对照 references/content-design.md 的九律,不达标不得动笔。蓝图至少包含:
- 主题句:一个短语(≤12 字)。若只让学生记住一句话,就是这句。它必须在封面副标题、每个节转场页、导航带署名行、总结页至少出现 4 次。例:弧长课「把曲折算清楚」。
- 知识主线四段式:每个核心概念写全「起源 / 进化 / 应用 / 衔接」——起源=什么场景逼出这个概念;进化=中间遇到什么场景使概念变形;应用=今天的新场景;衔接=与后续内容或其他科目的哪一个具体知识点接得上。
- why / what / how 三问:为什么这样规定 → 它到底是什么 → 如何学会、如何应用。
- 抽象概念的三重解释:本质解释(去掉术语后它说的是什么)、通俗化语言(一句大白话)、生活化场景(一个学生见过的例子)。
- 固定步骤方法的极简案例:凡是有固定格式步骤的方法(高斯消元、化行阶梯形、单纯形表迭代、求条件分布、ε–δ 放缩…),至少 2 个极简案例逐步展示每一步,覆盖不同情形(如无解/无穷多解、主元为 0 需换行),并配同类型习题 + 完整答案。
- 一帧一观点清单:每帧标题 + 唯一观点 + 呈现形式(列表/流程图/公式/图示/对比表),文字 ≤6 行。
- 视觉疲劳与转场设计:标注每 8–12 帧插入一个「脑力休息点」——转场页、生活化插曲、历史故事、一句反直觉提问,不用知识点填充。
- 练习强化点:与主题强相关的典型知识点/技巧,各配 ≥1 道匹配练习,在课中/课后重复出现。
- 00 后与大模型时代适配:短视频式钩子(前 30 秒给冲突/悬念)+ 长链条推导、暂停预测、反例辨析等系统性专注力与逻辑训练;不靠连续强刺激,靠「让学生自己推完一步」。
- 思政与 OBE 落地方式:写成「教师身体力行做了什么」而不是「列出几条价值标题」。见
references/content-design.md第九律。
蓝图经 9 律自检通过后,才调用 scripts/new_project.py 生成工程骨架、再按蓝图填内容。禁止跳过蓝图直接生成 .tex——这是保证课件「powerful point」而非「Word 搬上投影」的关键闸门。
二、生成工程
# 用弹窗结果生成(脚本会写 config.json、main.tex、preamble.tex、chapters/、fig/、frames/)
python scripts/new_project.py --title 弧长计算 --subject calculus \
--scheme academic-blue --anim moderate --nav bottom --secondary on \
--elements cover,toc,transition,summary --modules quiz-in,homework,ideology,obe \
--outdir 弧长计算
# 多选配色:逐套生成,文件名追加方案短名
python scripts/new_project.py --title 弧长计算 --scheme all --outdir 弧长计算
# 教室字号缩放:映射 Beamer 离散档位 10/11/12/14/17pt
python scripts/new_project.py --title 弧长计算 --font-scale 1.24 --outdir 弧长计算
生成的目录(单一真源):
弧长计算/
├── config.json # 弹窗配置,唯一真源
├── design/蓝图.md # 内容设计蓝图,唯一真源
├── 放映说明.md # 阅读器要求与开关说明,不进幻灯片
├── main.tex # 唯一编译根
├── preamble.tex # 导言区:包防火墙 / 配色 / 色块形状 / 导航条
├── chapters/ch01.tex # 一讲一文件,\section 写在自己文件第一行
├── fig/ # 预生成的矢量图
├── frames/ # animate 帧素材(若有)
└── build/ # 编译产物与日志
技能包里的三份模板以 .txt 纯文本存放(分发包不含 .tex 文件,便于在限制该文件类型的平台上传);new_project.py 读取模板后写出上表中的 main.tex / preamble.tex / chapters/ch01.tex,模板内容一字不改。工程产物在本机生成,不受上传限制。
铁律(来自 Python编程课件制作经验与避坑指南.md 实测):
- 只有一个编译根
main.tex。日志第一行必须是**main.tex;曾出现「编译了教案却以为编了课件」而不报错的坑。 - 课件与教案若同时存在,必须是两个独立项目/两个根文件。
\section放在自己文件第一行,绝不写在上一个文件末尾。- 讲次编号用
\insertsectionnumber自动生成,不要在文件名、\section、目录、页脚各维护一份。 - 一张总目录(
[allowframebreaks]),删掉每讲重复的\tableofcontents;实测重复 TOC 能吃掉 155 页里的 48 页。 - 图、公式、案例结论若被多处引用,抽到
fig/或chapters/shared.tex用\input共享。
三、硬性技术红线
3.1 包冲突防火墙
导言区必须按 references/package-conflicts.md 的固定顺序装载,不得随意增删。核心:
- 文档类
\documentclass[aspectratio=169,11pt,xcolor={svgnames,dvipsnames,table}]{beamer}——颜色选项只能写在文档类,\usepackage{xcolor}不许重复(beamer/tikz 都已加载)。 - 中文用
\usepackage[UTF8]{ctex}或\documentclass{ctexbeamer},二选一,不要叠加;不要再手动\usepackage{fontspec}。 - 数学内核严格顺序:
mathtools(已含 amsmath,不要再写\usepackage{amsmath})→amssymb→bm→amsthm→ 学科白名单。 - 主题之后立刻
\usefonttheme{professionalfonts},否则数学字母被主题字体改写、显示不标准。 hyperref由 beamer 自动加载,不要重复;cleveref若用必须放最后。physics与commath/esvect争\dv \pdv:优先不用 physics,手写\dd;确需 physics 时先\let\dv\relax \let\pdv\relax \let\grad\relax再加载。mathrsfs与calrsfs、MnSymbol与amssymb、enumitem与 beamer 列表、forest重复加载——一律「二选一 / 不重复」。- 含 minted 的 frame 必须
[fragile],且代码块不能包\only/\visible;minted 需-shell-escape。教学课件优先listings(不依赖 shell-escape、编译快、配色可控)。 - 每次改导言区后必须重新编译验证,不允许凭「看起来没问题」交付。
生成后先跑静态审查:python scripts/audit_tex.py 工程目录(检查包顺序、重复加载、缺 $、裸变量、\pause 位置、fragile、TikZ 下划线、代码转义污染、帧步数超限)。
3.2 数学公式渲染
见 references/math-rendering.md。最高频的 8 条:
- 行内
$...$,行间\[...\]/align/equation;align内不要再写$。 - 中文进公式一律
\text{面积},不要裸中文;\mathbf{\alpha}加粗希腊字母无效,用\bm{\alpha}。 - 希腊字母 ε 写
\varepsilon,不写\epsilon;省略号写\dots/\cdots/\vdots,不用中文……。 - 分式写
\frac{}{},不要用/冒充;行内用\frac,行间主公式才用\dfrac。 - 与中文混排的变量必须进数学模式(
$n$、$a_1$、$[a,b]$),否则不斜体、上下标失效。 - TikZ 节点文本里的下划线必须
\_,或放进数学模式,否则Missing $ inserted级联报错。 - 行内巨算子模板已全局重定义
\lim/\sum/\prod/\max/\min使下标落正下方,无需手加\limits;撑高行距时改行间公式。 - 表格用
booktabs三线表,无竖线;columns一律[T, onlytextwidth],两栏宽度和 ≤0.96。
3.3 交互动画(arclength 三层体系)
见 references/animation.md——这是从 arclength.pdf 逆向得到的实现结论,不是猜测:
| 层 | 技术 | PDF 里的证据 | 兼容性 |
|---|---|---|---|
| L1 覆盖动画 | \pause / \uncover / \only / \alt / itemize[<+->] / overprint |
47 个物理页、页脚却是 n/26;同一帧标题连续出现 5–6 页 |
全阅读器、翻页笔通用 |
| L2 TikZ 分步 | \draw<2-> / \node<3-> / 共用坐标系 / scope<2-> |
弧微分直角三角形、折线逼近、桥面竖曲线均为矢量 | 全阅读器 |
| L3 连续逐帧 | animateinline + \multiframe 内联 TikZ 矢量帧 |
4 个 anm0–anm3 实例、a0_/a1_ JS 引擎、/Subtype/Screen 4 处、20 个 Fm* 矢量 Form XObject、无位图、无外部文件 |
需 Adobe Reader 的 JavaScript |
| 附 | 按钮跳转 \hyperlink/\beamerbutton、OCG 点击显答、/Trans<</S/R>> 全局转场 |
47 页每页带转场字典 | 按钮通用,OCG 部分支持 |
规则:
- L1 是主力,L3 只用于「必须看动态过程才懂」的 1–4 处(折线逼近、割线趋近切线、小车沿曲线量 ds、放大镜局部线性化)。频次档决定数量:精简 0 个、适中 1 个、丰富 2–4 个。
- 每帧动画 ≤5 步;
\pause不放tabular/block内;equation内不放\pause(用aligned包一层);表格分步用overprint + \onslide。 - 位置固定的内容用
\uncover(预留占位、页面不跳),同一区域轮换内容才用\only;二选一用\alt。 - 测试页坚持先题后答:题目始终可见,答案在
\pause之后或 OCG 图层里,绝不能把题目一起藏了。 - L3 帧用
\multiframe直接画 TikZ,不生成位图序列——矢量清晰、单文件、无需外部帧文件。阅读器要求写进工程根目录的放映说明.md,交付时口头/文字说明「请用 Adobe Reader 打开,WPS/浏览器不支持逐帧动画」,不要把这行字放进幻灯片。 - 物理页数 ≠ 逻辑帧数是正常现象;
\insertframenumber/\inserttotalframenumber只用于内部计算进度与二级刻度,默认不显示在页面上。验证脚本在页码关闭时改从源码 frame 统计逻辑帧数,不要「修正」这个差值。
四、导航条与进度条一体化
preamble.txt 模板内置一条导航带,由 config.json 的 nav / secondary 控制。它同时承担三件事(见 references/navigation.md):
- 一级导航:整条带按节等分,每格「节号 + 节标题」,可点击跳到该节。
- 二级导航:内容分级多(节数 ≥3 或每节帧数 ≥6)时开启,当前节那一格下沿标出本节每帧刻度,当前帧深色长刻度。
- 进度条即背景:不另画条,进度直接作为带子背景色块从左向右填充——已讲完节整格填满、当前节按帧比例填充、未讲节留浅底,填充边界永远与分格线对齐。
观感默认走紧凑档:带子约 0.62 页宽、0.30 cm 高、标签 5.2pt、署名主题句 5.4pt,轨道与填充色都淡化,不抢正文焦点;右下角页码默认关闭。三个开关由 config.json 注入,需要标准尺寸、页码或页面提示时分别用 --nav-compact off、--show-page-number on、--show-reader-hint on。完整尺寸对照见 references/navigation.md。
实现靠 totcount + .aux 写节标记,至少编译两遍(build_pdf.py 会自动追加到引用收敛);第一遍或缺节数据时自动降级为一条细帧进度条,不报错。plain 帧(封面/节转场)不显示导航带。位置 bottom / top / none 由脚本注入,不要手改模板。
五、编译、验证与交付
python scripts/audit_tex.py 弧长计算 # 静态审查,先过这关
python scripts/build_pdf.py 弧长计算/main.tex # XeLaTeX 自动多遍 + 日志三查
python scripts/verify_pdf.py 弧长计算/弧长计算.pdf --tex 弧长计算/main.tex
- 编译 XeLaTeX 两遍起步,
build_pdf.py会按日志自动追加到交叉引用收敛(本模板因导航带写.aux+ animate 帧,实测需 3 遍,脚本已自动处理);第一遍目录、交叉引用与导航带节名都不准(导航带降级为细帧进度条),日志会有Label(s) may have changed。用 listings 时无需-shell-escape,用 minted 时必须开。 - 日志三查(脚本自动):
^!硬错误、Overfull \vbox内容溢出、Missing character字体缺字,另外报Undefined control sequence与Label(s) may have changed。 Overfull \vbox处理顺序:拆帧 → 删重复解释 → 表格/公式减行 → 最后才\small;不要用\resizebox压整页,字号会小到后排看不见。[allowframebreaks]对columns里的表格基本无效。- 字体:中文必须落
\setCJKmainfont/ctex的中文字体,不能让\setmainfont只管 Latin 而中文偷偷走 Fandol 宋体;正文符号(①②③、✅❌、π≈≥→)在等宽环境里一律 ASCII 化或改用$\pi$、$\approx$、\cmark。 - 交付前放映模式实点一遍:覆盖顺序、按钮跳转、逐帧动画、先题后答。没有 Adobe Reader 环境时只能声称「结构校验通过」,并提示用户在 Adobe Reader 放映核对,不得宣称动画已实测通过。
- 含外部媒体时连同媒体目录一起打包;PDF 时间戳要与源码对得上。
六、内容设计九律(生成内容时的强制约束)
完整解释、正反例、各科目示例见 references/content-design.md。九律摘要,蓝图必须逐条打勾:
- 强主题反复:一个 ≤12 字短语,封面/转场/导航带/小结至少出现 4 次;每帧内容都要能回答「它怎么支撑主题」。
- 逻辑四段式:起源 → 进化 → 应用 → 衔接,缺一段就补,衔接要指名道姓到后续章节或其他科目知识点。
- 本质 + 通俗 + 生活:生涩抽象概念三件套齐全,禁止只给定义。
- 固定步骤多案例:有套路的方法 ≥2 个极简案例逐步展示(覆盖不同情形)+ 同类型习题 + 完整答案。
- why / what / how:为什么这样规定 → 到底是什么 → 如何学会与应用,每个问题或课题都走一遍。
- 精简 powerful point:一帧一观点,≤6 行字,多用列表/图标/主标题/流程图;排版四原则(对齐、对比、重复、亲密);每 8–12 帧一个转场或脑力休息插曲,缓解长时间讲授的视觉疲劳。
- 反复强化:与主题强相关的典型知识点/技巧配匹配练习,课中、课后各出现一次。
- 面向 00 后 / 大模型时代:短视频式钩子抓注意力,但用长链条推导、暂停预测、反例辨析系统性训练专注力与逻辑,不靠连续强刺激。
- 思政与 OBE 润物无声:靠教师身体力行的行为示范(把参数多算一步、主动验证反例、当场承认并重算错误)让学生被感染,而不是「列出 4 条价值标题」或唠叨「遇事不能怕麻烦」。OBE 写可观测、可量化的成果,不写「掌握本章内容」。
七、常见修复速查
| 现象 | 根因与处理 |
|---|---|
编译报 Option clash for xcolor |
颜色选项写进 \documentclass[...],删掉所有 \usepackage{xcolor} |
| 数学字母变圆体/不标准 | 主题之后补 \usefonttheme{professionalfonts} |
Missing $ inserted |
TikZ 节点下划线未转义、中文进了数学模式、align 里多写了 $ |
\dv / \pdv 已定义 |
physics 与 commath/esvect 撞车;去掉 physics 或先 \let...\relax |
| 页面切换时内容跳动 | \only 改 \uncover;会增长的内容用 overprint 预留高度 |
代码块报 runaway argument |
frame 加 [fragile];代码块不要被 \only/\visible 包 |
| 目录缺失章节、导航带不显示节名 | 只编了一遍;看日志 Label(s) may have changed,连续编译到收敛 |
| 总目录被裁掉后半 | \begin{frame}[allowframebreaks]{目录} |
| 中文变宋体、与英文不搭 | \setCJKmainfont 未设;或 ctexbeamer 与 ctex 叠加 |
| 逐帧动画不播放 | 需 Adobe Reader;确认 \usepackage{animate} 且帧由 \multiframe 生成;WPS/浏览器不支持 |
| 某帧内容超出页面底部 | 拆帧,不要用 \resizebox 硬压 |
代码里出现 \%、\\n、\\d |
verbatim 里不做 LaTeX 转义;代码块内直接写 %、\n、\d |
| 导航带第一遍不显示节名 | 正常,.aux 尚无节标记,编译两遍即可 |
八、资源清单与使用说明
SKILL.md 本文件:环境路由 + 弹窗 4 组 + 工作流 + 硬性红线
skill-dependencies.json 依赖清单、检查项、功能级降级映射(机器可读)
scripts/check_environment.py 包内只读环境检查器(原样复制,输出四种状态)
references/setup-guide.md 官方入口、逐步配置、最小权限、验证、降级与故障恢复
references/schemes.md 5 套配色主题方案(含色块形状、定理环境、完整 \definecolor 段)
references/package-conflicts.md 包冲突防火墙:固定顺序、冲突对照表、5 科目白名单
references/math-rendering.md 公式渲染规范 + 5 科目公式速查
references/animation.md arclength.pdf 动画逆向解剖 + 三层动画可复用配方
references/content-design.md 内容设计九律:解释、正反例、蓝图模板、大模型提示词骨架
references/navigation.md 导航条/进度条一体化、二级导航、构成元素与转场
references/troubleshooting.md 编译排错、日志三查、交付清单
assets/preamble.txt 导言区模板(含配色/形状/导航注入标记)
assets/main.txt 根文件模板(封面/总目录/节转场/总结/作业)
assets/chapter.txt 单讲骨架(四段式 + why/what/how + 动画 + 例题 + 测试 + 思政)
scripts/new_project.py 按 config 生成完整工程
scripts/audit_tex.py 静态审查(包/公式/动画/版式/蓝图)
scripts/build_pdf.py XeLaTeX 自动多遍编译 + 日志三查
scripts/verify_pdf.py PDF 验证(页数/动画对象/字体/链接/逻辑帧号)
最短使用路径:引用本技能 → 回答 4 组弹窗 → 技能写 design/蓝图.md 并过九律自检 → new_project.py 生成工程 → 按蓝图填 chapters/*.tex → audit_tex.py → build_pdf.py → verify_pdf.py → Adobe Reader 放映实点 → 交付。
未覆盖范围:不产出 HTML/PPTX/交互式 3D、不做 Word 教案、不代用户发布或上架;animate 逐帧动画在 WPS/浏览器中不可用;无法替代教师在真实课堂的试讲。