dsh-ppt-studio 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +480 -0
- package/agent-presets/ppt/agent.cordis.yml +308 -0
- package/agent-presets/ppt/preset.yml +3 -0
- package/cordis.patch.yml +29 -0
- package/docs/00-/350/256/276/350/256/241/346/272/220.md +537 -0
- package/docs/01-/351/234/200/346/261/202/344/270/216/347/233/256/346/240/207.md +136 -0
- package/docs/02-/346/212/200/346/234/257/346/212/245/345/221/212.md +483 -0
- package/docs/03-/346/233/264/346/226/260/346/227/245/345/277/227.md +2898 -0
- package/docs/04-/350/267/257/347/272/277/345/233/276/344/270/216/351/207/214/347/250/213/347/242/221.md +113 -0
- package/docs/05-/350/277/255/344/273/243/346/265/201/347/250/213.md +210 -0
- package/docs/06-/350/257/204/345/256/241/344/270/216/346/265/213/350/257/225.md +296 -0
- package/docs/fidelity-report.md +225 -0
- package/examples/fx/fx-mini/deck.yaml +39 -0
- package/examples/fx/fx-mini/pages/01.yaml +6 -0
- package/examples/fx/fx-mini/pages/02.yaml +2 -0
- package/examples/fx/fx-mini/pages/03.yaml +6 -0
- package/examples/fx/fx-pro/deck.yaml +48 -0
- package/examples/fx/fx-pro/pages/01_cover.yaml +40 -0
- package/examples/fx/fx-pro/pages/02_arch.yaml +55 -0
- package/examples/fx/fx-pro/pages/03_table.yaml +20 -0
- package/examples/fx/fx-pro/pages/04_chart.yaml +40 -0
- package/examples/fx/fx-pro/pages/05_timeline.yaml +71 -0
- package/examples/fx/fx-pro/pages/06_longtext.yaml +13 -0
- package/examples/fx/fx-pro/pages/07_safearea.yaml +33 -0
- package/examples/fx/fx-pro/pages/08_contrast.yaml +22 -0
- package/examples/fx/fx-pro/pages/09_custgeom.yaml +32 -0
- package/examples/fx/fx-pro/pages/10_numbers.yaml +25 -0
- package/examples/fx/fx-pro/pages/11_section.yaml +20 -0
- package/examples/fx/fx-pro/pages/12_summary.yaml +57 -0
- package/examples/fx/fx-pro/preview/01_pages_01_cover.html +1 -0
- package/examples/fx/fx-pro/preview/02_pages_02_arch.html +3 -0
- package/examples/fx/fx-pro/preview/03_pages_03_table.html +1 -0
- package/examples/fx/fx-pro/preview/04_pages_04_chart.html +3 -0
- package/examples/fx/fx-pro/preview/05_pages_05_timeline.html +2 -0
- package/examples/fx/fx-pro/preview/06_pages_06_longtext.html +4 -0
- package/examples/fx/fx-pro/preview/07_pages_07_safearea.html +2 -0
- package/examples/fx/fx-pro/preview/08_pages_08_contrast.html +1 -0
- package/examples/fx/fx-pro/preview/09_pages_09_custgeom.html +1 -0
- package/examples/fx/fx-pro/preview/10_pages_10_numbers.html +1 -0
- package/examples/fx/fx-pro/preview/11_pages_11_section.html +1 -0
- package/examples/fx/fx-pro/preview/12_pages_12_summary.html +1 -0
- package/examples/fx/fx-pro/preview/deck.html +10 -0
- package/examples/fx/fx-pro/preview/layout.json +2325 -0
- package/examples/fx/fx-pro/preview/measured.json +814 -0
- package/examples/fx/fx-pro.pptx +0 -0
- package/examples/fx/ren-single/01.png +0 -0
- package/examples/fx/ren-spliced/01.png +0 -0
- package/examples/fx/ren-spliced/03.png +0 -0
- package/examples/fx/seed.pptx +0 -0
- package/examples/fx/single.pptx +0 -0
- package/examples/fx/spliced.pptx +0 -0
- package/examples/smoke/deck.yaml +26 -0
- package/examples/smoke/imported/deck.yaml +30 -0
- package/examples/smoke/imported/import-styles.json +126 -0
- package/examples/smoke/imported/pages/slide_01.yaml +31 -0
- package/examples/smoke/imported/pages/slide_02.yaml +38 -0
- package/examples/smoke/imported/pages/slide_03.yaml +55 -0
- package/examples/smoke/imported/preview-rt/01_pages_slide_01.html +1 -0
- package/examples/smoke/imported/preview-rt/02_pages_slide_02.html +1 -0
- package/examples/smoke/imported/preview-rt/03_pages_slide_03.html +1 -0
- package/examples/smoke/imported/preview-rt/deck.html +1 -0
- package/examples/smoke/imported/preview-rt/layout.json +434 -0
- package/examples/smoke/imported/reference/previews/01.png +0 -0
- package/examples/smoke/imported/reference/previews/02.png +0 -0
- package/examples/smoke/imported/reference/previews/03.png +0 -0
- package/examples/smoke/imported/source.pptx +0 -0
- package/examples/smoke/media-test.png +0 -0
- package/examples/smoke/out-smoke.pptx +0 -0
- package/examples/smoke/pages/01_cover.yaml +27 -0
- package/examples/smoke/pages/02_content.yaml +42 -0
- package/examples/smoke/pages/03_chart.yaml +35 -0
- package/examples/smoke/preview/01_pages_01_cover.html +1 -0
- package/examples/smoke/preview/02_pages_02_content.html +1 -0
- package/examples/smoke/preview/03_pages_03_chart.html +1 -0
- package/examples/smoke/preview/deck.html +1 -0
- package/examples/smoke/preview/layout.json +378 -0
- package/lib/autodeclare.js +40 -0
- package/lib/commands.js +161 -0
- package/lib/crosscheck.js +300 -0
- package/lib/imgmeta.js +55 -0
- package/lib/index.js +239 -0
- package/lib/measurement.js +209 -0
- package/lib/msrender.js +123 -0
- package/lib/pptd/export-pptx.js +686 -0
- package/lib/pptd/import-pptx.js +774 -0
- package/lib/pptd/layout.js +209 -0
- package/lib/pptd/render-html.js +254 -0
- package/lib/pptd/schema.js +518 -0
- package/lib/pptd/svgCharts.js +147 -0
- package/lib/pptxPy.js +205 -0
- package/lib/preset-delivery.js +195 -0
- package/lib/preview-server.js +164 -0
- package/lib/router.js +165 -0
- package/lib/scaffold.js +315 -0
- package/lib/skill.js +174 -0
- package/lib/splice.js +219 -0
- package/lib/state.js +88 -0
- package/lib/surgical.js +369 -0
- package/lib/templates.js +400 -0
- package/lib/tools.js +955 -0
- package/lib/verify.js +828 -0
- package/lib/xmljs.js +112 -0
- package/lib/zips.js +117 -0
- package/package.json +81 -0
- package/scripts/audit-manual-facts.mjs +294 -0
- package/scripts/audit-template-fidelity.mjs +162 -0
- package/scripts/bench-m2.mjs +48 -0
- package/scripts/build-templates.mjs +63 -0
- package/scripts/build.mjs +14 -0
- package/scripts/build.sh +7 -0
- package/scripts/check-lib-freshness.mjs +70 -0
- package/scripts/check-preset.mjs +189 -0
- package/scripts/check-tracked-lf.mjs +84 -0
- package/scripts/dbg-import.mjs +13 -0
- package/scripts/dbg-media.mjs +10 -0
- package/scripts/dbg-tpl-inventory.mjs +23 -0
- package/scripts/dump-workflow-baseline.mjs +38 -0
- package/scripts/e2e-1.0.mjs +129 -0
- package/scripts/eval-skills-blind.mjs +91 -0
- package/scripts/eval-skills-score.mjs +129 -0
- package/scripts/export-orig-templates.ps1 +17 -0
- package/scripts/fixtures/workflow-baseline.json +300 -0
- package/scripts/fixtures.mjs +501 -0
- package/scripts/import-user-templates.mjs +60 -0
- package/scripts/install-desktop.mjs +312 -0
- package/scripts/install.mjs +209 -0
- package/scripts/migrate-templates-dualtrack.mjs +71 -0
- package/scripts/preflight-1.0.mjs +198 -0
- package/scripts/probe-asset-freshness.mjs +57 -0
- package/scripts/probe-effect-semantics.mjs +69 -0
- package/scripts/probe-reparse-safety.mjs +32 -0
- package/scripts/rebuild-templates-c11.mjs +69 -0
- package/scripts/regression-real.mjs +84 -0
- package/scripts/release-sync.mjs +425 -0
- package/scripts/shot-templates.mjs +49 -0
- package/scripts/smoke.mjs +2512 -0
- package/scripts/verify-bundle-install.mjs +281 -0
- package/scripts/verify-fresh-install.mjs +260 -0
- package/skills/ppt-studio-copy/SKILL.md +139 -0
- package/skills/ppt-studio-craft/SKILL.md +171 -0
- package/skills/ppt-studio-data/SKILL.md +173 -0
- package/skills/ppt-studio-manual/SKILL.md +104 -0
- package/templates/academic-white/deck.yaml +24 -0
- package/templates/academic-white/pages/_chart.yaml +43 -0
- package/templates/academic-white/pages/_compare.yaml +37 -0
- package/templates/academic-white/pages/_content.yaml +35 -0
- package/templates/academic-white/pages/_cover.yaml +28 -0
- package/templates/academic-white/pages/_ending.yaml +28 -0
- package/templates/academic-white/pages/_flow.yaml +61 -0
- package/templates/academic-white/preview.png +0 -0
- package/templates/academic-white/template.yaml +14 -0
- package/templates/business-blue/deck.yaml +28 -0
- package/templates/business-blue/pages/_chart.yaml +36 -0
- package/templates/business-blue/pages/_compare.yaml +45 -0
- package/templates/business-blue/pages/_content.yaml +80 -0
- package/templates/business-blue/pages/_cover.yaml +39 -0
- package/templates/business-blue/pages/_ending.yaml +32 -0
- package/templates/business-blue/pages/_flow.yaml +87 -0
- package/templates/business-blue/preview.png +0 -0
- package/templates/business-blue/template.yaml +14 -0
- package/templates/pitch-bold/deck.yaml +23 -0
- package/templates/pitch-bold/pages/_chart.yaml +32 -0
- package/templates/pitch-bold/pages/_compare.yaml +36 -0
- package/templates/pitch-bold/pages/_content.yaml +58 -0
- package/templates/pitch-bold/pages/_cover.yaml +31 -0
- package/templates/pitch-bold/pages/_ending.yaml +27 -0
- package/templates/pitch-bold/pages/_flow.yaml +46 -0
- package/templates/pitch-bold/preview.png +0 -0
- package/templates/pitch-bold/template.yaml +14 -0
- package/templates/tech-dark/deck.yaml +24 -0
- package/templates/tech-dark/pages/_chart.yaml +27 -0
- package/templates/tech-dark/pages/_compare.yaml +38 -0
- package/templates/tech-dark/pages/_content.yaml +51 -0
- package/templates/tech-dark/pages/_cover.yaml +30 -0
- package/templates/tech-dark/pages/_ending.yaml +25 -0
- package/templates/tech-dark/pages/_flow.yaml +80 -0
- package/templates/tech-dark/preview.png +0 -0
- package/templates/tech-dark/template.yaml +14 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# 学术会议模板工作区骨架
|
|
2
|
+
version: 1
|
|
3
|
+
title: 未命名报告
|
|
4
|
+
size: [960, 540]
|
|
5
|
+
theme:
|
|
6
|
+
colors:
|
|
7
|
+
navy: "#16355C" # 藏青(标题/强调)
|
|
8
|
+
ink: "#1F2937" # 正文
|
|
9
|
+
gray: "#6B7280" # 次要文字
|
|
10
|
+
light: "#E5E9F0" # 细分隔/浅衬底
|
|
11
|
+
bg: "#FFFFFF"
|
|
12
|
+
accent: "#8C1D40" # 强调红(极少量亮点)
|
|
13
|
+
textStyles:
|
|
14
|
+
title: {fontSize: 30, color: "$navy", bold: true}
|
|
15
|
+
h2: {fontSize: 20, color: "$navy", bold: true}
|
|
16
|
+
body: {fontSize: 16, color: "$ink", lineHeight: 1.5}
|
|
17
|
+
label: {fontSize: 13, color: "$ink"}
|
|
18
|
+
caption: {fontSize: 12, color: "$gray"}
|
|
19
|
+
safeArea: {top: 40, bottom: 24}
|
|
20
|
+
grid: {base: 8}
|
|
21
|
+
minFontSize: 12
|
|
22
|
+
pages:
|
|
23
|
+
- pages/_cover.yaml
|
|
24
|
+
- pages/_content.yaml
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
pageType: content
|
|
2
|
+
# 图表页母版(学术版:大图表 + 结论区)
|
|
3
|
+
# 【2026-09-18】不再预置"数据说明:口径/来源/n/置信/脱敏声明"占位块:依据写进页面 `source:` 字段(YAML,不进成品);
|
|
4
|
+
# 页面上只有读者确实需要知道口径时才留一行小字,不要逐页挂(见 ppt-studio-data §3)。
|
|
5
|
+
elements:
|
|
6
|
+
- elementId: pageNo
|
|
7
|
+
elementType: text
|
|
8
|
+
bounds: [20, 50, 70, 24]
|
|
9
|
+
content: {text: "6", style: "$caption"}
|
|
10
|
+
- elementId: pageTitle
|
|
11
|
+
elementType: text
|
|
12
|
+
bounds: [100, 44, 700, 36]
|
|
13
|
+
content: {text: "结果:数据可视化与解读", style: "$title", color: "$navy", fontSize: 24}
|
|
14
|
+
- elementId: divider
|
|
15
|
+
elementType: line
|
|
16
|
+
points: [[60, 92], [900, 92]]
|
|
17
|
+
line: {color: "$light", width: 1}
|
|
18
|
+
- elementId: chartEl
|
|
19
|
+
elementType: chart
|
|
20
|
+
bounds: [60, 120, 620, 340]
|
|
21
|
+
chart: {type: line, data: {cols: ["时间", "值"], rows: [["T1", 20], ["T2", 42], ["T3", 38], ["T4", 61]]}}
|
|
22
|
+
- elementId: axis
|
|
23
|
+
elementType: text
|
|
24
|
+
bounds: [60, 470, 620, 24]
|
|
25
|
+
content: {text: "横轴:时间 | 纵轴:指标值(示例数据)", style: "$caption"}
|
|
26
|
+
- elementId: conclusion
|
|
27
|
+
elementType: shape
|
|
28
|
+
kind: rect
|
|
29
|
+
bounds: [720, 348, 180, 110]
|
|
30
|
+
fill: "$light"
|
|
31
|
+
- elementId: conclusionT
|
|
32
|
+
elementType: text
|
|
33
|
+
bounds: [734, 362, 152, 82]
|
|
34
|
+
content: {text: "结论\n曲线拐点对应……", style: "$label", color: "$navy", bold: true}
|
|
35
|
+
- elementId: conBar
|
|
36
|
+
elementType: shape
|
|
37
|
+
kind: rect
|
|
38
|
+
bounds: [720, 348, 6, 110]
|
|
39
|
+
fill: "$navy"
|
|
40
|
+
expectedOverlaps:
|
|
41
|
+
- {pair: [conBar, conclusion]}
|
|
42
|
+
- {pair: [conBar, conclusionT]}
|
|
43
|
+
- {pair: [conclusion, conclusionT]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
pageType: content
|
|
2
|
+
# 对比页母版(学术版:两栏细线 + 表格式对比)
|
|
3
|
+
expectedOverlaps:
|
|
4
|
+
- {pair: [tblCol, tblTitle]}
|
|
5
|
+
- {pair: [tblCol, tblRows]}
|
|
6
|
+
expectedOutOfSafeArea: [footer]
|
|
7
|
+
elements:
|
|
8
|
+
- elementId: pageNo
|
|
9
|
+
elementType: text
|
|
10
|
+
bounds: [20, 50, 70, 24]
|
|
11
|
+
content: {text: "7", style: "$caption"}
|
|
12
|
+
- elementId: pageTitle
|
|
13
|
+
elementType: text
|
|
14
|
+
bounds: [100, 44, 700, 36]
|
|
15
|
+
content: {text: "对比:方法/方案权衡", style: "$title", color: "$navy", fontSize: 24}
|
|
16
|
+
- elementId: divider
|
|
17
|
+
elementType: line
|
|
18
|
+
points: [[60, 92], [900, 92]]
|
|
19
|
+
line: {color: "$light", width: 1}
|
|
20
|
+
- elementId: tblCol
|
|
21
|
+
elementType: shape
|
|
22
|
+
kind: rect
|
|
23
|
+
bounds: [60, 130, 840, 300]
|
|
24
|
+
fill: "$bg"
|
|
25
|
+
line: {color: "$light", width: 1}
|
|
26
|
+
- elementId: tblTitle
|
|
27
|
+
elementType: text
|
|
28
|
+
bounds: [80, 150, 800, 40]
|
|
29
|
+
content: {text: "维度 方案 A 方案 B", style: "$h2", color: "$navy", fontSize: 16}
|
|
30
|
+
- elementId: tblRows
|
|
31
|
+
elementType: text
|
|
32
|
+
bounds: [80, 210, 800, 200]
|
|
33
|
+
content: {text: "适用场景:描述……\n精度/效果:A …… / B ……\n成本/复杂度:A …… / B ……\n结论倾向:……", style: "$body", fontSize: 14, lineHeight: 1.7}
|
|
34
|
+
- elementId: footer
|
|
35
|
+
elementType: text
|
|
36
|
+
bounds: [60, 496, 300, 20]
|
|
37
|
+
content: {text: "研究/项目名称 · 对比", style: "$caption"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
pageType: content
|
|
2
|
+
# 内容页骨架:左上页码 + 左对齐标题 + 正文区(细线分区)
|
|
3
|
+
expectedOverlaps:
|
|
4
|
+
- {pair: [quoteBar, quoteT]}
|
|
5
|
+
expectedOutOfSafeArea: [footer]
|
|
6
|
+
elements:
|
|
7
|
+
- elementId: pageNo
|
|
8
|
+
elementType: text
|
|
9
|
+
bounds: [20, 50, 70, 24]
|
|
10
|
+
content: {text: "3", style: "$caption"}
|
|
11
|
+
- elementId: pageTitle
|
|
12
|
+
elementType: text
|
|
13
|
+
bounds: [100, 44, 700, 36]
|
|
14
|
+
content: {text: "章节标题:研究问题与方法", style: "$title", color: "$navy", fontSize: 24}
|
|
15
|
+
- elementId: divider
|
|
16
|
+
elementType: line
|
|
17
|
+
points: [[60, 92], [900, 92]]
|
|
18
|
+
line: {color: "$light", width: 1}
|
|
19
|
+
- elementId: bodyText
|
|
20
|
+
elementType: text
|
|
21
|
+
bounds: [60, 120, 840, 260]
|
|
22
|
+
content: {text: "正文区(16pt,行高 1.5):\n1. 要点一:说明研究问题与背景\n2. 要点二:方法与数据来源\n3. 要点三:初步结论", style: "$body"}
|
|
23
|
+
- elementId: quoteBar
|
|
24
|
+
elementType: shape
|
|
25
|
+
kind: rect
|
|
26
|
+
bounds: [60, 420, 6, 56]
|
|
27
|
+
fill: "$navy"
|
|
28
|
+
- elementId: quoteT
|
|
29
|
+
elementType: text
|
|
30
|
+
bounds: [86, 424, 800, 40]
|
|
31
|
+
content: {text: "核心观点/定义句(引用样式):一句话说清本章结论。", style: "$label", color: "$gray"}
|
|
32
|
+
- elementId: footer
|
|
33
|
+
elementType: text
|
|
34
|
+
bounds: [60, 496, 300, 20]
|
|
35
|
+
content: {text: "研究/项目名称 · 章节", style: "$caption"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
pageType: cover
|
|
2
|
+
background: {type: solid, color: "$bg"}
|
|
3
|
+
safeArea: {top: 40, bottom: 24}
|
|
4
|
+
elements:
|
|
5
|
+
- elementId: topLine
|
|
6
|
+
elementType: line
|
|
7
|
+
points: [[60, 60], [900, 60]]
|
|
8
|
+
line: {color: "$navy", width: 3}
|
|
9
|
+
- elementId: title
|
|
10
|
+
elementType: text
|
|
11
|
+
bounds: [60, 100, 840, 120]
|
|
12
|
+
content: {text: "报告题目:所在研究/项目名称", style: "$title", color: "$navy", fontSize: 36, lineHeight: 1.35}
|
|
13
|
+
- elementId: subtitle
|
|
14
|
+
elementType: text
|
|
15
|
+
bounds: [60, 250, 840, 40]
|
|
16
|
+
content: {text: "副标题:研究定位 / 一句话摘要", style: "$body", color: "$gray"}
|
|
17
|
+
- elementId: authors
|
|
18
|
+
elementType: text
|
|
19
|
+
bounds: [60, 330, 840, 30]
|
|
20
|
+
content: {text: "作者:xxx | 单位:xxx | 日期", style: "$label", color: "$ink"}
|
|
21
|
+
- elementId: footLine
|
|
22
|
+
elementType: line
|
|
23
|
+
points: [[60, 480], [900, 480]]
|
|
24
|
+
line: {color: "$light", width: 1}
|
|
25
|
+
- elementId: venue
|
|
26
|
+
elementType: text
|
|
27
|
+
bounds: [60, 492, 840, 20]
|
|
28
|
+
content: {text: "会议/汇报名称 · 地点", style: "$caption"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
pageType: cover
|
|
2
|
+
background: {type: solid, color: "$bg"}
|
|
3
|
+
safeArea: {top: 40, bottom: 24}
|
|
4
|
+
elements:
|
|
5
|
+
- elementId: topLine
|
|
6
|
+
elementType: line
|
|
7
|
+
points: [[60, 60], [900, 60]]
|
|
8
|
+
line: {color: "$navy", width: 3}
|
|
9
|
+
- elementId: thanks
|
|
10
|
+
elementType: text
|
|
11
|
+
bounds: [60, 140, 840, 80]
|
|
12
|
+
content: {text: "谢谢 / Questions?", style: "$title", color: "$navy", fontSize: 40, bold: true}
|
|
13
|
+
- elementId: summary
|
|
14
|
+
elementType: text
|
|
15
|
+
bounds: [60, 250, 840, 80]
|
|
16
|
+
content: {text: "核心结论:研究回答了什么问题;下一步计划:……", style: "$body", color: "$ink"}
|
|
17
|
+
- elementId: contact
|
|
18
|
+
elementType: text
|
|
19
|
+
bounds: [60, 360, 840, 30]
|
|
20
|
+
content: {text: "答疑与讨论:作者 / 单位 / 邮箱", style: "$label", color: "$gray"}
|
|
21
|
+
- elementId: footLine
|
|
22
|
+
elementType: line
|
|
23
|
+
points: [[60, 480], [900, 480]]
|
|
24
|
+
line: {color: "$light", width: 1}
|
|
25
|
+
- elementId: venue
|
|
26
|
+
elementType: text
|
|
27
|
+
bounds: [60, 492, 840, 20]
|
|
28
|
+
content: {text: "会议/汇报名称 · 地点", style: "$caption"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
pageType: content
|
|
2
|
+
# 流程页母版(学术版:步骤 + 细箭头,无实色大块)
|
|
3
|
+
expectedOverlaps:
|
|
4
|
+
- {pair: [s1, s1T]}
|
|
5
|
+
- {pair: [s2, s2T]}
|
|
6
|
+
- {pair: [s3, s3T]}
|
|
7
|
+
elements:
|
|
8
|
+
- elementId: pageNo
|
|
9
|
+
elementType: text
|
|
10
|
+
bounds: [20, 50, 70, 24]
|
|
11
|
+
content: {text: "5", style: "$caption"}
|
|
12
|
+
- elementId: pageTitle
|
|
13
|
+
elementType: text
|
|
14
|
+
bounds: [100, 44, 700, 36]
|
|
15
|
+
content: {text: "研究流程:从数据到结论", style: "$title", color: "$navy", fontSize: 24}
|
|
16
|
+
- elementId: divider
|
|
17
|
+
elementType: line
|
|
18
|
+
points: [[60, 92], [900, 92]]
|
|
19
|
+
line: {color: "$light", width: 1}
|
|
20
|
+
- elementId: s1
|
|
21
|
+
elementType: shape
|
|
22
|
+
kind: rect
|
|
23
|
+
bounds: [60, 140, 260, 220]
|
|
24
|
+
fill: "$bg"
|
|
25
|
+
line: {color: "$navy", width: 1}
|
|
26
|
+
- elementId: s2
|
|
27
|
+
elementType: shape
|
|
28
|
+
kind: rect
|
|
29
|
+
bounds: [350, 140, 260, 220]
|
|
30
|
+
fill: "$bg"
|
|
31
|
+
line: {color: "$navy", width: 1}
|
|
32
|
+
- elementId: s3
|
|
33
|
+
elementType: shape
|
|
34
|
+
kind: rect
|
|
35
|
+
bounds: [640, 140, 260, 220]
|
|
36
|
+
fill: "$bg"
|
|
37
|
+
line: {color: "$navy", width: 1}
|
|
38
|
+
- elementId: s1T
|
|
39
|
+
elementType: text
|
|
40
|
+
bounds: [76, 160, 230, 180]
|
|
41
|
+
content: {text: "① 数据准备\n描述:数据来源/清洗/口径。", style: "$body", fontSize: 14}
|
|
42
|
+
- elementId: s2T
|
|
43
|
+
elementType: text
|
|
44
|
+
bounds: [366, 160, 230, 180]
|
|
45
|
+
content: {text: "② 建模分析\n描述:方法/参数/校验。", style: "$body", fontSize: 14}
|
|
46
|
+
- elementId: s3T
|
|
47
|
+
elementType: text
|
|
48
|
+
bounds: [656, 160, 230, 180]
|
|
49
|
+
content: {text: "③ 验证结论\n描述:结果/敏感性/局限。", style: "$body", fontSize: 14}
|
|
50
|
+
- elementId: a1
|
|
51
|
+
elementType: line
|
|
52
|
+
points: [[322, 250], [348, 250]]
|
|
53
|
+
arrow: true
|
|
54
|
+
line: {color: "$navy", width: 2}
|
|
55
|
+
- elementId: a2
|
|
56
|
+
elementType: line
|
|
57
|
+
points: [[612, 250], [638, 250]]
|
|
58
|
+
arrow: true
|
|
59
|
+
line: {color: "$navy", width: 2}
|
|
60
|
+
# 【2026-09-18】删掉原来的"注:流程涉及的口径/假设在此说明"占位块(footnote):
|
|
61
|
+
# 要交代口径就写页面 `source:` 字段(YAML,不进成品);页面上只在读者确实需要时留一行小字,不要逐页挂。
|
|
Binary file
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
id: academic-white
|
|
2
|
+
name: 学术会议
|
|
3
|
+
style: 学术汇报 / 理性克制
|
|
4
|
+
scene: 学位答辩、学术会议、项目评审
|
|
5
|
+
desc: 白底大留白,藏青副色 + 细线分隔;标题严格左对齐,页码左上角;适合图表密集的严谨内容。
|
|
6
|
+
words: 理性 / 克制 / 数据 / 大留白
|
|
7
|
+
colors: ["#16355C", "#1F2937", "#6B7280", "#E5E9F0", "#FFFFFF"]
|
|
8
|
+
pages:
|
|
9
|
+
- pages/_cover.yaml
|
|
10
|
+
- pages/_content.yaml
|
|
11
|
+
- pages/_flow.yaml
|
|
12
|
+
- pages/_chart.yaml
|
|
13
|
+
- pages/_compare.yaml
|
|
14
|
+
- pages/_ending.yaml
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# 商务蓝模板工作区骨架(复制后按需增删页;母版页可用于新页版式参照)
|
|
2
|
+
version: 1
|
|
3
|
+
title: 未命名演示
|
|
4
|
+
size: [960, 540]
|
|
5
|
+
theme:
|
|
6
|
+
colors:
|
|
7
|
+
primary: "#1E4E8C" # 主色(标题栏/强调)
|
|
8
|
+
deep: "#16355C" # 深蓝(页脚带/封面底)
|
|
9
|
+
accent: "#F59E0B" # 强调金(亮点/徽标)
|
|
10
|
+
ink: "#1F2937" # 正文
|
|
11
|
+
bg: "#FFFFFF"
|
|
12
|
+
light: "#EAF1F8" # 浅底(卡片衬底)
|
|
13
|
+
steel: "#9DB4D0" # 页眉带次要文字/分割
|
|
14
|
+
edge: "#C9D8EA" # 白底卡片描边/页脚细线
|
|
15
|
+
steel2: "#4A6FA5" # 封面装饰点
|
|
16
|
+
gray3: "#64748B" # 页面脚注/说明小字
|
|
17
|
+
textStyles:
|
|
18
|
+
title: {fontSize: 28, color: "$primary", bold: true}
|
|
19
|
+
h2: {fontSize: 20, color: "$primary", bold: true}
|
|
20
|
+
body: {fontSize: 14, color: "$ink"}
|
|
21
|
+
label: {fontSize: 12, color: "$ink"}
|
|
22
|
+
caption: {fontSize: 12, color: "#64748B"}
|
|
23
|
+
safeArea: {top: 16, bottom: 16}
|
|
24
|
+
grid: {base: 8}
|
|
25
|
+
minFontSize: 12
|
|
26
|
+
pages:
|
|
27
|
+
- pages/_cover.yaml
|
|
28
|
+
- pages/_content.yaml
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
pageType: content
|
|
2
|
+
# 图表页母版:标题 + 图表区(chart 元素占位)+ 读图结论
|
|
3
|
+
# 【2026-09-18】不再预置"数据口径/来源/脱敏声明"占位块:依据写进页面 `source:` 字段(YAML,不进成品);
|
|
4
|
+
# 页面上只有读者确实需要知道口径时(引用外部数据、口径有歧义)才留一行小字,不要逐页挂(见 ppt-studio-data §3)。
|
|
5
|
+
expectedOverlaps:
|
|
6
|
+
- {pair: [chartBox, chartEl]}
|
|
7
|
+
- {pair: [headbar, pageTitle]}
|
|
8
|
+
expectedOutOfSafeArea: [headbar, pageTitle]
|
|
9
|
+
elements:
|
|
10
|
+
- elementId: headbar
|
|
11
|
+
elementType: shape
|
|
12
|
+
kind: rect
|
|
13
|
+
bounds: [0, 0, 960, 46]
|
|
14
|
+
fill: "$deep"
|
|
15
|
+
- elementId: pageTitle
|
|
16
|
+
elementType: text
|
|
17
|
+
bounds: [60, 10, 700, 30]
|
|
18
|
+
content: {text: "图表标题:数据支撑论点", style: "$title", color: "#FFFFFF", fontSize: 22}
|
|
19
|
+
- elementId: chartBox
|
|
20
|
+
elementType: shape
|
|
21
|
+
kind: rect
|
|
22
|
+
bounds: [60, 80, 600, 360]
|
|
23
|
+
fill: "$bg"
|
|
24
|
+
line: {color: "#C9D8EA", width: 1}
|
|
25
|
+
- elementId: chartEl
|
|
26
|
+
elementType: chart
|
|
27
|
+
bounds: [80, 100, 560, 320]
|
|
28
|
+
chart: {type: bar, data: {cols: ["指标", "值"], rows: [["A", 72], ["B", 55], ["C", 40], ["D", 88]]}}
|
|
29
|
+
- elementId: insight
|
|
30
|
+
elementType: text
|
|
31
|
+
bounds: [700, 100, 200, 120]
|
|
32
|
+
content: {text: "读图结论\n(12pt)", style: "$label", color: "$primary", bold: true}
|
|
33
|
+
- elementId: footerLine
|
|
34
|
+
elementType: line
|
|
35
|
+
points: [[60, 505], [900, 505]]
|
|
36
|
+
line: {color: "#C9D8EA", width: 1}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
pageType: content
|
|
2
|
+
# 对比页母版:现状 vs 改进(或方案 A vs B)
|
|
3
|
+
expectedOverlaps:
|
|
4
|
+
- {pair: [headbar, pageTitle]}
|
|
5
|
+
- {pair: [leftBox, leftT]}
|
|
6
|
+
- {pair: [rightBox, rightT]}
|
|
7
|
+
- {pair: [vsBadge, vsT]}
|
|
8
|
+
expectedOutOfSafeArea: [headbar, pageTitle]
|
|
9
|
+
elements:
|
|
10
|
+
- elementId: headbar
|
|
11
|
+
elementType: shape
|
|
12
|
+
kind: rect
|
|
13
|
+
bounds: [0, 0, 960, 46]
|
|
14
|
+
fill: "$deep"
|
|
15
|
+
- elementId: pageTitle
|
|
16
|
+
elementType: text
|
|
17
|
+
bounds: [60, 10, 700, 30]
|
|
18
|
+
content: {text: "对比标题:改进前后", style: "$title", color: "#FFFFFF", fontSize: 22}
|
|
19
|
+
- elementId: leftBox
|
|
20
|
+
elementType: shape
|
|
21
|
+
kind: roundRect
|
|
22
|
+
bounds: [60, 100, 390, 340]
|
|
23
|
+
fill: "$light"
|
|
24
|
+
- elementId: leftT
|
|
25
|
+
elementType: text
|
|
26
|
+
bounds: [84, 124, 350, 290]
|
|
27
|
+
content: {text: "改进前\n\n- 问题 1:描述\n- 问题 2:描述\n- 问题 3:描述", style: "$body"}
|
|
28
|
+
- elementId: rightBox
|
|
29
|
+
elementType: shape
|
|
30
|
+
kind: roundRect
|
|
31
|
+
bounds: [510, 100, 390, 340]
|
|
32
|
+
fill: "$primary"
|
|
33
|
+
- elementId: rightT
|
|
34
|
+
elementType: text
|
|
35
|
+
bounds: [534, 124, 350, 290]
|
|
36
|
+
content: {text: "改进后\n\n- 亮点 1:描述\n- 亮点 2:描述\n- 亮点 3:描述", style: "$body", color: "#FFFFFF"}
|
|
37
|
+
- elementId: vsBadge
|
|
38
|
+
elementType: shape
|
|
39
|
+
kind: ellipse
|
|
40
|
+
bounds: [452, 250, 56, 56]
|
|
41
|
+
fill: "$accent"
|
|
42
|
+
- elementId: vsT
|
|
43
|
+
elementType: text
|
|
44
|
+
bounds: [452, 262, 56, 30]
|
|
45
|
+
content: {text: "VS", style: "$h2", color: "#1F2937", align: center}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
pageType: content
|
|
2
|
+
# 内容页骨架:页眉标题栏 + 正文区(示例卡片)+ 页脚页码带
|
|
3
|
+
# 新页复制本母版:把 "3" 处示例卡片替换为实际内容;页眉/页脚元素保留(跨页一致性)
|
|
4
|
+
expectedOverlaps:
|
|
5
|
+
- {pair: [headbar, pageTitle]}
|
|
6
|
+
- {pair: [headbar, pageNo]}
|
|
7
|
+
- {pair: [cardA, cardAT]}
|
|
8
|
+
- {pair: [cardB, cardBT]}
|
|
9
|
+
- {pair: [cardC, cardCT]}
|
|
10
|
+
- {pair: [cardD, cardDT]}
|
|
11
|
+
expectedOutOfSafeArea:
|
|
12
|
+
- headbar # 页眉带满幅出血:模板标准形态(有意贴顶)
|
|
13
|
+
- pageTitle # 在页眉带内
|
|
14
|
+
- pageNo # 在页眉带内
|
|
15
|
+
elements:
|
|
16
|
+
- elementId: headbar
|
|
17
|
+
elementType: shape
|
|
18
|
+
kind: rect
|
|
19
|
+
bounds: [0, 0, 960, 46]
|
|
20
|
+
fill: "$deep"
|
|
21
|
+
- elementId: pageTitle
|
|
22
|
+
elementType: text
|
|
23
|
+
bounds: [60, 10, 700, 30]
|
|
24
|
+
content: {text: "本章标题:一句话点题", style: "$title", color: "#FFFFFF", fontSize: 22}
|
|
25
|
+
- elementId: pageNo
|
|
26
|
+
elementType: text
|
|
27
|
+
bounds: [888, 12, 52, 24]
|
|
28
|
+
content: {text: "2", style: "$label", color: "#9DB4D0", align: right}
|
|
29
|
+
- elementId: cardA
|
|
30
|
+
elementType: shape
|
|
31
|
+
kind: roundRect
|
|
32
|
+
bounds: [60, 80, 410, 180]
|
|
33
|
+
fill: "$light"
|
|
34
|
+
- elementId: cardAT
|
|
35
|
+
elementType: text
|
|
36
|
+
bounds: [84, 104, 360, 130]
|
|
37
|
+
content: {text: "要点标题(14pt)\n要点正文:说明性文字,语义断点显式换行。", style: "$body"}
|
|
38
|
+
- elementId: cardB
|
|
39
|
+
elementType: shape
|
|
40
|
+
kind: roundRect
|
|
41
|
+
bounds: [500, 80, 400, 180]
|
|
42
|
+
fill: "$light"
|
|
43
|
+
- elementId: cardBT
|
|
44
|
+
elementType: text
|
|
45
|
+
bounds: [524, 104, 350, 130]
|
|
46
|
+
content: {text: "要点标题(14pt)\n要点正文:说明性文字,语义断点显式换行。", style: "$body"}
|
|
47
|
+
- elementId: cardC
|
|
48
|
+
elementType: shape
|
|
49
|
+
kind: roundRect
|
|
50
|
+
bounds: [60, 292, 410, 180]
|
|
51
|
+
fill: "$bg"
|
|
52
|
+
line: {color: "#C9D8EA", width: 1}
|
|
53
|
+
- elementId: cardCT
|
|
54
|
+
elementType: text
|
|
55
|
+
bounds: [84, 316, 360, 130]
|
|
56
|
+
content: {text: "白底卡片要点标题\n正文:用于对比/补充信息。", style: "$body"}
|
|
57
|
+
- elementId: cardD
|
|
58
|
+
elementType: shape
|
|
59
|
+
kind: roundRect
|
|
60
|
+
bounds: [500, 292, 400, 180]
|
|
61
|
+
fill: "$bg"
|
|
62
|
+
line: {color: "#C9D8EA", width: 1}
|
|
63
|
+
- elementId: cardDT
|
|
64
|
+
elementType: text
|
|
65
|
+
bounds: [524, 316, 350, 130]
|
|
66
|
+
content: {text: "白底卡片要点标题\n正文:用于对比/补充信息。", style: "$body"}
|
|
67
|
+
- elementId: footerLine
|
|
68
|
+
elementType: line
|
|
69
|
+
points: [[60, 505], [900, 505]]
|
|
70
|
+
line: {color: "#C9D8EA", width: 1}
|
|
71
|
+
- elementId: footerLogo
|
|
72
|
+
elementType: shape
|
|
73
|
+
kind: rect
|
|
74
|
+
bounds: [60, 512, 8, 8]
|
|
75
|
+
fill: "$accent"
|
|
76
|
+
- elementId: footerText
|
|
77
|
+
elementType: text
|
|
78
|
+
bounds: [80, 508, 300, 16]
|
|
79
|
+
content: {text: "公司名称 · 项目名称", style: "$caption"}
|
|
80
|
+
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
pageType: cover
|
|
2
|
+
background: {type: solid, color: "$deep"}
|
|
3
|
+
safeArea: {top: 24, bottom: 24}
|
|
4
|
+
elements:
|
|
5
|
+
- elementId: brand
|
|
6
|
+
elementType: text
|
|
7
|
+
bounds: [60, 70, 300, 30]
|
|
8
|
+
content: {text: "BRAND · 品牌标识位", style: "$label", color: "#9DB4D0"}
|
|
9
|
+
- elementId: rule
|
|
10
|
+
elementType: line
|
|
11
|
+
points: [[60, 118], [900, 118]]
|
|
12
|
+
line: {color: "#9DB4D0", width: 1}
|
|
13
|
+
- elementId: title
|
|
14
|
+
elementType: text
|
|
15
|
+
bounds: [60, 170, 840, 110]
|
|
16
|
+
content: {text: "主标题:一句话说清楚汇报主题", style: "$title", color: "#FFFFFF", fontSize: 40, bold: true, lineHeight: 1.3}
|
|
17
|
+
- elementId: subtitle
|
|
18
|
+
elementType: text
|
|
19
|
+
bounds: [60, 300, 840, 36]
|
|
20
|
+
content: {text: "副标题:项目/报告名称、时间区间、核心结论", style: "$body", color: "#C9D8EA", fontSize: 16}
|
|
21
|
+
- elementId: accentLine
|
|
22
|
+
elementType: shape
|
|
23
|
+
kind: rect
|
|
24
|
+
bounds: [60, 350, 80, 6]
|
|
25
|
+
fill: "$accent"
|
|
26
|
+
- elementId: org
|
|
27
|
+
elementType: text
|
|
28
|
+
bounds: [60, 452, 700, 28]
|
|
29
|
+
content: {text: "组织/部门 | 汇报人 | 日期", style: "$label", color: "#9DB4D0"}
|
|
30
|
+
- elementId: decoDots
|
|
31
|
+
elementType: shape
|
|
32
|
+
kind: ellipse
|
|
33
|
+
bounds: [840, 452, 20, 20]
|
|
34
|
+
fill: "$accent"
|
|
35
|
+
- elementId: decoDot2
|
|
36
|
+
elementType: shape
|
|
37
|
+
kind: ellipse
|
|
38
|
+
bounds: [868, 452, 12, 12]
|
|
39
|
+
fill: "#4A6FA5"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
pageType: cover
|
|
2
|
+
# 结尾页母版:结论句 + 行动号召
|
|
3
|
+
background: {type: solid, color: "$deep"}
|
|
4
|
+
safeArea: {top: 24, bottom: 24}
|
|
5
|
+
expectedOverlaps:
|
|
6
|
+
- {pair: [action, actionT]}
|
|
7
|
+
elements:
|
|
8
|
+
- elementId: rule
|
|
9
|
+
elementType: line
|
|
10
|
+
points: [[60, 150], [900, 150]]
|
|
11
|
+
line: {color: "#9DB4D0", width: 1}
|
|
12
|
+
- elementId: thanks
|
|
13
|
+
elementType: text
|
|
14
|
+
bounds: [60, 190, 840, 70]
|
|
15
|
+
content: {text: "谢谢观看", style: "$title", color: "#FFFFFF", fontSize: 40, bold: true}
|
|
16
|
+
- elementId: takeaway
|
|
17
|
+
elementType: text
|
|
18
|
+
bounds: [60, 280, 840, 60]
|
|
19
|
+
content: {text: "核心结论一句:可执行建议 / 下一步行动", style: "$body", color: "#C9D8EA", fontSize: 16}
|
|
20
|
+
- elementId: action
|
|
21
|
+
elementType: shape
|
|
22
|
+
kind: rect
|
|
23
|
+
bounds: [60, 360, 240, 44]
|
|
24
|
+
fill: "$accent"
|
|
25
|
+
- elementId: actionT
|
|
26
|
+
elementType: text
|
|
27
|
+
bounds: [60, 372, 240, 24]
|
|
28
|
+
content: {text: "请联系:联系方式 / 讨论", style: "$label", color: "#1F2937", align: center}
|
|
29
|
+
- elementId: org
|
|
30
|
+
elementType: text
|
|
31
|
+
bounds: [60, 452, 840, 28]
|
|
32
|
+
content: {text: "组织/部门 | 汇报人 | 日期", style: "$label", color: "#9DB4D0"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
pageType: content
|
|
2
|
+
# 流程页母版:步骤横向流程(3-5 步;边框=箭头)
|
|
3
|
+
expectedOverlaps:
|
|
4
|
+
- {pair: [headbar, pageTitle]}
|
|
5
|
+
- {pair: [s1, s1T]}
|
|
6
|
+
- {pair: [s2, s2T]}
|
|
7
|
+
- {pair: [s3, s3T]}
|
|
8
|
+
- {pair: [s4, s4T]}
|
|
9
|
+
- {pair: [s1, a1]}
|
|
10
|
+
- {pair: [s2, a2]}
|
|
11
|
+
- {pair: [s3, a3]}
|
|
12
|
+
- {pair: [noteBar, noteT]}
|
|
13
|
+
expectedOutOfSafeArea: [headbar, pageTitle]
|
|
14
|
+
elements:
|
|
15
|
+
- elementId: headbar
|
|
16
|
+
elementType: shape
|
|
17
|
+
kind: rect
|
|
18
|
+
bounds: [0, 0, 960, 46]
|
|
19
|
+
fill: "$deep"
|
|
20
|
+
- elementId: pageTitle
|
|
21
|
+
elementType: text
|
|
22
|
+
bounds: [60, 10, 700, 30]
|
|
23
|
+
content: {text: "流程标题:从输入到输出", style: "$title", color: "#FFFFFF", fontSize: 22}
|
|
24
|
+
- elementId: s1
|
|
25
|
+
elementType: shape
|
|
26
|
+
kind: roundRect
|
|
27
|
+
bounds: [60, 100, 190, 150]
|
|
28
|
+
fill: "$light"
|
|
29
|
+
- elementId: s2
|
|
30
|
+
elementType: shape
|
|
31
|
+
kind: roundRect
|
|
32
|
+
bounds: [300, 100, 190, 150]
|
|
33
|
+
fill: "$light"
|
|
34
|
+
- elementId: s3
|
|
35
|
+
elementType: shape
|
|
36
|
+
kind: roundRect
|
|
37
|
+
bounds: [540, 100, 190, 150]
|
|
38
|
+
fill: "$light"
|
|
39
|
+
- elementId: s4
|
|
40
|
+
elementType: shape
|
|
41
|
+
kind: roundRect
|
|
42
|
+
bounds: [780, 100, 130, 150]
|
|
43
|
+
fill: "$accent"
|
|
44
|
+
- elementId: s1T
|
|
45
|
+
elementType: text
|
|
46
|
+
bounds: [76, 118, 160, 110]
|
|
47
|
+
content: {text: "步骤一(14pt)\n描述:输入与准备。", style: "$body", bold: true}
|
|
48
|
+
- elementId: s2T
|
|
49
|
+
elementType: text
|
|
50
|
+
bounds: [316, 118, 160, 110]
|
|
51
|
+
content: {text: "步骤二(14pt)\n描述:处理与转换。", style: "$body", bold: true}
|
|
52
|
+
- elementId: s3T
|
|
53
|
+
elementType: text
|
|
54
|
+
bounds: [556, 118, 160, 110]
|
|
55
|
+
content: {text: "步骤三(14pt)\n描述:验证与优化。", style: "$body", bold: true}
|
|
56
|
+
- elementId: s4T
|
|
57
|
+
elementType: text
|
|
58
|
+
bounds: [794, 118, 102, 110]
|
|
59
|
+
content: {text: "输出\n(12pt)", style: "$label", color: "#1F2937", bold: true}
|
|
60
|
+
- elementId: a1
|
|
61
|
+
elementType: line
|
|
62
|
+
points: [[252, 175], [298, 175]]
|
|
63
|
+
arrow: true
|
|
64
|
+
line: {color: "$primary", width: 2}
|
|
65
|
+
- elementId: a2
|
|
66
|
+
elementType: line
|
|
67
|
+
points: [[492, 175], [538, 175]]
|
|
68
|
+
arrow: true
|
|
69
|
+
line: {color: "$primary", width: 2}
|
|
70
|
+
- elementId: a3
|
|
71
|
+
elementType: line
|
|
72
|
+
points: [[732, 175], [778, 175]]
|
|
73
|
+
arrow: true
|
|
74
|
+
line: {color: "$primary", width: 2}
|
|
75
|
+
- elementId: detail
|
|
76
|
+
elementType: text
|
|
77
|
+
bounds: [60, 300, 840, 120]
|
|
78
|
+
content: {text: "细节说明区:每步的输入/输出/关键指标可在此展开。", style: "$body"}
|
|
79
|
+
- elementId: noteBar
|
|
80
|
+
elementType: shape
|
|
81
|
+
kind: rect
|
|
82
|
+
bounds: [60, 448, 840, 46]
|
|
83
|
+
fill: "$deep"
|
|
84
|
+
- elementId: noteT
|
|
85
|
+
elementType: text
|
|
86
|
+
bounds: [84, 458, 800, 26]
|
|
87
|
+
content: {text: "结论一句:流程串联的成果/价值", style: "$body", color: "#FFFFFF"}
|
|
Binary file
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
id: business-blue
|
|
2
|
+
name: 商务蓝
|
|
3
|
+
style: 企业汇报 / 严谨商务
|
|
4
|
+
scene: 经营分析、项目汇报、方案推介
|
|
5
|
+
desc: 浅底深蓝主色,8px 网格 + 模块化卡片,页眉标题栏 + 页脚页码带;适合信息层级多的严谨汇报。
|
|
6
|
+
words: 严谨 / 专业 / 稳重 / 信息密度高
|
|
7
|
+
colors: ["#1E4E8C", "#16355C", "#F59E0B", "#1F2937", "#EAF1F8"]
|
|
8
|
+
pages:
|
|
9
|
+
- pages/_cover.yaml
|
|
10
|
+
- pages/_content.yaml
|
|
11
|
+
- pages/_flow.yaml
|
|
12
|
+
- pages/_chart.yaml
|
|
13
|
+
- pages/_compare.yaml
|
|
14
|
+
- pages/_ending.yaml
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# 路演大字模板工作区骨架
|
|
2
|
+
version: 1
|
|
3
|
+
title: 未命名路演
|
|
4
|
+
size: [960, 540]
|
|
5
|
+
theme:
|
|
6
|
+
colors:
|
|
7
|
+
orange: "#E4572E" # 强调(唯一)
|
|
8
|
+
ink: "#1F2937" # 正文
|
|
9
|
+
bg: "#FFFFFF"
|
|
10
|
+
light: "#F2F3F5" # 浅衬底
|
|
11
|
+
gray: "#9AA1A9" # 次要
|
|
12
|
+
textStyles:
|
|
13
|
+
title: {fontSize: 44, color: "$ink", bold: true, lineHeight: 1.2}
|
|
14
|
+
h2: {fontSize: 24, color: "$ink", bold: true}
|
|
15
|
+
body: {fontSize: 18, color: "$ink", lineHeight: 1.5}
|
|
16
|
+
label: {fontSize: 14, color: "$ink"}
|
|
17
|
+
caption: {fontSize: 13, color: "$gray"}
|
|
18
|
+
safeArea: {top: 16, bottom: 16}
|
|
19
|
+
grid: {base: 8}
|
|
20
|
+
minFontSize: 12
|
|
21
|
+
pages:
|
|
22
|
+
- pages/_cover.yaml
|
|
23
|
+
- pages/_content.yaml
|