Imported from huashu996/PPT-Framework-Skill (
SKILL.md). Install upstream withnpx skills add huashu996/PPT-Framework-Skill. Copyright stays with the author.
Paper-Fig-Skill
目标
以最快速度交付一个质量良好、可继续编辑的 PPTX。普通单页任务默认控制在约 10 分钟内。
最高优先级安全边界:只控制本次目标 PPT
本节高于速度目标、构建流程、审查流程、PowerPoint 进程清理和任何工具默认行为。违反任意一条即立即停止自动化,不得用“需要清理实例”“由自动化启动”“共用同一 PowerPoint 进程”作为例外。
- 自动化只拥有用户本次明确指定的唯一目标 PPTX 的控制权。开始前必须把目标文件的规范化绝对路径写入只读变量
AUTHORIZED_TARGET_PPTX;未取得明确目标路径时,禁止启动或连接 PowerPoint。 - 只允许对
Presentation.FullName与AUTHORIZED_TARGET_PPTX逐字规范化匹配的演示文稿执行读取对象、激活、修改、保存、导出或关闭。禁止按标题模糊匹配、窗口顺序、ActivePresentation、最近文件或“当前可见窗口”推断目标。 - 除仅为建立隔离清单而读取
FullName、ReadOnly、Saved和进程标识外,严禁读取、激活、切换、修改、保存、另存、导出或关闭任何非目标演示文稿。尤其禁止把用户未保存的其他演示文稿置为Saved=true、使用Close丢弃更改或触发任何保存提示。 - 启动前记录所有既有 PowerPoint 进程和已打开演示文稿的绝对路径;任务期间把它们视为不可触碰保护对象。若目标与其他演示文稿共享同一 PowerPoint 应用实例,只操作目标
Presentation对象,完成后仅在确认目标由本任务打开且无需保留时关闭目标;不得关闭共享实例。 - 严禁调用
Application.Quit()、taskkill、Stop-Process、按进程名结束POWERPNT.EXE、关闭所有窗口、遍历Presentations批量关闭或任何等价的全局退出/清理操作。即使本任务曾创建 PowerPoint COM 对象,只要实例中存在非目标演示文稿,也绝不允许退出该实例。 - 默认不关闭目标演示文稿。只有用户明确要求关闭,或本任务在独立隔离实例中打开了目标且关闭已被写入本次执行计划时,才允许调用该目标
Presentation.Close();关闭前再次核对完整路径并确认它是唯一受影响对象。释放 COM 引用不等于退出应用,不得为释放引用调用Quit()。 - 所有异常、超时、验证失败和脚本清理分支都必须遵守同一隔离规则。异常处理只能释放本任务持有的对象引用和临时文件;禁止把“确保无残留进程”实现为关闭用户实例。无法证明对象身份或实例隔离时,保持 PowerPoint 原状并停止。
- 每个使用 PowerPoint COM 的生产脚本必须在运行前通过静态检查:不得包含全局
Quit/杀进程/批量Close路径;必须包含目标绝对路径核对。审查或辅助脚本同样适用,不得因“只读”而放宽。
最高优先级硬门槛:
- 任何文字或公式的实际可见内容不得与框线、箭头、连接线、形状、图标、图片、其他公式或其他文字发生碰撞。公式与文字执行完全相同的零碰撞标准;Office 原生公式按最终可见字形判断,MathType 按非空
Equation.DSMT4OLE 的实际可见边界判断,不能只检查目标占位框。文字或公式位于所属容器内部不算碰撞,但可见内容必须与容器边界保留安全内边距。该规则是质量审核中的最高原则,存在任意一处即优先修复;仅在已完成第二次审查时,允许如实记录后按审查上限交付。 - 每条折线或折线箭头必须是一个 PowerPoint 原生可编辑对象;禁止用多条直线、多个箭头或多个形状拼接后组合冒充一条折线。
- 除源图明确竖排、单字标签或逐字排列外,任何横排文本都不得出现单个汉字、单个英文 token、孤立标点或项目符号独占一行。
以上门槛高于局部尺寸复刻、同级等宽、对齐、留白、间距、装饰细节和 10 分钟时间目标。
质量优先级:
- 消除文字和公式与任何框线、箭头、形状、其他文字、其他公式或其他元素的碰撞;
- 保证每条折线和折线箭头是单个 PowerPoint 原生对象,绝不拼接;
- 消除横排文本的单字行、孤立 token、孤立标点和项目符号行;
- 其他文字排版;
- 内容、区域底色与配色覆盖完整;
- 箭头类型、方向、目标和路线;
- 留白、对齐和页面平衡;
- 次要装饰细节。
参考图复刻必须一一对应:不得删减、合并、改写或新增源图中的模块、文字、形状、曲线和箭头。禁止近似重构和简化图形;提速只能来自一次构建、组件复用和减少重复检查,不能来自降低复刻忠实度。
普通任务由主智能体直接完成,不启动子智能体,不生成多个竞争版本。
首次生成完整可编辑 PPTX 后,默认只进行 1 次合并审查。若发现真实问题,先汇总全部问题,在同一写入会话集中修正 1 次,再进行第 2 次定向审查。第 2 次审查后必须停止修改并交付当前版本;该停止条件优先于本 skill 中所有要求“继续修复”或“存在问题不得交付”的语句,但不得把残留问题虚报为已解决。只有用户明确授权继续返工时,才允许突破该默认上限。
PPT 构建排版统一原则(全部任务默认)
- 执行任何 PowerPoint 创建、复刻、翻译、优化、公式写入或修正任务前,必须完整读取 PPT 构建排版统一原则,并把其中“最终强制检查表”加入当前工作检查表。
- 该文件是全部 PPT 任务的通用排版与几何下限,统一约束字体、文字、框体、留白、直线、箭头、折线、曲线、复杂模块、图例、图层、碰撞、保存和最终渲染;不得因任务类型不同而跳过。
- 页面尺寸、方向、宽高比、字体、字号和配色等具体数值始终以当前用户确认参数为准,不设跨任务默认值。任务专项规则可以更严格,但不得降低该文件的通用门槛。
- 参考图中明确存在的特殊重叠、非对称或非常规路径只对已记录的具体对象构成例外,不得据此放宽整页原则。
显式调用时的强制优先级
用户通过 $paper-fig-skill、skill 链接或明确名称调用本 skill 时,视为要求逐条严格执行,不是仅参考其风格或建议:
- 本 skill 的硬门槛、执行闸门和停止条件优先于通用
Presentations、模板技能、artifact-tool、PowerPoint 默认行为、自动连接器和其他辅助工具的默认流程。 - 其他技能和工具只能提供文件读写、对象创建、渲染和检查能力;不得覆盖或跳过参数确认、SVG 骨架审核、参考图一一对应、单对象折线、文字零碰撞、内置公式批处理和最终状态检查。
- 工具默认结果与本 skill 冲突时,必须修改工具参数、改用另一种可编辑实现或停止并报告阻断;禁止接受“基本一致”“方向大致正确”“近似水平”“视觉上差不多”等结果。
- 开始执行前,将本次任务涉及的强制项作为当前工作检查表;完成每一阶段时逐项核销。不得用通用越界检测、对象数量或生成器成功信息代替 skill 专项检查。
- 参考图任务必须以源图可见几何为裁决依据。通用生成工具自动吸附、自动换行、自动路由、自动缩字或自动改锚点产生偏差时,以源图为准手动约束。
- 未完成全部适用检查项时,不得声称“严格按照 skill”“已审核”“阻断项为 0”或“可交付”。发现任何漏检后,撤销此前审核结论并按受影响范围重新检查。
编码
- 默认以 UTF-8 读取和写入脚本、Markdown、JSON、CSV、配置、日志及其他文本文件,并在命令或 API 支持时显式指定 UTF-8。
- 不得依赖 Windows 系统默认代码页读取包含中文内容或中文路径的文件;发现乱码时先按 UTF-8 重新读取,不得在乱码状态下编辑或覆盖原文件。
- PowerShell 后处理脚本不得内嵌中文可见文本;全部中文从显式 UTF-8 解码的文字账本读取。每次修改文字后,必须在保存前从 PowerPoint 回读并与账本逐 Unicode 字符比较;发现乱码、
U+FFFD、空文本或标点变化时中止保存。
内置公式能力
- 本 skill 自行完成公式识别、LaTeX 清单、manifest 构建、Office 原生公式写入、MathType OLE 写入和对象验收;不得读取、触发或执行其他公式 skill。
- 唯一生产路线是本目录的
scripts/。旧有的 MathType 功能区输入、英文x测试、批量暂存、手工逐公式窗口和历史脚本不得用于生产公式。 - 在已确认骨架中为每个公式预留唯一命名区域;一次识别整页全部公式,按顺序批量写入,再执行整页排版、零碰撞和最终渲染检查。
- Office 模式必须生成 PowerPoint 原生可编辑专业公式;MathType 模式必须生成非空的
Equation.DSMT4OLE;选择两种都要时分别生成两个 PPTX。
Windows 下的 PPT 运行时初始化
正式生成 PPT 或调用 @oai/artifact-tool 前,必须先完成一次运行时预检:
- 先调用工作区依赖发现工具,使用其返回的 Node.js、Node.js packages 和捆绑运行时绝对路径;不得从当前目录、技能目录或历史版本号猜测运行时位置。
- 明确区分工作区根目录与捆绑运行时根目录。
C:\Users\<用户>\Documents\...可以是正确的工作区根目录,但捆绑运行时通常位于C:\Users\<用户>\.cache\codex-runtimes\codex-primary-runtime;不得因为两者不同而声称工作区根目录错误。 - Windows 中若
HOME为空,在执行setup_artifact_tool_workspace.mjs的同一进程内临时令HOME=USERPROFILE;若USERPROFILE也不可用,则使用系统用户目录。不得让初始化器以process.cwd()代替用户目录。 - 若错误路径包含
<工作区>\.cache\codex-runtimes\...,立即判定为运行时根目录推导错误,不重复执行同一失败命令。先验证依赖发现工具返回路径下的node_modules\@oai\artifact-tool\package.json和构建入口确实存在,再继续。 - 官方初始化器仍失败但本地捆绑包已验证可用时,只允许一次回退:将临时制作目录的
node_modules\@oai\artifact-tool链接到已验证的本地包。链接目标必须来自本次依赖发现结果,不得硬编码插件版本或把链接建到最终交付目录。 - 该异常属于 PPT 运行时初始化层,不属于本技能的内容分析、版式或用户工作区配置错误。对用户说明时应准确称为“Windows 下
HOME缺失导致初始化器误从当前目录推导运行时路径”;恢复成功后继续主任务,不要求用户更换工作区。
基础 PPTX 结构完整性闸门
基础 PPTX 的结构验证必须发生在 Office 或 MathType 公式写入之前。公式流水线只能处理已经证明可被 PowerPoint 正常打开的文件,禁止把公式写入成功当作 PPTX 包结构正确的证明。
- 所有线条、直箭头、折线段、自由路径和反向绘制辅助函数都必须先规范化几何:
left=min(x1,x2)、top=min(y1,y2)、width=abs(x2-x1)、height=abs(y2-y1);方向使用flipH、flipV或端点顺序表达。禁止向 PPTX 写入负width、负height、负cx或负cy,包括向左、向上、旋转后和反馈路径中的线条。 - 页面坐标换算只允许引用生成脚本中的同一组权威画布常量,如
sourceWidth、sourceHeight、slideWidth、slideHeight;后处理、连接器修复和审计脚本不得重新手写另一组近似比例。执行后处理前用至少两个已知对象反算坐标并断言误差,禁止把2000、截图宽度或显示缩放尺寸误当成真实源图宽度。 - 首次保存含全部非公式对象和唯一公式目标框的基础 PPTX 后,立即运行
scripts/validate_pptx_ooxml_geometry.py --input <pptx>。只有 ZIP CRC、XML 解析、内部关系、形状 ID 和全部 DrawingML extent 检查均通过时,才允许继续。 - 结构脚本通过后,以“只读基础包审计会话”按权威绝对路径启动 PowerPoint,确认
FullName精确匹配,并完成一次原生打开和页面导出。只以Presentation.ReadOnly实际值判断只读状态,不以/r参数、文件属性或启动命令推断;必须在此时验证没有“PowerPoint 发现内容有问题”“需要修复”或等价提示,未通过时禁止启动 Office/MathType 公式流水线。 - 出现修复提示时,禁止点击“修复”后覆盖权威 PPTX,也禁止把修复后的文件继续作为公式输入。保留错误现场,回到生成脚本修正非法几何或包关系,再重建同一权威路径;该重建发生在首个完整可编辑 PPTX 形成之前时不计修正轮次。
- 基础包通过后记录文件 SHA-256、最后写入时间和公式流水线启动阶段;公式完成后再次记录。后续出现异常时,先依据两次文件状态、流水线 stage 和 PowerPoint 原生打开结果定位是“基础包生成”“公式写入”还是“后处理”阶段,禁止没有证据就归因于 MathType、PowerPoint 安全策略或用户文件。
公式写入前的原生视觉与幂等闸门
结构检查通过不等于视觉正确。参考图任务在启动 Office/MathType 前必须从基础 PPTX 完成一次 PowerPoint 原生渲染并实际查看原始尺寸全页及高密度区域;未完成以下检查不得写入公式:
- 将源图的箭头头型、虚实线型、颜色和头部数量加入基础包审计。禁止未经验证直接使用 Office 数值枚举;PowerPoint COM 中
msoArrowheadNone=1、实心msoArrowheadTriangle=2、空心msoArrowheadOpen=3,源图为实心时必须读取最终EndArrowheadStyle=2,不能只看“存在箭头头部”。 - 不信任生成后端对
dot、dash、箭头头型或线端样式的名称映射。虚线和点线必须在 PowerPoint 原生渲染中逐框核对;需要圆点线时明确设置并读取msoLineRoundDot=3,发现被渲染为实线时在基础包阶段修正。 - 标题、正文和公式使用互不重叠的独立矩形槽。含“标题 + 公式”的模块必须先划分标题带和公式区,禁止让标题文本框覆盖整个模块后再把公式目标框叠在其上。
- 正式公式写入前,用预计公式可见矩形而非空目标框线条执行一次
formula_target_connector_collision_count和formula_target_text_collision_count;两者必须为0。公式插入后只用于核对实际 OLE 尺寸偏差,不得把首次布局碰撞推迟到 MathType 完成后。 - 自由多段线和折线的碰撞必须逐段计算,曲线按真实节点或采样轮廓计算;禁止用覆盖大片空白的整体外接矩形代替路径后制造误报,也禁止因此移动本来正确的公式。
- 所有后处理脚本必须幂等。为脚本拥有的对象使用稳定前缀或完整对象注册表;再次运行前删除全部同前缀旧对象和代理锚点,再创建一次,并断言逻辑路径名唯一、预期路径数等于实际路径数。禁止依赖容易遗漏的新旧名称硬编码清单。
- 基础包视觉检查必须在公式流水线之前同时核对:箭头头型、点/虚线样式、标题与公式分区、公式目标安全槽、逻辑路径唯一性和预期对象数量。任一项未核对时禁止以“结构检查已通过”为由继续。
- 公式或文字位置修正必须由实际外接框、路径段和
3–4 pt安全距离计算最小位移,一次移动到满足条件的位置;禁止凭感觉连续移动若干像素并消耗修正轮次。保存前先在内存或只读几何模型中验证修改后的碰撞计数预计为0。 - 第 1 次合并审查发现问题时,一次性汇总全部剩余阻断项,并仅在几何计算证明集中修正方案能够消除它们后保存;不得用唯一一次修正机会进行未经验证的试移。若无法证明为零,在保存前先重做空间分配和内存几何验证,避免第二次审查仍暴露可预防问题。
- 合并 PowerPoint 会话:默认只允许一次基础包写入会话、一次基础包只读审计、一次公式批处理会话和一次最终只读审计;同一阶段的连接器、线型、图层和文字位置修改必须在同一写入会话完成。只有审计发现真实问题时才追加修正会话,不得为每个小步骤反复打开和关闭 PowerPoint。
- 每次计划打开 PowerPoint 前向用户说明本次会话目的;若实际需要额外重开,先说明触发原因。禁止在仍可能发生修正时承诺“只会再打开一次”,也不得把自动化重复启动造成的可见窗口干扰留给用户自行判断。
PowerPoint 启动的强制前置闸门
以下规则属于界面操作的强制前置条件;任意一项未通过时,禁止继续制作:
- 始终按路径直接启动目标 PPTX。 只要目标文件路径已知,启动或打开 PowerPoint 的第一步必须把该 PPTX 的绝对路径直接传给 PowerPoint 或系统文件关联;路径含空格或中文时使用完整字面路径并正确引用。禁止先打开空白 PowerPoint、进入“文件 > 打开”或系统文件选择器,再通过截图、坐标点击、键盘输入、剪贴板或逐级浏览目录来定位目标文件。禁止为了打开文件而反复截图或枚举窗口。
- 目标 PPTX 已在 PowerPoint 中打开时,直接激活并复用标题匹配的现有窗口;不得重复启动或再次打开同一路径。直接启动后只允许读取标题栏或当前窗口状态确认文件是否正确;截图仅用于确有必要的视觉验证,不能作为打开文件、寻找路径或判断下一步导航的默认手段。目标路径不存在时立即停止并报告,不得打开空白演示文稿代替。
- 打开前先声明本次会话是“写入会话”还是“只读审计会话”。任何可能移动、缩放、删除、重连、改图层或保存对象的步骤都必须以可写模式打开;打开后先读取
ReadOnly/保存能力并确认可写,再执行第一处修改。禁止先在只读演示文稿中完成一批修改,直到Presentation.Save报错才发现无法保存。 - 每次打开后立即把
ActivePresentation.FullName与权威 PPTX 的规范化绝对路径逐字比较;不一致时不得继续。写入会话只保存该权威路径,禁止因只读错误临时另存副本、改名或产生第二个竞争版本。 - 优先使用
scripts/powerpoint_window_binding.ps1复用或按权威路径启动并绑定 PowerPoint 会话。若New-Object -ComObject PowerPoint.Application返回空对象,或访问Visible、Presentations、Quit时出现TYPE_E_CANTLOADLIBRARY,立即丢弃该无效实例,不继续访问其属性;只启动一次目标 PPTX,在有界等待内使用GetActiveObject('PowerPoint.Application')取得精确路径会话。清理阶段的Close、Quit或ReleaseComObject异常必须单独捕获,不得覆盖和掩盖主操作的原始异常。 - 只允许关闭经完整路径核验且由本任务明确启动的目标演示文稿;默认保持目标打开。绝不关闭、保存或切换其他演示文稿,绝不调用
Application.Quit()或强行终止任何 PowerPoint 进程。任务结束时仅记录进程和文件锁状态,不以“清理残留”为由改变任何进程或窗口状态。
执行前确认全部参数
开始任何实质性执行前,先判断任务类型,再一次性汇总并向用户确认全部适用参数。确认消息必须同时列出用户已经明确的要求、尚未明确项的推荐值、拟采用的默认值以及所有会改变结果的决定,不能只询问缺失项。不得把“参考图忠实复刻”和“根据文字从零制作”混用同一套默认值。
将用户对整份参数清单的明确同意作为第一道强制执行闸门。只有收到“确认”“可以执行”“按此方案执行”或语义等同的明确回复后,才允许开始下一阶段。参考图忠实复刻任务通过第一道闸门后,可读取和分析参考图并正式制作;根据文字从零制作任务通过第一道闸门后,只允许读取内容、分析逻辑并创建一张静态骨架预览图,仍禁止打开或修改 PowerPoint、运行正式生成脚本、插入公式对象、绘制正式图标与细节、导出正式成品或把骨架宣称为最终成品。用户未回复、仅补充部分参数、表达含糊或沉默时,继续等待或重新汇总确认,不得开始执行。
参数确认至少覆盖所有适用项目:任务类型、输入与参考来源、结构或模板、配色、内容范围与处理方式、页面尺寸与方向、是否保持原图比例、字体与字号、公式类型、输出格式、文件名或保存位置、分页形式,以及用户提出的其他约束。不适用的项目在清单中标明“不适用”,不得遗漏。
从零制作且图中预计存在公式,或用户明确要求在已有 PPT 中新增、改写、替换或转换公式时,将内置公式流程的三项必问直接并入本次整份参数清单,并等待一次完整确认。已有 PPT 中仅需原样保留的公式不触发公式流水线,不得因检测到公式对象就重新识别、重建或转换:
- 公式类型:
Office 原生公式、MathType,或两种都要; - 写入文件:目标 PowerPoint 的完整路径与
.pptx类型; - 排版形式:一页还是多页;多页时确认每页数量或分页规则。
即使用户已给出部分答案,也要作为预填值列出并请用户确认完整三项。不得使用默认公式类型,不得自行推断缺失项,也不得在确认前启动 PowerPoint 或 MathType。本次整份参数确认同时满足内置公式流程的启动闸门,不得随后重复询问相同问题。
参考图忠实复刻
参考图本身就是结构模板、配色和内容依据,不得重复询问“使用什么模板”“使用什么配色”“根据什么内容”。只确认:
- 页面尺寸、方向、是否保持原图比例;
- 字体和字号范围;
- 需要新增、改写、替换或转换公式时,按上述内置公式流程三项必问确认公式类型、目标 PPTX 完整路径和分页形式;仅保留已有公式时标明“原公式对象与符号保持不变”。
所有 PPT 任务的统一对象重建规范(Hybrid Reconstruction)
- 所有由本 skill 创建、复刻、重绘、翻译、增补或优化的 PPT 均无条件执行 Hybrid Reconstruction 统一对象重建规范。它不是可选模式,也不需要用户另行提出;参数清单只记录各对象类别是否存在,不再询问是否启用 Hybrid Reconstruction。
- 对本次实际存在的对象先建立逐对象分类清单,再按类型分别重建:所有可读文字为独立文本框;框体、节点、连接线、箭头和可由 PowerPoint 表达的图形为原生 shape;独立图标逐个转换为 SVG;复杂图片按主体边界物理抠图并作为独立图片层;禁止嵌入整张参考图或把可编辑对象栅格化。某类对象不存在时标记“不适用”,不得据此关闭整套规范。
- 不得把“复杂图片保留”扩大解释为允许嵌入整张参考图,也不得把图标 SVG 扩大解释为允许把框图、箭头、文字或多个图标合成 SVG。
- 四级语义图层是最终 Z 序,不是创建顺序。必须先创建可见节点形状,再把连接器直接绑定到这些可见形状的真实连接点,最后调整相对 Z 序;禁止为了“先画箭头”或满足图层顺序而普遍创建
ANCHOR_*、PROXY_*等透明代理形状。 - 复杂照片、实物、设备、实验图、热力图和不可可靠拆分的复杂图表必须提取为独立图片层,并按主体可见轮廓或源图中明确的图片边界进行物理抠图。抠图结果必须去除参考图中叠加或邻接的文字、箭头、连接线、框线、面板底色、水印、页码和相邻对象;禁止直接截取包含这些干扰元素的矩形区域,禁止用 PowerPoint 裁剪框隐藏仍嵌在图片数据中的整张参考图。
- 抠图后透明区域必须是真透明,边缘不得残留白边、灰框、截断文字、箭头碎片或其他对象像素。原图中属于复杂图片自身且无法可靠分离的内部刻度、图例和标注可保留,但必须在对象清单中逐项声明;能独立重建的外部文字、箭头和框体必须重建为独立 PPT 对象。
- 所有正式 PPT 成品在交付前必须运行
scripts/audit_connector_target_identity.py和scripts/audit_hybrid_visual_coverage.py;前者核对连接目标身份,后者核对命名对象、区域填充与源图取样颜色。任一脚本未通过时,不得用视觉贴边或整页缩略图替代专项结论。
基于已有 PPT 的优化修改
当输入为已有 .ppt 或 .pptx,且用户要求翻译、统一文字、增加模块、调整排版或优化图形时,将源 PowerPoint 视为结构、对象和视觉风格的权威来源。除非用户明确要求重画或重构,否则执行以下硬规则;这些规则优先于从零绘制和通用版式优化:
论文驱动系统框图防错闸门
- 本节只补充论文内容、SLAM 逻辑和因子图拓扑规则;所有字体、框体、留白、箭头、曲线、图例、图层与碰撞标准统一服从 PPT 构建排版统一原则。
- 只要任务同时涉及已有 PPT 与论文、Word、章节内容或 SLAM 系统逻辑,正式分析和修改前必须完整读取 已有 PPT 论文系统框图防错规则,并把其中“交付前强制清单”加入当前工作检查表。
- 先建立论文章节证据账本和逐条连接拓扑账本,再检查参考页原生对象类型;三者未冻结时禁止打开写入会话。
- 论文中明确不存在的先验、残差、模块或连接属于禁止项,不能用领域常识补写。系统框图只使用短标签,不放正文式长说明。
- 不确定的曲线、Arc 缩放、锚点或图层必须先完成一次不保存的内存渲染测试;未经验证不得消耗权威 PPTX 的修正保存轮次。
原生对象复用与修改边界
- 复杂框图、树、点云、轨迹、图例、曲线、特殊轮廓、连接器、公式和装饰已有可编辑对象时,直接复制、移动、组合或编辑原对象。禁止近似重画、用简化图标替换、截图回填、重新生成相似图形,或为了排版方便删去原模块。
- 只修改用户授权的对象和内容。未要求修改的页面、模块、文字、公式、图形、颜色、线型、层级和连接关系保持不变;不得创建 Word、PDF、报告或其他无关产物。
- 翻译或统一文字时,优先在原文本框内替换,并保留文本框与所属模块的对应关系。文字嵌在图片、EMF、组合图形或其他不可独立编辑对象中时,先说明限制并确认是否允许覆盖或局部重画;未经许可不得用新文本遮盖原标注。
- 已有公式默认保留原对象、对象类型、符号、位置和尺寸。只有用户明确要求新增、改写、替换或转换公式时才启动本 skill 的公式流水线;不得因页面中存在公式就重新制作。
- 原连接器、自由曲线、折线和箭头可随所属模块整体移动,但不得无故删除、拆分、改线型、改头部、改变锚点身份或重新路由。
原生模块复用后的二次版式适配
- 将“复用源 PPT 原生模块”和“适配目标页版式”视为两个连续步骤。复制成功不等于排版完成;禁止把整块源区域机械缩小后直接交付。
- 用户要求从前页抽取代表性元素制作新概览图、技术路线图或研究内容简图时,先按对象清单和连接拓扑确定最小语义完整子模块。仅承担源页排版作用、且不属于目标语义的页标题、章节标题、外层容器、大片空白底框、图号和非必要图例不进入保护边界;删除它们不得截断必要文字、公式、连接器、图例对应或逻辑关系。源页本身保持不变。
- 复制前冻结目标槽位、用户确认的字号下限、模块宽高比和内容占用目标;复制后先去除保护边界之外的空壳,再以同一权威缩放因子对完整子模块执行等比缩放、居中和网格对齐。禁止横向压扁、纵向拉长、按子对象分别缩放或用空白外框参与缩放边界。
- 源对象无法成组时,允许对已登记的完整子模块执行一次统一仿射变换,但全部子对象必须使用相同的横纵缩放因子,并保持内部相对坐标、连接拓扑、曲线弧向和 Z 序;不得借机逐个重排内部元素。变换前记录连接端点身份,变换后恢复并核对原本连接的端点;源模块原本未连接的端点保持未连接。
- 复用后的格式必须按目标页重新校准,而不是盲目沿用源页显示比例。先通过扩大目标槽位、收紧外部留白或选择更小的语义完整子模块保证可读;仍需调整时,只允许在用户字号范围内统一校准同级文字、线宽和箭头头部,禁止单独缩小某个标签、改变术语换行、破坏内部几何或用局部放大掩盖整体比例问题。
- 若等比缩放后任一必要文字低于用户确认字号下限、在正常页面比例下不可辨认、出现孤立 token,或模块内部形成超过
0.5×相邻内容尺寸的连续空白,判定为适配失败。必须扩大槽位、重新分配相邻模块或改选更紧凑的语义完整子模块;不得继续缩小、保留空壳或以“源模块本来复杂”为由交付。 - 每个复用模块必须从最终保存的 PowerPoint 状态分别执行
100%–200%放大检查,至少核对文字可读性、同级字号与线宽、内容占用率、等比缩放、内部安全距离、连接身份和周边留白。只看整页缩略图、对象数量或“已经复制原生对象”不能通过验收。
复杂模块比例保护
- 将含多个子对象的复杂图形视为不可变内部几何的整体。优先按原尺寸复制并平移;确需缩放时,先整体成组并锁定纵横比,只做等比缩放。
- 禁止横向或纵向非等比拉伸复杂模块,禁止分别缩放其子对象,禁止拆组后用独立坐标重排内部元素,也禁止通过压扁、拉宽或缩小局部对象来“凑”目标宽高比。
- 整体移动或等比缩放后,保持模块内部相对坐标、宽高关系、旋转角、节点间距、Z 序、遮罩、锚点、连接关系、曲线弧向、图例对应和公式位置不变。
- 需要为新增内容腾出空间时,优先重新分配外围分区、移动完整模块、调整模块间距或利用页面留白;不得侵占复杂模块内部空间。原图已失真、拆组或错位的中间稿不得继续作为修改基础,必须回到用户源 PPT 的干净副本重新开始。
- 对每个大框、虚线容器和分区执行内容占用率检查。若出现宽度或高度超过相邻模块尺寸
0.5×的连续大片空白,必须自动重新分配完整模块的尺寸、位置和间距,使内容沿主方向均匀铺满;不得保留“模块挤在一端、另一端空洞”的布局,不得通过增加正文式说明、无意义装饰或非等比拉伸受保护复杂模块来填空。 - 图体宽高比属于当前用户控制的任务参数,不设默认值。参数闸门必须同时记录比例数值或范围、允许误差、作用对象(页面、主图体、指定区域或指定模块)以及是否保持源模块比例;用户未明确时不得沿用上一任务的比例、不得自行假定为
3:2,也不得改变页面尺寸或源模块比例。
约束冲突闸门
- 正式修改前同时核对页面尺寸与方向、目标图体比例、字体范围、必须保留的原模块、原模块比例不变、文字完整性和新增内容所需空间。
- 若用户确认的页面尺寸与方向、目标图体比例、字号下限、全部元素保留和复杂模块不缩放等要求在当前画布上不能同时满足,立即停止正式修改并请用户确认优先级。禁止自行用非等比拉伸、删减模块、越界缩字、重做公式或覆盖原标注来消解冲突。
- 字体统一按对象层级执行,不做破坏布局的全页强制替换。标题、正文和密集继承标签可分别使用已确认区间内的字号;允许密集原生标签采用区间下限,但不得低于用户确认值,也不得因此改变原模块比例。
骨架、版本与原生验收
- 既有 PPT 仅做文字替换、等比移动或局部增补且不改变拓扑时,不新增从零制作骨架闸门。需要重组区域、改变模块关系或新增主流程时,按“根据文字从零制作”提交骨架;骨架中应使用源 PPT 复杂模块的实际缩略预览表达占位和视觉重量,并标注“仅供审核”,不得用简化替代图误导最终效果。正式 PPT 仍必须使用源文件的原生可编辑对象。
- 每次正式修改从用户指定源 PPT 的干净副本开始,记录精确源路径、输出路径、页面索引和允许修改范围。不得覆盖源文件,不得在已拉伸、拆组或绑定失败的中间文件上连续修补。
- 保存前后建立比例保护账本:记录每个受保护复杂模块的边界框、宽高比、对象数、连接器数及公式对象数/类型。整体等比缩放时,横向与纵向缩放因子必须在浮点容差内相等,模块宽高比变化率必须
≤ 0.1%;超过即作废该轮并从干净副本重做。 - 最终必须由 PowerPoint 原生打开、保存、重新打开并渲染后验收。通用 OOXML 验证器只作补充;若错误继承自源文件但 PowerPoint 可正常打开渲染,记录为源文件遗留问题,不得盲目“修复”关系、对象 ID 或公式内部结构。任何必要修复完成后都必须再次原生打开和渲染。
- 原生验收除碰撞和越界外,还要逐项对照源文件检查:受保护模块宽高比、对象数量、连接器数量与路线、公式数量与类型、主要层级、全部原图元素以及新增内容。任一复杂模块被拉伸、漏项、简化、栅格化或失去可编辑性,均为交付阻断项。
根据文字、提纲或结构说明从零制作
生成任何内容或开始绘图前,必须一次性向用户确认:
- 模板或结构风格:使用哪张参考图、PPT 模板或哪类结构,例如纵向技术路线、横向流程、分层框架、矩阵、环形机制或章节安排图;
- 配色:沿用参考模板、使用单位/课题组配色,或由用户指定主色、强调色和背景色;
- 内容依据:根据哪份文档、论文、提纲、表格或用户提供的文字制作;同时确认是忠实提取、压缩总结还是允许重组归纳,以及需要包含哪些板块;
- 页面尺寸和方向;
- 字体和字号范围;
- 图中存在公式时,按上述内置公式流程三项必问确认公式类型、目标 PPTX 完整路径和分页形式。
模板、配色或内容依据任意一项未明确时,不得直接套用上一张图、默认模板或上一任务配色。可以在同一条确认消息中给出一个推荐方案,但必须等待用户确认整份参数清单后再读取内容并开始逻辑分析。
用户已经给出的要求直接复用到参数清单,但仍必须在执行前请用户确认整份清单。后续修改同一张图时,也要汇总本次修改范围、保持不变的参数、输出文件和其他适用参数,收到明确确认后再执行。
用户明确表示“由你决定”“按推荐方案”或同等授权时,将已说明的推荐值写入整份参数清单;该授权不替代最终确认,仍须等待用户明确确认整份清单后再执行。
内容逻辑骨架审核闸门
根据文字、提纲、论文、Word、表格或结构说明从零制作框图时,参数确认与正式绘图授权必须分成两道独立闸门:
- 参数确认只授权读取内容、分析逻辑并创建一张静态骨架预览图;
- 骨架确认才授权打开或修改 PowerPoint、运行正式生成脚本、正式绘制图标与细节、使用内置公式流水线插入公式、完成最终渲染审核和交付。
完成内容分析后,必须先创建一张清楚标注为“PPT 骨架预览(非最终 PPT)”的静态骨架预览图,并在对话中直接显示该图。优先生成 SVG,并可额外渲染 PNG 便于对话查看;预览图不要求可编辑。不得只用 Mermaid、等宽文本或纯文字说明替代骨架预览图。
快速 SVG 框图骨架流程
骨架阶段的目标是让用户尽快审核整体布局和模块区域,不是提前制作正式框图。收到参数确认并完成内容逻辑分析后,按以下固定流程执行:
- 用一句话冻结中心叙事,再列出主区域、区域内一级模块、主连接、反馈连接、重复层和公式预留位;不展开正式图标、复杂装饰、精细曲线和逐字排版。
- 直接生成一个低保真 SVG 文件。使用简单矩形、圆角矩形、虚线容器、直线或折线路径和短标签,按参考图的大致比例表达区域位置、宽高占比、上下层级和连接方向。
- 参考图存在“一个详细主体 + 后方复制层 + 顶部初始化 + 右侧后端”等结构时,骨架必须先复现这些大区域关系,再填写模块名;不得把参考图改造成另一种布局。
- SVG 主体只画审核所需内容:页面/图幅边界、编号主区域、一级模块卡片、重复层轮廓、主流程、分支、反馈、跨区连接、公式占位和主要图标文字说明。图标只写语义名称,不生成正式图标。
- 在 SVG 底部加入紧凑的区域分配说明:主区域数量与名称、宽度比例、上下比例、公式数量与位置、最终输出尺寸。不要加入大段论文摘要。
- 保存一份当前 SVG;仅为对话显示需要时额外渲染一份 PNG。禁止打开 PowerPoint、创建可编辑骨架页、启动公式写入流程、制作中间 PPT 或把 SVG 嵌入最终 PPT。
- 在对话中直接显示骨架并停止,等待用户明确回复“确认骨架”或提出修改。收到修改后只更新同一份完整 SVG,再次提交审核。
速度约束:普通单页骨架应在内容逻辑明确后约 1–3 分钟内生成。不要为骨架搜索网页素材、绘制正式图标、做像素级复刻或反复渲染;这些工作只在骨架确认后的正式阶段进行。
骨架预览图采用类似 PPT 页面规划稿的纵向审核版式:
- 顶部显示“任务名称|PPT 骨架预览(非最终 PPT)”和一句审核用途说明;
- 中部主体按照最终页面尺寸、方向和预计图幅比例,完整画出编号主分区、模块卡片、层级、区域占比、主流程、分支、反馈及跨模块连接;
- 底部单独设置“正式 PPT 的区域分布”说明框,至少列出主区域数量与名称、宽度分配、上下分配、已确认的公式类型与公式计划及最终输出;
- 使用已确认的正式配色做低保真填充,使用户能够判断各区域视觉重量,但不提前制作正式图标、复杂装饰或细节元素;
- 公式只标明公式编号、变量关系或预留位置,不创建普通文本伪公式、Office 原生公式或 MathType 对象。
骨架预览图只用于审核,不要求可编辑,也不得作为最终 PPT 的页面截图或背景。骨架确认后,以已确认预览图的模块边界和连接拓扑为依据创建唯一权威 PPTX,全部正式元素仍须是 PowerPoint 原生可编辑对象。
骨架预览必须完整说明:
- 全图要表达的中心结论、技术边界和主叙事;
- 模块名称、层级、分组及建议顺序;
- 主流程、分支、汇合、循环、反馈和跨模块连接的拓扑;
- 拟采用的分区或子图安排,如
(a)、(b)、(c); - 每个模块的主要图标元素、视觉隐喻及其与内容的对应关系;
- 计划出现的公式、变量关系、已确认的公式类型及拟放置区域;骨架阶段只说明公式计划,不提前创建普通文本公式、Office 原生公式或 MathType 对象;
- 对原文所做的保留、压缩、合并、删减或重组决定。
骨架必须让用户能直接指出“增加、删除、合并、拆分、改名、换序、改连接、改图标”中的任意修改。提交后停止正式制作,等待用户明确回复“确认骨架”“按此正式绘制”或语义等同的完整确认。用户仅提出局部修改、补充内容或表达保留意见时,先更新并重新提交完整骨架,再次等待确认;不得把局部意见视为正式绘图授权。
正式制作必须忠实实现最后一次确认的完整骨架。若制作中发现需要新增、删除、合并、拆分、重排模块,或改变主流程、分支、反馈、公式关系和主要图标隐喻,立即停止正式制作,更新完整骨架并重新请求确认。只调整尺寸、间距、对齐、字形换行或其他不改变语义拓扑的视觉细节时,无需重新确认骨架。
参考图忠实复刻任务不增加骨架审核闸门,因为参考图本身就是已给定骨架;但用户要求在参考图基础上重组内容、改变模块或重新设计逻辑时,按“根据文字从零制作”执行两道闸门。
10 分钟流程
对于根据文字从零制作的任务,约 10 分钟的正式制作计时从用户确认完整骨架后开始;等待用户审核和修改骨架的时间不计入正式制作时间。
普通单页正式制作必须完整读取并执行 单页约 10 分钟首次通过闸门。参考图忠实复刻以参数确认后开始计时;如果第一次合并审查为零阻断,目标在约 10 分钟内直接交付。提速来自账本复用、一次构建、保存前预检和合并审计,不得来自简化图形或跳过检查。
| 骨架阶段 | 工作 |
|---|---|
| 参数确认后 | 读取内容,提炼中心结论、模块层级、连接拓扑、图标语义和公式计划 |
| 创建骨架 | 生成一张静态审核图:上部为完整区域骨架,下部为区域分配、公式计划和最终输出说明 |
| 提交审核 | 在对话中直接显示骨架预览图,并提供文件链接和必要的模块逻辑说明 |
| 等待用户 | 不打开或修改 PPT,不进入正式绘图或公式写入;收到修改时更新骨架预览图并再次确认 |
骨架确认后的正式制作:
| 时间 | 工作 |
|---|---|
| 0–2 分钟 | 冻结骨架或参考图,完成运行时预检和对象、文字、连接器、颜色账本 |
| 2–7 分钟 | 一次生成全部可编辑对象,并在内存中通过文字编码、图层、连接共轴、颜色完整性四个保存前闸门 |
| 7–9 分钟 | 保存唯一权威 PPTX,运行结构验证和一次 PowerPoint 原生合并审计 |
| 9–10 分钟 | 查看同一原生渲染;零阻断立即交付 |
| 发现阻断项后 | 暂停 10 分钟目标,在同一写入会话集中修正一次并执行第二次定向审查 |
默认只保留:
- 一份紧凑对象清单;
- 一个参数化生成脚本;
- 一个最终 PPTX;
- 一次合并全页审查;
- 必要时一次集中修正和一次定向复查。
不要生成中间 PPT、竞争草稿或对比材料。骨架阶段只保留一张当前骨架源图和必要的查看用渲染图;骨架确认后只创建一个权威 PPTX。不要重复重开、渲染或重建整页。
骨架预览图是正式制作前的审核状态,不是最终成品。必须在图内标注“PPT 骨架预览(非最终 PPT)”,正式 PPT 不得嵌入该预览图充当整图。
合并审查与返工上限
- 从第一份包含全部请求内容和已确认公式类型的完整可编辑 PPTX 首次保存后开始计数。
- 第
1次为合并审查:只打开一次最终状态,使用同一份原生渲染和同一轮对象读取,同时完成结构、颜色/填充、连接、图层、文字、公式和可编辑性检查。 - 第
1次审查通过时立即交付,不再追加“保险性”渲染、复查或重复打开 PowerPoint。 - 第
1次审查发现问题时,先汇总全部问题,再在一个写入会话集中修正并保存一次;禁止每发现一个问题就单独打开、修改、保存和渲染。 - 修正后只执行第
2次定向审查:检查受影响区域,并复核会被该修改连带影响的全局项目。第2次审查后立即交付当前版本,默认不启动第3次审查或第2轮修正。 - 不得通过改名、另存副本、重建同页或拆分修改来重置计数。最终回复必须简要列出仍可见或已知的问题;除非检查结果确实如此,不得声称“阻断项为 0”“已全部修复”或“严格通过审核”。
避免返工的首次构建规则
- 首次构建必须同时生成对象账本、Unicode 文字账本、连接器/共轴账本、颜色/填充账本和
native-audit-manifest.json。后处理与审计只读取这些权威账本,禁止重新手写对象名、中文文本、坐标或图层分类。 - 首次生成即固定四级语义图层:
Background < shapes < icons < text。该顺序只定义最终 Z 序,不定义对象创建顺序。先创建可见节点/模块形状(文字可后置),再用这些可见形状建立真实连接器,之后把连接器相对调整到节点下方、背景上方,最后生成图标、文字和公式。禁止为了让路径先出现而把连接器连接到临时透明锚点。只有icons允许使用 SVG,且每个图标必须是一个独立 SVG/独立 PowerPoint 对象;能够用 PowerPoint 内置形状、连接器或原生曲线表达的模块、节点、因子、箭头、路径和图例符号必须保留为shapes,禁止把整图、整组模块、文字或多枚图标合并为 SVG。所有带填充色的区域背景、容器底板和分区底色必须发送到整个幻灯片的绝对最底层,全部文字和公式位于最上层。 - 创建完全部对象后、首次保存前,必须读取最终 Z 序执行全局相对关系检查:
background < path < node < icon < text;不得以创建顺序、局部置底操作或缩略图代替。layer_violation_count必须为0。 - 连接器 API 要求源/目标对象已存在时,必须先创建最终可见框体,再调用连接器 API。不得创建
1–3 px的无填充ANCHOR_*/PROXY_*形状来绕过创建顺序;图层通过相对 Z 序处理,不通过替换连接目标处理。 - 首次保存前必须逐框检查文字账本精确匹配和实际边界溢出;短符号、单字符和“+”“−”等文本不得豁免。
text_mismatch_count与text_overflow_count必须为0。 - 首次保存后、任何公式流水线之前,运行
scripts/audit_connector_target_identity.py --input <pptx> --ledger <connector-ledger.json>和scripts/audit_hybrid_visual_coverage.py --input <pptx> --ledger <visual-ledger.json>。连接计数必须全部为0;视觉审计必须满足expected_object_count = checked_object_count且issue_count = 0。 - PowerPoint 原生合并审计固定使用
scripts/audit_powerpoint_native.ps1和首次构建生成的native-audit-manifest.json;禁止在普通任务中临时重写原生审计脚本。该脚本必须一次取得原生渲染、对象注册覆盖、全局图层、连接端点、共轴、Unicode 文字回读和文字溢出结果。 - 禁止对连接线或箭头执行 PowerPoint 的“发送到最底层”或等价的绝对
SendToBack/ZOrder(msoSendToBack);该操作会把路径放到填充背景之下并造成箭身在背景区域内消失。连接器只能位于背景之上、节点之下;需要调整时先把背景绝对置底,再相对调整连接器和节点。 - 首次构建只为每个正式公式保留一个无可见文本的唯一命名目标区域;禁止先放普通文本伪公式、公式图片或临时公式对象。
- 骨架确认且唯一权威 PPTX 建立后,一次性识别全部公式并建立 UTF-8 JSON 清单;目标字段必须指向已冻结的幻灯片索引与唯一命名区域。
- 按已确认模式只运行一次内置批处理:Office 模式使用
scripts/build_office_manifest.py与scripts/run_office_pipeline.ps1;MathType 模式使用scripts/build_mathtype_manifest.py与scripts/run_mathtype_pipeline_sta.ps1;选择两种都要时,分别生成两个 PPTX,不得在同一公式对象上互相替代。 - PowerPoint 只打开一次,整批公式写入后只保存一次;MathType 模式复用同一个 MathType 进程与编辑器会话,不得为每个公式启动新窗口。不得在内置脚本之外追加全选、输入字母、复制或粘贴等键盘步骤。
- 已确认 MathType 模式时允许且应正常启动一次 MathType;禁止的是复制或粘贴空公式及自动重试造成的循环弹窗,不得把该禁令误解为“禁止启动 MathType”。
- MathType 复制前必须通过内置非空闸门,不能只凭剪贴板格式或 ProgID 判断成功。只有语义字符数为
0或内容真正为空时才停止;只要语义字符数大于0就允许粘贴,不得自行设置字符覆盖率、对象尺寸或复杂度阈值作为粘贴前阻断条件。禁止自动重试、循环复制或反复弹出 MathType。 - 公式写入前删除对应无可见文本目标对象,完成后每个目标位置只保留一个正式公式对象,并按预留矩形等比例缩放、水平与垂直居中;不得独立拉伸宽度和高度。
- Office 模式必须得到可编辑的 PowerPoint 原生专业公式;MathType 模式必须得到真实
Equation.DSMT4。普通文本、图片、空对象和错误公式类型均为交付阻断项。 - 内置公式阶段只核对
inserted_count与公式数一致、输出文件存在且非空,并清理临时 JSON、MathML 与 build 目录;不在该阶段额外生成报告、预览或截图。公式写入完成后,对最终整页统一渲染一次并检查公式区碰撞、裁切和可见内容。 - 默认执行“一次完整生成 → 一次合并审查 → 必要时一次集中修正 → 一次定向复查”。第二次审查后不得继续修改,除非用户明确授权。
- 公式插入、图层顺序和占位符清理属于首次构建步骤,不得延后到审查阶段处理。
- 任何公式插入、文本修改、对象移动、缩放、删除或图层调整都会使此前的视觉审核失效;只能以最后一次修改并保存后的权威 PPTX 作为审核对象。
- 第一次审查后的集中修正必须从 UTF-8 修正清单读取内容,在保存前回读全部受影响对象并重新执行四个保存前闸门。禁止在临时 PowerShell 脚本中直接写入中文整段文本,禁止只为修正标点而重新赋值未受影响的中文。
快速构建顺序
0. 冻结已确认骨架
根据文字从零制作时,只能以用户最后一次明确确认的完整骨架作为正式构建输入。先把模块、层级、连接拓扑、分区、主要图标隐喻和公式计划冻结到对象清单,再开始任何 PowerPoint 操作。参考图忠实复刻时,以已确认参数和参考图作为构建输入。
1. 紧凑对象清单
快速记录:
- 页面与主分区;
- 全部文本框及其角色;
- 每个独立形状、图片和图标的真实几何、位置、旋转和层级;
- 每条箭头的源、目标、头部数量及所在端、类型、方向、虚实、弧度或拐点;
- 每组应保持水平或垂直直连的框体共享中心轴,以及公式标注所需的独立安全槽;
- 同级重复组件及数量;
- 源图明确存在的包含、覆盖和遮罩关系。
使用稳定 ID 防止漏项即可,不建立额外审查文件。
2. 忠实复刻硬规则
- 禁止用“语义相近”或“视觉大致相似”的结构代替源图对象。
- 直线、折线、曲线和块状箭头必须按源图类型复刻,禁止相互降级或替换。
- 椭圆、圆弧、曲线连接器、自由曲线和虚线环必须分别识别;禁止用若干椭圆近似独立曲线箭头。
- 形状轮廓、数量、尺寸关系、旋转、虚实、颜色和层级尽可能按源图还原,不得为了快速绘制擅自改成通用矩形、圆形或直线。
- 原图有箭头头部的连接必须保持为箭头;只有源图明确没有箭头头部时,才允许使用普通线段。
- 箭头头部数量必须按可见形状识别,不得根据“数据下行”“指令上行”“输入”“输出”等语义推断。原图为双头箭头时必须使用双头箭头,不得替换为单头箭头,也不得拆成方向相反的两支单头箭头。
- 禁止根据“层级线”“辅助线”“结构线”等语义判断自行设置
arrow: false。 - 图像低清或复杂区域难以辨认时,先局部裁剪放大确认形状和箭头,再绘制;不得直接猜测。
- 单个原生对象无法表达非连接类复杂轮廓时,可使用多个可编辑对象组合还原,但不得改变可见外形和连接语义。此规则不适用于折线和折线箭头;折线类连接必须始终保持为单个 PowerPoint 原生对象。
3. 数值化布局
先确定页面外边距、主分区、行列基线、卡片尺寸和箭头通道。重复组件必须使用共享参数或组件函数批量生成。
先放文本并确定所需空间,再冻结卡片和容器尺寸;不要先画过小的框,再靠缩小字号塞入内容。
直箭头必须先完成框体中心轴对齐,再创建连接器:
- 上下直连的框体使用同一个
axisX,按left = axisX - width / 2排布,使上下边中点的 x 坐标一致;左右直连的框体使用同一个axisY,按top = axisY - height / 2排布,使左右边中点的 y 坐标一致。 - 连续流程链共用同一条中心轴,不得逐框使用近似坐标。框体宽高不同不影响中心轴对齐。
- 先移动或调整框体、组间距和分区宽度来获得共轴锚点,再连接真实边中点;禁止保留错位框体后让连接器自动生成斜线,也禁止手工拖动箭头端点离开锚点来伪造水平或垂直。
- 直连接器创建函数必须先执行数值断言:水平直连框体中心 y 差、垂直直连框体中心 x 差均须
≤ 0.1 pt;断言失败时必须停止创建该连接器并先移动框体。禁止“先生成再看是否倾斜”,也禁止把BeginConnected = True/EndConnected = True当作共轴证明。 - 只要可见框体存在能够保持源图入口、方向和路线的原生连接站点,就必须把连接器端点直接
BeginConnect/EndConnect到该可见框体;禁止在真实锚点旁边新建透明小矩形、悬空点或固定坐标端点冒充框体连接,即使两者距离极近或视觉上几乎重合也不允许。 - 仅当源图明确要求框体错位且直线从非中点进入时,才使用绑定到所属框体边界的代理锚点;不得把代理锚点作为不调整排版的默认捷径。
- 为连接器旁的公式或变量预留独立安全槽。垂直箭头的公式放在箭身左侧或右侧,水平箭头的公式放在箭身上方或下方,并与箭身、箭头头部和相邻框线保持至少
3–4 pt的可见间距;空间不足时增加框体间距或调整分区,禁止把公式压在箭身上。 - 公式安全槽账本必须同时记录
formulaId、相邻connectorId、所在侧、预计矩形和最小间距。正式公式写入后,用 Office 公式或 MathType OLE 的实际可见外接框替换预计矩形,向外扩展3–4 pt后与箭身、箭头头部及相邻框线逐项求交;任一相交即停止交付并移动公式槽或框体,不得用公式目标占位框、对象置顶或白底遮盖代替检查。
4. 文字排版
文本角色:
TITLE:页标题、章节标题;SHORT_LABEL:节点名、栏目名、短标签;BODY_PARAGRAPH:连续语义正文;BULLET_BODY:项目符号或编号正文;VERTICAL_LABEL:源图明确竖排的侧边文字;FORMULA:公式或变量表达。
硬规则:
- 连续正文必须保持为一个段落,使用文本框自动换行。
- 不得为了平衡行长随意插入硬回车。
BODY_PARAGRAPH不得居中。- 中文正文达到三行及以上时默认两端对齐;源图明确左对齐时除外。
- 标题、栏目名、节点名和一至两行短标签可以居中。
- 只有源图明确分行、内容本身是并列短语或不同语义段落时,才保留硬换行。
- 项目符号正文左对齐或两端对齐,并统一悬挂缩进。
- 横排标题、短标签、正文和项目符号文本的任意一行都不得只剩一个汉字、一个英文 token、孤立标点或项目符号;该规则不限于末行。
- 原图允许语义分行时,先验证每个硬换行片段在目标字体、字号、文本框有效宽度和内边距下能完整容纳;不能容纳时不得保留该硬换行方案。
- 文本框有效宽度必须按目标字体在 PowerPoint 中的实际字宽计算,并扣除左右内边距;不能仅依据字符数、生成后端预览或未缩放框宽估算。
SHORT_LABEL优先保证完整词组同行,例如“评价方法选择”“诊断模式”不能拆成“评价方法选 / 择”或“诊断模 / 式”。- 同级文本统一字体、字号、字重、行距、内边距、方向和对齐。
文字修复顺序:
- 删除造成孤字或孤立 token 的非必要硬回车;
- 扩大文本框有效宽度或减小左右内边距;
- 同步扩大卡片并调整相邻模块、箭头通道和间距;
- 在用户允许范围内统一调整同级字号,但不得低于用户下限;
- 必要时扩大所属区域或调整整体布局;
- 完成后在最终 PowerPoint 渲染中重新确认实际换行。
不得只缩小一个同级卡片的字号,也不得用自动缩字、继续添加硬回车或拆散词组来掩盖错误断行。若消除单字行与同级等宽、原框宽或局部对齐冲突,优先消除单字行。
5. 形状与留白
- 页面外边距通常为短边的 4%–6%,参考图更紧时按原图。
- 普通模块间距约 4–8 pt;高密度区域不低于约 3 pt。
- 正文内边距通常为 4–8 pt;高密度卡片可用 3–5 pt。
- 文字框和模块框按最终可见字形计算,上侧与下侧留白各不得超过该框主文字字高的
0.5×。超过时必须缩短框高、收紧段前段后与行距,或把真实子模块拆分为紧凑结构;不得通过放大字号、增加说明文字或保留空行来填充。 - 同级卡片优先保持等宽、等高、等间距;若与消除单字行冲突,先扩大整组卡片或重分配列宽,不得保留单字行。
- 为标题、正文、箭头通道和底部输出区分别预留空间。
- 为每个正式公式预留按预计可见尺寸计算的公式槽和
3–4 pt安全边界;连接器标注公式的公式槽不得与箭头通道重叠。 - 页面不得一侧拥挤、一侧空洞。
- 大框、虚线容器和分区内若出现宽度或高度超过相邻模块尺寸
0.5×的连续大片空白,视为自动重排触发项:保持逻辑和复杂模块内部比例不变,重新分配整组模块的宽高、位置与等距间隔,直至内容充实且均衡;禁止用正文式描述、冗余标签或装饰性空框填补。 - 源图中的正常包含、标题条嵌合、图标覆盖和遮罩不是碰撞。
6. 箭头
模块位置冻结后再生成箭头。每条箭头只选一种实现:
| 类型 | 实现 |
|---|---|
LINE_ARROW |
原生直线连接器或线条箭头 |
ELBOW_CONNECTOR |
原生肘形连接器 |
CURVED_CONNECTOR |
原生曲线连接器 |
BLOCK_ARROW |
原生块状箭头形状 |
规则:
- 创建水平或垂直直箭头前,先验证相连框体的目标边中点已经共轴:水平直连要求框体中心 y 一致,垂直直连要求框体中心 x 一致。未共轴时先调整框体排版,禁止直接生成连接器。
- 每条折线和折线箭头只能使用一个 PowerPoint 原生可编辑对象:优先使用原生肘形连接器;需要锁定多个拐点时,使用一个原生自由曲线/自由多段线形状并在同一对象的线条属性中设置箭头端点。禁止拆成多条直线或多支箭头,禁止以组合、成组或视觉对齐掩盖拼接。
- 折线对象完成后必须在 PowerPoint 对象层级中核对:一条逻辑路径对应且只对应一个对象;不得存在同一路径的
_SEG_、分段线或首尾相接的多个线条对象。 - 保持源图的箭头数量、类型、方向、虚实、颜色、头部位置和实际路径。
- 将箭头头部数量作为几何属性逐条记录:
0、1或2。双头块状箭头优先使用对应原生双头形状,例如垂直双头箭头使用upDownArrow;不得用upArrow、downArrow或语义方向替代。 - 箭头的连接拓扑属于源图内容,不得改变。逐条记录并保持
源对象 → 中间节点/分支 → 目标对象;不得跳过节点、交换源与目标、改接邻近对象、合并分支或凭语义重新连接。 - 每条箭头必须记录
sourceId、源端锚点所在边及相对位置、全部拐点或曲线控制点、targetId、目标端锚点所在边及相对位置、箭头头部所在端。生成时按该记录逐项复刻,不得仅记录“两个对象相连”。 - 连接锚点必须与源图一致:上边、下边、左边、右边、角部或边上的偏移位置均不得擅自改变。禁止使用自动就近锚点、默认中心点或中心到中心连线代替源图锚点。
- 优先建立真实锚点连接。 当一条箭头单独进入或离开矩形、卡片或其他带连接站点的可见模块,且对应边中点能够保持源图方向与路线时,必须用 PowerPoint 原生连接器的
BeginConnect/EndConnect连接到该可见形状的真实边中点;禁止把端点停在距离框线仍有可见缝隙的自由坐标或悬空代理点。 - “连接成功”同时要求连接状态和连接目标身份正确。若账本规定端点应连接可见框体,则
BeginConnectedShape/EndConnectedShape必须就是该框体对象;连接到邻近透明代理形状、其他框体或任意对象后仅得到BeginConnected=True/EndConnected=True,一律判定为错误连接,禁止通过审计。 Background < shapes < icons < text只描述最终 Z 序;不得据此推导“必须先创建连接器再创建节点”。节点应先存在并成为连接目标,连接器创建后再执行相对 Z 序调整。- 锚点实现优先级固定为:
两端真实可见形状锚点→一端真实锚点 + 一端贴边代理锚点→两端贴边代理锚点。只有前一级会改变源图入口、造成多路箭头重叠、自动错误改道或产生斜线时,才允许降到后一级。 - 不得为了“两端都是真实中点锚点”牺牲源图的水平、垂直或直角路径。若两个框的边中点不共轴,而源图为水平或垂直直箭头,必须先调整框体位置使中心轴对齐;只有源图明确要求框体错位或调整会破坏已确认结构时,才保留能够自然连接的一端为真实中点锚点,另一端使用位于可见框线上的代理锚点,使直线仍满足
≤ 0.1 pt的水平/垂直误差。禁止强连两个不共轴中点后得到无源斜线。 - 同一边存在多个独立入口、分支入口或偏移入口时,不得把它们全部吸附到同一个中点而合并或重叠。按源图保留各自入口;无法用真实连接站点表达的入口使用贴边代理锚点。代理锚点中心必须精确位于可见边框上,尺寸足够小且完全不可见,随所属模块同步移动,箭头端点与框线不得出现肉眼可见缝隙。
- 代理锚点不是自由悬空端点:连接器端必须实际连接到该代理形状;代理形状必须绑定到明确的所属模块和边。工作记录中区分
visible_shape_anchor与border_proxy_anchor,不得用“已连接”笼统掩盖代理点仍离开框线。 - 每个代理锚点必须进入显式白名单,记录
connectorId、端点、所属可见模块、所属边、边上相对位置及无法使用真实连接站点的具体原因。没有原因、仅为编程方便、仅为保持固定坐标或位于可用真实锚点附近的代理锚点均为禁止项;unjustified_proxy_anchor_count必须为0。 - 所有获准代理锚点必须通过“不保存移动跟随测试”:在临时只读/不保存会话中移动所属可见模块至少
5 pt,验证代理锚点和连接器端点同步移动,再撤销或关闭不保存。未同步即为悬空代理,禁止交付。 - 修改现有 PPT 时,先从 PowerPoint 原生对象读取每条连接器的
BeginConnected、EndConnected、BeginConnectedShape和EndConnectedShape;能改接到可见模块真实连接站点的端点直接改接,不能改接的端点移动原代理锚点到框线。保存后要求所有逻辑连接器两端均处于已连接状态,未连接端点数必须为0。 - 原图为水平段时,端点和该段全部拐点必须保持同一 y;原图为垂直段时必须保持同一 x。原图为水平/垂直直角折线时,只能使用水平段和垂直段,禁止因对象错位改成斜线。
- 对参考图中的水平直箭头和水平线段,最终 PPT 对象检查必须满足起点与终点纵坐标差
|y1-y2| ≤ 0.1 pt;垂直直箭头和垂直线段必须满足|x1-x2| ≤ 0.1 pt。超过阈值即为斜线和交付阻断项,不得凭肉眼认定“基本水平/垂直”。 - 若对象位置导致原路径无法保持水平或垂直,先修正对象位置、尺寸或锚点;不得让箭头路径迁就错误布局。
- 若原生肘形连接器会自动改锚点或改道,先使用随目标同步移动的不可见代理锚点;仍无法锁定原图路线时,改用一个 PowerPoint 原生自由曲线/自由多段线对象承载全部拐点,并在该单一对象上设置箭头头部。不得使用分段原生线条。
- 在创建反馈折线前先根据源图冻结完整正交路径和外侧通道,逐段检查是否穿过节点、文字、公式与相邻箭头。若所需段数或拐点数超过 PowerPoint 原生肘形连接器能够稳定保持的路径,直接使用一个原生自由多段线对象;禁止先反复试改肘形连接器、在模块内部来回穿越后才切换实现。
- 肘形连接器存在
flipH、flipV或端点方向翻转时,Adjustments.Item(n)使用连接器局部几何坐标,不等同于幻灯片的绝对左右/上下方向。设置调整值前必须读取翻转状态、OOXML 预设几何或渲染后的折点位置;禁止仅凭正负号猜测折点方向,禁止把未经验证的调整值直接保存到权威 PPTX。 - 自由多段线、自由曲线和普通线条同样属于逻辑箭头路径。最终路径统计必须覆盖原生连接器、自由多段线、自由曲线和线条箭头,形成统一的
logical_path_count与逐条对象名;不得只统计Shape.Connector = True的对象后声称箭头完整。 - 曲线箭头必须使用可编辑曲线连接器或可编辑组合曲线路径,保持弧向、弯曲程度和连接边界;不得改成直线、折线或椭圆。
- 原图每个箭头头部都必须显式记录并生成。不得因为连接位于第二层、容器内部或重复组件中而关闭箭头。
- 批量组件只能复用已核对的箭头配置;不得让通用组件凭层级自动决定
arrow: false。 - 箭头必须指向语义目标,不得落在文字、装饰或邻近对象上。
- 水平路线保持同一 y,垂直路线保持同一 x。
- 折线路线使用水平/垂直段;反馈箭头优先走模块外侧。
- 箭身必须可见并明显长于箭头头部。
- 固定逻辑连接区域的图层顺序为
Background < shapes < icons < text:背景先生成;原生连接线、箭头、曲线、节点、模块和因子统一归入shapes;只有确属图标的独立对象才进入icons;节点文字、独立文本框与公式最后生成并置顶。禁止把连接器绝对置底,也禁止把可由内置形状完成的对象转成 SVG。 - 任何公式插入、占位框清理、节点移动或局部修复后,都要重新确认带填充背景仍为最低可见层。不能因为公式或节点仍可见就认定图层正确;只要箭身进入底色区域后消失、变短或断裂,即判定为背景遮挡阻断项。
- 箭头穿过节点框仅在源图确实如此时保留,但路径仍不得覆盖节点文字。不能依赖连接器“默认置底”;普通线段、组合箭头和后生成路径必须显式核对层级。
- 只有源图明确要求路径显示在模块内部或文字之上时,才提高对应路径层级,并只提高该条路径。
- 使用当前后端已经确认的端点语义。若
head位于源端、tail位于目标端,目标箭头直接使用tail,不要反向绘制后旋转。 - 必要时可使用位于目标可见边界上的不可见代理锚点,但必须随目标同步移动。
碰撞原则
文字和公式碰撞是最高优先级交付阻断项。所有文本和公式必须按 PowerPoint 最终渲染后的实际可见边界判断,而不是只看文本框、公式目标占位框、后端估算或对象层级。Office 原生公式按实际可见字形判断,MathType 按最终保存后的 Equation.DSMT4 OLE 可见边界判断。文字或公式与所属容器是正常包含关系,但可见内容不得接触或穿越容器边框。
必须消除:
- 任何标题、标签、正文、项目符号、公式说明或正式公式与框线、箭身、箭头头部、形状、图标、图片、其他公式或其他文字相交;
- 作为连接器标注的公式覆盖箭身、箭头头部或相邻框线;公式必须位于箭身侧边的独立安全槽,不能以白底、置顶或 OLE 外框遮住连接器;
- 箭头穿过文字或无关模块;
- 两个独立卡片、图标、公式、块状箭头或图片互相侵入;
- 内容越出页面或所属区域;
- 同级对象间距明显不一致。
判断时将文字、公式和箭头的可见边界向外扩展约 3–4 pt,保留视觉安全距离。文字和公式不得通过置顶、遮罩、白底覆盖或把路径置底来“视觉隐藏”碰撞;如果几何上仍相交,就必须调整文本框、公式槽、容器尺寸、框体中心轴、对象位置、模块间距或单条原生折线路径。
旋转块状箭头、曲线箭头和组合路径必须按旋转后的实际可见轮廓判断碰撞,不得只使用未旋转外接框或对象中心距离。
忽略正常容器包含、源图明确存在的标题条叠放、嵌入、遮罩和有意覆盖。碰撞豁免必须对应到源图中的具体对象对和具体交叠范围;源图某处存在交叉,不代表该区域内的所有重叠都可以忽略。不要为消除工具误报而移动已经正确的对象。
发现碰撞时优先扩大文本框或容器、增加内边距、移动独立对象或扩大箭头通道;不得通过删除箭头、改写文字、乱断行、单独缩小字号、改变层级或拼接折线解决。
可编辑性
- 文本、形状和逻辑箭头必须是独立可编辑对象。
- 不得把整张参考图作为背景或整页截图交付。
- 实验图、显微图和照片可作为独立裁剪图片嵌入。
- 只保留一个权威 PPTX。
PowerPoint 公式写入
正式 PPT 存在公式时,执行本 skill 的内置公式流水线,不得读取其他公式 skill 或恢复历史 MathType SOP:
- 在进入公式写入前,确认公式类型、目标 PPTX 完整路径和分页形式已随整份参数清单得到用户明确确认。
- 在唯一权威 PPTX 中为每个公式建立无可见文本的唯一命名目标形状,冻结幻灯片索引、目标名称、矩形和公式顺序。
- 一次性识别全部公式为 LaTeX,保持原顺序、上下标、分式、矩阵、分段、重音、粗体和公式编号,并将稳定 ID、原编号、页码和目标写入一份临时 JSON;无法可靠辨认的公式标记“待核对”,继续处理其余公式。
- 公式 JSON 使用 UTF-8,基本结构为
{"equations":[{"latex":"...","page":1}]};可按需加入稳定id、原编号和target。仅当 PDF、旋转或分辨率问题影响识别时才使用scripts/prepare_sources.py。 - Office 模式先运行一次
scripts/build_office_manifest.py,再运行一次powershell -NoProfile -ExecutionPolicy Bypass -File scripts/run_office_pipeline.ps1 -ManifestPath <manifest> -OutputPath <pptx>。 - MathType 模式先运行一次
scripts/build_mathtype_manifest.py,再运行一次powershell -NoProfile -ExecutionPolicy Bypass -Sta -File scripts/run_mathtype_pipeline_sta.ps1 -ManifestPath <manifest> -OutputPath <pptx> -BuildDir <build>。 - Office 模式写入可编辑的 PowerPoint 原生专业公式;MathType 模式写入真实
Equation.DSMT4;两种都要时分别写入两个 PPTX。 - 只接受
inserted_count与公式数量相等且目标文件存在、非空的结果。失败时只报告具体公式与失败阶段,不得声称整批完成。 - MathType 自定义剪贴板必须包含
MathML Presentation,内容为 UTF-8 字节加一个 NULL;按下粘贴前必须反向读取并确认格式存在、UTF-8 可解码且含非空<math>。只拦截语义字符数为0的真正空公式;非零内容允许粘贴。 - 每个 MathType 公式按“先准备编辑区 → 写入当前 MathML 剪贴板 → 立即粘贴 → 清空输入剪贴板 → 从 MathType 复制 OLE → 立即粘贴到 PowerPoint”的完整事务顺序执行;OLE 剪贴板生成后不得插入窗口切换、阶段日志写入或布局计算。写入剪贴板前必须解析 XML,拒绝空的
mi、mo、mn、mtexttoken 和语义字符数为 0 的公式,禁止把空公式交给 MathType。单个公式在普通剪贴板竞争时允许最多 3 次有界事务重试;一旦出现“MathType 错误:剪贴板未含有公式数据”窗口,立即向该模态框发送一次 Enter,关闭窗口并退出当前公式的重试 circle,不得对同一份未修改 MathML 再次粘贴;记录该公式为待修正并继续整批其余公式。缺少MathML Presentation、剪贴板回读格式不符合预期、被截图程序等外部应用覆盖或等价情况只表示该次事务待重试,不得据此宣称公式内容或 MathType 公式失败。只有无法生成非空Equation.DSMT4、粘贴对象类型错误、对象为空或越界、或最终对象数不匹配时,才定义为公式写入失败。批次结束后保存全部已写入对象,再对待重试清单修正输入后重新测试;禁止对同一未修改输入无限循环或反复弹窗。 - 写入后读取每个公式对象的实际尺寸和最终可见内容;若侵入箭身、箭头头部、框线、文字、其他公式或形状,优先调整相邻框体、公式槽和箭头通道,不得只缩小单个公式掩盖布局错误。
- 清理临时 JSON、MathML 和 build 目录后,从最终保存的权威 PPTX 进行唯一一次整页渲染和公式区视觉检查。
最终状态检查闸门
只有全部内容、已确认类型的正式公式对象、图层和局部修复均已写入并保存到唯一权威 PPTX 后,才允许开始最终检查。生成器预览、修复前截图、对象数量、后端布局估算和 PowerPoint 编辑窗口缩略图均不能替代最终保存状态的 PowerPoint 渲染。
从最终保存的 PPTX 渲染全页一次,并从同一最终状态局部放大所有窄标签框、高密度文本、交叉箭头、旋转块状箭头、公式区和粗路径穿过节点区域。高密度区域必须按 100%–200% 视觉尺度检查实际字形边界,不能只看整页缩略图:
- 是否存在任何横排单字行、单个英文 token 行、孤立标点行或项目符号独占行;存在任意一处即为交付阻断项,必须优先修复;
- 是否存在任何文字或公式与容器边框、框线、箭头、连接线、形状、图标、图片、其他公式或其他文字的碰撞;逐个高密度文本框和正式公式按实际可见边界与
3–4 pt安全距离检查,MathType 必须读取最终Equation.DSMT4OLE 的实际边界,不能使用目标占位框代替;存在任意一处即为最高优先级交付阻断项; - 正文是否保持完整段落,三行及以上是否正确两端对齐;
- 是否存在溢出、孤行、异常字号或同级格式不一致;
- 箭头是否逐条存在,头部数量、头部位置、方向和目标是否正确;双头箭头是否被误画为单头箭头或两支单头箭头;
- 直线是否笔直,曲线是否保持原图弧向和弯曲程度,折线拐点是否对应,且均不穿字;
- 每条折线和折线箭头是否为且仅为一个 PowerPoint 原生可编辑对象,是否存在分段线、首尾拼接、组合拼接或
_SEG_对象;存在任意一处即优先纳入第一次审查后的集中修正,仅在已完成第二次审查时允许记录后按上限交付; - 是否存在用普通线段替代箭头、用椭圆替代曲线箭头或用通用形状替代特殊轮廓;
- 每条箭头的源对象、目标对象、中间节点、分支关系和头部所在端是否与源图一致;
- 每条箭头的源端锚点、目标端锚点、边上偏移位置和拐点是否与源图一致;原图水平/垂直的线段是否仍严格水平/垂直,是否出现无源斜线;
- 对所有指向或离开可见框体的箭头,是否已在不改变源图路线的前提下尽可能连接到真实边中点;其余代理锚点中心是否精确落在可见框线上,箭头与框线是否存在可见缝隙;是否错误地强连不共轴中点而制造斜线;
- 从最终保存的 PowerPoint 原生对象统计
visible_shape_anchor、border_proxy_anchor和未连接端点数量;未连接端点必须为0,代理锚点必须有明确所属模块与边,且所有连接器的BeginConnected/EndConnected均为真; - 对照逐条连接账本核对
BeginConnectedShape.Name与EndConnectedShape.Name:规定连接可见框体的端点必须命中预期框体名称,规定使用代理锚点的端点必须命中白名单中的唯一代理名称及所属框体。单列anchor_target_mismatch_count和unjustified_proxy_anchor_count,两者必须为0;禁止以“端点已连接”“距离锚点很近”或“视觉无明显缝隙”替代连接目标身份检查; - 运行
scripts/audit_connector_target_identity.py并保存结构化结果;unconnected_endpoint_count、anchor_target_mismatch_count、unapproved_proxy_endpoint_count、unledgered_connector_count任一非零即为交付阻断项。该脚本只审计原生连接器,自由多段线/自由曲线路径仍须由统一逻辑路径账本另行核对; - 对源图全部水平/垂直箭头形成逐条几何账本,并从最终保存的 PowerPoint 原生对象读取端点验证:水平对象
|y1-y2| ≤ 0.1 pt,垂直对象|x1-x2| ≤ 0.1 pt;不得只查看整页渲染或连接器外接框; - 对每组水平或垂直直连框体读取最终框体坐标,验证水平直连框体中心 y 差和垂直直连框体中心 x 差均
≤ 0.1 pt;超差时应在唯一一次集中修正中先调整框体排版并重新连接锚点,不得只拖动箭头端点; - 最终几何账本必须单列
formula_connector_collision_count与non_axis_aligned_straight_connector_count,两者都必须为0。碰撞计数使用正式公式实际可见边界扩展3–4 pt后与连接器路径/箭头头部的求交结果;斜线计数使用最终端点坐标和直连框体中心轴坐标。仅有公式数量正确、对象未越界、连接器数量正确或两端已连接,均不得替代这两个零值断言。 - 将普通连接器与自由多段线/自由曲线共同纳入碰撞、Z 序、越界和对象唯一性检查;
unconnected_connectors = 0只证明普通连接器端点状态正确,不能证明自由路径未漏计、未穿框或未碰撞。 - 从最终保存的 PowerPoint 原生对象读取 Z 序,形成最小图层账本:每个带填充背景的 Z 序必须低于其区域内全部连接器、箭头、节点、文字和公式;每条连接器必须高于对应背景且低于节点与公式。禁止仅凭缩略图或“背景已调用 SendToBack”推断图层正确。
- 对参考图逐区域颜色与填充账本执行覆盖核对:每个闭合区域、分区底板、研究面板、标题条和带底色容器均须存在对应对象,且
fill_mode、填充色、边框色、透明度和文字色均已显式赋值。缺少整块填充或把近白色误作无填充属于结构性漏项,必须纳入集中修正,不得归入轻微色差。 - 审计计数必须由最终对象和实际几何计算得到,禁止把
formula_connector_collision_count、未连接端点数、斜线数、图层违规数或其他结论硬编码为0。尚未实现的检查必须输出null/not_checked并视为未通过,不能伪装成零阻断。 - 禁止使用真空通过:预期存在逻辑连接器时,
connector_count = 0不能与unconnected_connectors = 0合并解释为“连接器全部正常”;必须先核对预期对象数、实际对象数和审计覆盖对象数一致。 - Z 序按对象间相对关系判断,不使用固定绝对层号阈值。公式目标框、后插入 OLE 或其他隐藏对象改变绝对层号时,只要仍满足
背景 < 路径 < 节点 < 文字/公式就不算违规;反之即使背景层号很小,只要高于对应路径仍判定违规。 - 放大检查每条穿过底色区域的箭身是否从进入背景到离开背景全程连续可见。背景遮住任意箭身、箭头头部、公式或文字均为交付阻断项。
- 连接线和箭头是否位于节点形状之下,节点文字和独立文本框是否位于最上层,是否存在粗路径压住文字;
- 独立模块是否真实碰撞;
- 旋转块状箭头、对向箭头和循环箭头之间的交叠是否仅保留源图明确存在的范围,是否侵入相邻循环、文字或无关形状;
- 页面边距、模块间距、文本内边距和整体视觉重量是否均衡;
- 参考图中的模块、文字、形状、曲线和箭头是否有漏项、简化、替换或无源新增;
- PPTX 是否非空,主要对象是否仍可独立编辑。
- 公式对象数量是否与公式清单一致;Office 模式是否为 PowerPoint 原生专业公式,MathType 模式是否全部为非空
Equation.DSMT4,两种都要时两个 PPTX 是否分别满足各自对象类型;是否存在普通文本、图片或空对象冒充公式。
在工作记录中形成最小审核账本:权威文件路径、最后保存时间、公式模式、公式数量与对象类型、MathType 模式下的 ProgID、已放大检查的高密度区域、颜色/填充覆盖计数、当前审查次数、是否因完成第 2 次审查而停止、阻断项数量。只有阻断项为 0 才允许使用“已审核”“阻断项为 0”“严格通过审核”等表述;第 2 次审查后仍有问题时仍须交付,但必须标记为“第二次审查后按上限交付当前版本”并说明残留问题。
若第 1 次合并审查发现问题,只修复影响阅读、颜色/填充覆盖、方向、结构或可编辑性的对象;先汇总后在一个写入会话集中修正并保存一次。修正后重新渲染受影响区域;若修改影响全局布局、公式、字号、图层、区域底色或页面尺寸,则重新渲染全页,并将其作为第 2 次定向审查。任何审查后的再次修改都会使审核账本失效;第 2 次审查后即使仍发现问题,也只记录而不再修改,并立即交付当前版本,除非用户明确授权继续。
单字行和孤立 token 始终属于明显问题,必须在唯一一次集中修正中优先处理;第 2 次审查后仍存在时,将其写入残留问题并按上限交付。轻微色差、亚像素间距、截图压缩和非关键装饰差异不阻断正常交付,但整块填充缺失、有色区域被设为无填充或沿用错误主题色不属于轻微色差。
验证器结果判定
- 同时依据进程退出码、结构化输出和产物状态判定验证结果。验证器或包装器返回非零退出码时,先检查其结构化输出是否已给出正确页数与输出路径,并验证渲染文件真实存在、非空且可读取;产物有效时记录为“包装器退出码异常”,不得误报为 PPTX 渲染失败。反之,退出码为
0但要求的文件缺失或为空时仍判定失败。 - 错误路径若把
.cache\codex-runtimes拼到当前工作目录下,按“运行时根目录推导错误”处理,禁止不改变环境与参数就重复执行同一命令。改用依赖发现结果、显式工作区或能够正确解析用户运行时根目录的执行位置后,只重试一次。 - PowerPoint 原生最终渲染与对象审计是 PPTX 状态的裁决依据;通用验证器用于补充检查,不能以自身环境初始化失败、包装器退出码异常或不支持 MathType OLE 为由否定已验证的 PowerPoint 原生结果,也不能掩盖原生检查发现的真实碰撞、斜线或对象缺失。
交付
在第 1 次合并审查阻断项为 0,或已完成第 2 次定向审查后,交付当前可编辑 PPTX。最终回复简要说明文件、页面尺寸、字体和可编辑性;包含公式时,同时给出“已写入数量 / 待核对数量”。达到审查上限但仍有问题时,必须说明“第二次审查后按上限交付当前版本”并列出主要残留问题;未形成零阻断审核账本时,不得声称已完成审核。