# PPT 设计硬规则 > 出稿前过一遍。**这些不是建议,是工程约束** —— 模型生成 PPT 最常见的失败模式都是违反这些规则。 ## 0. 画布 (默认 16:9) | 用途 | 比例 | 宽×高 (英寸) | python-pptx | |-----|------|------------|------------| | **现代商务汇报** ⭐ 默认 | 16:9 | 13.33 × 7.5 | `Inches(13.33), Inches(7.5)` | | 老投影 / 教学 | 4:3 | 10 × 7.5 | `Inches(10), Inches(7.5)` | | 手机 / 视频号 | 9:16 | 7.5 × 13.33 | `Inches(7.5), Inches(13.33)` | | 小红书 | 3:4 | 7.5 × 10 | `Inches(7.5), Inches(10)` | | A4 横 / 竖 | √2:1 | 11.69 × 8.27 / 反 | 同左 | 不知道选哪个 → **16:9**。安全边距统一:左右 0.7 in,上下 0.5 in。**画布定了不要中途改**,后续坐标全按这个尺寸算。画布超 16:9 默认尺寸时所有字号 × `(实际宽 / 13.33)`。 ## 1. 字号 (16:9 标准) | 元素 | 字号 (Pt) | 备注 | |-----|----------|------| | 主标题 (封面) | 44-54 | 单行不换行 | | 标题 (内页) | 28-36 | 中文常用 32 | | 副标题 / 章节小标题 | 20-24 | | | 正文 / bullet | 18-22 | 低于 18 投影看不清 | | 注释 / 数据来源 | 12-14 | 灰色,弱化 | | 页脚页码 | 10-12 | 弱化处理 | **底线**: 投影到 100 寸大屏,后排看得清最小字号是 18pt。**绝不能小于 14pt**,除非是数据来源等弱化信息。 ## 2. 配色 ### 三色制 - **主色 (Primary)** —— 标题、强调、关键数据。占视觉权重 60% - **辅色 (Secondary)** —— 副标题、次要图形元素。占 30% - **强调色 (Accent)** —— 关键数据点、CTA、警告。占 10%,不要泛滥 - 其他全部用灰阶 (#1F1F1F / #555 / #888 / #CCC / #F5F5F5) ### 推荐配色对照 (红色主题为默认) | 风格 | 主色 | 辅色 | 强调色 | 备注 | |-----|------|------|-------|------| | **商务红** ⭐ 默认 | #C00000 | #E15554 | #FFC107 | 党政/年终/路演通用 | | 中国红 | #8B0000 | #B22222 | #FFD700 | 民族/国货/红色文化主题 | | 现代红 | #B91C1C | #DC2626 | #F59E0B | 新消费/科技产品发布 | | 暖朱红 | #C73E1D | #E76F51 | #F4A261 | 学术汇报/行业会议 | | 商务蓝 | #1F4E79 | #2E75B6 | #FFC000 | 金融/保险/政企 | | 学术灰 | #2F2F2F | #595959 | #C00000 | 严肃论文/答辩 | | 现代简约 | #2D3748 | #4A5568 | #38B2AC | 互联网/SaaS | | 科技深色 | #0A192F | #112240 | #64FFDA | 黑客松/技术大会 | ### 禁忌 - 红配绿、紫配黄等高对比互补色不要直接用 - 渐变只用在 accent 上,正文/标题不要渐变 - 一份 deck 主色不要换。封面是 A 色、内页变 B 色 —— 这是大忌 ## 3. 留白 - 标题与上边距 ≥ 0.4 英寸 - bullet 之间行距 1.3-1.5 倍 - 一页内容占满 70% 即可,**不要塞到边缘** - 边距统一 (左右 0.7 寸,上下 0.5 寸常用值) ## 4. 信息密度 | 页类型 | 字数上限 | 图表 | |-------|---------|-----| | 封面 | 30 字 | 可选装饰图 | | 目录 | 每条 ≤ 15 字 | 不要图 | | 分章页 | ≤ 20 字 | 大号数字 + 章节名 | | 要点页 | bullet ≤ 5 条,每条 ≤ 25 字 | 可选小图标 | | 数据页 | 标题 + 一句结论 | **必须有图表** | | 图片页 | ≤ 15 字标题 + 1-2 行说明 | 主体是图 | ## 4.1 字数预算 (避免溢出) > 这是**布局超界的根因表**。bullet 写超了会顶到下一页元素;标题写超了会换行顶下来。开写前查这张表,而不是写完看 quality_check 报错。 公式: `每行字数 ≈ 框宽(in) × 72 / 字号(pt)` | 字号 | 框宽 11.93 in (整宽) | 框宽 5.5 in (双栏单边) | 框宽 4.6 in (图片页文字区) | |-----|--------------------|----------------------|--------------------------| | 44 pt (主标题) | ≤ 19 字 | — | — | | 36 pt (大标题) | ≤ 23 字 | — | — | | 32 pt (内页标题) | ≤ 26 字 | — | — | | 22 pt (要点) | ≤ 39 字 | ≤ 18 字 | ≤ 15 字 | | 18 pt (正文) | ≤ 47 字 | ≤ 22 字 | ≤ 18 字 | | 14 pt (注释) | ≤ 61 字 | ≤ 28 字 | ≤ 23 字 | **英文字符按中文 0.5 个换算** (即英文每行约 2× 中文字数)。 ### 行高估算 每行高度 ≈ `字号 × 1.4 / 72` (英寸) | 字号 | 单行高 | 1 行框高 | 2 行框高 | 3 行框高 | |-----|-------|---------|---------|---------| | 32 pt | 0.62 in | 0.7 in | 1.3 in | 1.9 in | | 22 pt | 0.43 in | 0.5 in | 0.9 in | 1.3 in | | 18 pt | 0.35 in | 0.4 in | 0.8 in | 1.1 in | | 14 pt | 0.27 in | 0.3 in | 0.6 in | 0.9 in | **用法**: bullet 字数预计超表上限就拆条,不要试图靠 `auto_size` 收缩字号兜底 —— 会出现一页里字号大小不一,反而难看。 ## 5. 文字层级 - 一页最多 3 级层级 (标题 / 正文 / 子项) - 子项缩进 0.3-0.5 英寸 - 子项字号比父级小 2-4pt - 不要四级以上嵌套 ## 6. 图片规则 - **分辨率**: 投影建议 150 dpi 以上,印刷 300 dpi - **占位**: 图片占满指定区域,不要拉伸变形 —— 用 `width=` 或 `height=` 单一参数让 python-pptx 等比缩放 - **背景**: 透明 PNG 优先;白底 JPG 在深色页上要做底色匹配 - **数量**: 一页最多 2 张图,3 张以上是网格图,按九宫格摆 ## 7. 图表规则 (matplotlib) - 颜色用 spec_lock 里定的主/辅/强调三色,**不要用 matplotlib 默认色板** - 字号: 标题 16,坐标轴 12,刻度 10 - 去掉上方和右方边框 (`ax.spines['top'/'right'].set_visible(False)`) - 数据标签直接标在柱子/点上,优先于看坐标 - 中文字体: `plt.rcParams['font.sans-serif'] = ['Microsoft YaHei', 'SimHei']` - 负号: `plt.rcParams['axes.unicode_minus'] = False` ```python # 示例:符合规则的柱状图 (默认红色主题) import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['Microsoft YaHei', 'SimHei'] plt.rcParams['axes.unicode_minus'] = False fig, ax = plt.subplots(figsize=(10, 5), dpi=150) bars = ax.bar(["Q1","Q2","Q3","Q4"], [12,18,25,31], color=["#C00000","#C00000","#C00000","#FFC107"]) # 末尾突出 for bar, v in zip(bars, [12,18,25,31]): ax.text(bar.get_x()+bar.get_width()/2, v+0.5, str(v), ha='center', fontsize=11) ax.set_title("季度营收 (亿元)", fontsize=16) ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) fig.savefig("chart.png", bbox_inches="tight", dpi=150) ``` ## 8. 一致性 (跨页) - 标题位置不要跳来跳去 —— 所有内页标题都在同一像素位置 - 页脚 (页码 / logo / 标题) 在所有内页位置一致 - 字体在同 deck 内不要换 —— 中文一种字体,英文一种,够了 - 配色不变,字号梯度不变 ## 9. 反模式速查 | 症状 | 原因 | 修法 | |-----|------|-----| | 一页字密密麻麻 | 没拆页 | 拆 2-3 页或转图表 | | 投影看不清 | 字号 < 18 | 加大字号或拆页 | | 颜色花 | 用了超过 5 种色 | 退回三色制 | | bullet 是完整段落 | 把演讲稿当 bullet 写 | 提炼关键词,完整句留给口述 | | 图表默认配色 | 没改 matplotlib 色板 | 用 spec_lock 主色 | | 图标/图片随意找的 | 没统一风格 | 同一来源 / 同一风格 | | 标题在每页位置都不一样 | 没用统一版式 | 见 layouts.md,固定模板 |