@topmindspace/tms-skills 0.1.15 → 0.1.17
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/CHANGELOG.md +26 -0
- package/README.en.md +3 -3
- package/README.md +3 -3
- package/package.json +1 -1
- package/top-ppt-html/README.en.md +2 -2
- package/top-ppt-html/README.md +1 -1
- package/top-ppt-html/SKILL.md +3 -3
- package/top-ppt-html/assets/examples/2026-09-09-architecture-graphite-dark.html +13 -12
- package/top-ppt-html/assets/examples/2026-09-09-presentation-business-blue.html +13 -12
- package/top-ppt-html/assets/examples/2026-09-09-research-mckinsey.html +13 -12
- package/top-ppt-html/assets/examples/2026-09-26-topmind-tms-skills-showcase.html +75 -40
- package/top-ppt-html/assets/examples/2026-09-26-topmind-tms-skills-showcase.model.json +82 -37
- package/top-ppt-html/assets/pptx-export.js +5 -5
- package/top-ppt-html/assets/showcase/showcase-charts.png +0 -0
- package/top-ppt-html/assets/showcase/showcase-cover.png +0 -0
- package/top-ppt-html/assets/showcase/showcase-gates.png +0 -0
- package/top-ppt-html/assets/showcase/showcase-modes.png +0 -0
- package/top-ppt-html/assets/showcase/showcase-positioning.png +0 -0
- package/top-ppt-html/assets/showcase/showcase-split.png +0 -0
- package/top-ppt-html/assets/showcase/showcase-toolbar.png +0 -0
- package/top-ppt-html/assets/showcase/style-business-blue-cover.png +0 -0
- package/top-ppt-html/assets/showcase/style-graphite-cover.png +0 -0
- package/top-ppt-html/assets/showcase/style-mckinsey-cover.png +0 -0
- package/top-ppt-html/assets/style-gallery.html +1 -1
- package/top-ppt-html/assets/templates/architecture.html +14 -13
- package/top-ppt-html/assets/templates/engine.css +7 -6
- package/top-ppt-html/assets/templates/presentation.html +14 -13
- package/top-ppt-html/assets/templates/research.html +14 -13
- package/top-ppt-html/assets/theme-overview-architecture.png +0 -0
- package/top-ppt-html/assets/theme-overview-research.png +0 -0
- package/top-ppt-html/assets/theme-overview.png +0 -0
- package/top-ppt-html/package-lock.json +2 -2
- package/top-ppt-html/package.json +1 -1
- package/top-ppt-html/references/components-atoms.md +3 -3
- package/top-ppt-html/references/content-rules.md +1 -1
- package/top-ppt-html/references/design-system.md +2 -1
- package/top-ppt-html/references/pptx-export.md +1 -1
- package/top-ppt-html/scripts/build_pptx.js +5 -5
- package/top-ppt-html/scripts/capture_showcase_pages.js +145 -0
- package/top-ppt-html/scripts/layout-constants.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,29 @@
|
|
|
1
|
+
## [0.1.17] - 2026-09-26
|
|
2
|
+
|
|
3
|
+
### Release
|
|
4
|
+
- Republish of the **0.1.16 craft** (结论条去左轨 · anti-AI-flavor · Showcase 全页刷新). npm registry left `0.1.16` in a staged/conflict state (`E409 previously staged`); content identical to the `v0.1.16` GitHub Release / docs Pages source.
|
|
5
|
+
|
|
6
|
+
### 红线未动
|
|
7
|
+
反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版、motion=none、结论条无「So what」标签、无左侧 accent 装饰轨。
|
|
8
|
+
|
|
9
|
+
## [0.1.16] - 2026-09-26
|
|
10
|
+
|
|
11
|
+
### Craft · 结论条去 AI 味:取消左侧 accent 装饰轨
|
|
12
|
+
|
|
13
|
+
#### 设计决策(硬原则)
|
|
14
|
+
- **结论条无 left rail**:用户明确拒绝结论条左侧色条为 AI-flavored chrome。`.sowhat` / PPTX `soWhatBar()` 改为 **MD3 tonal surface 满铺**(`accent-soft` + 细描边)+ 舒适字阶 / `line-height:1.65` / 内边距 `--sp-5`/`--sp-6`;**禁止**竖色条、霓虹边、装饰 chip 当强调。
|
|
15
|
+
- 写入 `design-system` §去 AI 味、`content-rules`、`components-atoms`、`SKILL`、`layout-constants.aiFlavor.visual.forbidConclusionLeftRail`。
|
|
16
|
+
- 同类收口 `.note` 同步去掉左轨,改 tonal 细描边;`.flagbar`(待核实)保留细强调(功能态,非结论装饰)。
|
|
17
|
+
|
|
18
|
+
#### 深度同步
|
|
19
|
+
- 引擎:`engine.css` · `build_pptx.js` · `pptx-export.js` · `style-gallery` 预览条。
|
|
20
|
+
- 样张 / 模板 / `docs/showcase.html`:全量 `sync_runtime`;Showcase 全页刷新(修 s1「要点一/二」占位 → 三主张卡;s2/s4 补结论条;「so-what」用户文案 →「结论条」;meta → v0.1.16)。
|
|
21
|
+
- 截图:`docs/showcase/topmind-showcase/*` + `assets/showcase/*` + theme-overview 重截。
|
|
22
|
+
- 版本对齐 **0.1.16**(根 + 技能 package / SKILL / README / PUBLISHING / CHANGELOG)。
|
|
23
|
+
|
|
24
|
+
### 红线未动
|
|
25
|
+
反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版、motion=none、结论条无「So what」标签、大纲 >8 → 2col。
|
|
26
|
+
|
|
1
27
|
## [0.1.15] - 2026-09-26
|
|
2
28
|
|
|
3
29
|
### Release
|
package/README.en.md
CHANGED
|
@@ -76,9 +76,9 @@ See [top-ppt-html/README.md](./top-ppt-html/README.md) and [SKILL.md](./top-ppt-
|
|
|
76
76
|
|
|
77
77
|
| Skill | Version | What it does |
|
|
78
78
|
|-------|---------|--------------|
|
|
79
|
-
| [`top-ppt-html`](./top-ppt-html/) | **0.1.
|
|
79
|
+
| [`top-ppt-html`](./top-ppt-html/) | **0.1.17** | Formal business decks: paginated HTML + editable 16:9 PPTX; dual delivery · MD3-inspired density; 3 modes × 9 styles; strict 0/0 |
|
|
80
80
|
|
|
81
|
-
Installer [`@topmindspace/tms-skills`](https://www.npmjs.com/package/@topmindspace/tms-skills) is also **0.1.
|
|
81
|
+
Installer [`@topmindspace/tms-skills`](https://www.npmjs.com/package/@topmindspace/tms-skills) is also **0.1.17** (whole-repo same-tag releases).
|
|
82
82
|
|
|
83
83
|
## Install
|
|
84
84
|
|
|
@@ -88,7 +88,7 @@ Installer [`@topmindspace/tms-skills`](https://www.npmjs.com/package/@topmindspa
|
|
|
88
88
|
npx @topmindspace/tms-skills list
|
|
89
89
|
npx @topmindspace/tms-skills install top-ppt-html
|
|
90
90
|
npx @topmindspace/tms-skills install top-ppt-html --to ./.claude/skills
|
|
91
|
-
npx @topmindspace/tms-skills@0.1.
|
|
91
|
+
npx @topmindspace/tms-skills@0.1.17 install top-ppt-html # pin
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
```bash
|
package/README.md
CHANGED
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
|
|
75
75
|
| 技能 | 版本 | 做什么 |
|
|
76
76
|
|------|------|--------|
|
|
77
|
-
| [`top-ppt-html`](./top-ppt-html/) | **0.1.
|
|
77
|
+
| [`top-ppt-html`](./top-ppt-html/) | **0.1.17** | 正式商务演示:HTML 可翻页 + 16:9 可编辑 PPTX;双交付 · MD3 密度克制;三模式 × 九风格;strict 0/0 |
|
|
78
78
|
|
|
79
|
-
安装器 [`@topmindspace/tms-skills`](https://www.npmjs.com/package/@topmindspace/tms-skills) 同为 **0.1.
|
|
79
|
+
安装器 [`@topmindspace/tms-skills`](https://www.npmjs.com/package/@topmindspace/tms-skills) 同为 **0.1.17**(整仓同 tag 发版)。
|
|
80
80
|
|
|
81
81
|
## 安装
|
|
82
82
|
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
npx @topmindspace/tms-skills list
|
|
87
87
|
npx @topmindspace/tms-skills install top-ppt-html
|
|
88
88
|
npx @topmindspace/tms-skills install top-ppt-html --to ./.claude/skills
|
|
89
|
-
npx @topmindspace/tms-skills@0.1.
|
|
89
|
+
npx @topmindspace/tms-skills@0.1.17 install top-ppt-html # 钉版本
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
```bash
|
package/package.json
CHANGED
|
@@ -18,7 +18,7 @@ Plenty of PPT skills exist. This one is for **formal business presenting**: clea
|
|
|
18
18
|
</p>
|
|
19
19
|
|
|
20
20
|
- Skill id: `top-ppt-html`; brand: **TopPPT HTML**
|
|
21
|
-
- Version: **v0.1.
|
|
21
|
+
- Version: **v0.1.17** (same tag as `@topmindspace/tms-skills@0.1.17`)
|
|
22
22
|
- **Agent entry**: `SKILL.md` → `references/playbook.md` (L1) → L2 on demand
|
|
23
23
|
- **Human maintainers**: this README (install / commands / layout); do not treat it as the generation spec
|
|
24
24
|
|
|
@@ -73,7 +73,7 @@ Also: arrow-key paging; **Esc** closes modals. After style/theme change, re-run
|
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
75
|
npx @topmindspace/tms-skills install top-ppt-html
|
|
76
|
-
npx @topmindspace/tms-skills@0.1.
|
|
76
|
+
npx @topmindspace/tms-skills@0.1.17 install top-ppt-html
|
|
77
77
|
npx github:topmindspace/tms-skills install top-ppt-html
|
|
78
78
|
```
|
|
79
79
|
|
package/top-ppt-html/README.md
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
</p>
|
|
19
19
|
|
|
20
20
|
- 技能标识:`top-ppt-html`;品牌名:**TopPPT HTML**
|
|
21
|
-
- 版本:**v0.1.
|
|
21
|
+
- 版本:**v0.1.17**(与 `@topmindspace/tms-skills@0.1.17` 同 tag)
|
|
22
22
|
- **智能体入口**:`SKILL.md` → `references/playbook.md`(L1)→ L2 按需
|
|
23
23
|
- **人类维护者**:本 README(安装 / 命令 / 目录);勿把本文件当生成规范
|
|
24
24
|
|
package/top-ppt-html/SKILL.md
CHANGED
|
@@ -4,7 +4,7 @@ description: "Use when 用户要做报告、演示、汇报、PPT、slides、dec
|
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: "Python 3 stdlib for HTML generation; Node >=18 + pptxgenjs for PPTX; optional playwright for browser regression / theme captures."
|
|
6
6
|
metadata:
|
|
7
|
-
version: "0.1.
|
|
7
|
+
version: "0.1.17"
|
|
8
8
|
author: TopMindspace
|
|
9
9
|
---
|
|
10
10
|
# TopPPT HTML
|
|
@@ -102,7 +102,7 @@ metadata:
|
|
|
102
102
|
1. **单文件零外链**——无 CDN/外部字体/外部图片,图形一律内联 SVG;`<img src>` 仅 `data:` 或相对路径且必带 `alt`(单图 ≤1.5MB、全篇 ≤8MB);无素材图不留空不省略,用配图占位(`components.md` §11c-3)。
|
|
103
103
|
2. **模式先定后写**——从对应模式模板起步;`data-mode` = `REPORT_MODEL.mode`,页面无模式切换;MD3 映射;PPTX 字号走三模式独立比例尺。
|
|
104
104
|
3. **亮暗双主题一致**——CSS 变量整块换肤 + header 切换 + 文件级记忆;`REPORT_MODEL.theme` 与页面一致,PPTX 同主题导出;强调带只用 accent 家族,**末页禁 `band--deep`**。
|
|
105
|
-
4. **每页一屏 + 高度稳定**——`section.band` ≥ 一屏;主内容不得溢出画布或压进结论条/注释带。放不下按「重构承载 → 拆页/分章 → 换布局形态 → 有限缩字号」(`containers.overflowRule`);**禁止**静默截断或为疏朗删结论条/证据。大纲 **>8 条**用 `.agenda--2col`(两列/两排)。结论条 = MD3
|
|
105
|
+
4. **每页一屏 + 高度稳定**——`section.band` ≥ 一屏;主内容不得溢出画布或压进结论条/注释带。放不下按「重构承载 → 拆页/分章 → 换布局形态 → 有限缩字号」(`containers.overflowRule`);**禁止**静默截断或为疏朗删结论条/证据。大纲 **>8 条**用 `.agenda--2col`(两列/两排)。结论条 = MD3 tonal surface(无「So what」标签、**无左侧 accent 轨**);要点卡/关键列表按 `icons.md` 克制取用图标。
|
|
106
106
|
5. **PPT 式翻页 + 骨架固定**——`section.band` 即一页;方向键翻页、页码可点;Agenda 第二页(arch 内容页 ≤4 可省);页头只留 eyebrow + 标题 + 可选导语,页脚全文一个;页头页脚之外不加装饰。
|
|
107
107
|
6. **标题与字号**——主标题粗体;research=结论句(≥12 字);**presentation=主张/行动句**(禁话题标签);字号随模式,`clamp()`,图表不缩水。
|
|
108
108
|
7. **组合版式 + 细节保全**——默认一页 = 主件 + 从件 + 注释层(矩阵 playbook §四);先判定决策必需信息再定形态,**禁砍口径列/时间列/维度**;密度 L/M/H 禁连续 3 页同档;同一版式不连用超 2 页(扩展签名可 3 页)。
|
|
@@ -132,7 +132,7 @@ metadata:
|
|
|
132
132
|
|
|
133
133
|
## 版本口径
|
|
134
134
|
|
|
135
|
-
包 semver(现 0.1.
|
|
135
|
+
包 semver(现 0.1.17)≠ schema 线(layout-constants / model-schema,现 `0.1`);patch 不抬 schema。
|
|
136
136
|
|
|
137
137
|
## 环境依赖
|
|
138
138
|
|
|
@@ -505,23 +505,24 @@ tbody tr:hover{background:var(--surface-1)}
|
|
|
505
505
|
td strong{color:var(--text);font-weight:600}
|
|
506
506
|
td.k{color:var(--text);font-weight:500;white-space:nowrap}
|
|
507
507
|
td.num{font-variant-numeric:tabular-nums}
|
|
508
|
-
/* ── 结论条(MD3 tonal
|
|
508
|
+
/* ── 结论条(MD3 tonal surface · 本页重点收口;默认不显示「So what」标签) ──
|
|
509
|
+
去 AI 味硬规则:禁止左侧 accent 装饰轨 / 竖条 / chip 堆;强调靠 soft 满铺 + 字重/行高/呼吸间距。
|
|
509
510
|
与上方主内容呼吸间距 ≥ --sp-6;flex:none 防止被主内容挤压;一屏页不得压进注释带。 */
|
|
510
511
|
.band>.wrap:has(>.sowhat),.band>.wrap:has(>.note){display:flex;flex-direction:column}
|
|
511
|
-
.sowhat{display:flex;align-items:
|
|
512
|
+
.sowhat{display:flex;align-items:center;gap:var(--sp-3);flex:none;
|
|
512
513
|
margin-top:clamp(28px,3.6vh,48px); /* ≥ --sp-6 量级,修「贴底」 */
|
|
513
|
-
padding:var(--sp-
|
|
514
|
-
border-
|
|
514
|
+
padding:var(--sp-5) var(--sp-6);background:var(--accent-soft);border:1px solid var(--accent-soft-2);
|
|
515
|
+
border-radius:var(--r-md);max-width:100%}
|
|
515
516
|
.sowhat__k{display:none}
|
|
516
517
|
.sowhat--labeled .sowhat__k{display:inline;font-size:var(--fs-xs);font-weight:700;letter-spacing:.1em;
|
|
517
518
|
text-transform:uppercase;color:var(--accent-text);white-space:nowrap;flex:none;padding-top:.15em}
|
|
518
519
|
.sowhat__v,.sowhat>:not(.sowhat__k){font-size:var(--fs-h3);color:var(--text);font-weight:var(--fw-title);
|
|
519
|
-
line-height:1.
|
|
520
|
+
line-height:1.65;flex:1;min-width:0}
|
|
520
521
|
.sowhat__v p,.sowhat__stack{margin:0}
|
|
521
522
|
.sowhat__stack{display:flex;flex-direction:column;gap:var(--sp-2)}
|
|
522
523
|
|
|
523
524
|
.note{display:flex;gap:var(--sp-4);padding:clamp(20px,2vw,28px);border-radius:var(--r-lg);
|
|
524
|
-
background:var(--accent-soft);border
|
|
525
|
+
background:var(--accent-soft);border:1px solid var(--accent-soft-2)}
|
|
525
526
|
.note__ico{width:26px;height:26px;flex:none;border-radius:50%;background:var(--accent);
|
|
526
527
|
color:var(--accent-on);display:grid;place-items:center;font-size:13px;font-weight:700;font-style:normal}
|
|
527
528
|
.note__t{font-size:var(--fs-h3);font-weight:600;color:var(--text);margin-bottom:6px}
|
|
@@ -1992,7 +1993,7 @@ window.REPORT_MODEL = {
|
|
|
1992
1993
|
|
|
1993
1994
|
/* __TOPPPT_RUNTIME_START__ */
|
|
1994
1995
|
/* ══ PPTX 导出运行时(assets/pptx-export.js 的内联副本 · 由 scripts/sync_runtime.py 注入,禁止手改) ══ */
|
|
1995
|
-
/* __TOPPPT_RUNTIME_SHA__:
|
|
1996
|
+
/* __TOPPPT_RUNTIME_SHA__:57dbfb4f2b594c45 */
|
|
1996
1997
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
1997
1998
|
* TopPPT HTML· 浏览器端 PPTX 预览运行时
|
|
1998
1999
|
* 零依赖、随报告单文件分发;OOXML 序列化器(仅供预览,页面不导出文件)。
|
|
@@ -2489,12 +2490,12 @@ function table(x, y, w, colW, rows, S, opts) {
|
|
|
2489
2490
|
function soWhatBar(sh, text, S) {
|
|
2490
2491
|
var R = (typeof regionOf === 'function') ? regionOf('exhibit', 'annotation')
|
|
2491
2492
|
: { x: MX, y: PT.exhibit.soWhatY, w: CW, h: 0.62 };
|
|
2492
|
-
/* MD3
|
|
2493
|
-
var
|
|
2494
|
-
var
|
|
2493
|
+
/* MD3 结论条:tonal soft 满铺 + 舒适字阶;禁止左 accent 装饰轨(anti-AI-flavor) */
|
|
2494
|
+
var padX = 0.28, padY = 0.10;
|
|
2495
|
+
var bodyW = Math.max(2.5, R.w - padX * 2);
|
|
2496
|
+
var fzB = fitFont([String(text || '')], bodyW, R.h - padY * 2, { max: 15, gapFactor: 0.2, maxShrinkSteps: 3 });
|
|
2495
2497
|
sh.push(shape('rect', R.x, R.y, R.w, R.h, S.soft));
|
|
2496
|
-
sh.push(
|
|
2497
|
-
sh.push(txSp(R.x + 0.22, R.y + 0.06, R.w - 0.44, R.h - 0.12,
|
|
2498
|
+
sh.push(txSp(R.x + padX, R.y + padY, R.w - padX * 2, R.h - padY * 2,
|
|
2498
2499
|
[[{ t: String(text || ''), sz: fzB, b: 1, col: S.ink, font: S.font }]], { anchor: 'ctr' }));
|
|
2499
2500
|
}
|
|
2500
2501
|
function footnoteLine(sh, text, S) {
|
|
@@ -503,23 +503,24 @@ tbody tr:hover{background:var(--surface-1)}
|
|
|
503
503
|
td strong{color:var(--text);font-weight:600}
|
|
504
504
|
td.k{color:var(--text);font-weight:500;white-space:nowrap}
|
|
505
505
|
td.num{font-variant-numeric:tabular-nums}
|
|
506
|
-
/* ── 结论条(MD3 tonal
|
|
506
|
+
/* ── 结论条(MD3 tonal surface · 本页重点收口;默认不显示「So what」标签) ──
|
|
507
|
+
去 AI 味硬规则:禁止左侧 accent 装饰轨 / 竖条 / chip 堆;强调靠 soft 满铺 + 字重/行高/呼吸间距。
|
|
507
508
|
与上方主内容呼吸间距 ≥ --sp-6;flex:none 防止被主内容挤压;一屏页不得压进注释带。 */
|
|
508
509
|
.band>.wrap:has(>.sowhat),.band>.wrap:has(>.note){display:flex;flex-direction:column}
|
|
509
|
-
.sowhat{display:flex;align-items:
|
|
510
|
+
.sowhat{display:flex;align-items:center;gap:var(--sp-3);flex:none;
|
|
510
511
|
margin-top:clamp(28px,3.6vh,48px); /* ≥ --sp-6 量级,修「贴底」 */
|
|
511
|
-
padding:var(--sp-
|
|
512
|
-
border-
|
|
512
|
+
padding:var(--sp-5) var(--sp-6);background:var(--accent-soft);border:1px solid var(--accent-soft-2);
|
|
513
|
+
border-radius:var(--r-md);max-width:100%}
|
|
513
514
|
.sowhat__k{display:none}
|
|
514
515
|
.sowhat--labeled .sowhat__k{display:inline;font-size:var(--fs-xs);font-weight:700;letter-spacing:.1em;
|
|
515
516
|
text-transform:uppercase;color:var(--accent-text);white-space:nowrap;flex:none;padding-top:.15em}
|
|
516
517
|
.sowhat__v,.sowhat>:not(.sowhat__k){font-size:var(--fs-h3);color:var(--text);font-weight:var(--fw-title);
|
|
517
|
-
line-height:1.
|
|
518
|
+
line-height:1.65;flex:1;min-width:0}
|
|
518
519
|
.sowhat__v p,.sowhat__stack{margin:0}
|
|
519
520
|
.sowhat__stack{display:flex;flex-direction:column;gap:var(--sp-2)}
|
|
520
521
|
|
|
521
522
|
.note{display:flex;gap:var(--sp-4);padding:clamp(20px,2vw,28px);border-radius:var(--r-lg);
|
|
522
|
-
background:var(--accent-soft);border
|
|
523
|
+
background:var(--accent-soft);border:1px solid var(--accent-soft-2)}
|
|
523
524
|
.note__ico{width:26px;height:26px;flex:none;border-radius:50%;background:var(--accent);
|
|
524
525
|
color:var(--accent-on);display:grid;place-items:center;font-size:13px;font-weight:700;font-style:normal}
|
|
525
526
|
.note__t{font-size:var(--fs-h3);font-weight:600;color:var(--text);margin-bottom:6px}
|
|
@@ -2390,7 +2391,7 @@ window.REPORT_MODEL = {
|
|
|
2390
2391
|
|
|
2391
2392
|
/* __TOPPPT_RUNTIME_START__ */
|
|
2392
2393
|
/* ══ PPTX 导出运行时(assets/pptx-export.js 的内联副本 · 由 scripts/sync_runtime.py 注入,禁止手改) ══ */
|
|
2393
|
-
/* __TOPPPT_RUNTIME_SHA__:
|
|
2394
|
+
/* __TOPPPT_RUNTIME_SHA__:57dbfb4f2b594c45 */
|
|
2394
2395
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
2395
2396
|
* TopPPT HTML· 浏览器端 PPTX 预览运行时
|
|
2396
2397
|
* 零依赖、随报告单文件分发;OOXML 序列化器(仅供预览,页面不导出文件)。
|
|
@@ -2887,12 +2888,12 @@ function table(x, y, w, colW, rows, S, opts) {
|
|
|
2887
2888
|
function soWhatBar(sh, text, S) {
|
|
2888
2889
|
var R = (typeof regionOf === 'function') ? regionOf('exhibit', 'annotation')
|
|
2889
2890
|
: { x: MX, y: PT.exhibit.soWhatY, w: CW, h: 0.62 };
|
|
2890
|
-
/* MD3
|
|
2891
|
-
var
|
|
2892
|
-
var
|
|
2891
|
+
/* MD3 结论条:tonal soft 满铺 + 舒适字阶;禁止左 accent 装饰轨(anti-AI-flavor) */
|
|
2892
|
+
var padX = 0.28, padY = 0.10;
|
|
2893
|
+
var bodyW = Math.max(2.5, R.w - padX * 2);
|
|
2894
|
+
var fzB = fitFont([String(text || '')], bodyW, R.h - padY * 2, { max: 15, gapFactor: 0.2, maxShrinkSteps: 3 });
|
|
2893
2895
|
sh.push(shape('rect', R.x, R.y, R.w, R.h, S.soft));
|
|
2894
|
-
sh.push(
|
|
2895
|
-
sh.push(txSp(R.x + 0.22, R.y + 0.06, R.w - 0.44, R.h - 0.12,
|
|
2896
|
+
sh.push(txSp(R.x + padX, R.y + padY, R.w - padX * 2, R.h - padY * 2,
|
|
2896
2897
|
[[{ t: String(text || ''), sz: fzB, b: 1, col: S.ink, font: S.font }]], { anchor: 'ctr' }));
|
|
2897
2898
|
}
|
|
2898
2899
|
function footnoteLine(sh, text, S) {
|
|
@@ -506,23 +506,24 @@ tbody tr:hover{background:var(--surface-1)}
|
|
|
506
506
|
td strong{color:var(--text);font-weight:600}
|
|
507
507
|
td.k{color:var(--text);font-weight:500;white-space:nowrap}
|
|
508
508
|
td.num{font-variant-numeric:tabular-nums}
|
|
509
|
-
/* ── 结论条(MD3 tonal
|
|
509
|
+
/* ── 结论条(MD3 tonal surface · 本页重点收口;默认不显示「So what」标签) ──
|
|
510
|
+
去 AI 味硬规则:禁止左侧 accent 装饰轨 / 竖条 / chip 堆;强调靠 soft 满铺 + 字重/行高/呼吸间距。
|
|
510
511
|
与上方主内容呼吸间距 ≥ --sp-6;flex:none 防止被主内容挤压;一屏页不得压进注释带。 */
|
|
511
512
|
.band>.wrap:has(>.sowhat),.band>.wrap:has(>.note){display:flex;flex-direction:column}
|
|
512
|
-
.sowhat{display:flex;align-items:
|
|
513
|
+
.sowhat{display:flex;align-items:center;gap:var(--sp-3);flex:none;
|
|
513
514
|
margin-top:clamp(28px,3.6vh,48px); /* ≥ --sp-6 量级,修「贴底」 */
|
|
514
|
-
padding:var(--sp-
|
|
515
|
-
border-
|
|
515
|
+
padding:var(--sp-5) var(--sp-6);background:var(--accent-soft);border:1px solid var(--accent-soft-2);
|
|
516
|
+
border-radius:var(--r-md);max-width:100%}
|
|
516
517
|
.sowhat__k{display:none}
|
|
517
518
|
.sowhat--labeled .sowhat__k{display:inline;font-size:var(--fs-xs);font-weight:700;letter-spacing:.1em;
|
|
518
519
|
text-transform:uppercase;color:var(--accent-text);white-space:nowrap;flex:none;padding-top:.15em}
|
|
519
520
|
.sowhat__v,.sowhat>:not(.sowhat__k){font-size:var(--fs-h3);color:var(--text);font-weight:var(--fw-title);
|
|
520
|
-
line-height:1.
|
|
521
|
+
line-height:1.65;flex:1;min-width:0}
|
|
521
522
|
.sowhat__v p,.sowhat__stack{margin:0}
|
|
522
523
|
.sowhat__stack{display:flex;flex-direction:column;gap:var(--sp-2)}
|
|
523
524
|
|
|
524
525
|
.note{display:flex;gap:var(--sp-4);padding:clamp(20px,2vw,28px);border-radius:var(--r-lg);
|
|
525
|
-
background:var(--accent-soft);border
|
|
526
|
+
background:var(--accent-soft);border:1px solid var(--accent-soft-2)}
|
|
526
527
|
.note__ico{width:26px;height:26px;flex:none;border-radius:50%;background:var(--accent);
|
|
527
528
|
color:var(--accent-on);display:grid;place-items:center;font-size:13px;font-weight:700;font-style:normal}
|
|
528
529
|
.note__t{font-size:var(--fs-h3);font-weight:600;color:var(--text);margin-bottom:6px}
|
|
@@ -3576,7 +3577,7 @@ window.REPORT_MODEL = {
|
|
|
3576
3577
|
|
|
3577
3578
|
/* __TOPPPT_RUNTIME_START__ */
|
|
3578
3579
|
/* ══ PPTX 导出运行时(assets/pptx-export.js 的内联副本 · 由 scripts/sync_runtime.py 注入,禁止手改) ══ */
|
|
3579
|
-
/* __TOPPPT_RUNTIME_SHA__:
|
|
3580
|
+
/* __TOPPPT_RUNTIME_SHA__:57dbfb4f2b594c45 */
|
|
3580
3581
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
3581
3582
|
* TopPPT HTML· 浏览器端 PPTX 预览运行时
|
|
3582
3583
|
* 零依赖、随报告单文件分发;OOXML 序列化器(仅供预览,页面不导出文件)。
|
|
@@ -4073,12 +4074,12 @@ function table(x, y, w, colW, rows, S, opts) {
|
|
|
4073
4074
|
function soWhatBar(sh, text, S) {
|
|
4074
4075
|
var R = (typeof regionOf === 'function') ? regionOf('exhibit', 'annotation')
|
|
4075
4076
|
: { x: MX, y: PT.exhibit.soWhatY, w: CW, h: 0.62 };
|
|
4076
|
-
/* MD3
|
|
4077
|
-
var
|
|
4078
|
-
var
|
|
4077
|
+
/* MD3 结论条:tonal soft 满铺 + 舒适字阶;禁止左 accent 装饰轨(anti-AI-flavor) */
|
|
4078
|
+
var padX = 0.28, padY = 0.10;
|
|
4079
|
+
var bodyW = Math.max(2.5, R.w - padX * 2);
|
|
4080
|
+
var fzB = fitFont([String(text || '')], bodyW, R.h - padY * 2, { max: 15, gapFactor: 0.2, maxShrinkSteps: 3 });
|
|
4079
4081
|
sh.push(shape('rect', R.x, R.y, R.w, R.h, S.soft));
|
|
4080
|
-
sh.push(
|
|
4081
|
-
sh.push(txSp(R.x + 0.22, R.y + 0.06, R.w - 0.44, R.h - 0.12,
|
|
4082
|
+
sh.push(txSp(R.x + padX, R.y + padY, R.w - padX * 2, R.h - padY * 2,
|
|
4082
4083
|
[[{ t: String(text || ''), sz: fzB, b: 1, col: S.ink, font: S.font }]], { anchor: 'ctr' }));
|
|
4083
4084
|
}
|
|
4084
4085
|
function footnoteLine(sh, text, S) {
|
|
@@ -503,23 +503,24 @@ tbody tr:hover{background:var(--surface-1)}
|
|
|
503
503
|
td strong{color:var(--text);font-weight:600}
|
|
504
504
|
td.k{color:var(--text);font-weight:500;white-space:nowrap}
|
|
505
505
|
td.num{font-variant-numeric:tabular-nums}
|
|
506
|
-
/* ── 结论条(MD3 tonal
|
|
506
|
+
/* ── 结论条(MD3 tonal surface · 本页重点收口;默认不显示「So what」标签) ──
|
|
507
|
+
去 AI 味硬规则:禁止左侧 accent 装饰轨 / 竖条 / chip 堆;强调靠 soft 满铺 + 字重/行高/呼吸间距。
|
|
507
508
|
与上方主内容呼吸间距 ≥ --sp-6;flex:none 防止被主内容挤压;一屏页不得压进注释带。 */
|
|
508
509
|
.band>.wrap:has(>.sowhat),.band>.wrap:has(>.note){display:flex;flex-direction:column}
|
|
509
|
-
.sowhat{display:flex;align-items:
|
|
510
|
+
.sowhat{display:flex;align-items:center;gap:var(--sp-3);flex:none;
|
|
510
511
|
margin-top:clamp(28px,3.6vh,48px); /* ≥ --sp-6 量级,修「贴底」 */
|
|
511
|
-
padding:var(--sp-
|
|
512
|
-
border-
|
|
512
|
+
padding:var(--sp-5) var(--sp-6);background:var(--accent-soft);border:1px solid var(--accent-soft-2);
|
|
513
|
+
border-radius:var(--r-md);max-width:100%}
|
|
513
514
|
.sowhat__k{display:none}
|
|
514
515
|
.sowhat--labeled .sowhat__k{display:inline;font-size:var(--fs-xs);font-weight:700;letter-spacing:.1em;
|
|
515
516
|
text-transform:uppercase;color:var(--accent-text);white-space:nowrap;flex:none;padding-top:.15em}
|
|
516
517
|
.sowhat__v,.sowhat>:not(.sowhat__k){font-size:var(--fs-h3);color:var(--text);font-weight:var(--fw-title);
|
|
517
|
-
line-height:1.
|
|
518
|
+
line-height:1.65;flex:1;min-width:0}
|
|
518
519
|
.sowhat__v p,.sowhat__stack{margin:0}
|
|
519
520
|
.sowhat__stack{display:flex;flex-direction:column;gap:var(--sp-2)}
|
|
520
521
|
|
|
521
522
|
.note{display:flex;gap:var(--sp-4);padding:clamp(20px,2vw,28px);border-radius:var(--r-lg);
|
|
522
|
-
background:var(--accent-soft);border
|
|
523
|
+
background:var(--accent-soft);border:1px solid var(--accent-soft-2)}
|
|
523
524
|
.note__ico{width:26px;height:26px;flex:none;border-radius:50%;background:var(--accent);
|
|
524
525
|
color:var(--accent-on);display:grid;place-items:center;font-size:13px;font-weight:700;font-style:normal}
|
|
525
526
|
.note__t{font-size:var(--fs-h3);font-weight:600;color:var(--text);margin-bottom:6px}
|
|
@@ -957,7 +958,7 @@ background:var(--surface-2);border-radius:6px;padding:2px 7px;color:var(--text)}
|
|
|
957
958
|
<section class="band band--fit" id="cover">
|
|
958
959
|
<div class="wrap">
|
|
959
960
|
<div class="shead rv">
|
|
960
|
-
<div class="t-eyebrow">产品介绍 · 2026-09-26 · v0.1.
|
|
961
|
+
<div class="t-eyebrow">产品介绍 · 2026-09-26 · v0.1.17</div>
|
|
961
962
|
<h1 class="t-display shead__title">TopMind × tms-skills</h1>
|
|
962
963
|
<p class="t-lead shead__desc">HTML + PPT 双交付 · 为正式商务演示而生</p>
|
|
963
964
|
</div>
|
|
@@ -978,11 +979,13 @@ background:var(--surface-2);border-radius:6px;padding:2px 7px;color:var(--text)}
|
|
|
978
979
|
<div class="t-eyebrow">01 · 为什么是我们</div>
|
|
979
980
|
<h2 class="t-h1 shead__title">市面 PPT 技能很多,为何还要 top-ppt-html</h2>
|
|
980
981
|
</div>
|
|
981
|
-
<div class="grid g-
|
|
982
|
-
<div class="card"><div class="card__hd"><div class="card__ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"/><path d="M15.5 13 17 22l-5-3-5 3 1.5-9"/></svg></div><h3 class="t-h3"
|
|
983
|
-
<ul class="ul"><li><strong
|
|
984
|
-
<div class="card"><div class="card__hd"><div class="card__ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><
|
|
985
|
-
<ul class="ul"><li><strong
|
|
982
|
+
<div class="grid g-3 rv a-start">
|
|
983
|
+
<div class="card"><div class="card__hd"><div class="card__ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"/><path d="M15.5 13 17 22l-5-3-5 3 1.5-9"/></svg></div><h3 class="t-h3">正式商务演示</h3></div>
|
|
984
|
+
<ul class="ul"><li><strong>不是花哨 gadget。</strong>为演示报告与上台汇报而生——直观、大气、可编辑</li><li><strong>一屏一主张。</strong>标题即行动句,少装饰堆砌</li></ul></div>
|
|
985
|
+
<div class="card"><div class="card__hd"><div class="card__ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="14" rx="2"/><path d="M3 10h18"/><path d="M8 20h8"/></svg></div><h3 class="t-h3">HTML + PPT 双交付</h3></div>
|
|
986
|
+
<ul class="ul"><li><strong>HTML 日常上台。</strong>单文件可翻页,等同幻灯片</li><li><strong>PPTX 按需导出。</strong>版式保真、可继续编辑</li></ul></div>
|
|
987
|
+
<div class="card"><div class="card__hd"><div class="card__ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3l8 3v6c0 5-3.5 8.5-8 10-4.5-1.5-8-5-8-10V6l8-3z"/></svg></div><h3 class="t-h3">MD3 式克制</h3></div>
|
|
988
|
+
<ul class="ul"><li><strong>密度合适。</strong>文字/图形/形状/颜色克制</li><li><strong>无 AI chrome。</strong>结论条 tonal 满铺,禁左侧装饰轨</li></ul></div>
|
|
986
989
|
</div>
|
|
987
990
|
<div class="sowhat rv"><span class="sowhat__v">产出即上台:同源模型保证 HTML 与 PPTX 一致,图表带数据可核对。</span></div>
|
|
988
991
|
</div>
|
|
@@ -1002,7 +1005,8 @@ background:var(--surface-2);border-radius:6px;padding:2px 7px;color:var(--text)}
|
|
|
1002
1005
|
<div class="card"><div class="card__hd"><div class="card__ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/><path d="M8 13h8M8 17h6"/></svg></div><h3 class="t-h3">当前主技能</h3></div>
|
|
1003
1006
|
<ul class="ul"><li><strong>top-ppt-html。</strong>正式场合演示文稿</li><li><strong>HTML + PPTX。</strong>同源模型 · 双交付</li></ul></div>
|
|
1004
1007
|
</div>
|
|
1005
|
-
<div class="footnote">包名 @topmindspace/tms-skills · 当前线 0.1.
|
|
1008
|
+
<div class="footnote">包名 @topmindspace/tms-skills · 当前线 0.1.17(latest)</div>
|
|
1009
|
+
<div class="sowhat rv"><span class="sowhat__v">安装器与技能同仓同 tag——装一次,版本线对齐。</span></div>
|
|
1006
1010
|
</div>
|
|
1007
1011
|
</section>
|
|
1008
1012
|
|
|
@@ -1046,11 +1050,12 @@ background:var(--surface-2);border-radius:6px;padding:2px 7px;color:var(--text)}
|
|
|
1046
1050
|
<div class="card"><div class="card__hd"><div class="card__ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/></svg></div><h3 class="t-h3">A · 演示</h3></div>
|
|
1047
1051
|
<ul class="ul"><li><strong>每屏一主张。</strong>标题即行动句,非话题标签</li><li><strong>大气留白。</strong>证据充分但不堆咨询 dump</li></ul></div>
|
|
1048
1052
|
<div class="card"><div class="card__hd"><div class="card__ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3v18h18"/><rect x="7" y="12" width="3" height="6" rx="1"/><rect x="12" y="8" width="3" height="10" rx="1"/><rect x="17" y="4" width="3" height="14" rx="1"/></svg></div><h3 class="t-h3">B · 研究</h3></div>
|
|
1049
|
-
<ul class="ul"><li><strong>咨询密排。</strong>Exhibit · 来源 ·
|
|
1053
|
+
<ul class="ul"><li><strong>咨询密排。</strong>Exhibit · 来源 · 结论条</li><li><strong>结论可核对。</strong>数字与口径双向对齐</li></ul></div>
|
|
1050
1054
|
<div class="card"><div class="card__hd"><div class="card__ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M14.5 9.5l-2 5-5 2 2-5 5-2z"/></svg></div><h3 class="t-h3">C · 架构</h3></div>
|
|
1051
1055
|
<ul class="ul"><li><strong>图为王。</strong>拓扑 / 泳道 / 分层</li><li><strong>少字多结构。</strong>一图说清关系</li></ul></div>
|
|
1052
1056
|
</div>
|
|
1053
1057
|
<div class="footnote">意图线索:路演/汇报/演讲 → A;调研/对标 → B;拓扑/方案图 → C</div>
|
|
1058
|
+
<div class="sowhat rv"><span class="sowhat__v">先定模式再写页——A/B/C 契约决定密度、图表与结论条用法。</span></div>
|
|
1054
1059
|
</div>
|
|
1055
1060
|
</section>
|
|
1056
1061
|
|
|
@@ -1319,7 +1324,7 @@ background:var(--surface-2);border-radius:6px;padding:2px 7px;color:var(--text)}
|
|
|
1319
1324
|
<div class="pmodal__body">
|
|
1320
1325
|
<div class="hdoc">
|
|
1321
1326
|
<h4>HTML 与 PPTX 的分工</h4>
|
|
1322
|
-
<p>HTML 是阅读与演示界面,PPTX 是协作与修改格式——两者来自同一内容模型(window.REPORT_MODEL),PPTX 内全部是原生形状、文本框、表格(<code>pictures=0</code>),可在 PowerPoint / WPS 中继续编辑;<b>带数据的图表为原生数据图表</b>(chart 对象 + 内嵌 Excel,双击即可"编辑数据"
|
|
1327
|
+
<p>HTML 是阅读与演示界面,PPTX 是协作与修改格式——两者来自同一内容模型(window.REPORT_MODEL),PPTX 内全部是原生形状、文本框、表格(<code>pictures=0</code>),可在 PowerPoint / WPS 中继续编辑;<b>带数据的图表为原生数据图表</b>(chart 对象 + 内嵌 Excel,双击即可"编辑数据");口径、来源与结论条自动写入<b>演讲者备注</b>,不占版面。</p>
|
|
1323
1328
|
<h4>怎么获得 PPTX</h4>
|
|
1324
1329
|
<div class="hch">
|
|
1325
1330
|
<div>
|
|
@@ -1883,7 +1888,7 @@ window.REPORT_MODEL = {
|
|
|
1883
1888
|
"theme": "light",
|
|
1884
1889
|
"title": "TopMind × tms-skills",
|
|
1885
1890
|
"subtitle": "HTML + PPT 双交付 · 为正式商务演示而生",
|
|
1886
|
-
"meta": "产品介绍 · 2026-09-26 · v0.1.
|
|
1891
|
+
"meta": "产品介绍 · 2026-09-26 · v0.1.17",
|
|
1887
1892
|
"agenda": [
|
|
1888
1893
|
[
|
|
1889
1894
|
"01",
|
|
@@ -1948,23 +1953,51 @@ window.REPORT_MODEL = {
|
|
|
1948
1953
|
],
|
|
1949
1954
|
"sections": [
|
|
1950
1955
|
{
|
|
1951
|
-
"type": "
|
|
1952
|
-
"layoutPreset": "
|
|
1956
|
+
"type": "cards",
|
|
1957
|
+
"layoutPreset": "P5",
|
|
1953
1958
|
"eyebrow": "01 · 为什么是我们",
|
|
1954
1959
|
"title": "市面 PPT 技能很多,为何还要 top-ppt-html",
|
|
1955
|
-
"
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
"
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1960
|
+
"columns": 3,
|
|
1961
|
+
"cards": [
|
|
1962
|
+
{
|
|
1963
|
+
"title": "正式商务演示",
|
|
1964
|
+
"points": [
|
|
1965
|
+
[
|
|
1966
|
+
"不是花哨 gadget",
|
|
1967
|
+
"为演示报告与上台汇报而生——直观、大气、可编辑"
|
|
1968
|
+
],
|
|
1969
|
+
[
|
|
1970
|
+
"一屏一主张",
|
|
1971
|
+
"标题即行动句,少装饰堆砌"
|
|
1972
|
+
]
|
|
1973
|
+
]
|
|
1974
|
+
},
|
|
1975
|
+
{
|
|
1976
|
+
"title": "HTML + PPT 双交付",
|
|
1977
|
+
"points": [
|
|
1978
|
+
[
|
|
1979
|
+
"HTML 日常上台",
|
|
1980
|
+
"单文件可翻页,等同幻灯片"
|
|
1981
|
+
],
|
|
1982
|
+
[
|
|
1983
|
+
"PPTX 按需导出",
|
|
1984
|
+
"版式保真、可继续编辑"
|
|
1985
|
+
]
|
|
1986
|
+
]
|
|
1987
|
+
},
|
|
1988
|
+
{
|
|
1989
|
+
"title": "MD3 式克制",
|
|
1990
|
+
"points": [
|
|
1991
|
+
[
|
|
1992
|
+
"密度合适",
|
|
1993
|
+
"文字/图形/形状/颜色克制"
|
|
1994
|
+
],
|
|
1995
|
+
[
|
|
1996
|
+
"无 AI chrome",
|
|
1997
|
+
"结论条 tonal 满铺,禁左侧装饰轨"
|
|
1998
|
+
]
|
|
1999
|
+
]
|
|
2000
|
+
}
|
|
1968
2001
|
],
|
|
1969
2002
|
"soWhat": "产出即上台:同源模型保证 HTML 与 PPTX 一致,图表带数据可核对。"
|
|
1970
2003
|
},
|
|
@@ -2015,7 +2048,8 @@ window.REPORT_MODEL = {
|
|
|
2015
2048
|
]
|
|
2016
2049
|
}
|
|
2017
2050
|
],
|
|
2018
|
-
"footnote": "包名 @topmindspace/tms-skills · 当前线 0.1.
|
|
2051
|
+
"footnote": "包名 @topmindspace/tms-skills · 当前线 0.1.17(latest)",
|
|
2052
|
+
"soWhat": "安装器与技能同仓同 tag——装一次,版本线对齐。"
|
|
2019
2053
|
},
|
|
2020
2054
|
{
|
|
2021
2055
|
"type": "split",
|
|
@@ -2084,7 +2118,7 @@ window.REPORT_MODEL = {
|
|
|
2084
2118
|
"points": [
|
|
2085
2119
|
[
|
|
2086
2120
|
"咨询密排",
|
|
2087
|
-
"Exhibit · 来源 ·
|
|
2121
|
+
"Exhibit · 来源 · 结论条"
|
|
2088
2122
|
],
|
|
2089
2123
|
[
|
|
2090
2124
|
"结论可核对",
|
|
@@ -2106,7 +2140,8 @@ window.REPORT_MODEL = {
|
|
|
2106
2140
|
]
|
|
2107
2141
|
}
|
|
2108
2142
|
],
|
|
2109
|
-
"footnote": "意图线索:路演/汇报/演讲 → A;调研/对标 → B;拓扑/方案图 → C"
|
|
2143
|
+
"footnote": "意图线索:路演/汇报/演讲 → A;调研/对标 → B;拓扑/方案图 → C",
|
|
2144
|
+
"soWhat": "先定模式再写页——A/B/C 契约决定密度、图表与结论条用法。"
|
|
2110
2145
|
},
|
|
2111
2146
|
{
|
|
2112
2147
|
"type": "donut",
|
|
@@ -2408,7 +2443,7 @@ window.REPORT_MODEL = {
|
|
|
2408
2443
|
|
|
2409
2444
|
/* __TOPPPT_RUNTIME_START__ */
|
|
2410
2445
|
/* ══ PPTX 导出运行时(assets/pptx-export.js 的内联副本 · 由 scripts/sync_runtime.py 注入,禁止手改) ══ */
|
|
2411
|
-
/* __TOPPPT_RUNTIME_SHA__:
|
|
2446
|
+
/* __TOPPPT_RUNTIME_SHA__:57dbfb4f2b594c45 */
|
|
2412
2447
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
2413
2448
|
* TopPPT HTML· 浏览器端 PPTX 预览运行时
|
|
2414
2449
|
* 零依赖、随报告单文件分发;OOXML 序列化器(仅供预览,页面不导出文件)。
|
|
@@ -2905,12 +2940,12 @@ function table(x, y, w, colW, rows, S, opts) {
|
|
|
2905
2940
|
function soWhatBar(sh, text, S) {
|
|
2906
2941
|
var R = (typeof regionOf === 'function') ? regionOf('exhibit', 'annotation')
|
|
2907
2942
|
: { x: MX, y: PT.exhibit.soWhatY, w: CW, h: 0.62 };
|
|
2908
|
-
/* MD3
|
|
2909
|
-
var
|
|
2910
|
-
var
|
|
2943
|
+
/* MD3 结论条:tonal soft 满铺 + 舒适字阶;禁止左 accent 装饰轨(anti-AI-flavor) */
|
|
2944
|
+
var padX = 0.28, padY = 0.10;
|
|
2945
|
+
var bodyW = Math.max(2.5, R.w - padX * 2);
|
|
2946
|
+
var fzB = fitFont([String(text || '')], bodyW, R.h - padY * 2, { max: 15, gapFactor: 0.2, maxShrinkSteps: 3 });
|
|
2911
2947
|
sh.push(shape('rect', R.x, R.y, R.w, R.h, S.soft));
|
|
2912
|
-
sh.push(
|
|
2913
|
-
sh.push(txSp(R.x + 0.22, R.y + 0.06, R.w - 0.44, R.h - 0.12,
|
|
2948
|
+
sh.push(txSp(R.x + padX, R.y + padY, R.w - padX * 2, R.h - padY * 2,
|
|
2914
2949
|
[[{ t: String(text || ''), sz: fzB, b: 1, col: S.ink, font: S.font }]], { anchor: 'ctr' }));
|
|
2915
2950
|
}
|
|
2916
2951
|
function footnoteLine(sh, text, S) {
|