zcbot/skills/ppt/references/design_principles.md

7.0 KiB
Raw Blame History

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
# 示例:符合规则的柱状图 (默认红色主题)
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,固定模板