做 deck 的流程69 條
SKILL.md 的條目、粗體標籤與規則表(按節取:ref.py doc SKILL <標題>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 唯一產物是 content.md | 不寫、不手改 deck.html(blank 的 html: 圍欄是唯一可寫標記之處); | SKILL.md「鐵則」 | |
| 裝不下砍字 | 不縮字級、不削內距、不改引擎(處理順序:ref.py doc playbook 溢出處理的優先順序)。 | SKILL.md「鐵則」 | |
| 紙本=閱讀態的開檔畫面 | 主張、結論、數字放在預設畫面(正文、預設頁籤、不收合); | SKILL.md「鐵則」 | |
| 動筆前驗證事實 | 使用者給的數字與專有名詞對得上附件才寫,對不上先問。 | SKILL.md「鐵則」 | |
| # custom-css 只用 em 與既有… | # custom-css 只用 em 與既有 token、不寫死色碼與 px、hover 包 @media screen、字不縮到下限以下(內文與表格 12pt、結論列 14pt⋯ | SKILL.md「鐵則」 | |
| 一副 deck 一條分支、永不合併進 main | ; | SKILL.md「鐵則」 | |
| 分支 | 從 main 開 deck/YYYYMMDD-<slug>(日期=檔名日期;slug 小寫英數、單字間單一 -、≤14 字元;分支名 ≤28 字元;中文主題寫在 # deck 的⋯ | SKILL.md「開工(新 session 照順序做)」 | |
| 讀既有脈絡 | deck 目錄的 storyline.md(通案規則、用語表、「vN 較 vN-1」表)與 CONTEXT.md(若有)。 | SKILL.md「開工(新 session 照順序做)」 | |
| 問清楚、寫進 storyline.md 檔頭 | (寫錯要全篇重寫): 密度:投影講述(每頁一事、字大)或傳閱自讀(bluf 帶完整結論); | SKILL.md「開工(新 session 照順序做)」 | |
| >10 頁先核可 | 給 3 條敘事線候選(純文字、不產 HTML 預覽,各附頁數),使用者選定才展開逐頁。 | SKILL.md「開工(新 session 照順序做)」 | |
| 本檔=鐵則+開工+流程+查法,照順序做 | 規則細節在 references/,按節取、不整檔讀:python3 scripts/ref.py doc <檔> <標題或節號>…(不帶標題=目錄;好幾節空白分隔、一次取完); | SKILL.md「讀法」 | |
| 片段與圖表一次查完 | 要用的幾段寫在同一條 ref.py snippet|chart <名稱> <名稱>…,共用規則只附一次; | SKILL.md「讀法」 | |
| 做 deck 時不讀 | context/(理由、原話、沿革;只在 §五 最後兩列的情況用 ref.py ctx)、docs/、README.md、MAINTAINING.md、site/; | SKILL.md「讀法」 | |
| 工具訊息自帶規則與改法 | ✗ 照訊息改; | SKILL.md「讀法」 | |
| S0 storyline.md | 每頁一列「頁碼|版型|標籤|頁標題|本頁回答的問題」。 | SKILL.md「流程」 | |
| S1 content.md | 版型 python3 scripts/build_deck.py --list; | SKILL.md「流程」 | |
| S2+S3 | bash scripts/verify.sh content.md -o 20260730_主題_V01.html(改字迭代加 --quick;交付前不加):lint → bui⋯ | SKILL.md「流程」 | |
| S4 交付 | bash scripts/verify.sh content.md --ship 產 _交付.html(寄出去的是這份;維運版留著改字與對帳)。 | SKILL.md「流程」 | |
| 定版 | 使用者說可以或交付的那一輪,〔待回灌〕的通案從 main 另開 claude/<主題>-rules-to-main 送 PR(ref.py doc playbook 分支協作); | SKILL.md「流程」 | |
| 全內容頁固定配備 | title(三秒層)、bluf 結論列(缺了 build 出 △); | SKILL.md「content.md 格式」 | |
| 行內標記 粗、[k]、[kb]、[hl]、[t⋯ | html: 圍欄裡寫 HTML(換行 <br>)。 | SKILL.md「content.md 格式」 | |
| 自訂樣式與 JS 寫在 # custom-cs⋯ | (寫在圍欄外會被靜默忽略)。 | SKILL.md「content.md 格式」 | |
| 議程 3–8 項,對得上章名或章數才掛跳章 | 只有 2 章的 deck 不放議程頁(章節頁籤照樣自動生成)。 | SKILL.md「content.md 格式」 | |
| 格式不對 build 會中止,訊息附正確寫法 | SKILL.md「content.md 格式」 | ||
| 形狀片段(階梯、矩陣、甘特⋯) | 讀:ref.py list snippet → ref.py snippet <名稱> <名稱>…(要用的幾段一次查完,共用規則與要一起貼的依賴只附一次) | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 圖表 | 讀:ref.py list chart → ref.py chart <ec-名稱> ecFit(一次查完:共通規則只附一次,其中「版面」條管圖的高度、.fill 掛哪裡、圖旁欄⋯ | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 時間軸、步驟、流程、檢核列 | 讀:ref.py doc components 檢核列-橫向流程;範例 ref.py example p12-p13 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 收合、白話 tooltip、頁內頁籤、一鍵複製⋯ | 讀:ref.py doc components 收合-結論列 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 判斷元素多大、層級夠不夠;# custom-c⋯ | 讀:ref.py doc components 字階 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| lint 報禁詞、破折號、中國用語、商務加嚴⋯ | 讀:ref.py doc writing 四.1、ref.py doc writing 六.1-反向誤殺警告 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 同一數字要上兩頁、多個分母、兩條判定軸、全稱詞⋯ | 讀:ref.py doc writing 四.9-18 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 引外部數據、掛連結、改版刪概念、要推翻既有結論 | 讀:ref.py doc writing 來源與連結紀律 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 改寫或引用別人的文字(原稿、他人文件、法遵條文) | 讀:ref.py doc writing 保護清單 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 有英文、縮寫或技術名詞 | 讀:ref.py doc writing 中英並列與技術名詞 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 語體是書面語帶(主管決策、討論場合),或被點名⋯ | 讀:ref.py doc writing 口語詞帶 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 知識型教材(講義、訓練 deck) | 讀:ref.py doc writing 知識型教材 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 想不到這一頁該長什麼樣 | 讀:ref.py layout --group <組名> → ref.py layout <名稱> | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 逐步揭示、逐列聚焦、講者備註;就地展開、狀態切⋯ | 讀:ref.py doc present 一-二、ref.py doc present 三;範例 ref.py example p18、ref.py example p19 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 頁籤、收合、切換、浮層在紙本上印什麼 | 讀:ref.py doc present 列印印什麼 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 某段內容該不該放 hover、放哪一種 | 讀:ref.py doc design 分層揭露 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 自畫裝飾、官方色與語意色 token | 讀:ref.py doc brand | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 批註回寫、改版協作 | 讀:ref.py doc playbook 一 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 改字找行號、手改過 HTML 要急救 | 讀:§六;ref.py doc playbook 十一 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| △ 看不懂怎麼改、版面空洞或溢出;量測結果可疑 | 讀:ref.py doc playbook 三、ref.py doc playbook 四 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 附錄、章節結構;需求盤點類、討論/評述類 de⋯ | 讀:ref.py doc playbook 六、ref.py doc playbook 七、ref.py doc playbook 八、ref.py doc playbook 九 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 交付版、產出標記、發布預覽網址 | 讀:ref.py doc delivery | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 示範稿(範本、教學、假資料) | 讀:ref.py doc writing 七 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 固定結構反覆更新的主題頁 | 讀:ref.py doc components 五 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 定版回灌 main | 讀:ref.py doc playbook 十 | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 舊 deck 併 main 後外觀或驗收變了 | 讀:ref.py ctx history(遷移表) | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 有人提外部建議、要改規則、問為什麼 | 讀:ref.py ctx(context/ 條目清單,再取一條;平常不讀) | SKILL.md「查法(遇到什麼才讀什麼)」 | |
| 正規 | python3 scripts/build_deck.py content.md --where p05.bluf(也吃 p05、bluf)→ 改那一行 → 重跑 verify。 | SKILL.md「改字與對帳」 | |
| check_slots.py 連 EDIT-M⋯ | 手改過 HTML 它會擋。 | SKILL.md「改字與對帳」 | |
| 逐頁看 1920 截圖 node script⋯ | (避頭缺口、折行、重複句、數字拆行量不到); | SKILL.md「交付前只能人看的」 | |
| 三秒測試 | 只看標題+主角說得出主張; | SKILL.md「交付前只能人看的」 | |
| 結論列不是複述、請示/決議轉紅 | 全副標題句式一致; | SKILL.md「交付前只能人看的」 | |
| 紙本要看的都在開檔畫面 | 紙本讀者一定要懂的名詞在正文寫清楚 | SKILL.md「交付前只能人看的」 | |
| 網格預設開放欄,有框的 .solid 有理由 | 卡內不空、留白不沉頁底 | SKILL.md「交付前只能人看的」 | |
| 第三色只給語意、漲紅跌綠一致 | 狀態「顏色+文字」雙標; | SKILL.md「交付前只能人看的」 | |
| 圖例為色塊且貼著圖 | 千點以上的圖已彙總; | SKILL.md「交付前只能人看的」 | |
| 引數據頁有 src | (評述類出處全掛 .tip.s 者除外); | SKILL.md「交付前只能人看的」 | |
| storyline 用語表逐詞 grep 全副⋯ | (含 html: 圍欄、封底、note); | SKILL.md「交付前只能人看的」 | |
| 有逐步頁 | node scripts/shots.js deck.html --walk(報沒亮起的步驟)+node scripts/check_present.js deck.html(簡⋯ | SKILL.md「交付前只能人看的」 | |
| 用了 列印展開: on | 浮層都有補充頁、每一態都印得出來、攤開後裝得下; | SKILL.md「交付前只能人看的」 | |
| --where 抽查 2–3 個槽位 | 匯出 Markdown 抽看:node scripts/shots.js deck.html --md 另存一份並點名頁數與 undefined/[object,頁籤全片、表格合⋯ | SKILL.md「交付前只能人看的」 | |
| 寄出去的是 --ship 交付版 | 檔名與版號對、改版未覆蓋舊檔; | SKILL.md「交付前只能人看的」 | |
| YYYYMMDD_中文標題_V01.html | # deck 填 主題: 與 版號:(v1、1 都正規化成 V01),未給 -o 自動命名; | SKILL.md「檔名」 | |
| 文字稿固定叫 content.md | (放 deck 目錄,不改名、檔名不帶版號); | SKILL.md「檔名」 | |
| 使用者指定固定檔名時,每次 build 都帶同⋯ | SKILL.md「檔名」 |
檔頭鍵19 條
content.md 最前面 # deck 區段能寫的鍵(build_deck.py --schema deck)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| title | title: 任意文字 | 任意文字:瀏覽器分頁名(<title>) | build_deck.py --schema deck |
| 單位 | 單位: 單位全稱 | 單位全稱:出品單位,記進 EDIT-MAP;不進檔名。封面上的單位寫在 cover 的 who:(全稱,如「金控總經理辦公室」,可附報告人) | build_deck.py --schema deck |
| 主題 | 主題: 中文標題 | 中文標題:自動檔名的中文標題(YYYYMMDD_主題_V01.html);分支目錄 decks/YYYYMMDD_主題/ 用同一個名字 | build_deck.py --schema deck |
| 版號 | 版號: V01 | V01(v1、V1、1、v01 都接受):自動檔名的版號,一律正規化成 V+兩位數;改版遞增 V02、V03…,上一版的檔不覆蓋 | build_deck.py --schema deck |
| 日期 | 日期: YYYYMMDD | YYYYMMDD:自動檔名的日期=會議或交付場合當天;沒寫=build 當天(定了就寫,隔天重組才不會多出第二份檔) | build_deck.py --schema deck |
| 配色模式 | 配色模式: 深色 | 深色(預設)/淺色:淺色=投影片外圍的頁面底色改淺灰(body.light-canvas);投影片本身不變 | build_deck.py --schema deck |
| 章節頁 | 章節頁: 淺色 | 淺色(預設)/深色:深色=章節隔頁轉深藍反白(.divider.dark,與封底同深面家族,形成淺深節奏) | build_deck.py --schema deck |
| 互動集 | 互動集: full | full(預設)/off:off=不跑任何過場:進場動畫、數字滾動、hover 換色、收合箭頭、簡報態的步驟與聚焦一律直接到位(步驟照走、沒有過場);圖表載入即畫、不播動畫。OS「減少動態效果」同效 | build_deck.py --schema deck |
| 手機版 | 手機版: 縮放 | 縮放(預設)/重排:縮放=小螢幕整張等比縮小、版面同列印;重排=手機直立改文件流重排(版面與投影、列印不同) | build_deck.py --schema deck |
| 內文字級 | 內文字級: 12 | 12(預設)/14:12=內文與表格 12pt、標題 28pt、焦點數字 48pt;14=大會場字階(內文 14pt、標題 32pt、焦點數字 49pt) | build_deck.py --schema deck |
| 垂直節奏 | 垂直節奏: on | on(預設)/off:on=內容止於畫布九成以下的頁,自動放大區段與列的間距、留白不沉頁底;off=只關間距(彈性字級照跑) | build_deck.py --schema deck |
| 彈性字級 | 彈性字級: on | on(預設)/off:on=內容少的頁,內容區整區升到 13 或 14pt、滿的頁維持 12pt;off=一律 12pt(垂直節奏照跑)。單頁不升:頁內任一元素加 .fz-fix;「內文字級: 14」的 deck 不升 | build_deck.py --schema deck |
| 簡報態 | 簡報態: on | on(預設)/off:on=講者按 P/F5(或網址 ?present)進簡報態:逐步揭示、逐列聚焦、雷射筆、黑幕、概覽、講者視窗;閱讀、手機、列印永遠是閱讀態(步驟全亮)。off=整副沒有簡報態:P/F5/?present、數字跳頁、概覽、按鍵說明都不作用(F5 照常重新整理),步驟屬性無作用 | build_deck.py --schema deck |
| 列印展開 | 列印展開: off | off(預設)/on:off=列印/PDF=閱讀態的開檔畫面:頁籤只印開檔那一片、收合照開檔狀態、白話不印、就地展開的浮層不印、狀態切換只印開檔那一態(明寫 data-print 的照它)。on=個案才用的全展開:頁籤全部攤開、收合全開、白話轉括號、狀態切換並排、就地展開的浮層印到最後的補充頁(附錄級細節也要印在紙上的核示 deck) | build_deck.py --schema deck |
| 講者備註 | 講者備註: 不交付 | 不交付(預設)/交付/匯出:不交付=note: 只留在維運版,--ship 交付版剝除;交付=交付版也保留(給代講的同事);匯出=交付版保留,且匯出 Markdown 在每頁後面帶「> 備註:…」 | build_deck.py --schema deck |
| 結論行數 | 結論行數: 1–5 | 1–5(預設 3):結論列行數上限:lint 的結論列字數帶等比縮放(1 限定調頁等短結論);覆寫時 lint 出 △,交付說明要註明 | build_deck.py --schema deck |
| 示範 | 示範: off | off(預設)/on:on=示範稿、教材範本:示範與占位字樣(DEMO_RE:範例金控、示範案例、(示範)、假數…)改印 ○、不計入 △,verify 的下一步也不叫你清;整副都沒有示範字樣時出 △(封面主標要帶「(示範案例)」)。正式稿不要寫 | build_deck.py --schema deck |
| 密度上限 | 密度上限: | (沒有作用):寫了 lint 會提醒刪除;blank 的溢出由 measure_deck.js 量測(MAINTAINING.md「舊 deck 相容」) | build_deck.py --schema deck |
| 不可覆寫 | brand、logo、品牌外框、字型、官方色、母片、色票 | 品牌外框與官方色是硬規格,寫了直接中止組裝 | build_deck.py --schema deck |
版型與槽位25 條
五種版型、每個槽位的用途與字數帶(build_deck.py --schema <版型>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| cover 版型 | ## pNN cover <標籤> | 封面:標題+報告人+日期 | build_deck.py --schema cover |
| cover · ct | ct: | 〔必填〕主標(名詞短語;示範稿帶「(示範案例)」);≤18 字、1 行 | build_deck.py --schema cover |
| cover · who | who: | 〔選用〕報告單位全稱(如「金控總經理辦公室」,可附報告人);≤14 字、1 行 | build_deck.py --schema cover |
| cover · date | date: | 〔選用〕日期(如 2026 / 07;會議場合寫到日=會議日期) | build_deck.py --schema cover |
| agenda 版型 | ## pNN agenda <標籤> | 議程:3–8 段目錄(只有 2 章的 deck 不掛議程;使用者明確要時照放,項目寫內容段落、不掛跳章) | build_deck.py --schema agenda |
| agenda · kicker | kicker: | 〔選用〕眉標(預設 Agenda) | build_deck.py --schema agenda |
| agenda · title | title: | 〔選用〕頁標題(預設「今日議程」) | build_deck.py --schema agenda |
| agenda · item | item: | 〔必填〕議程項目(項目名與章名或章數對得上,才掛得上跳章;對不上 build 印 ○) | build_deck.py --schema agenda |
| agenda · item.name | name: | 〔必填〕項目名(名詞短語);≤8 字、1 行 | build_deck.py --schema agenda |
| agenda · item.sub | sub: | 〔選用〕一句預告;≤12 字、1 行 | build_deck.py --schema agenda |
| divider 版型 | ## pNN divider <標籤> | 章節隔頁:章號放進紅「章」+章名+章旨(章節頁籤自動取 dt 當頁籤名) | build_deck.py --schema divider |
| divider · num | num: | 〔必填〕章節號(01、02…) | build_deck.py --schema divider |
| divider · dt | dt: | 〔必填〕章名;≤8 字、1 行 | build_deck.py --schema divider |
| divider · dx | dx: | 〔選用〕本章要回答的問題;≤24 字、1 行 | build_deck.py --schema divider |
| blank 版型 | ## pNN blank <標籤> | 內容頁:html 圍欄用元件包類名排版(元件與容量:ref.py doc components) | build_deck.py --schema blank |
| blank · kicker | kicker: | 〔選用〕章節眉標(可省略);≤10 字、一行,格式「NN · 章名」(如「02 · 內容元件」) | build_deck.py --schema blank |
| blank · title | title: | 〔建議必填〕頁標題:三秒層,讀者翻到這頁三秒內看到的判斷;缺了 build 出 △;≤26 字=一行(判斷句建議 12–22 字、框架名 <12 字;整副只用一種句式);「內文字級: 14」時 ≥23 字出 △ | build_deck.py --schema blank |
| blank · bluf | bluf: | 〔建議必填〕結論列「文字」或「前置章|文字」;請示/行動/決議自動轉紅;缺了 build 出 △;目標 3 行 88–175 字(每行約 64 字、硬上限 190);寫「結論+所以呢+下一步」,不複述標題;# deck 的「結論行數: N」等比縮放 | build_deck.py --schema blank |
| blank · src | src: | 〔選用〕來源註(引用數據必填);一行 ≤40 字,「資料來源:⋯|註:⋯」;出處頁碼、卷期改掛 [tip=…] | build_deck.py --schema blank |
| blank · html | html: | 〔選用〕原始 HTML 圍欄:用元件包類名組裝;內容區 12pt、來源註 10pt 是字級下限,裝不下砍字、不縮字級;內容區 12pt 約 17–19 行單位(1 行單位=一行內文含行距)、全寬一行約 71 字;結論列每多一行,內容少約 1.2 行單位;元件的行單位成本:python3 scripts/ref.py doc components 各元件的行單位成本 | build_deck.py --schema blank |
| blank · note | note: | 〔選用〕講者備註(選用):講稿、預期問答,只在簡報態的講者視窗(S)顯示;永不上投影片、永不列印,--ship 交付版預設剝除(# deck「講者備註: 交付」才保留) | build_deck.py --schema blank |
| closing 版型 | ## pNN closing <標籤> | 深色封底:收束金句(明體) | build_deck.py --schema closing |
| closing · q | q: | 〔必填〕金句(須附證據,證據放 sub;[hl]…[/hl] 反白);≤32 字(一行 16 字、≤2 行);超過 16 字排成兩行時瀏覽器把字數平分、斷點不看語意:在語意邊界寫 [br](如「先補齊標準,[br]再談擴點」) | build_deck.py --schema closing |
| closing · sub | sub: | 〔選用〕補充一行:下一步/窗口/佐證數字;≤32 字、1 行 | build_deck.py --schema closing |
| 頁層設定 scroll | scroll: 1 | 設 1=內容偏密時 .inner 加捲動;止血用:紙本捲不動,交付前回 S1 砍字 | build_deck.py --schema blank |
行內標記10 條
槽位文字裡能用的行內標記(html 圍欄裡改寫 HTML)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 粗體 | **粗體** | 粗體:轉成 <b> | build_deck.py 檔頭「行內標記」 |
| k | [k]紅[/k] | 紅:轉成 <span>(.k) | build_deck.py 檔頭「行內標記」 |
| kb | [kb]藍[/kb] | 藍:轉成 <span>(.kb) | build_deck.py 檔頭「行內標記」 |
| mark | [mark]淡底[/mark] | 淡底:轉成 <span>(.mark) | build_deck.py 檔頭「行內標記」 |
| mute | [mute]弱化[/mute] | 弱化:轉成 <span>(.mute) | build_deck.py 檔頭「行內標記」 |
| hl | [hl]封底金句強調[/hl] | 封底金句強調:轉成 <span>(.hl) | build_deck.py 檔頭「行內標記」 |
| br | [br] | 換行:轉成 <br> | build_deck.py 檔頭「行內標記」 |
| tip | [tip=白話]名詞[/tip] | 名詞:轉成 <span>(.tip) | build_deck.py 檔頭「行內標記」 |
| a | [a=網址]連結文字[/a] | 連結文字:轉成 <a>(.xl) | build_deck.py 檔頭「行內標記」 |
| ev | [ev=鍵或選擇器]結論片語[/ev] | 結論片語(滑過時框出本頁的證據;鍵=html:轉成 <span>(.ev) | build_deck.py 檔頭「行內標記」 |
元件類名142 條
規格文件寫到、引擎樣式裡找得到的類名(找不到的不收;components.md 為主,引擎內部的在 MAINTAINING.md)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 字階 | .inner | pt 以列印母片換算(框高 19.04cm,.inner 1em=14pt,與 PowerPoint 同尺度)。 | components.md「字階」 |
| 字階 | .hero | 焦點數字 .hero .v:48pt:.big 77pt; | components.md「字階」 |
| 字階 | .v | 焦點數字 .hero .v:48pt:.big 77pt; | components.md「字階」 |
| 字階 | .big | 焦點數字 .hero .v:48pt:.big 77pt; | components.md「字階」 |
| 字階 | .cell.kpi | 指標磚 .cell.kpi 24pt | components.md「字階」 |
| 字階 | .lv-k | 關鍵句 .lv-k:20pt:比卡片關鍵句 .ck 大一級,一段裡最先被讀到 | components.md「字階」 |
| 字階 | .ck | 關鍵句 .lv-k:20pt:比卡片關鍵句 .ck 大一級,一段裡最先被讀到 | components.md「字階」 |
| 字階 | .t | pt 以列印母片換算(框高 19.04cm,.inner 1em=14pt,與 PowerPoint 同尺度)。 | components.md「字階」 |
| 字階 | .ch | 小重點:16pt:區段標題 .sh .t、卡名 .ch .t、卡關鍵句 .ck、區塊標題 .blk-h、格標 .cell b、節點標題 .ti b/.st b⋯ | components.md「字階」 |
| 字階 | .blk-h | 小重點:16pt:區段標題 .sh .t、卡名 .ch .t、卡關鍵句 .ck、區塊標題 .blk-h、格標 .cell b、節點標題 .ti b/.st b⋯ | components.md「字階」 |
| 字階 | .cell | 指標磚 .cell.kpi 24pt | components.md「字階」 |
| 字階 | .ti | 頁標題 h2.title:28pt:一行約 30 字; | components.md「字階」 |
| 字階 | .st | 小重點:16pt:區段標題 .sh .t、卡名 .ch .t、卡關鍵句 .ck、區塊標題 .blk-h、格標 .cell b、節點標題 .ti b/.st b⋯ | components.md「字階」 |
| 字階 | .fs | 小重點:16pt:區段標題 .sh .t、卡名 .ch .t、卡關鍵句 .ck、區塊標題 .blk-h、格標 .cell b、節點標題 .ti b/.st b⋯ | components.md「字階」 |
| 字階 | .bluf | 結論列 .bluf、眉標:14pt:.inner 基準字; | components.md「字階」 |
| 字階 | .canvas | 內文與表格(.canvas 內):12pt:內容區下限; | components.md「字階」 |
| 字階 | .srcline | 資料來源 .srcline、元件英文小標、膠囊:10pt:全片絕對下限 | components.md「字階」 |
| 字階 | .stmt | 結構頁大字(不隨內容區縮):49/43/34/32:封面主標/章名/定調句 .stmt/封底金句 | components.md「字階」 |
| 容量模型 | .lad.solid | 個別元件要實心或有框的外觀寫 .lad.solid、.tb.solid、.g2/.g3/.g4.solid(沒有整副切換外觀的開關)。 | components.md「容量模型」 |
| 容量模型 | .tb.solid | 個別元件要實心或有框的外觀寫 .lad.solid、.tb.solid、.g2/.g3/.g4.solid(沒有整副切換外觀的開關)。 | components.md「容量模型」 |
| 容量模型 | .g2 | 個別元件要實心或有框的外觀寫 .lad.solid、.tb.solid、.g2/.g3/.g4.solid(沒有整副切換外觀的開關)。 | components.md「容量模型」 |
| 容量模型 | .g3 | 個別元件要實心或有框的外觀寫 .lad.solid、.tb.solid、.g2/.g3/.g4.solid(沒有整副切換外觀的開關)。 | components.md「容量模型」 |
| 容量模型 | .g4.solid | 個別元件要實心或有框的外觀寫 .lad.solid、.tb.solid、.g2/.g3/.g4.solid(沒有整副切換外觀的開關)。 | components.md「容量模型」 |
| 各元件的行單位成本 | .solid | 網格內的元件分開放欄與 .solid 兩種,未實量的標估算) | components.md「容量模型」 |
| 各元件的行單位成本 | .card | .card 卡頭+關鍵句:3.4 開放欄/4.3 .solid:.ch+.ck(兩者 16pt); | components.md「容量模型」 |
| 各元件的行單位成本 | .kv | .kv li(1 行):1.3:2 行=2.3 | components.md「容量模型」 |
| 各元件的行單位成本 | .lr | .lr(1 行):1.6:2 行=2.6; | components.md「容量模型」 |
| 各元件的行單位成本 | .cr | .cr 檢核列:1.5:三欄各一句 | components.md「容量模型」 |
| 各元件的行單位成本 | .note | .note:1.7/行:含上方虛線與間距 | components.md「容量模型」 |
| 各元件的行單位成本 | .tb | .tb 表格列:1.45/列:表頭另計約 1.3 | components.md「容量模型」 |
| 各元件的行單位成本 | .tl.h | .tl.h 橫向時間軸:2.5–4.8:整條=最高節點:日期+標題 ≈2.5,+兩行說明 ≈4.8; | components.md「容量模型」 |
| 各元件的行單位成本 | .flow | .flow 橫向流程:2.9–3.8:整條=最高格:眉標+標題 ≈2.9(估算),+一句 ≈3.8 | components.md「容量模型」 |
| 各元件的行單位成本 | .cf | .cf 卡尾:1.6(估算):一行+上方髮絲線與間距 | components.md「容量模型」 |
| 各元件的行單位成本 | .lad.c2 | .lad.c2(1 列=兩組):1.6:兩組短句並排成一列,高度約為單欄的一半 | components.md「容量模型」 |
| 各元件的行單位成本 | tr.grp | tr.grp 群組列:1.3(估算):小號藍字+上方留白 | components.md「容量模型」 |
| 骨架 | .seg | .canvas 直排,各 .seg 依內容的自然高度由上而下排、本身不撐高; | components.md「元件總表(類名+最小 DOM)」 |
| 網格 | .g4 | 網格:.g2 / .g3 / .g4(等分並排)。 | components.md「元件總表(類名+最小 DOM)」 |
| 網格 | .hot | .hot/.warn/.ok 在開放欄只留字色(卡的關鍵句、格的格標、.ch .n 號圈),不留底色塊——開放欄裡一塊淡底像沒拆乾淨的卡。 | components.md「元件總表(類名+最小 DOM)」 |
| 網格 | .warn | .hot/.warn/.ok 在開放欄只留字色(卡的關鍵句、格的格標、.ch .n 號圈),不留底色塊——開放欄裡一塊淡底像沒拆乾淨的卡。 | components.md「元件總表(類名+最小 DOM)」 |
| 網格 | .ok | .hot/.warn/.ok 在開放欄只留字色(卡的關鍵句、格的格標、.ch .n 號圈),不留底色塊——開放欄裡一塊淡底像沒拆乾淨的卡。 | components.md「元件總表(類名+最小 DOM)」 |
| 網格 | .n | .hot/.warn/.ok 在開放欄只留字色(卡的關鍵句、格的格標、.ch .n 號圈),不留底色塊——開放欄裡一塊淡底像沒拆乾淨的卡。 | components.md「元件總表(類名+最小 DOM)」 |
| 網格 | .sync | - 有框的卡寫 .g2/.g3/.g4.solid:卡與卡要逐項比較(主卡的同位列,常配 .sync)、 | components.md「元件總表(類名+最小 DOM)」 |
| 網格 | .fill | - .fill(撐滿到區段底):開放欄與含圖表的格撐滿(撐長的只是欄間髮絲線; | components.md「元件總表(類名+最小 DOM)」 |
| 主卡 | .en | .n 編號與 .en 英文可省——中文 deck 預設不加 .en:英文小標只在它本身就是資訊時才寫(專有名詞、 | components.md「元件總表(類名+最小 DOM)」 |
| 同位對齊 | .g4.sync | 同位對齊 .g2/.g3/.g4.sync+卡尾 .cf:並排卡的卡頭、關鍵句、列點、卡尾跨卡同高(subgrid)。 | components.md「元件總表(類名+最小 DOM)」 |
| 同位對齊 | div.ck | 每張卡依序放 .ch、.ck、.kv、(可省).cf; | components.md「元件總表(類名+最小 DOM)」 |
| 小格卡 | .kpi | 指標磚(格標就是數字時加 .kpi:數字 24pt mono、單位 .u 縮小; | components.md「元件總表(類名+最小 DOM)」 |
| 小格卡 | .u | b 可掛 data-count="999" 讓數字滾動) | components.md「元件總表(類名+最小 DOM)」 |
| 小格卡 | .dlt | 滾完才淡入的差額膠囊寫 .dlt(.up 紅漲、.dn 綠跌),寫法見 present.md「數字從基準值滾動」。 | components.md「元件總表(類名+最小 DOM)」 |
| 小格卡 | .up | 滾完才淡入的差額膠囊寫 .dlt(.up 紅漲、.dn 綠跌),寫法見 present.md「數字從基準值滾動」。 | components.md「元件總表(類名+最小 DOM)」 |
| 小格卡 | .dn | 滾完才淡入的差額膠囊寫 .dlt(.up 紅漲、.dn 綠跌),寫法見 present.md「數字從基準值滾動」。 | components.md「元件總表(類名+最小 DOM)」 |
| 對照列 | .lr.ok | 例外:方案比較頁以 .lr.ok=優、.lr.warn=缺標出各案優缺,那是語意標記、不是重點列,不受「一組一列」限制 | components.md「元件總表(類名+最小 DOM)」 |
| 對照列 | .lr.warn | 例外:方案比較頁以 .lr.ok=優、.lr.warn=缺標出各案優缺,那是語意標記、不是重點列,不受「一組一列」限制 | components.md「元件總表(類名+最小 DOM)」 |
| 時間軸 | div.tl.h | 4–6 個短節點用 .tl.h 橫排,節點說明兩行以上或放側欄才直排,design.md「16:9 是橫幅:序列橫排,兩軸才用矩陣」) | components.md「元件總表(類名+最小 DOM)」 |
| 序號步驟 | div.g2 | 四步以上、每步一句時拆兩欄 <div class="g2"><div class="steps">1–2</div><div class="steps">3–⋯ | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | .rl | 列間髮絲線、不鋪底、不畫直線,首欄 .rl 墨色粗體靠左、頂對齊。 | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | .fit | 表格的推薦寫法:<table class="tb fit lite"> | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | .lite | 表格的推薦寫法:<table class="tb fit lite"> | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | .f | 表格的推薦寫法:<table class="tb fit lite"> | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | ul.kv | 表格旁的說明直接放一列 ul.kv,外包 | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | table.tb.solid | components.md「元件總表(類名+最小 DOM)」 | |
| 表格 | table.tb.fit.lite | components.md「元件總表(類名+最小 DOM)」 | |
| 表格 | tr.hot | th/td 加 .n 右齊(數字用西文字型在前的堆疊,Mac 上才對得齊),唯一重點列 <tr class="hot">。 | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | tr.sum | 淡底+表頭品牌色線)、<tr class="sum"> 小計/合計(粗體+上方墨線)、<tr class="sub"> 子項(首格縮排、不粗體)、 | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | tr.sub | 淡底+表頭品牌色線)、<tr class="sum"> 小計/合計(粗體+上方墨線)、<tr class="sub"> 子項(首格縮排、不粗體)、 | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | span.t | 寫 <table class="tb solid">。 | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | div.split.fit | components.md「元件總表(類名+最小 DOM)」 | |
| 表格 | table.tb | 寫 <table class="tb solid">。 | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | th.rl | 列間髮絲線、不鋪底、不畫直線,首欄 .rl 墨色粗體靠左、頂對齊。 | components.md「元件總表(類名+最小 DOM)」 |
| 表格 | div.tblwrap | 寬表外包 <div class="tblwrap">:桌面不捲、debug 檢查視為可捲區; | components.md「元件總表(類名+最小 DOM)」 |
| 文級 | .jump | src 的「|註:」格式不受影響)、.jump 頁內跳轉膠囊(列印自動隱藏; | components.md「元件總表(類名+最小 DOM)」 |
| 文級 | .note.xref | 主文↔附錄的膠囊字寫「附錄:頁名」「回主文:頁名」,revision-playbook.md「主文與附錄雙向互連」)、.note.xref 回程膠囊列 | components.md「元件總表(類名+最小 DOM)」 |
| 文級 | .eh | .eh 中英標籤行、.xl 內文連結([a=] 標記在槽位裡自動產生同款)。 | components.md「元件總表(類名+最小 DOM)」 |
| 文級 | .xl | .eh 中英標籤行、.xl 內文連結([a=] 標記在槽位裡自動產生同款)。 | components.md「元件總表(類名+最小 DOM)」 |
| 文級 | .tip.s | .tip.s 淡樣式 tooltip <span class="tip s" tabindex="0" data-tip="…">(出處頁碼、案號:字色跟上下⋯ | components.md「元件總表(類名+最小 DOM)」 |
| 文級 | .lgd | 圖例:.lgd 列+.sw 色塊由引擎提供(色義類 g/n/b/a/r、自動色票 p1–p6), | components.md「元件總表(類名+最小 DOM)」 |
| 文級 | .sw | 圖例:.lgd 列+.sw 色塊由引擎提供(色義類 g/n/b/a/r、自動色票 p1–p6), | components.md「元件總表(類名+最小 DOM)」 |
| 文級 | span.tip.s | .tip.s 淡樣式 tooltip <span class="tip s" tabindex="0" data-tip="…">(出處頁碼、案號:字色跟上下⋯ | components.md「元件總表(類名+最小 DOM)」 |
| 文級 | div.xhb-ec | 圖表:blank 內放 <div class="xhb-ec">+script.echarts-opt; | components.md「元件總表(類名+最小 DOM)」 |
| 四級層級 | .lv-b | 一段裡最先被讀到)≈2.1、兩行 ≈3.5、.lv-b 內文 12pt 1.0/行、.lv-n 註解(上方虛線)≈1.6。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 四級層級 | .lv-n | 一段裡最先被讀到)≈2.1、兩行 ≈3.5、.lv-b 內文 12pt 1.0/行、.lv-n 註解(上方虛線)≈1.6。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| inline 強調 | .k | inline 強調(皆官方色):.k 紅關鍵字、.kb 藍關鍵字、.mark 淡紅底螢光、.mute 弱化。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| inline 強調 | .kb | inline 強調(皆官方色):.k 紅關鍵字、.kb 藍關鍵字、.mark 淡紅底螢光、.mute 弱化。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| inline 強調 | .mark | inline 強調(皆官方色):.k 紅關鍵字、.kb 藍關鍵字、.mark 淡紅底螢光、.mute 弱化。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| inline 強調 | .mute | inline 強調(皆官方色):.k 紅關鍵字、.kb 藍關鍵字、.mark 淡紅底螢光、.mute 弱化。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| icon 清單 | .ilist | icon 清單 .ilist+.ic(圖示格; | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| icon 清單 | .ic | icon 清單 .ilist+.ic(圖示格; | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| icon 清單 | .ic.b | .ic.b 藍款)+.kw 前置詞+.rev 補述,≈1.6/列。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| icon 清單 | .kw | .ic.b 藍款)+.kw 前置詞+.rev 補述,≈1.6/列。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| icon 清單 | .rev | .ic.b 藍款)+.kw 前置詞+.rev 補述,≈1.6/列。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 段落 | .split.rev | 段落要窄,是因為同一列還有圖或表:左文右圖寫 .split.rev、 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 段落 | .split | 段落要窄,是因為同一列還有圖或表:左文右圖寫 .split.rev、 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 段落 | .split.even | 左主右副 .split、圖文各半 .split.even、兩段並排 .g2,寬度由版面決定。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 主從版面 | .split.fit | .split.even(1fr/1fr,圖文各半)、.split.fit(左欄跟內容寬、右欄放列點)+.hero 焦點大數字(≈5 行單位)+.side .s⋯ | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 主從版面 | .side | .split.even(1fr/1fr,圖文各半)、.split.fit(左欄跟內容寬、右欄放列點)+.hero 焦點大數字(≈5 行單位)+.side .s⋯ | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 主從版面 | .s | 主從版面 .split(1.5fr/.9fr 網格,左主右副); | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 主從版面 | .serif | .hero .v、.cell b、.side .s .n 可加 .serif 轉明體大數字(引擎自帶 -0.02em 收字距); | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 收合 | .acc | 收合 details+summary(外包 .acc):列印照開檔狀態(寫 open 的才印開; | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| tooltip | .tip | tooltip .tip(data-tip):桌面=body 層浮層(不受框裁切、貼邊自動翻位)、 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 頁內頁籤 | .tabbar | 頁內頁籤 [data-tabs]+.tabbar/.tabpane:列印只印開檔那一片(寫 class="tabpane on" 的那片; | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 頁內頁籤 | .tabpane | 頁內頁籤 [data-tabs]+.tabbar/.tabpane:列印只印開檔那一片(寫 class="tabpane on" 的那片; | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 頁內頁籤 | .lad | - 每片同一版型:開頭一行 .blk-h 寫該類的判斷句,其下 .lad 明細,必要時一排格; | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 一鍵複製 | .copy | 一鍵複製 .copy(data-copy 或 data-copy-for)。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| 圖例用色塊,不用文字色名 | .sw.p1 | 沒自帶 color 的圖用 .sw.p1–.p6 對引擎自動色票(藍→紅→藍淡→紅淡→灰→淺藍灰)。 | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 |
| 圖例用色塊,不用文字色名 | .p6 | 沒自帶 color 的圖用 .sw.p1–.p6 對引擎自動色票(藍→紅→藍淡→紅淡→灰→淺藍灰)。 | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 |
| 圖例用色塊,不用文字色名 | div.lgd | <div class="lgd"><span><span class="sw n"></span>解除後可執行 29</span>⋯</div>; | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 |
| 兩群比較用兩張並列圓餅,不用內⋯ | .xhb-ec | 的 .chart2 兩欄(兩個 .xhb-ec 各 12em 最小高度分屬兩個 seg 會相加撐破畫布)。 | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 |
| 滿版組合(實戰驗證過的頁型,直⋯ | split.fit | 表格+列點:split.fit:左 tb.fit.lite、右 ul.kv 3–4 列:表 ≤6 列(每列 1.5); | components.md「滿版組合(實戰驗證過的頁型,直接抄)」 |
| 滿版組合(實戰驗證過的頁型,直⋯ | tb.fit.lite | 表格+列點:split.fit:左 tb.fit.lite、右 ul.kv 3–4 列:表 ≤6 列(每列 1.5); | components.md「滿版組合(實戰驗證過的頁型,直接抄)」 |
| 作者要寫的互動(總覽) | button.drill | 就地展開 button.drill[popovertarget]+[popover]:被追問時當場攤開拆解:本檔「就地展開」 | present.md「作者要寫的互動(總覽)」 |
| 作者要寫的互動(總覽) | .state | 狀態切換 [data-switch]+.state[data-name]:同一組數字換一種看法(金額/占比、表/圖、各時距):本檔「狀態切換」 | present.md「作者要寫的互動(總覽)」 |
| 兩態契約 | .stepmark | 畫面:步驟全亮、沒有聚焦與釘住:步驟與聚焦類屬性(data-step、data-walk、data-focus、.stepmark 的逐段)不作用; | present.md「兩態契約」 |
| 逐步揭示 data-step | .stepmark.ul | .stepmark.ul 底線、.stepmark.dot 著重號(橫行標在字下)。 | present.md「簡報態才作用的寫法」 |
| 逐步揭示 data-step | .stepmark.dot | .stepmark.ul 底線、.stepmark.dot 著重號(橫行標在字下)。 | present.md「簡報態才作用的寫法」 |
| 逐步揭示 data-step | .steps | 逐列聚焦 data-walk/data-focus:data-walk 掛在容器上(tbody、.lad、.g3、.kv、.steps⋯),子元素從第 N 步起 | present.md「簡報態才作用的寫法」 |
| 數字從基準值滾動 data-f⋯ | .dlt.up | .dlt.up 紅漲、.dlt.dn 綠跌(語意第三色); | present.md「閱讀態也作用的互動」 |
| 數字從基準值滾動 data-f⋯ | .dlt.dn | .dlt.up 紅漲、.dlt.dn 綠跌(語意第三色); | present.md「閱讀態也作用的互動」 |
| 聯動 | .tb.heat | 熱力表 .tb.heat 與符號矩陣 .tb.sym 不做(格的底色與燈號就是資料)。 | present.md「閱讀態也作用的互動」 |
| 聯動 | .tb.sym | 熱力表 .tb.heat 與符號矩陣 .tb.sym 不做(格的底色與燈號就是資料)。 | present.md「閱讀態也作用的互動」 |
| 聯動 | span.ev | - 結論↔證據:結論列或內文寫 [ev=鍵]結論片語[/ev](圍欄內寫 <span class="ev" data-ev="鍵">),滑過時本頁 data-k | present.md「閱讀態也作用的互動」 |
| 列印印什麼 | .tblwrap | - scroll: 1 的頁與 .tblwrap 寬表:紙本捲不動,裝不下就被裁掉; | present.md「列印印什麼」 |
| 點 | .divider | 章節頁放大成 2.6em 的紅「章」,裡面是章號(.divider .num)。 | brand.md「筆畫母題:點・橫折・圓」 |
| 點 | .num | 章節頁放大成 2.6em 的紅「章」,裡面是章號(.divider .num)。 | brand.md「筆畫母題:點・橫折・圓」 |
| 橫折(內容頁標題列) | .head | 2. 橫折(內容頁標題列):.head 之上一橫(2.6em × M),左端折下一豎托住眉標與標題、長度隨標題行數; | brand.md「筆畫母題:點・橫折・圓」 |
| 橫(結構頁) | .tt | 3. 橫(結構頁):章節頁與封底在標題之上寫一橫,長度=標題寬的 5/8(.tt 包住橫與標題); | brand.md「筆畫母題:點・橫折・圓」 |
| 橫(結構頁) | .cline | 封底的橫(.cline)右端上方同樣一點。 | brand.md「筆畫母題:點・橫折・圓」 |
| 封面 | .crule | 標題下置中的細紅線(.crule)沿用。 | brand.md「筆畫母題:點・橫折・圓」 |
| 主角要大一個量級,而且只有一個。 | .hero.big | 焦點數字至少是內文的 2 倍:.cell.kpi 24pt、.hero 48pt、hero 分到半頁以上高度時 .hero.big 77pt。 | design.md「簡報的精神:留下來的九件事」 |
| 非線性導覽。 | .x | (掛 .sh .x,無處可掛用 .note.xref); | design.md「HTML 的優勢:拿來用的八件事」 |
| 版面檢核(S3 讀 △ 時) | .center | (例如刻意的大留白主張頁不用 .center),在 storyline 記一句理由即可,不必為了消 △ 硬塞內容。 | design.md「版面檢核(S3 讀 △ 時)」 |
| 16:9 框架 | section.slide | 垂直 scroll-snap,一個 <section class="slide"> 一張。 | MAINTAINING.md「引擎內部規格」 |
| 字級實作 | .scroll | scroll: 1 加 .scroll。 | MAINTAINING.md「引擎內部規格」 |
| 彈性字級與垂直節奏的求解 | console.warn | 求解失敗 console.warn。 | MAINTAINING.md「引擎內部規格」 |
| 列印實作 | .slide | 列印實作:列印時 .slide/.frame 寫死 33.87cm × 19.04cm(高度留 0.1mm 捨入,免得多吐空白頁)、取消圓角陰影與 | MAINTAINING.md「引擎內部規格」 |
| 列印實作 | .frame | 列印實作:列印時 .slide/.frame 寫死 33.87cm × 19.04cm(高度留 0.1mm 捨入,免得多吐空白頁)、取消圓角陰影與 | MAINTAINING.md「引擎內部規格」 |
| 列印實作 | body.has-chapbar | aspect-ratio,.frame 與特異性較高的 body.has-chapbar .frame 一起覆寫; | MAINTAINING.md「引擎內部規格」 |
| 引擎自動做的事 | .chap-map | - 章節地圖 .chap-map(≥2 張 divider,本章點亮、可點擊、列印照印); | MAINTAINING.md「引擎內部規格」 |
| 引擎自動做的事 | .tip-float | .tip-float 掛在 body 不受影響。 | MAINTAINING.md「引擎內部規格」 |
| 審回灌時優先看的片段 | .tb.tb.tb | - 欄組表頭 tr.cg:片段用 .tb.tb.tb 把特異性提到 (0,4,2) 才蓋得過表頭墨線; | MAINTAINING.md「回灌審查」 |
| 明體子集內嵌 | .quote | 明體子集內嵌:build 掃出明體語境(.k/em/.stmt/.quote/.serif,以及 custom-css 裡用 --font-serif 的類名⋯ | MAINTAINING.md「交付與產出標記內部」 |
| 明體子集內嵌 | .foot | 頁尾英文標語(.foot .tag .en,細字+italic)刻意不吃 --font-serif,避免合成假斜體。 | MAINTAINING.md「交付與產出標記內部」 |
| 明體子集內嵌 | .tag | 頁尾英文標語(.foot .tag .en,細字+italic)刻意不吃 --font-serif,避免合成假斜體。 | MAINTAINING.md「交付與產出標記內部」 |
語意變體6 條
元件的 .hot(紅強調)/.warn(琥珀)/.ok(綠)組合:引擎樣式裡有定義的才收(一組只標一個)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| .card 的變體 | .card.hot .card.warn .card.ok | 紅強調、琥珀注意、綠達成 | template.html(引擎樣式) |
| .cell 的變體 | .cell.hot .cell.warn .cell.ok | 紅強調、琥珀注意、綠達成 | template.html(引擎樣式) |
| .fs 的變體 | .fs.hot | 紅強調 | template.html(引擎樣式) |
| .lr 的變體 | .lr.hot .lr.warn .lr.ok | 紅強調、琥珀注意、綠達成 | template.html(引擎樣式) |
| .st 的變體 | .st.hot | 紅強調 | template.html(引擎樣式) |
| .ti 的變體 | .ti.hot | 紅強調 | template.html(引擎樣式) |
屬性19 條
寫在 html 圍欄元素上的 data- 屬性(規格文件寫到、引擎程式或樣式裡找得到的)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| data-count | data-count | b 可掛 data-count="999" 讓數字滾動) | components.md「元件總表(類名+最小 DOM)」 |
| data-from | data-from | 要從去年值(基準值)滾到今年值,另寫 data-from="1203400"; | components.md「元件總表(類名+最小 DOM)」 |
| data-dec | data-dec | 整數與小數都帶千分位),要指定位數寫 data-dec="2"; | components.md「元件總表(類名+最小 DOM)」 |
| data-tip | data-tip | .tip.s 淡樣式 tooltip <span class="tip s" tabindex="0" data-tip="…">(出處頁碼、案號:字色跟上下⋯ | components.md「元件總表(類名+最小 DOM)」 |
| data-tabs | data-tabs | 頁內頁籤 [data-tabs]+.tabbar/.tabpane:列印只印開檔那一片(寫 class="tabpane on" 的那片; | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 |
| data-switch | data-switch | 狀態切換 [data-switch]+.state[data-name]:同一組數字換一種看法(金額/占比、表/圖、各時距):本檔「狀態切換」 | present.md「作者要寫的互動(總覽)」 |
| data-name | data-name | 狀態切換 [data-switch]+.state[data-name]:同一組數字換一種看法(金額/占比、表/圖、各時距):本檔「狀態切換」 | present.md「作者要寫的互動(總覽)」 |
| data-k | data-k | 結論↔證據 [ev=鍵]…[/ev]、表圖聯動 data-k、同詞 data-hl(精準指標螢幕):「這個結論從哪裡看出來」一滑就框出證據:本檔「聯動」 | present.md「作者要寫的互動(總覽)」 |
| data-hl | data-hl | 結論↔證據 [ev=鍵]…[/ev]、表圖聯動 data-k、同詞 data-hl(精準指標螢幕):「這個結論從哪裡看出來」一滑就框出證據:本檔「聯動」 | present.md「作者要寫的互動(總覽)」 |
| data-md | data-md | deck 自訂的元件,元素加 data-md="…"(空字串=略過), | present.md「作者要寫的互動(總覽)」 |
| data-step | data-step | 畫面:步驟全亮、沒有聚焦與釘住:步驟與聚焦類屬性(data-step、data-walk、data-focus、.stepmark 的逐段)不作用; | present.md「兩態契約」 |
| data-walk | data-walk | 畫面:步驟全亮、沒有聚焦與釘住:步驟與聚焦類屬性(data-step、data-walk、data-focus、.stepmark 的逐段)不作用; | present.md「兩態契約」 |
| data-focus | data-focus | 畫面:步驟全亮、沒有聚焦與釘住:步驟與聚焦類屬性(data-step、data-walk、data-focus、.stepmark 的逐段)不作用; | present.md「兩態契約」 |
| data-ref | data-ref | 編號自動 A1、A2⋯,要固定就在浮層寫 data-ref。 | present.md「閱讀態也作用的互動」 |
| data-print | data-print | 列印:沒寫 data-print=開檔畫面,只印開檔那一態(data-default 那一態,沒寫就是主態),分段鈕照印、亮開檔那一顆; | present.md「閱讀態也作用的互動」 |
| data-default | data-default | 列印:沒寫 data-print=開檔畫面,只印開檔那一態(data-default 那一態,沒寫就是主態),分段鈕照印、亮開檔那一顆; | present.md「閱讀態也作用的互動」 |
| data-primary | data-primary | 主態=第一態或掛 data-primary,開頁顯示哪一態掛 data-default。 | present.md「閱讀態也作用的互動」 |
| data-ev | data-ev | - 結論↔證據:結論列或內文寫 [ev=鍵]結論片語[/ev](圍欄內寫 <span class="ev" data-ev="鍵">),滑過時本頁 data-k | present.md「閱讀態也作用的互動」 |
| data-link | data-link | 圖表加 data-link, | present.md「閱讀態也作用的互動」 |
引擎函式7 條
# custom-js 可以呼叫或監聽的引擎函式與事件(規格文件寫到、引擎程式裡找得到的)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| deckMdRule | deckMdRule | 或在 # custom-js 呼叫 deckMdRule('選擇器', (el, h) => 字串)(h.txt/h.flat/h.table/h.line); | present.md「作者要寫的互動(總覽)」 |
| deckExportMarkdown | deckExportMarkdown | 主控台 deckExportMarkdown() 取字串。 | present.md「作者要寫的互動(總覽)」 |
| deckSettle | deckSettle | 圖表翻到才初始化、量測與列印前 deckSettle() 補成終態。 | MAINTAINING.md「引擎內部規格」 |
| deckInitCharts | deckInitCharts | 容器與載入方式見 components.md(.xhb-ec+script.echarts-opt,# custom-js 呼叫 deckInitCharts⋯ | snippets.md「ECharts option 範例(寫在 blank 的 `.xhb-ec` 容器,由引擎載入與畫圖)」 |
| deck:chart | deck:chart | 在該 .xhb-ec 上發 deck:chart(冒泡到 document),e.detail.chart=ECharts 實例、e.detail.el=容器⋯ | snippets.md「圖表共通規則(先讀再抄)」 |
| deckCharts | deckCharts | 互動集 off、小螢幕,以及 # custom-js 的程式用到 window.deckCharts(走訪引擎的圖表陣列)的 deck,維持「載入即畫」; | snippets.md「圖表共通規則(先讀再抄)」 |
| deckChartOpt | deckChartOpt | deckChartOpt(el) 當底:它是引擎實際套用的 option(補過色票與表圖聯動樣式),用 JSON 原文會把這些洗掉。 | snippets.md「圖表共通規則(先讀再抄)」 |
色彩與字型 token36 條
引擎 :root 的 CSS 變數(官方色、語意色、紙面與墨色、字型);自訂樣式只用這些,不寫死色碼
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| --brand | --brand: #d03238 | | --brand | #D03238 | 官方紅=行動/強調/招牌筆畫(點、橫、章) | | template.html :root;brand.md |
| --brand-deep | --brand-deep: #a82329 | | --brand-deep | #A82329 | 深一階紅:小字級紅、hover | | template.html :root;brand.md |
| --brand-soft | --brand-soft: #e58b8f | | --brand-soft / --brand-bg | #E58B8F / #FBE9EA | 紅的淡化 | | template.html :root;brand.md |
| --brand-bg | --brand-bg: #fbe9ea | | --brand-soft / --brand-bg | #E58B8F / #FBE9EA | 紅的淡化 | | template.html :root;brand.md |
| --brand-rgb | --brand-rgb: 208 50 56 | 引擎預設值 | template.html :root |
| --blue | --blue: #003f98 | | --blue | #003F98 | 官方藍=結構/輔助/現況 | | template.html :root;brand.md |
| --blue-soft | --blue-soft: #3a63ac | | --blue-soft / --blue-bg | #3A63AC / #E8EDF7 | 藍的淡化 | | template.html :root;brand.md |
| --blue-bg | --blue-bg: #e8edf7 | | --blue-soft / --blue-bg | #3A63AC / #E8EDF7 | 藍的淡化 | | template.html :root;brand.md |
| --blue-ink | --blue-ink: #0a1830 | 引擎預設值 | template.html :root |
| --blue-rgb | --blue-rgb: 0 63 152 | 引擎預設值 | template.html :root |
| --canvas | --canvas: #0b1322 | | --canvas | #0B1322 | 頁面畫布 | | template.html :root;brand.md |
| --paper | --paper: #edf0f4 | | --paper 系 | #EDF0F4… | 卡片紙面 | | template.html :root;brand.md |
| --paper-2 | --paper-2: #e3e8ef | 引擎預設值 | template.html :root |
| --card | --card: #ffffff | 引擎預設值 | template.html :root |
| --card-2 | --card-2: #f8fafc | 引擎預設值 | template.html :root |
| --ink | --ink: #222631 | 引擎預設值 | template.html :root |
| --ink-soft | --ink-soft: #3f4653 | 內文 --ink-soft; | template.html :root;brand.md |
| --ink-mute | --ink-mute: #5c6673 | 弱化只到 --ink-mute。 | template.html :root;brand.md |
| --line | --line: #dce1ea | 引擎預設值 | template.html :root |
| --line-2 | --line-2: #cad1dd | 引擎預設值 | template.html :root |
| --line-brand | --line-brand: rgb(var(--brand-rgb)/.10) | 引擎預設值 | template.html :root |
| --brand-bd | --brand-bd: #f0d2d4 | 引擎預設值 | template.html :root |
| --ok | --ok: #2e7a57 | | --ok / --ok-bg | #2E7A57 / #E6F2EA | 達成/正常 | | template.html :root;brand.md |
| --ok-bg | --ok-bg: #e6f2ea | | --ok / --ok-bg | #2E7A57 / #E6F2EA | 達成/正常 | | template.html :root;brand.md |
| --up | --up: #b3282e | | --up / --up-bg | #B3282E / #FDECEC | 漲(紅) | | template.html :root;brand.md |
| --up-bg | --up-bg: #fdecec | | --up / --up-bg | #B3282E / #FDECEC | 漲(紅) | | template.html :root;brand.md |
| --dn | --dn: #2e7a57 | | --dn / --dn-bg | #2E7A57 / #E6F2EA | 跌(綠) | | template.html :root;brand.md |
| --dn-bg | --dn-bg: #e6f2ea | | --dn / --dn-bg | #2E7A57 / #E6F2EA | 跌(綠) | | template.html :root;brand.md |
| --warn | --warn: #8a5a00 | | --warn / --warn-bg | #8A5A00 / #FDF3E1 | 注意/風險中 | | template.html :root;brand.md |
| --warn-bg | --warn-bg: #fdf3e1 | | --warn / --warn-bg | #8A5A00 / #FDF3E1 | 注意/風險中 | | template.html :root;brand.md |
| --bad | --bad: #b3282e | | --bad / --bad-bg | #B3282E / #FDECEC | 未達/風險高 | | template.html :root;brand.md |
| --bad-bg | --bad-bg: #fdecec | | --bad / --bad-bg | #B3282E / #FDECEC | 未達/風險高 | | template.html :root;brand.md |
| --font-display | --font-display: "Noto Sans TC","PingFang TC","Microsoft⋯ | 引擎預設值 | template.html :root |
| --font-body | --font-body: "Noto Sans TC","PingFang TC","Microsoft⋯ | 引擎預設值 | template.html :root |
| --font-serif | --font-serif: "SPX Serif TC","Noto Serif TC","Songti⋯ | 引擎預設值 | template.html :root |
| --font-mono | --font-mono: "JetBrains Mono","SF Mono","Consolas","⋯ | 引擎預設值 | template.html :root |
版面片段41 條
snippets.md §一:依功能分十類,貼進 blank 的 html 圍欄、樣式寫 # custom-css(ref.py snippet <名稱>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 定義框 | .defn | 名詞第一次出現、讀者可能不懂時(知識工程、CSM、調整後淨值); | snippets.md「定義框」〔文字與說明〕 |
| 問答階梯 | .lad | 把讀者心裡的問題當頁面骨架:主管 Q&A 準備、立院質詢重點(問→機關答)、FAQ。 | snippets.md「問答階梯」〔文字與說明〕 |
| 方塊標籤 | .lad | 定義頁、教學頁、辦法說明:三到五個剛好四個字的面向(適用對象/申請方式/額度上限)。 | snippets.md「方塊標籤」〔文字與說明〕 |
| 條文摘錄 | .xcpt | 讓讀者看原文而不是轉述:立院財委會監看(法案條文、附帶決議)、法遵報告(新規定摘錄)、合約條款。 | snippets.md「條文摘錄」〔文字與說明〕 |
| 剪報卡 | .g2 | 同業動態月報、市場新聞摘要、競品觀察:媒體|日期|標題|一兩句關鍵引句|對我們的意涵。 | snippets.md「剪報卡」〔文字與說明〕 |
| 列帶三段 | .lad | 3–6 個並列主張、每個都有一個代表數字(成長率、倍數、名次、金額):解掉「標籤列只寫到半行、右半整條空白」, | snippets.md「列帶三段」〔列與表〕 |
| 指標矩陣 | .kmx | 子公司重要指標、平衡計分卡、月報 KPI 頁:12 個指標不用 12 塊磚,橫看一個構面、直看同一類指標。 | snippets.md「指標矩陣」〔列與表〕 |
| 欄組表頭 | .tb | 月報或季報損益的「累計|單季」、預算|實績、預測與修正:兩三組欄並排、每組一個組名,欄不混在一起; | snippets.md「欄組表頭」〔列與表〕 |
| 直排組名 | .tb | 風險清單、議題清單的分類頁:大類名橫排要 9 字寬,直排只要一個字寬,右邊清單照常對齊。 | snippets.md「直排組名」〔列與表〕 |
| 行內長條 | .tb | 排名、占比、達成率:表格查精確值,同一格的長條一眼看出大小,不必另畫一張圖。 | snippets.md「行內長條」〔列與表〕 |
| 符號矩陣 | .tb | KPI 月度燈號、專案進度、同業功能盤點、治理涵蓋、董事專長:格內只放符號,一眼看出誰有、誰沒有、哪個月轉紅。 | snippets.md「符號矩陣」〔列與表〕 |
| 熱力表 | .tb | 分行×月份、同業×指標、部門×滿意度面向:大表先看哪裡深,再查數字。 | snippets.md「熱力表」〔列與表〕 |
| 大號序號開放欄 | .g3 | 3–5 個有先後或會被引用的重點(建議事項、行動方案、三大能力):大號序號取代卡框與號圈,欄與欄之間只有髮絲線。 | snippets.md「大號序號開放欄」〔欄與格〕 |
| 截圖圖庫 | .g3 | 系統導入成果、介面改版前後、交付物樣張:畫面本身是證據時,讓讀者看到實物。 | snippets.md「截圖圖庫」〔欄與格〕 |
| 華夫格 | .waf | 市佔、滲透率、達成度——「幾成」用面積表達比長條更直覺。 | snippets.md「華夫格」〔佔比與組成〕 |
| 部分與整體 | .bar100 | 一個整體切成 2–5 塊:客群組成、營收結構、分行分布——「1,234 萬=66.6%+22.3%+11.1%」這一類。 | snippets.md「部分與整體」〔佔比與組成〕 |
| 構成拆解 | .decomp | 先看整體怎麼切,再看最大(或本頁要講)的那塊裡面又怎麼切:營收、費用、資產結構; | snippets.md「構成拆解」〔佔比與組成〕 |
| 子彈圖 | .blt | KPI 達成率、預算執行率——一行同時交代「做到多少/目標在哪/落在好壞哪一段」。 | snippets.md「子彈圖」〔比較與定位〕 |
| 啞鈴與區間 | .lgd | 兩群在多個面向上的落點(同業平均 vs 本行、去年 vs 今年、目標 vs 實績),比成對柱省空間; | snippets.md「啞鈴與區間」〔比較與定位〕 |
| 2×2 四宮格 | .quad | 機率×衝擊、優先×難度——兩軸定位。 | snippets.md「2×2 四宮格」〔比較與定位〕 |
| 序軸 | .axis | 難度、代價、成熟度、風險這種「一條尺度上的位置」——八種程式產出由易到難、答錯的代價由低到高。 | snippets.md「序軸」〔比較與定位〕 |
| 階梯 | .stair | 一級比一級多、一級比一級嚴的級別——交辦寫得多具體、會員門檻、成熟度、產出的壽命。 | snippets.md「階梯」〔層級與架構〕 |
| 金字塔 | .pyr | 風險胃口分層、資本配置優先、三道防線。 | snippets.md「金字塔」〔層級與架構〕 |
| 縮排組織樹 | .tree | 組織架構、子公司體系、產品線層級。 | snippets.md「縮排組織樹」〔層級與架構〕 |
| 上下式組織圖 | .org | 治理架構、專案組織、子公司架構:上層一個節點、下層 2–6 個節點,各節點下方一段說明(職掌、組成、持股)。 | snippets.md「上下式組織圖」〔層級與架構〕 |
| 分層架構 | .layers | AI 平台架構、系統盤點、資料架構、產業鏈:左欄層名共用一條欄寬,右邊每層一排方塊; | snippets.md「分層架構」〔層級與架構〕 |
| 中心四象限 | .hub4 | 「四個主軸,各有什麼作為」一頁講完:中央四象限圓只寫主軸名,左右兩側各兩塊文字依序對應左上、右上、左下、右下。 | snippets.md「中心四象限」〔策略框架〕 |
| 環繞輪 | .wheel | 多個並列主軸圍繞一個共同目標(中期策略、計畫總覽); | snippets.md「環繞輪」〔策略框架〕 |
| 屋型策略框架 | .house | 策略一頁全貌:屋頂一句願景、中間 3–4 根支柱(主軸,各一句主張+三項作為)、底座一條共用能力。 | snippets.md「屋型策略框架」〔策略框架〕 |
| 文氏與同心圓 | .venn | 兩三個集合的交集有內容時(規範涵蓋、客群重疊); | snippets.md「文氏與同心圓」〔策略框架〕 |
| 封閉循環 | .cyc | PDCA、內控循環、客戶生命週期——.flow 橫向流程是線性的,表達不了「回到起點」。 | snippets.md「封閉循環」〔流程〕 |
| 橫向決策 | .decide | 拿到一件事依序問 2–3 題、答「是」就停在某個結果——「三問一岔」選技術、上線前問兩題定把關方式。 | snippets.md「橫向決策」〔流程〕 |
| 接龍 | .chain | 前一格接後一格、格與格之間有一個數字——大語言模型逐詞接龍(格間是機率)、名單到撥款的轉換鏈 | snippets.md「接龍」〔流程〕 |
| 泳道 | .swim | 跨部門流程、作業流程改善、客戶旅程:每列一個單位、每欄一個步驟,方塊落在負責的那一列,看出流程卡在誰、哪一步。 | snippets.md「泳道」〔流程〕 |
| 階段計畫欄 | .phase | 專案計畫一頁看完:幾個階段、各多久、做什麼、哪些工作跨階段; | snippets.md「階段計畫欄」〔時程〕 |
| 甘特 | .gantt | 專案時程、年度推動進度:列=工作、欄=月(或週),橫條表示期間、菱形表示里程碑。 | snippets.md「甘特」〔時程〕 |
| 時間軸擴充 | .tl | .tl.h.alt:6–10 個節點、每個兩三行,節點輪流排在軸上下,每個節點可用兩欄寬; | snippets.md「時間軸擴充」〔時程〕 |
| 時間軸×指標列 | .tlx | 同一條日期軸讀兩三個累計指標(政策成效追蹤、專案成果累計、KPI 里程碑),每個值對齊時點; | snippets.md「時間軸×指標列」〔時程〕 |
| 狀態記號 | .lp | 任何要標狀態的地方:表格燈號(符號矩陣)、架構方塊(分層架構)、列點或標籤前。 | snippets.md「狀態記號」〔行內小標記〕 |
| 鍵連標號 | .kn | 條文摘錄、泳道卡關處、表格焦點格旁的註號:一個紅底小號碼,旁邊或頁底用同一個號碼寫說明。 | snippets.md「鍵連標號」〔行內小標記〕 |
| 頁面狀態章 | .sh | 一頁的內容還不是定稿、只是示意或附錄備查時,在區段標題右註(.sh .x)掛一個灰框小章。 | snippets.md「頁面狀態章」〔行內小標記〕 |
互動片段4 條
snippets.md §三:deck 自帶的互動(ref.py snippet <名稱>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 色塊圖例+並列雙圓餅 | .cwrap | 銀行/證券、本期/上期這類兩群同構比較。 | snippets.md「色塊圖例+並列雙圓餅」 |
| 案件清單浮層 | data-cases | 任何「這個數字是哪幾件」會被追問的計數頁。 | snippets.md「案件清單浮層」 |
| 圖表放大檢視 | .ec-zoom | 一頁兩張以上的圖、或刻意壓小的圖。 | snippets.md「圖表放大檢視」 |
| 核示勾選框 | .ckopt | 現場核示、需要當場勾選的議題頁。 | snippets.md「核示勾選框」 |
圖表範例39 條
snippets.md §二:ECharts option 範例(ref.py chart <名稱>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 圖表共通規則 | 圖表共通規則(先讀再抄) | snippets.md「圖表共通規則」 | |
| ecFit:共用 # custom-js | ecFit:共用 # custom-js(圖表 px 值跟著投影片等比) | snippets.md「ecFit」 | |
| 線尾直接標籤 | ec-endlabel | 2–4 條線比趨勢,線尾寫「名稱+末值」,讀者不必來回對圖例。 | snippets.md「ec-endlabel」 |
| 圖下對齊數據列 | ec-datarow | 規模柱+1–3 列比率(季增率、利差、占比),數字與柱逐一對齊,讀者不必讀軸估值。 | snippets.md「ec-datarow」 |
| 上下分層共用 X 軸 | ec-twotier | 金額+比率(利息淨收益+淨利差、逾放比+覆蓋率),取代雙 y 軸:兩個量綱各有刻度、時間仍對齊。 | snippets.md「ec-twotier」 |
| 小倍數 | ec-multiples | 多家子公司、多個產品同一指標比形狀; | snippets.md「ec-multiples」 |
| 年度|同期分組圖 | ec-fyhalf | 半年報、季報:全年走勢與今年同期放同一張,又不會被讀成連續時間。 | snippets.md「ec-fyhalf」 |
| 柱間成長率括號 | ec-bracket | 同期、季比較:成長率寫在「比較的兩根柱之間」,讀者知道誰比誰。 | snippets.md「ec-bracket」 |
| 多年複合成長括號 | ec-cagr | 3 年以上的年複合成長率,括號跨首末兩根。 | snippets.md「ec-cagr」 |
| 柱間增幅膠囊 | ec-pillbar | 逐期增幅,膠囊放在相鄰兩根柱之間(寫的是右邊那根比左邊)。 | snippets.md「ec-pillbar」 |
| 線尾增幅膠囊 | ec-pill | 趨勢線講「每年成長多少」。 | snippets.md「ec-pill」 |
| 轉折點與事件注記 | ec-turn | 峰谷、政策事件、制度改變點,一張 ≤4 個。 | snippets.md「ec-turn」 |
| 圖上局部說明框 | ec-callout | 標「這一點、這一段」的局部事實(改口徑、異常值原因),一張圖只放一個。 | snippets.md「ec-callout」 |
| 時期色帶+預測虛線 | ec-era | 長期趨勢標時期(寬鬆、升息;舊制、新制)、實績接預測。 | snippets.md「ec-era」 |
| 預測區間扇形 | ec-fan | 利率、成長率展望、壓力情境:預測不是一個點。 | snippets.md「ec-fan」 |
| 目標區間帶 | ec-band | 資本適足率、成本收入比這類有法定或目標區間的指標。 | snippets.md「ec-band」 |
| 目標柱虛線框 | ec-targetbar | 目標值和實績並排(「20X8 要降到 45」)。 | snippets.md「ec-targetbar」 |
| 瀑布最小骨架 | ec-waterfall | 損益橋、資本適足變動。 | snippets.md「ec-waterfall」 |
| 瀑布延伸:小計、正負號、編號 | ec-bridge | 中間要交代一次小計的損益橋、費用變動。 | snippets.md「ec-bridge」 |
| 對照瀑布 | ec-bridge2 | 本期與去年同期的組成直接比。 | snippets.md「ec-bridge2」 |
| 發散條 | ec-diverge | 各業別增減、預算增減,正負兩側一眼分開。 | snippets.md「ec-diverge」 |
| 剪刀差 | ec-jaws | 證明收入跑得比費用快(營運槓桿)。 | snippets.md「ec-jaws」 |
| 同業排名長條 | ec-peer | 同業 ROE、成本收入比、市占排名,一眼看出自家位置。 | snippets.md「ec-peer」 |
| 區間條+中位+目前值 | ec-range | 「現在落在歷史區間的哪裡」:估值、利率、同業分布。 | snippets.md「ec-range」 |
| 啞鈴圖 | ec-dumbbell | 兩期或兩群在多個面向上的差距(能力評分、滿意度前後)。 | snippets.md「ec-dumbbell」 |
| 定位散點 | ec-position | 策略定位、同業估值定位:「我們在哪、要走到哪」。 | snippets.md「ec-position」 |
| 循環散點軌跡 | ec-trail | 景氣位置、兩個指標的軌跡:現在在哪一象限、往哪走。 | snippets.md「ec-trail」 |
| 堆疊柱+右側逐段變動欄 | ec-segdelta | 放款、存款結構:看得到結構,也看得到每段變多少,右欄兼作直接標籤。 | snippets.md「ec-segdelta」 |
| 多期 100% 堆疊 | ec-stack100 | 資產配置、營收組成的今昔結構。 | snippets.md「ec-stack100」 |
| 馬賽克 | ec-mekko | 區域×產品的規模結構同時看,限 3×3 以內。 | snippets.md「ec-mekko」 |
| 並列雙圓環 | ec-donut2 | 兩群的組成(銀行/證券、今年/去年),中心放總額; | snippets.md「ec-donut2」 |
| 桑基流量 | ec-sankey | 資金流向、客戶轉介、案件流:量從哪裡來、到哪裡去。 | snippets.md「ec-sankey」 |
| 泡泡矩陣 | ec-bubblegrid | 兩種分類交叉的件數(機構類型×發展階段),數字寫在圓內。 | snippets.md「ec-bubblegrid」 |
| 下三角相關係數熱力 | ec-heat | 相關係數、曝險分布、月份×指標,大矩陣先找熱點。 | snippets.md「ec-heat」 |
| 概念示意曲線 | ec-concept | 概念本身有形狀(微笑曲線、生命週期、J 曲線)。 | snippets.md「ec-concept」 |
| 版面:2×2 小圖陣、一大二小 | ec-lay-2x2 | 版面:2×2 小圖陣、一大二小 ec-lay-2x2/ec-lay-1big2small | snippets.md「ec-lay-2x2」 |
| 漏斗 | funnel | sort:'descending'、gap:2、label.position:'inside';轉換、案件流/避免 >5 層 | snippets.md「其他骨架」 |
| 雷達 | radar | radar.indicator 各軸 max 統一量綱;能力/風險多維/避免 >2 系列(讀不清) | snippets.md「其他骨架」 |
| 甘特 | custom(renderItem)或橫向 bar 佔位 | ECharts 無原生甘特;簡版用橫向 bar+透明佔位起點(custom 要函式,JSON 放不進去);里程碑、專案時程/多任務長軸改拆頁;不經 EChar⋯ | snippets.md「其他骨架」 |
圖表共通規則28 條
snippets.md「圖表共通規則」:每一張 ECharts 圖都要守的規則(ref.py chart 圖表共通規則)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 容器與載入 | # custom-js 載入 ECharts,onload 與 onerror 都呼叫 deckInitCharts(),離線時每張圖才會留下可見的失敗訊息; | snippets.md「圖表共通規則」容器與載入 | |
| 容器與載入 | 引擎在圖所在頁第一次成為作用中頁才畫(翻到才初始化); | snippets.md「圖表共通規則」容器與載入 | |
| 容器與載入 | 補設定每次都從 option 原樣重算、整份套上,不要記「做過了」:結算重畫是清空後重設 JSON 原文,補丁全部消失, | snippets.md「圖表共通規則」容器與載入 | |
| 容器與載入 | 不在 option 裡自訂 animation 時長:列印與量測前引擎會以不帶動畫的終態重畫,自訂時長只會讓簡報態的進場不一致。 | snippets.md「圖表共通規則」容器與載入 | |
| 色彩 | option 層不寫 color,引擎自動套品牌序列(藍→紅→藍淡→紅淡→灰→淺藍灰)。 | snippets.md「圖表共通規則」色彩 | |
| 色彩 | 註記的線與字用中性墨色:內文 #222631、次要 #5c6673、細線 #cad1dd; | snippets.md「圖表共通規則」色彩 | |
| 色彩 | 圖例用頁面色塊 .lgd/.sw(不用 ECharts legend); | snippets.md「圖表共通規則」色彩 | |
| px 與縮放 | ECharts 的 fontSize、offset、nameGap、symbolSize、標籤的 distance/padding/borderRadius、rich 的寬度、 | snippets.md「圖表共通規則」px 與縮放 | |
| px 與縮放 | option 裡的 px 值一律照「ECharts 預設字級 12px」的比例寫,由 ecFit 乘上倍率(本檔「ecFit」)。 | snippets.md「圖表共通規則」px 與縮放 | |
| px 與縮放 | 字級:軸標籤預設 12,列印約 10.7pt; | snippets.md「圖表共通規則」px 與縮放 | |
| JSON 的限制 | option 是 JSON,不能放函式:formatter 只能用字串樣板({a} 系列名、{b} 類目名、{c} 值、{@[2]} 資料第 3 維), | snippets.md「圖表共通規則」JSON 的限制 | |
| 數字自洽 | 算錯不會報錯,只會畫歪。 | snippets.md「圖表共通規則」數字自洽 | |
| 匯出 Markdown | 引擎把圖還原成表時,取第一條類目軸當列、每條系列當一欄。 | snippets.md「圖表共通規則」匯出 Markdown | |
| 版面 | 圖的高度:.xhb-ec 預設最小高 12em,放在直排的容器(.canvas、.seg、.card)裡會撐滿剩下的高度; | snippets.md「圖表共通規則」版面 | |
| 版面 | 圖旁欄:圖撐滿之後,旁邊的文字欄常常下半空著(排法型錄「圖+評論欄」)。 | snippets.md「圖表共通規則」版面 | |
| 版面 | 兩個 .xhb-ec 並排要放在同一個區段(components.md「兩群比較用兩張並列圓餅,不用內外環」)。 | snippets.md「圖表共通規則」版面 | |
| 版面 | 圖的尺寸由引擎負責:.xhb-ec 帶 contain:size,前一次尺寸的 SVG 不會回頭撐寬 .g2/.split 的欄、撐高列; | snippets.md「圖表共通規則」版面 | |
| 實測撞到的坑 | 類目軸會把小數 x 四捨五入:要放在兩根柱之間的東西(括號腳、膠囊)改掛第二條隱藏的數值 x 軸,min:-0.5、max:n-0.5。 | snippets.md「圖表共通規則」實測撞到的坑 | |
| 實測撞到的坑 | 資料前段是 "-" 的線不能開 endLabel(ECharts 5.6 算出 NaN 座標、主控台報錯):預測段改在最後一筆寫 label。 | snippets.md「圖表共通規則」實測撞到的坑 | |
| 實測撞到的坑 | 線寫 symbol:"none" 時逐筆 label 不會畫:要標值的隱形線寫 symbolSize:0。 | snippets.md「圖表共通規則」實測撞到的坑 | |
| 實測撞到的坑 | 垂直 markLine 的標籤 position:"insideEndTop" 會轉成直書:寫 "end",放在線頂。 | snippets.md「圖表共通規則」實測撞到的坑 | |
| 實測撞到的坑 | x 軸的軸名放在尾端(nameLocation:"end")時,grid.right 要留出軸名的寬度,不然會被切掉; | snippets.md「圖表共通規則」實測撞到的坑 | |
| 實測撞到的坑 | 橫向長條的類目軸預設貼著 0(axisLine.onZero),負值柱會壓在類目名上:寫 onZero:false。 | snippets.md「圖表共通規則」實測撞到的坑 | |
| 實測撞到的坑 | ECharts 依系列名配色,同名=同色:拆成幾條的同一個量可以借用(馬賽克),但匯出表會出現同名欄; | snippets.md「圖表共通規則」實測撞到的坑 | |
| 實測撞到的坑 | ECharts 的內建預設不吃全域 textStyle:軸標籤 12、軸名 12、標題 18、圓餅與桑基的系列標籤 12,ecFit 會一併補上倍率。 | snippets.md「圖表共通規則」實測撞到的坑 | |
| 實測撞到的坑 | markLine 的 type:"average" 算的是掛著它的那條系列的全部點(含自家); | snippets.md「圖表共通規則」實測撞到的坑 | |
| 實測撞到的坑 | resize() 只改 SVG 外框,內容等下一格動畫才重畫,列印當下沒有下一格(直接印=空白圖); | snippets.md「圖表共通規則」實測撞到的坑 | |
| 實測撞到的坑 | 事後 setOption 只能補原 option 已有的頂層元件:統一 patch xAxis/yAxis/legend,圓餅會憑空長出一組座標軸(圖左圖下兩條線) | snippets.md「圖表共通規則」實測撞到的坑 |
片段共用規則14 條
snippets.md 版面片段的共同規則與互動片段前言(查片段時工具一起帶出)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 色彩只用 token | --brand/--brand-rgb/--blue/--ink/--ink-mute/--line/--line-2/--up/--dn/--ok/--warn/--bad 及⋯ | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 尺寸一律 em | (跟著 .inner 的 cqh 等比縮放;只有 1px 髮絲線寫 px):寫死 px=五檔視窗有一檔會爆或空。 | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 不連外、不疊出母片框 | 禁外部依賴; | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 線取代面 | 分隔用髮絲線(1px)、強調用粗線(.2em); | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 強調只加亮目標 | .hot 一組只標一個(官方紅),只改目標自己的字色、底色或框; | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 狀態不只靠顏色 | 燈號與系統狀態用本檔「狀態記號」.lp(圓=達標、三角=留意、方=未達),色弱與黑白列印都分得出。 | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 根元素帶 data-shape | 值=片段種類(同種同值,例 data-shape="wheel"); | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 一個 .seg 放一個形狀 | 片段不帶外距,同一頁兩個形狀分兩個 .seg,間距交給引擎的區段間距(同 .lad、.tb)。 | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 垂直節奏與彈性字級 | 隨頁面餘裕放大的間距(列距、踢面高度、決策的直線長度)吃引擎的 --rh(沒有引擎值時 var(--rh,1)=1), 不要為了填滿頁面手調間距; | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 列印與互動 | 沒有任何內容只在滑過或點擊時出現,列印與手機等比縮放照原樣; | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 匯出 Markdown | 純視覺的元素(長條、點、接頭)代表的值寫成字或掛 data-md; | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 手機版: 重排 | (文件流模式)沒有處理:橫向形狀在直立手機會超出寬度,該 deck 的形狀頁改用 .lad/.steps。 | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| 行單位 | 各段寫的行單位是 1920×1080、垂直節奏: off+彈性字級: off(12pt 自然排版)的值,量法同 MAINTAINING.md「行單位成本的量法」; | snippets.md「版面片段的共同規則(先讀再抄)」 | |
| §三 前言 | 規則見 components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」; | snippets.md「§三 前言」 |
排法151 條
layout-catalog.md:依「這一頁要回答的問題」分組的排法、不適合清單與跨頁體例(ref.py layout <名稱>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 編號重點清單 | 〔主張與結論〕有哪幾件事、各要記住一句什麼 | layout-catalog.md「主張與結論」 | |
| 判斷句小標+列點 | 〔主張與結論〕一頁讀完一章或整份的結論是什麼 | layout-catalog.md「主張與結論」 | |
| 側標區塊頁/標籤列 | 〔主張與結論〕一頁放幾種不同性質的內容,怎麼讓讀者一眼分辨每塊在講什麼 | layout-catalog.md「主張與結論」 | |
| 要點句領頭段 | 〔主張與結論〕段落必須保留(研究推論、主管要看脈絡),但要能先掃到結論 | layout-catalog.md「主張與結論」 | |
| 結論帶分段 | 〔主張與結論〕一頁3-5個主題,每個主題一句結論配一組數字,怎麼分段又不搶結論列的位置 | layout-catalog.md「主張與結論」 | |
| 面板結論標題 | 〔主張與結論〕雙圖或多圖頁,怎麼讓讀圖的順序就是讀一句話的順序 | layout-catalog.md「主張與結論」 | |
| 頁尾/段落結論句 | 〔主張與結論〕一段證據看完了,所以呢——這句收束放哪裡才不跟頁頂結論重複 | layout-catalog.md「主張與結論」 | |
| 主張欄頭+證據磚 | 〔主張與結論〕3-6個並列主張,每條主張都要有數字撐腰 | layout-catalog.md「主張與結論」 | |
| 數字領頭陳述 | 〔主張與結論〕三秒內抓到重點,主角就是斷言裡講的那個數 | layout-catalog.md「主張與結論」 | |
| 主軸欄/圖示格 | 〔主張與結論〕同一層級的幾個並列策略主軸或機會,各自要說什麼 | layout-catalog.md「主張與結論」 | |
| 短段兩兩並排 | 〔主張與結論〕6-10個並列短項目,單欄排列右半會整條空白怎麼辦 | layout-catalog.md「主張與結論」 | |
| 問題框→圖→結論 | 〔主張與結論〕讀者要先知道問了什麼,才看得懂答案 | layout-catalog.md「主張與結論」 | |
| 視覺目錄/章節總覽 | 〔主張與結論〕目錄頁能不能直接讀到每章的結論,而不只是章名 | layout-catalog.md「主張與結論」 | |
| 定調式子頁/整頁主張 | 〔主張與結論〕章首或全副核心主張要怎麼定調,讓讀者一眼記住 | layout-catalog.md「主張與結論」 | |
| 列帶三段 | 〔主張與結論〕3-6個並列主張,每條都要附上代表數字,但不想用欄式(改用列式) | layout-catalog.md「主張與結論」 | |
| 大號序號開放欄 | 〔主張與結論〕並列項目要有順序感,但不想畫流程箭頭 | layout-catalog.md「主張與結論」 | |
| 發現面板 | 〔主張與結論〕一頁2-4個發現,每個發現要自帶證據 | layout-catalog.md「主張與結論」 | |
| 維度卡陣 | 〔主張與結論〕多維度分析,每張卡自己就要有結論 | layout-catalog.md「主張與結論」 | |
| 雙欄對照 | 〔比較〕同一主題的兩面,怎麼並排讓讀者左右對讀 | layout-catalog.md「比較」 | |
| 現況→建議對照/新舊制對應圖 | 〔比較〕每一項改變,從什麼變成什麼 | layout-catalog.md「比較」 | |
| 情境比較欄 | 〔比較〕不確定的未來,幾種可能結果要並排看 | layout-catalog.md「比較」 | |
| 跨欄同位+欄底證據 | 〔比較〕並排卡要逐項比較,欄長短不一時數字列還是要對成一條線 | layout-catalog.md「比較」 | |
| 發散條/對決中軸 | 〔比較〕正負兩側的增減,或兩個對象逐項對決 | layout-catalog.md「比較」 | |
| 勾選/方向矩陣 | 〔比較〕誰有、誰沒有、差在哪,一眼看完 | layout-catalog.md「比較」 | |
| 文字矩陣表 | 〔比較〕多個對象、多個面向的定性比較,格內要寫短文字 | layout-catalog.md「比較」 | |
| 前後對比磚/倍數箭頭 | 〔比較〕從多少變成多少,一眼看出倍數或增幅 | layout-catalog.md「比較」 | |
| 剪刀差 | 〔比較〕證明「A跑得比B快」,兩條線的距離就是差距 | layout-catalog.md「比較」 | |
| 定位散點/循環散點軌跡/定位泡泡圖 | 〔比較〕我們在哪、要走到哪;或景氣現在在哪個象限、往哪走 | layout-catalog.md「比較」 | |
| 泡泡矩陣 | 〔比較〕兩個分類維度的分布,每格數量多少 | layout-catalog.md「比較」 | |
| 啞鈴圖/區間條+目前值 | 〔比較〕兩群在多個面向上的差距,比成對柱省空間 | layout-catalog.md「比較」 | |
| 馬賽克圖 | 〔比較〕兩個維度的構成同時看(欄寬×欄高都代表比例) | layout-catalog.md「比較」 | |
| 正誤對照 | 〔比較〕規範或教育訓練,看例子就懂對錯 | layout-catalog.md「比較」 | |
| 預測對照表 | 〔比較〕大家怎麼看、我們怎麼看——多個機構的預測並排比較 | layout-catalog.md「比較」 | |
| 單圖滿版 | 〔趨勢〕一張圖就是整頁的證據,趨勢怎麼看 | layout-catalog.md「趨勢」 | |
| 雙圖並排 | 〔趨勢〕兩個相關指標並看,例如規模與比率 | layout-catalog.md「趨勢」 | |
| 多圖網格 | 〔趨勢〕一頁看完同一主題的幾個面向,主從關係要不要區分 | layout-catalog.md「趨勢」 | |
| 小倍數 | 〔趨勢〕比較多個類別的形狀(同一張迷你圖對每類重複一次) | layout-catalog.md「趨勢」 | |
| 圖下對齊數據列 | 〔趨勢〕圖只給規模,比率(利差、占比、覆蓋率)能不能跟每個時點精確對齊,不必再開一張表 | layout-catalog.md「趨勢」 | |
| 堆疊柱+右側逐段變動欄 | 〔趨勢〕堆疊柱看得到結構,看不到每段變多少,怎麼補 | layout-catalog.md「趨勢」 | |
| 兩列圖上下疊/共用X軸上下分層圖 | 〔趨勢〕兩個時距或兩個量綱,上下對齊比左右好讀、又不必畫雙y軸 | layout-catalog.md「趨勢」 | |
| 圖上數值注記/柱間成長率標註 | 〔趨勢〕讓圖自己講so-what,讀者不必自己算增幅 | layout-catalog.md「趨勢」 | |
| 圖上局部結論框 | 〔趨勢〕指出圖上某一段或某一點的意義,不是整頁結論 | layout-catalog.md「趨勢」 | |
| 時期/群組色帶/預測區間扇形 | 〔趨勢〕讓讀者知道哪一段是什麼時期、哪一段是預測 | layout-catalog.md「趨勢」 | |
| 目標區間帶/參考線 | 〔趨勢〕看實績離目標或合理區間多遠 | layout-catalog.md「趨勢」 | |
| 概念示意曲線/示意圖 | 〔趨勢〕解釋制度或模型的形狀(沒有真實數據,但形狀本身有意義) | layout-catalog.md「趨勢」 | |
| 值表圖例/頁角小表 | 〔趨勢〕圖例和數值合成一塊,眼睛不必在圖例和圖之間來回;或一頁同時要結論、關鍵數字、趨勢三層 | layout-catalog.md「趨勢」 | |
| 圖+評論欄 | 〔趨勢〕評論要不要貼著它說明的那張圖(空間鄰近) | layout-catalog.md「趨勢」 | |
| 年度|半年分組圖 | 〔趨勢〕「全年走勢」與「今年同期」能不能放同一張圖,不拆兩張也不會被誤讀成連續時間 | layout-catalog.md「趨勢」 | |
| 圖下說明框 | 〔趨勢〕圖例只寫系列名還不夠,能不能直接寫這個系列代表的判讀 | layout-catalog.md「趨勢」 | |
| 瀑布/橋接 | 〔組成〕從起點到終點,每一項加減多少 | layout-catalog.md「組成」 | |
| 構成拆解 | 〔組成〕先看整體怎麼切,再看最大那塊裡面又怎麼切(兩層下鑽) | layout-catalog.md「組成」 | |
| 流量圖/樞紐流向圖 | 〔組成〕量從哪裡流到哪裡、哪一步漏掉多少;或中介角色的價值 | layout-catalog.md「組成」 | |
| 多期100%堆疊 | 〔組成〕結構怎麼變,各期占比加總都是100% | layout-catalog.md「組成」 | |
| 結構占比小表 | 〔組成〕結構變化要精確到小數,100%堆疊柱讀不出73.70%與72.80%的差怎麼辦 | layout-catalog.md「組成」 | |
| 並列雙圓餅/甜甜圈 | 〔組成〕兩群的組成比較(今昔、資產|獲利、兩家子公司) | layout-catalog.md「組成」 | |
| 華夫格並排 | 〔組成〕幾成,用面積比長條更直覺 | layout-catalog.md「組成」 | |
| 同業排名長條 | 〔排名〕一眼看出自家在同業中的位置 | layout-catalog.md「排名」 | |
| 排名表/排名長表 | 〔排名〕回答「我們排第幾、前後是誰」;或研究報告要列出全體名單 | layout-catalog.md「排名」 | |
| 長表對折 | 〔排名〕長表不捲動、不縮字,怎麼在16:9放得下 | layout-catalog.md「排名」 | |
| 表格+行內圖 | 〔排名〕表格查精確值,同時一眼看出大小順序,不必另外畫一張圖 | layout-catalog.md「排名」 | |
| 組織/治理架構圖 | 〔結構〕誰管誰、各做什麼 | layout-catalog.md「結構」 | |
| 中心輻射/環繞策略輪 | 〔結構〕幾項工作共同服務一個核心目標 | layout-catalog.md「結構」 | |
| 屋型策略框架 | 〔結構〕目標、主軸、基礎的上下層次 | layout-catalog.md「結構」 | |
| 金字塔/層疊 | 〔結構〕層級、優先序、收斂——一級比一級少或一級比一級重要 | layout-catalog.md「結構」 | |
| 階梯+位置標記 | 〔結構〕級別遞進,我們現在在哪一級 | layout-catalog.md「結構」 | |
| 二維矩陣框架 | 〔結構〕用兩個獨立維度把選項分成四類 | layout-catalog.md「結構」 | |
| 驅動→回應 | 〔結構〕把「為什麼要做」和「我們做什麼」接起來 | layout-catalog.md「結構」 | |
| 同心圓/文氏圖 | 〔結構〕範圍由內而外,或兩三個集合的交集 | layout-catalog.md「結構」 | |
| 系統/分層架構圖 | 〔結構〕系統、平台或產業鏈的層次與組成 | layout-catalog.md「結構」 | |
| 中心圖+兩側窄欄 | 〔結構〕四個主軸,各有什麼作為,一頁講完,中心圖當錨點 | layout-catalog.md「結構」 | |
| 地圖+標註/地圖+據點數字 | 〔結構〕地理分布一眼看懂——我們在哪裡、各有多少 | layout-catalog.md「結構」 | |
| 階段計畫欄 | 〔流程與時程〕專案計畫一頁看完:幾個階段、各多久、做什麼、哪些工作跨階段 | layout-catalog.md「流程與時程」 | |
| 泳道流程圖 | 〔流程與時程〕看出流程卡在誰、哪一步 | layout-catalog.md「流程與時程」 | |
| 行事曆甘特 | 〔流程與時程〕誰、什麼時候、做什麼 | layout-catalog.md「流程與時程」 | |
| 循環圖 | 〔流程與時程〕表達回到起點的過程或互相強化的飛輪 | layout-catalog.md「流程與時程」 | |
| 頻率節奏清單 | 〔流程與時程〕多久做一次什麼 | layout-catalog.md「流程與時程」 | |
| 時間軸×指標列 | 〔流程與時程〕同一條時間軸讀兩個累計指標的進展 | layout-catalog.md「流程與時程」 | |
| 里程碑時間軸 | 〔流程與時程〕沿革、里程碑、承諾時程一眼看懂 | layout-catalog.md「流程與時程」 | |
| 直排年份軸+右側成果磚 | 〔流程與時程〕左邊講歷程、右邊講成果 | layout-catalog.md「流程與時程」 | |
| KPI磚牆/指標帶 | 〔狀態與監控〕開場或總結給幾個關鍵數字 | layout-catalog.md「狀態與監控」 | |
| 主角KPI+拆解 | 〔狀態與監控〕先給結果,再給原因 | layout-catalog.md「狀態與監控」 | |
| KPI側軌/邊欄大數字 | 〔狀態與監控〕判斷(列點)和證據(KPI)分欄,只有證據軌加底 | layout-catalog.md「狀態與監控」 | |
| 目標計分表/展望指引清單/指標矩陣 | 〔狀態與監控〕對照承諾,看做到沒;或列標籤×指標欄一次看完多個業務的多個指標 | layout-catalog.md「狀態與監控」 | |
| 熱力表/色階熱表 | 〔狀態與監控〕大表先看哪裡深,再查數字 | layout-catalog.md「狀態與監控」 | |
| 燈號點陣格 | 〔狀態與監控〕狀態的時間變化一眼看完 | layout-catalog.md「狀態與監控」 | |
| 摘要儀表頁/事業別固定儀表/四格混合儀表 | 〔狀態與監控〕高層一頁總覽;或翻到任一事業都知道去哪找什麼 | layout-catalog.md「狀態與監控」 | |
| 篩選儀表 | 〔狀態與監控〕同一組圖切換維度看,怎麼在靜態文件裡也成立 | layout-catalog.md「狀態與監控」 | |
| 財報表慣例 | 〔狀態與監控〕一張12列的表只靠字重與一條線分層級,焦點欄就是讀者的錨點 | layout-catalog.md「狀態與監控」 | |
| 欄組分段表 | 〔狀態與監控〕累計與單季、實績與修正、兩種口徑同時看,但欄不會混在一起 | layout-catalog.md「狀態與監控」 | |
| 撐滿大表 | 〔狀態與監控〕一頁只有一張表、列數少時頭重腳輕怎麼辦 | layout-catalog.md「狀態與監控」 | |
| 圖+表並排/上表下圖 | 〔狀態與監控〕主管要趨勢也要精確數字,圖表分工 | layout-catalog.md「狀態與監控」 | |
| 並列小表群 | 〔狀態與監控〕幾個不同主題的小表放一頁比較 | layout-catalog.md「狀態與監控」 | |
| 分組列表 | 〔狀態與監控〕清單超過8列時先分組,讀者才掃得動 | layout-catalog.md「狀態與監控」 | |
| 單指標專頁 | 〔狀態與監控〕法說逐項唸指標時,聽眾只看一件事 | layout-catalog.md「狀態與監控」 | |
| 指標樹 | 〔狀態與監控〕這個總數是由哪些組成,一頁兩層下鑽 | layout-catalog.md「狀態與監控」 | |
| 表+列點+全寬瀑布 | 〔狀態與監控〕一頁交代結果(表)、原因(列點)、拆解(瀑布) | layout-catalog.md「狀態與監控」 | |
| 大引言/引言定義框 | 〔證據與出處〕把一句關鍵原話或定義從段落裡拉出來當證據或定調 | layout-catalog.md「證據與出處」 | |
| 引述欄 | 〔證據與出處〕讓第三方替你背書,或並陳多方說法 | layout-catalog.md「證據與出處」 | |
| 截圖證據卡/剪報卡 | 〔證據與出處〕外部事實(新聞、產品、原話)和數據放在同一頁,證據有出處又有數 | layout-catalog.md「證據與出處」 | |
| 截圖圖庫 | 〔證據與出處〕畫面本身就是證據時(系統上線、介面改版),讓讀者看到實物 | layout-catalog.md「證據與出處」 | |
| 獎項/標誌牆 | 〔證據與出處〕用第三方認可或合作名單建立可信度 | layout-catalog.md「證據與出處」 | |
| 講者/團隊頁 | 〔證據與出處〕讓讀者知道找誰、誰負責什麼 | layout-catalog.md「證據與出處」 | |
| 案例頁/案例專頁 | 〔證據與出處〕用一個真實案例證明主張 | layout-catalog.md「證據與出處」 | |
| 政策/事件清單表 | 〔證據與出處〕法規或事件的時序整理 | layout-catalog.md「證據與出處」 | |
| 三證據研究頁 | 〔證據與出處〕研究頁的「論點、走勢、數字」一次到位 | layout-catalog.md「證據與出處」 | |
| 名詞定義表 | 〔定義與規範〕附錄查詢;或把圖裡的情境縮寫先說清楚 | layout-catalog.md「定義與規範」 | |
| 問答階梯 | 〔定義與規範〕把讀者心裡的問題直接當頁面骨架,照問題順序讀 | layout-catalog.md「定義與規範」 | |
| 範圍界定:做/不做 | 〔定義與規範〕開頭講清楚這份做什麼、不做什麼,先消掉期待落差 | layout-catalog.md「定義與規範」 | |
| 條文摘錄+標註 | 〔定義與規範〕讓讀者看原文而不是轉述,重點條款一眼找到 | layout-catalog.md「定義與規範」 | |
| 散文頁 | 〔定義與規範〕少數需要完整論述的背景說明 | layout-catalog.md「定義與規範」 | |
| 三區版 | 〔不適合〕(不適合)左右軌各吃20-25%寬,等於另開一條邊註欄;左軌的斷言由標題與結論列承擔、章節 | layout-catalog.md「不適合」 | |
| 全寬色帶訊息 | 〔不適合〕(不適合)就是 measure 報的「長條留白+色塊過重」;同樣內容的正確做法是編號重點清 | layout-catalog.md「不適合」 | |
| 照片主導版 | 〔不適合〕(不適合)金控內部報告沒有照片素材,照片不傳遞資訊、列印耗墨,也違反「真文字、可搜尋」(d | layout-catalog.md「不適合」 | |
| 深色底內容頁 | 〔不適合〕(不適合)列印耗墨、投影環境不一定;深色只留給章節頁(.divider.dark)與封底。 | layout-catalog.md「不適合」 | |
| 框線標題面板/掛框標籤框 | 〔不適合〕(不適合)分組語彙只有兩種——.sh區段標題+開放欄、.solid卡;第三種框線語彙只會讓 | layout-catalog.md「不適合」 | |
| 推廣側欄/資歷頁 | 〔不適合〕(不適合)行銷用途,內部報告不需要。 | layout-catalog.md「不適合」 | |
| 側色塊標題欄 | 〔不適合〕(不適合)標題位置固定在頁頂(母片恆定),每頁標題同一個位置讀者才找得到;左側標題欄還吃掉 | layout-catalog.md「不適合」 | |
| 高密度策略儀表 | 〔不適合〕(不適合)12pt下同樣資訊要2-3頁;這是IR附錄給分析師查的寫法,不是給主管讀;內容區 | layout-catalog.md「不適合」 | |
| 內外雙環圓餅 | 〔不適合〕(不適合)components.md「兩群比較用兩張並列圓餅,不用內外環」(讀者要先對照半 | layout-catalog.md「不適合」 | |
| 公文式編號段落 | 〔不適合〕(不適合)三層以上編號是公文結構,簡報的層級由.sh→.kv兩層承擔;整句上色讓強調失去意 | layout-catalog.md「不適合」 | |
| 儀表盤 gauge | 〔不適合〕(不適合)一個數字占半頁面積,刻度與色帶是裝飾;要表達「高於基準」用.hero+一句(「1 | layout-catalog.md「不適合」 | |
| 左表名欄+右表 | 〔不適合〕(不適合)左邊三分之一只有一行字,等於浪費版面;表名放.sh .t+.u單位,表吃滿寬即可 | layout-catalog.md「不適合」 | |
| 半圓雷達 | 〔不適合〕(不適合)文字沿弧段散放,讀者找不到閱讀順序;風險名20多個在一張圖裡字只能很小;「上升/ | layout-catalog.md「不適合」 | |
| 照片新聞格 | 〔不適合〕(不適合)單檔HTML內嵌照片會讓檔案暴增、列印品質不穩;內部報告的事件用政策/事件清單表 | layout-catalog.md「不適合」 | |
| 插畫面板/插畫路線圖 | 〔不適合〕(不適合)插畫與剪貼畫不屬品牌語彙、佔版面又不帶資訊;道路時間軸改用「里程碑時間軸」。 | layout-catalog.md「不適合」 | |
| 字首縮寫磚 | 〔不適合〕(不適合)英文字首拼字是口號設計,中文讀者要回頭對照才懂;兩字價值觀本身已經對稱,直接用開 | layout-catalog.md「不適合」 | |
| 章節追蹤器/目錄進度頁 | 〔跨頁體例〕〔引擎〕眉標、章節頁籤(≥2張 divider 自動生成)、章節地圖(章節頁左下、本章點 | layout-catalog.md「跨頁體例」 | |
| 頁面狀態章 | 〔跨頁體例〕〔片段〕區段標題右註放頁面狀態章,詞彙固定四個:初稿、備查、示意、非窮盡;不用便利貼手寫 | layout-catalog.md「跨頁體例」 | |
| 續頁編號/成對頁標記 | 〔跨頁體例〕〔寫作規則〕同一主題跨頁標題尾加「(1/3)」;附錄頁碼另計「附錄3/14」。 | layout-catalog.md「跨頁體例」 | |
| 單位口徑行/單位與基準日 | 〔跨頁體例〕〔元件〕.sh .t .u;全頁共用單位時寫在第一個區段標題的.u;單位寫法(新台幣百萬 | layout-catalog.md「跨頁體例」 | |
| 分面板來源註/註腳與資料來源 | 〔跨頁體例〕〔元件〕頁級.srcline;兩圖來源不同時各自在圖下加一行p.lv-n,.srclin | layout-catalog.md「跨頁體例」 | |
| 頁頂導言與題幹/頁頂結論句 | 〔跨頁體例〕〔元件〕眉標(kicker)+標題+結論列三層;調查頁的題幹見「問題框→圖→結論」。 | layout-catalog.md「跨頁體例」 | |
| 數字主張標題 | 〔跨頁體例〕〔寫作規則〕標題的數字要和圖上的主角是同一個數。 | layout-catalog.md「跨頁體例」 | |
| 首尾呼應 | 〔跨頁體例〕〔寫作規則〕長簡報結尾重放開場主張(封底前一頁用同一句定調),storyline標「呼應pN | layout-catalog.md「跨頁體例」 | |
| 論點總綱+逐點展開 | 〔跨頁體例〕〔元件〕同一個.g3,目前項加亮(.hot),其他項維持原樣、不淡化;簡報態可做同頁逐步 | layout-catalog.md「跨頁體例」 | |
| 附錄體例/附錄位置與隔頁 | 〔跨頁體例〕〔元件〕.jump「附錄:頁名」去、.note.xref「回主文」回,build自動對帳 | layout-catalog.md「跨頁體例」 | |
| 省略號跨頁連句 | 〔跨頁體例〕〔寫作規則〕連續2-3頁是同一個論證時,前頁「……」收、後頁「……」起,不超過3頁。 | layout-catalog.md「跨頁體例」 | |
| 頁碼交叉參照 | 〔跨頁體例〕〔元件〕.jump膠囊跳頁(列印隱藏);紙本的路標靠眉標與頁名,正文不寫 pNN(wri | layout-catalog.md「跨頁體例」 | |
| 場次交叉註記 | 〔跨頁體例〕〔元件〕內部報告的對應物是「細節在附件幾/哪份報告」,寫在.note或.srcline。 | layout-catalog.md「跨頁體例」 | |
| 鍵連標號 | 〔跨頁體例〕〔片段〕圖上號碼用ECharts markPoint(symbol:circle+數字) | layout-catalog.md「跨頁體例」 | |
| 圖上圈選強調 | 〔跨頁體例〕〔元件〕用品牌色上色(自家那根、那格:.f、tr.hot、ECharts itemSty | layout-catalog.md「跨頁體例」 | |
| 章節路標列 | 〔跨頁體例〕〔元件〕.flow或.g4×.cell(號碼用.ch .n);比議程頁輕,放章首;圖示不 | layout-catalog.md「跨頁體例」 | |
| 章內固定論證骨架/平行組同構 | 〔跨頁體例〕〔寫作規則〕components.md「跨頁節奏(視覺主角差異化)」的「平行組」規則:同一組 | layout-catalog.md「跨頁體例」 | |
| 頁角編號 | 〔跨頁體例〕〔元件〕眉標寫「建議3/8」或標題前加號碼;要角落號圈就用 snippets.md「鍵連 | layout-catalog.md「跨頁體例」 | |
| 章首摘要頁/子章節清單頁/章節頁附本章摘要 | 〔跨頁體例〕〔元件〕divider後接「編號重點清單」或「判斷句小標+列點」當章首摘要頁與子章節清單 | layout-catalog.md「跨頁體例」 | |
| 期間標記統一 | 〔跨頁體例〕〔寫作規則〕建議全副一種期間寫法(西元+「1H26/2Q26」或「2026上半年」擇一),民 | layout-catalog.md「跨頁體例」 | |
| 財報表格數字體例 | 〔跨頁體例〕〔元件〕.n右齊、數字西文字型在前由引擎處理;「負數紅字」與台灣慣例「漲紅跌綠」語意衝突 | layout-catalog.md「跨頁體例」 | |
| 圖卡標頭帶 | 〔跨頁體例〕〔元件〕.sh左豎線;不用深色標頭帶+單位(線比色帶輕)。 | layout-catalog.md「跨頁體例」 | |
| 免責聲明、Q&A、封底 | 〔跨頁體例〕〔不做〕內部報告不另設版型;對外版本需要免責頁時放一張blank(純文字.lv-b)。 | layout-catalog.md「跨頁體例」 | |
| 講者資訊 | 〔跨頁體例〕〔元件〕cover版型的who欄位。 | layout-catalog.md「跨頁體例」 | |
| 雙語並陳 | 〔跨頁體例〕〔不做〕內部報告字數加倍;.en預設不加(components.md「主卡」)。 | layout-catalog.md「跨頁體例」 |
作者要寫的互動10 條
互動元件總覽:讀者用途與寫法(present.md「作者要寫的互動(總覽)」)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| <details> 收合(同一組寫同一個 name=一次只⋯ | <details> | 附錄級細節不佔版面;Ctrl+F 搜得到 | present.md「作者要寫的互動(總覽)」 |
| 就地展開 button.drill[popovertarg⋯ | button.drill[popovertarget] | 被追問時當場攤開拆解 | present.md「作者要寫的互動(總覽)」 |
| 狀態切換 [data-switch]+.state[dat⋯ | [data-switch] | 同一組數字換一種看法(金額/占比、表/圖、各時距) | present.md「作者要寫的互動(總覽)」 |
| 結論↔證據 [ev=鍵]…[/ev]、表圖聯動 data-⋯ | [ev=鍵]…[/ev] | 「這個結論從哪裡看出來」一滑就框出證據 | present.md「作者要寫的互動(總覽)」 |
| hover 白話 [tip=…]名詞[/tip]、淡樣式⋯ | [tip=…]名詞[/tip] | 專有名詞白話;出處頁碼、案號這類後設資訊掛 .tip.s | present.md「作者要寫的互動(總覽)」 |
| 跨頁膠囊 .jump+回程列 .note.xref | .jump | 主文「附錄:頁名」去、附錄「回主文:頁名」回;build 自動對帳 | present.md「作者要寫的互動(總覽)」 |
| 頁內頁籤 [data-tabs]、一鍵複製 .copy | [data-tabs] | 同區塊放多組平行內容;讀者直接取用文字段 | present.md「作者要寫的互動(總覽)」 |
| 案件清單 hover data-cases(deck 自帶⋯ | data-cases | 計數頁「這個數字是哪幾件」 | present.md「作者要寫的互動(總覽)」 |
| 數字從基準值滾動 data-from+差額膠囊 .dlt | data-from | 關鍵數字被看見;列印與匯出一律是最終值 | present.md「作者要寫的互動(總覽)」 |
| 逐步揭示、逐段強調、逐列聚焦、講者備註(簡報態才作用) | 講者控制節奏 | present.md「作者要寫的互動(總覽)」 |
引擎自動做的事7 條
寫 deck 不必動、引擎自動生成的功能(MAINTAINING.md「引擎自動做的事」)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 固定 chrome | 右側圓點導覽(未看/已看/目前三態,提示「頁碼-標籤」)、頂端章節頁籤(≥2 張 divider 自動生成、手機隱藏、不進列印)、 頂部進度條、右下輸出鈕(點開才展開「開始簡報」⋯ | MAINTAINING.md「引擎自動做的事」 | |
| 章節地圖 .chap-map | .chap-map | (≥2 張 divider,本章點亮、可點擊、列印照印);議程單軸路線(3/4 項一列、5–6 三欄、7–8 四欄), 項目與章名相符(或章數相符/只多一章「附錄」)時可點擊跳章。 | MAINTAINING.md「引擎自動做的事」 |
| 講者指示與大表十字定位 | (精準指標螢幕;幾何零變化、不進列印);KPI 數字滾動(data-count,列印與匯出一律最終值); 圖表翻到才初始化、量測與列印前 deckSettle() 補成終態。 | MAINTAINING.md「引擎自動做的事」 | |
| 匯出 Markdown | ## pNN · 標題 | 每頁 ## pNN · 標題 起頭(可用 --where 對回 content.md),頁籤每一片、收合內容、狀態切換的每一態、 就地展開的浮層都輸出,tooltip 轉「名詞⋯ | MAINTAINING.md「引擎自動做的事」 |
| 簡報態 | 抵達規則(只有順向鍵 → ↓ PgDn 空白進入的頁從第 0 步開始;捲動、圓點、章節頁籤、跳頁、概覽、回上一頁進入的頁一律完整; 離開的頁立刻回到完整;滾輪與觸控板照常捲頁)⋯ | MAINTAINING.md「引擎自動做的事」 | |
| 小螢幕 PDF 式縮放 | max-aspect-ratio: 6/5 | (max-aspect-ratio: 6/5 或 max-height: 560px):每張固定 1280×720 排版,只在 @media screen 縮 .frame 一層⋯ | MAINTAINING.md「引擎自動做的事」 |
| 跨平台中文排版 | text-spacing-trim:space-all | 標點不擠壓(text-spacing-trim:space-all,Mac 與 Windows 行長一致)、漢字與英數之間沒打空格時自動補 1/8 字(text-autospac⋯ | MAINTAINING.md「引擎自動做的事」 |
簡報態按鍵15 條
按 ? 叫出的按鍵說明表(template.html 的 HELP)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| P/F5 | P/F5 | 進入簡報態(F5=PowerPoint 的開始放映、簡報遙控器的「開始」鍵);簡報中再按 P 離開 | template.html 按鍵說明(?) |
| → ↓ PgDn 空白 | → ↓ PgDn 空白 | 閱讀態:下一頁。簡報態:下一步,本頁步驟走完才換頁 | template.html 按鍵說明(?) |
| ← ↑ PgUp | ← ↑ PgUp | 閱讀態:上一頁。簡報態:上一步;回到第 0 步再按=上一頁(完整) | template.html 按鍵說明(?) |
| Home/End | Home/End | 首頁/末頁 | template.html 按鍵說明(?) |
| 數字+Enter | 數字+Enter | 跳到該頁(頁碼=每頁左下的數字,螢幕與紙本同號) | template.html 按鍵說明(?) |
| O | O | 概覽:全部頁面的縮圖,方向鍵選、Enter 跳、Esc 關 | template.html 按鍵說明(?) |
| A | A | 簡報態:本頁全部亮出 | template.html 按鍵說明(?) |
| Alt+↓ | Alt+↓ | 簡報態:略過本頁剩下的步驟,直接下一頁 | template.html 按鍵說明(?) |
| L/[ ] | L/[ ] | 簡報態:綠光雷射筆開/關;[ ] 調小/調大(五檔) | template.html 按鍵說明(?) |
| B/./W | B/./W | 簡報態:黑幕/白幕,任一鍵或點一下恢復(不換頁) | template.html 按鍵說明(?) |
| 點選列或卡 | 點選列或卡 | 簡報態:釘住(那一列鋪淡綠光帶),再點或 Esc 取消 | template.html 按鍵說明(?) |
| Alt+點擊 | Alt+點擊 | 簡報態:以點擊處為中心放大兩倍;再點或 Esc 還原 | template.html 按鍵說明(?) |
| S | S | 簡報態:講者視窗(目前頁、下一頁、備註、計時;有寫 note: 的 deck 才有) | template.html 按鍵說明(?) |
| F | F | 簡報態:全螢幕 | template.html 按鍵說明(?) |
| Esc | Esc | 簡報態依序:還原放大 → 取消釘住 → 關雷射筆 → 離開簡報態 | template.html 按鍵說明(?) |
列印7 條
紙本上印什麼、不印什麼(present.md「列印印什麼」)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 列印=閱讀態的開檔畫面 | 紙本就是閱讀態打開檔案那一刻的畫面—— 頁籤只印開檔那一片(頁籤列照印、亮開檔那一顆);<details> 照開檔狀態;白話 tooltip 不印;就地展開的浮層與觸發鈕不印、沒⋯ | present.md「列印印什麼」 | |
| 所以紙本要看到的內容放在預設畫面 | 白話要上紙就寫進正文(名詞第一次出現時一句話講清楚),.tip 只放「看不到也不影響讀懂」的補充。 | present.md「列印印什麼」 | |
| 列印展開: on(個案才用) | 列印展開: on | 回到全展開——頁籤全部攤開並印出片名、收合全開(同名互斥組也全開)、.tip 轉括號 (.tip.s 不轉)、沒寫 data-print 的切換並排、就地展開的浮層印到最後的補充⋯ | present.md「列印印什麼」 |
| 不進列印 | NN · 章名 | 章節頁籤(由各頁眉標 NN · 章名 承接)、圓點導覽、進度條、輸出鈕與匯出面板、純工具鈕(複製、圖表放大、 就地展開的觸發鈕、跳轉膠囊)、講者備註、簡報態的講者工具。自訂的 h⋯ | present.md「列印印什麼」 |
| scroll: 1 的頁與 .tblw⋯ | scroll: 1 | ,裝不下就被裁掉;export_pdf.js --check(verify 會跑)報裁切時回 S1 砍字或拆頁。 | present.md「列印印什麼」 |
| 手動列印要勾背景圖形 | Ctrl/Cmd+P | 自己按列印時務必勾選「背景圖形」,否則底色印不出來 | spec_extra.md〔grep:README.md:背景圖形〕 |
| 深色封底耗墨 | closing | 封底是深色的,大量影印耗墨;需要時改成淺色封底 | spec_extra.md〔grep:README.md:封底是深色的〕 |
寫作規則106 條
writing.md 的條目、粗體標籤與規則表(按節取:ref.py doc writing <標題>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 整副 | 議程之後第一張內容頁就給結論/建議/要老闆決定什麼。 | writing.md「結論先行(BLUF)」 | |
| 每頁 | .title 就是這頁的結論; | writing.md「結論先行(BLUF)」 | |
| 每區塊 | 條列、段落第一句先講判斷。 | writing.md「結論先行(BLUF)」 | |
| 結論列 bluf(全內容頁固定配備) | 寫什麼:標題的補完——目標 3 行「結論+所以呢+下一步」,各帶量化; | writing.md「結論先行(BLUF)」 | |
| 同一副簡報只能用一種句式 | A 判斷句/行動句(多數報告的預設):有主詞、有立場、能被反駁。 | writing.md「標題句規則」 | |
| 中文排版:孤字與兩端對齊 | (本節是寫法的真相源):內容區與結論列的多行文字兩端對齊、末行靠左; | writing.md「元素字數帶(句式;數字查 --schema)」 | |
| 孤字靠改寫 | 多行文字(段落、列點、表格格、卡名、關鍵句、格標、結論列)的末行只剩一兩個字, 就刪幾個字收成一行,或補到半行以上。 | writing.md「元素字數帶(句式;數字查 --schema)」 | |
| 兩端對齊時,長英文字串與長數字別卡在行尾 | 兩端對齊只能伸縮字距,長英文字、網址、帶單位的長數字 (「2026/06」「1,234 億元」)不能拆,卡在行尾時整串掉到下一行,上一行就留下一截空白、被對齊撐開字距; | writing.md「元素字數帶(句式;數字查 --schema)」 | |
| 同一組條列 | 同一組條列:全名詞句或全動詞句,禁混用; | writing.md「句式一致性與同層對稱」 | |
| 前置關鍵字必須是內容詞(主詞/數字/結果… | 前置關鍵字必須是內容詞(主詞/數字/結果)。 | writing.md「句式一致性與同層對稱」 | |
| 三條以上排比,第一個詞的詞性一致 | 三條以上排比,第一個詞的詞性一致。 | writing.md「句式一致性與同層對稱」 | |
| 同層對稱(同一視覺層級的並列元素,敘述風格要對⋯ | 同組並列(一組對照列、一排小格):句構同型、行數一致。 | writing.md「句式一致性與同層對稱」 | |
| 語態拉齊 | 同一組列要嘛全是實況描述、要嘛全是祈使建議,不可混用。 | writing.md「句式一致性與同層對稱」 | |
| 一段之內不換主體 | 。 | writing.md「句式一致性與同層對稱」 | |
| 並排的標題與關鍵句寫成字數相近 | 同一排卡的卡名與關鍵句、一排格的格標、流程格的標題, 寫成字數相近、句構相同,行數自然一致(✗「成本低/導入後三年內效益明顯高於其他方案」 ✓「成本最低/效益最高」)。 | writing.md「句式一致性與同層對稱」 | |
| 禁詞不得裸用 | 核心九詞(賦能、打造、優化、強化、深化、落實、推動、致力、攜手)lint ✗, 空話詞(助力、全面提升、顯著、大幅⋯)lint △; | writing.md「語言禁則」 | |
| 數字優先 | 有數字寫數字; | writing.md「語言禁則」 | |
| 標題與內文不互相複述 | 。 | writing.md「語言禁則」 | |
| 禁套疊句 | 「透過 X,以達成 Y」→「X,Y +N%」。 | writing.md「語言禁則」 | |
| 一頁一問 | 答不出來就併頁或砍頁。 | writing.md「語言禁則」 | |
| 括號節制 | 整頁 ≤2 處; | writing.md「語言禁則」 | |
| 禁全形長破折號(——) | AI 腔標記(lint △); | writing.md「語言禁則」 | |
| 抽象詞要落地成「誰評、評什麼、量的是什麼」 | 。 | writing.md「語言禁則」 | |
| 同一份數據不在兩頁以不同包裝重複 | 。 | writing.md「語言禁則」 | |
| 並列評述多個對象時不做排名 | 。 | writing.md「語言禁則」 | |
| 多個分母要有口徑表 | 。 | writing.md「語言禁則」 | |
| 兩條判定軸各用固定詞,不互換 | 。 | writing.md「語言禁則」 | |
| 泛稱會歧義時直接寫產品名,但不寫產品內部實作 | 。 | writing.md「語言禁則」 | |
| 動詞要與受詞相搭 | 。 | writing.md「語言禁則」 | |
| 全稱詞後面不接例外 | 。 | writing.md「語言禁則」 | |
| 成就型數字不放、論證型數字留 | (介紹自家能力、內部教材最常見)。 | writing.md「語言禁則」 | |
| 示範寫成通案做法,每個指標對得到資料來源 | (方法論 deck)。 | writing.md「語言禁則」 | |
| 指標先寫決策者要回答的問題,再寫執行單位的計分 | 。 | writing.md「語言禁則」 | |
| 對抗式查證 | 每項數據先假設為誤,回一手來源核對原句; | writing.md「來源與連結紀律」 | |
| 二手轉述最常見的失真是拼接 | 兩個不同定義的數字被併成一句 (例:甲組的「至少部分成功 91%」配上乙組的「驗證成功 15%」); | writing.md「來源與連結紀律」 | |
| 連結必須直達證據 | 官網首頁、單位介紹頁、搜尋結果頁不算; | writing.md「來源與連結紀律」 | |
| 概念退場,來源同退 | 改版後不再引用的概念,src 一併刪; | writing.md「來源與連結紀律」 | |
| src 與 bluf 掛連結用 `[a=… | src 與 bluf 掛連結用 [a=網址]文字[/a](兩者會跳脫 HTML,寫 <a> 變字面文字); | writing.md「來源與連結紀律」 | |
| 查證紀錄沒記到,不等於一手來源沒有 | 。 | writing.md「來源與連結紀律」 | |
| 出處核對分三級,只升不跳 | 已核對(讀過原文)、摘要查證(期刊摘要、官方公告或新聞查證, 未讀全文)、待核對。 | writing.md「來源與連結紀律」 | |
| 理論引用先做適用性檢視 | 引用時標出資料的年代、國別與產業, 逐項檢查時代變遷、文化作答差異與本地市場結構(例:本地費率差距小、升息幅度小)。 | writing.md「來源與連結紀律」 | |
| 自檢方法 | 把這一頁念給沒參與製作的人聽,凡是他要反問「那是什麼」的詞都是洩漏。 | writing.md「製作語言不進成品」 | |
| 抽查 | (本檔附錄 grep,lint 未收這兩類):扣掉 .jump 膠囊後仍出現的 pNN =頁碼寫進正文; | writing.md「製作語言不進成品」 | |
| 角色檢查(凡描述機制、流程、權責的句子必跑) | 這句話裡的動作, 誰做的、誰核的、誰負責?三個角色不能是同一個。 | writing.md「S1 自審程序」 | |
| 改一個詞,掃全副 | 使用者點名的用語(去重→不重複計、受阻→受限)一律 grep 整份 content.md——含 html: 圍欄、封底 sub、note、卡片小字——並把「棄用詞→採用詞」 記進⋯ | writing.md「S1 自審程序」 | |
| 數字改了,重驗自由文字 | check_slots.py 只對槽位存在與行號,不對數字; | writing.md「S1 自審程序」 | |
| 同一對象全副只用一個名稱,主動找異名 | 「改一個詞,掃全副」是使用者點名才掃,這條是自己先掃。 | writing.md「S1 自審程序」 | |
| 搬頁、重排、刪章後重驗跨頁指涉 | 章節頁 dx、附錄隔頁引言(「三項議題明細」而實際只剩兩章)、 「沿用⋯⋯」「同一組層級」這類描述他頁方法的宣稱,都要對著新頁序逐條核一次(本檔「製作語言不進成品」的「頁序指涉」⋯ | writing.md「S1 自審程序」 | |
| 批次替換後掃漢英黏連 | 含英數字的替換(「大型語言模型」→「LLM」)會產生「多數LLM」 這種黏連; | writing.md「S1 自審程序」 | |
| 台灣用語(對外零容忍) | 完整詞表在 references/cn-terms.json,lint_content.py 逐頁機械檢查(含 html: 圍欄正文——正文都住在圍欄裡, 只檢查槽位等於沒檢查到⋯ | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 兩個要單獨拿出來講的 | 「判準」全面禁用(被高階讀者點名「太中國 AI」),且沒有單一替換詞—— 依語境分開改:驗證判準→驗證標準|五級判準→五級對照|歸納之判準→歸納而得| 判準出自→分級方式出自|授⋯ | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 反向誤殺警告(清中國用語會清過頭) | 牴觸是台灣正式用法(憲法第 171 條 「與憲法牴觸者無效」),抵觸才偏中國——不要因為手感而改錯方向。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 全形標點與引號 | 中文一律全形 ,。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 翻譯腔 | 長定語鏈拆短句; | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 保護清單(改寫時圈起來、一字不動) | 數字與事實:定價、百分比、日期、指標逐字保留; | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| AI 腔速查 | 幻覺引用:沒出處的「研究顯示/專家指出」補真來源或刪。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 中英並列與技術名詞 | 順序中文在前、英文在後(腳本 SCRIPT/機器學習 Machine Learning); | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 語體帶 | 可直接朗讀但不口播。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 口語詞帶 | (被點名「用字不夠文雅」的那批,共同點是聽起來像在講話,但讀者是在讀;多數詞表不擋、只能自己記): 東西→指名該物(成品/產出/資料)|跑一輪→各建一個模型/各跑一次|長出→發展⋯ | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 知識型教材不指人、不交辦 | 可傳承的教材(講義、訓練 deck)不寫「你/你們/今天/作業/ 下一步」——那是課堂口吻,換一批學員、換一年就失效。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 假數集 | 999、1,234、12.3%、9.9、NT$9.9 億、2099/20XX——嚴禁用看似合理的數字。 | writing.md「示範稿規範(範本/教學文字防偽)」 | |
| 假名集 | 範例金控/A 銀行/示範處; | writing.md「示範稿規範(範本/教學文字防偽)」 | |
| 槽位示意文 | 內文直接描述「這格放什麼」+極短假例。 | writing.md「示範稿規範(範本/教學文字防偽)」 | |
| 寫什麼 | 標題的補完——目標 3 行「結論+所以呢+下一步」,各帶量化; | writing.md「結論先行(BLUF)」 | |
| 行數覆寫 | 需要更長(或更短)結論時,deck 檔頭寫 結論行數: N(1–5,預設 3),lint 字數帶等比縮放並印覆寫警告; | writing.md「結論先行(BLUF)」 | |
| 頁籤頁 | 標題與結論列必須不看頁籤就讀得懂——投影與列印都只看得到預設片(列印=開檔畫面),主張只能靠標題、結論列與預設片承擔; | writing.md「結論先行(BLUF)」 | |
| 前置章 | 預設「結論」; | writing.md「結論先行(BLUF)」 | |
| 不給建議的兩種 deck | (本節「結論+建議+下一步」的例外,storyline 檔頭註明場合):討論/評述類只陳述現況與文件主張、點出決策點,不附我方方案(revision-playbook.md「討論⋯ | writing.md「結論先行(BLUF)」 | |
| 自檢 | 結論列刪掉不損任何資訊=寫成了複述,重寫。 | writing.md「結論先行(BLUF)」 | |
| 例外 | cover/agenda/divider/closing 不配結論列; | writing.md「結論先行(BLUF)」 | |
| A 判斷句/行動句 | (多數報告的預設):有主詞、有立場、能被反駁。 | writing.md「標題句規則」 | |
| B 框架名 | (教材、政策條文彙編、目錄性文件適用):短標籤式,靠結論列承擔判斷。 | writing.md「標題句規則」 | |
| 客群分析 | A 判斷句:南區「富有企業主」輪廓與存款數據不符 | writing.md「標題句規則」 | |
| 專案進度報告 | A 判斷句:建置落後兩週,瓶頸在資料介接而非人力 | writing.md「標題句規則」 | |
| 市場現況 | A 判斷句:同業已交卷:四家金控 AI 客服上線,我行仍在 POC | writing.md「標題句規則」 | |
| 效益評估 | A 判斷句:自動化後月結算 3 天縮至 2 小時,年省 1.2 人力 | writing.md「標題句規則」 | |
| 風險與因應 | A 判斷句:最大風險不是技術,是兩單位權責未定 | writing.md「標題句規則」 | |
| 每頁可用高度與元件成本 | 以 components.md「容量模型」「各元件的行單位成本」「滿版組合」為準。 | writing.md「行數預算與密度」 | |
| 每格寫到容量預算的 60–90% | ,不寫「單行卡片」。 | writing.md「行數預算與密度」 | |
| 過疏、過密 | 處理順序見 revision-playbook.md「成塊空洞的處理順序」與「溢出處理的優先順序」; | writing.md「行數預算與密度」 | |
| 同一清單行數一致 | 全 1 行或全 2 行,禁 1/2 行交錯。 | writing.md「行數預算與密度」 | |
| 跨卡同位 | 並排卡的第 n 列共用同一組前置詞(如三張卡都是 擅長/成本/迭代),同位列句式對稱:都寫「看 A 與 B;短評」,或都寫「看…而非…」,不混用。 | writing.md「句式一致性與同層對稱」 | |
| 頁碼與跳轉 | 成品裡實際出現過:「各自的例子與難度見 p12。〔p12 膠囊〕」(句子寫了頁碼,後面又掛一顆膠囊);改成:句子收尾直接接膠囊,正文一個 pNN 都不寫 | writing.md「製作語言不進成品」 | |
| 版面與元件 | 成品裡實際出現過:「四列共用前置詞,可逐列橫向對照」(寫在區段標題右註);改成:整句刪。對稱是做出來給人看的,不是宣告出來的 | writing.md「製作語言不進成品」 | |
| 製作流程 | 成品裡實際出現過:「餵給 p17」(資料流向的口語,出現在恆顯底列的前置詞);改成:「對應任務」 | writing.md「製作語言不進成品」 | |
| 表單結構 | 成品裡實際出現過:「C 區備註」「D 區選配功能」(盤點表的欄位分區代號);改成:「盤點表備註欄」「盤點表逐案詢問的選配功能」——主管沒看過表單,讀不出分區代號 | writing.md「製作語言不進成品」 | |
| 分析過程 | 成品裡實際出現過:「已由連接器處理,不計」「實列缺口」「去重後 29 案」;改成:只呈現扣除後的淨值(「不重複計 29 案」);哪些被扣、為什麼,留在分析腳本與底稿(revisi⋯ | writing.md「製作語言不進成品」 | |
| 實作細節 | 成品裡實際出現過:「SPAID GraphQL 唯讀」;改成:「原定拒絕寫入系統情境,現行多採產製匯入檔銜接」(本檔「泛稱會歧義時直接寫產品名,但不寫產品內部實作」) | writing.md「製作語言不進成品」 | |
| 系統識別字 | 成品裡實際出現過:內部資料表名、欄位名、模型參數原樣搬上頁面;改成:只講類別、維度與數量級(「時間窗 × 幣別 × 性質」),表名欄名留在備查檔 | writing.md「製作語言不進成品」 | |
| 資料外觀與填表過程 | 成品裡實際出現過:「證券 4 案的必須原因文字一致」「盤點表未設欄位,自需求敘述逐案回推」;改成:改寫成資料本身說的事(「皆為須於時限內完成的每日例行作業」);方法說明只留在 s⋯ | writing.md「製作語言不進成品」 | |
| 頁序指涉 | 成品裡實際出現過:「沿用前頁」「見附錄末頁」(搬頁後前頁已不是那一頁);改成:寫頁名(「沿用需求型態輪廓」)或接 .jump 膠囊;搬頁、重排後全副重驗(本檔「搬頁、重排、刪章後⋯ | writing.md「製作語言不進成品」 | |
| 內部脈絡 | 成品裡實際出現過:提案者身分、與我方的利害關係、我方幕僚角色寫進頁面;改成:只放 deck 目錄的 CONTEXT.md,交付文件一律不出現(revision-playbook.⋯ | writing.md「製作語言不進成品」 | |
| 改版脈絡 | 成品裡實際出現過:「改為三層」「改以占比計」「新增承接設計」「原主張→修正」、推翻/降級標記、查證方法與核對狀態;改成:只寫現行結論的直述(「為三層」「以占比計」);仍有效的前提⋯ | writing.md「製作語言不進成品」 | |
| 「判準」全面禁用 | (被高階讀者點名「太中國 AI」),且沒有單一替換詞——依語境分開改:驗證判準→驗證標準|五級判準→五級對照|歸納之判準→歸納而得|判準出自→分級方式出自|授信判準→授信準則(台⋯ | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 「腳本」不作類別名 | 三分法並列時用自動化程式(英文仍掛 SCRIPT),指稱具體某一支時用程式。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 數字與事實 | 定價、百分比、日期、指標逐字保留; | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 專有名詞 | 品牌/產品/單位/法規名不因「換句話說」被替換。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 法遵/承諾文字 | 退費、免責、條款、金流制式語一字不漂,只調銜接語氣。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 原文引號 | 引用他人文件時,引號內一字不動——書面語改寫、「把→將」、用語表替換都不進引號。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 幻覺引用 | 沒出處的「研究顯示/專家指出」補真來源或刪。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 立場真空 | 只鋪陳不表態=沒講完。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 空洞收尾 | 「這值得我們深思/未來可期」改成具體下一步。 | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 通用積極結論/過度限定 | 別「整體而言成效良好」墊檔; | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 否定平行 | 「不是 A,而是 B」全份 ≤1 次; | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 空想對手 | 反駁沒人提出的主張(「不宜只聚焦⋯」「切勿盲目⋯」); | writing.md「台灣人話(借鏡 speak-human-tw)」 | |
| 版面節制 | 破折號、粗體、驚嘆號少用; | writing.md「台灣人話(借鏡 speak-human-tw)」 |
版面判斷22 條
design.md 的條目、粗體標籤與規則表(按節取:ref.py doc design <標題>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 簡報的精神管前兩層,HTML 的優勢管第三層。 | 第三層(白話、收合、非預設頁籤、就地展開)不上紙, 所以主張與數字不得放在第三層(present.md「列印印什麼」)。 | design.md「總綱:表層是簡報,深層是文件」 | |
| 一頁一問,三秒可讀。 | 遮住標題與主角以外的一切,讀者仍說得出這頁的主張,才算過關(人工)。 | design.md「簡報的精神:留下來的九件事」 | |
| 視線路徑固定。 | 眉標 → 標題 → 結論列 → 主角 → 證據 → 來源,由上而下、由左而右。 | design.md「簡報的精神:留下來的九件事」 | |
| 母片位置恆定,翻頁不跳。 | 標題、結論列、頁尾在每一頁同一個位置,這是簡報「翻頁感」的來源。 | design.md「簡報的精神:留下來的九件事」 | |
| 16:9 是橫幅:序列橫排,兩軸才用矩陣。 | 時程、階段、章節這類「序列」由左而右排; | design.md「簡報的精神:留下來的九件事」 | |
| 留白要落在對的地方。 | 可以空在版心四周、區塊之間、主角周圍; | design.md「簡報的精神:留下來的九件事」 | |
| 讀者永遠知道自己在哪。 | 眉標「NN · 章名」、頂端章節頁籤、右側圓點「頁碼-標籤」、 章節頁的章節地圖、議程——五處講的是同一條路線:議程預告、章節頁兌現、眉標逐頁提醒。 | design.md「簡報的精神:留下來的九件事」 | |
| 主角要大一個量級,而且只有一個。 | 字階拉開層級:內文 12pt → 小重點 16pt → 關鍵句 .lv-k 20pt → 主角 (components.md「字階」)。 | design.md「簡報的精神:留下來的九件事」 | |
| 容器要有理由。 | 卡片是「這一塊自成一體、要跟隔壁分開」的訊號,不是排版的預設單位。 | design.md「簡報的精神:留下來的九件事」 | |
| 寬度跟內容走,線取代面。 | 容器不該比內容寬:4 欄短字的表格撐滿 16:9,每一格都是一大片 空白,眼睛要橫跨半個版面才讀完一列。 | design.md「簡報的精神:留下來的九件事」 | |
| 一份檔、四種載體。 | cqh 等比縮放讓版面只需設計一次; | design.md「HTML 的優勢:拿來用的八件事」 | |
| 真文字。 | 可搜尋、可複製、可匯出 Markdown 批註回寫、可縮放、讀屏軟體讀得到。 | design.md「HTML 的優勢:拿來用的八件事」 | |
| 分層揭露。 | 三分鐘層用 .tip 白話、details 收合、頁籤、.jump 膠囊去附錄。 | design.md「HTML 的優勢:拿來用的八件事」 | |
| 非線性導覽。 | 講的時候是線性的,問答與自讀時是跳著看的:議程點一下跳到該章、章節地圖點一下 跳到別章、膠囊來回附錄、圓點與章節頁籤直達任一頁。 | design.md「HTML 的優勢:拿來用的八件事」 | |
| 講者的游標就是雷射筆。 | 引擎自動做:表格列、對照列、檢核列、卡、格、流程格滑過即亮,大表另加同欄 (閱讀態淡藍;簡報態一律講者綠,只加亮目標、不壓暗其他內容),寫 deck 不必動; | design.md「HTML 的優勢:拿來用的八件事」 | |
| 兩態契約:閱讀態動態只做定位;簡報態可以揭露⋯ | 寫法與寫 deck 要守的三條鐵則見 present.md「兩態契約」。 | design.md「HTML 的優勢:拿來用的八件事」 | |
| 狀態不落地。 | 不用 localStorage/sessionStorage,一切狀態只在這次開啟。 | design.md「HTML 的優勢:拿來用的八件事」 | |
| 手機=縮小的原版,像看 PDF。 | 小螢幕(直立、橫擺、矮視窗)每張投影片固定用 1280×720 排版、再整張等比縮到螢幕寬: 不重排、不跑版,版面與列印同一份; | design.md「HTML 的優勢:拿來用的八件事」 | |
| 三秒層 | 讀者花多久:翻到這頁的第一眼;放什麼:主張+主角;承載元件:title、.hero/.hot 卡/圖表本身 | design.md「總綱:表層是簡報,深層是文件」 | |
| 三十秒層 | 讀者花多久:停下來讀;放什麼:證據與機制;承載元件:bluf、分區、卡、列、表 | design.md「總綱:表層是簡報,深層是文件」 | |
| 三分鐘層 | 讀者花多久:想追問的人;放什麼:定義、明細、出處、附錄;承載元件:.tip、details、頁籤、.jump 膠囊 | design.md「總綱:表層是簡報,深層是文件」 | |
| 滿版組合 | components.md §三 | 六種容量上限實測過的頁型:要素+風險、三卡分流、檢核+雙卡、格+列+註、評述對照、表格+列點 | spec_extra.md〔doc:components.md「滿版組合」〕 |
品牌39 條
brand.md 的條目、粗體標籤與規則表(按節取:ref.py doc brand <標題>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| LOGO 鐵則 | 相對位置不可動; | brand.md「品牌外框(母片 33.87 × 19.05 cm)」 | |
| 語意第三色(僅語意,禁裝飾) | 規則: 1. 中性色佔約七成; | brand.md「官方色與色彩規則」 | |
| 中性色佔約七成 | 中性色佔約七成; | brand.md「官方色與色彩規則」 | |
| 表面用 6–8% 淡化 | 表面用 6–8% 淡化; | brand.md「官方色與色彩規則」 | |
| 小字級紅一律 --brand-deep | 小字級紅一律 --brand-deep。 | brand.md「官方色與色彩規則」 | |
| 紅藍不可大面積相鄰 | 紅藍不可大面積相鄰; | brand.md「官方色與色彩規則」 | |
| 封底用深藍反白頁 | 封底用深藍反白頁。 | brand.md「官方色與色彩規則」 | |
| 強化=關鍵字上色(.k/.kb)或淡底(… | 強化=關鍵字上色(.k/.kb)或淡底(.mark); | brand.md「官方色與色彩規則」 | |
| 第三色只給既定語意(漲跌/達成率/風險/狀態燈⋯ | 第三色只給既定語意(漲跌/達成率/風險/狀態燈),全檔一致:漲紅跌綠(台灣慣例)。 | brand.md「官方色與色彩規則」 | |
| 色盲友善不設門檻(狀態一律「顏色+文字」雙標) | 色盲友善不設門檻(狀態一律「顏色+文字」雙標)。 | brand.md「官方色與色彩規則」 | |
| 點 | 每頁只有一點,永遠在橫的右端上方、角對角(logo 橫桿右端那一點的關係)。 | brand.md「筆畫母題:點・橫折・圓」 | |
| 橫折(內容頁標題列) | .head 之上一橫(2.6em × M),左端折下一豎托住眉標與標題、長度隨標題行數; | brand.md「筆畫母題:點・橫折・圓」 | |
| 橫(結構頁) | 章節頁與封底在標題之上寫一橫,長度=標題寬的 5/8(.tt 包住橫與標題); | brand.md「筆畫母題:點・橫折・圓」 | |
| 圓(錢幣) | 章節頁與封底疊一枚 110cqh 的圓(淺面紅 5.5%/深面白 4%)與同心髮絲外郭(1.06×), 一律右上出血,永遠不壓字、不壓右下角 logo。 | brand.md「筆畫母題:點・橫折・圓」 | |
| 封面 | (置中版式):角落線組改模組構成——紅桿 6cqw × M(M=.8cqh),桿端右上一格,藍細線、灰髮線 右緣對齊紅桿、長度依 5:8 遞進(6 → 9.6 → 15.4cqw⋯ | brand.md「筆畫母題:點・橫折・圓」 | |
| 網格指紋 | cover/divider/closing 疊近隱形網格(淺面 2.5% 墨、深面 3% 白),格=9M=7.2cqh (一枚錢幣的直徑,封面 logo 的圓正好一格); | brand.md「筆畫母題:點・橫折・圓」 | |
| 禁區 | 不重組 logo 的三個勾與方塊(那是「永」字,重組即寫壞字); | brand.md「自畫裝飾的禁區」 | |
| 第三方品牌 | 提及第三方品牌時預設「全名文字+官方色圓點」; | brand.md「自畫裝飾的禁區」 | |
| LOGO(內頁) | 規格:右下角;右緣 ~97%、底部 ~95–97% 高度帶;寬 ≤ 版面寬 21%(範本 ~8%) | brand.md「品牌外框(母片 33.87 × 19.05 cm)」 | |
| LOGO(封面) | 規格:左上角;寬 ≤ 版面寬 ~18% | brand.md「品牌外框(母片 33.87 × 19.05 cm)」 | |
| 品牌標語 | 規格:左下「翻轉金融 共創美好生活 Together, a better life.」;寬版一行、手機拆兩行 | brand.md「品牌外框(母片 33.87 × 19.05 cm)」 | |
| 頁碼 | 規格:最左下小方框 chip;只放數字(01、02…,不加總頁數/斜線) | brand.md「品牌外框(母片 33.87 × 19.05 cm)」 | |
| LOGO(封底) | 規格:左上白底座,與封面 logo 同位;尺寸同封面上限 | brand.md「品牌外框(母片 33.87 × 19.05 cm)」 | |
| 標題筆畫 | 規格:標題之上一橫(2.6em × .32em)、橫端右上一點、橫左端折下一豎托住眉標與標題;落在頂部 3–16% 高度帶 | brand.md「品牌外框(母片 33.87 × 19.05 cm)」 | |
| --brand | 色值:#D03238;角色:官方紅=行動/強調/招牌筆畫(點、橫、章) | brand.md「官方色與色彩規則」 | |
| --brand-deep | 色值:#A82329;角色:深一階紅:小字級紅、hover | brand.md「官方色與色彩規則」 | |
| --brand-soft / --brand-⋯ | 色值:#E58B8F / #FBE9EA;角色:紅的淡化 | brand.md「官方色與色彩規則」 | |
| --blue | 色值:#003F98;角色:官方藍=結構/輔助/現況 | brand.md「官方色與色彩規則」 | |
| --blue-soft / --blue-bg | 色值:#3A63AC / #E8EDF7;角色:藍的淡化 | brand.md「官方色與色彩規則」 | |
| --canvas | 色值:#0B1322;角色:頁面畫布 | brand.md「官方色與色彩規則」 | |
| --paper 系 | 色值:#EDF0F4…;角色:卡片紙面 | brand.md「官方色與色彩規則」 | |
| --up / --up-bg | 色值:#B3282E / #FDECEC;語意:漲(紅) | brand.md「官方色與色彩規則」 | |
| --dn / --dn-bg | 色值:#2E7A57 / #E6F2EA;語意:跌(綠) | brand.md「官方色與色彩規則」 | |
| --ok / --ok-bg | 色值:#2E7A57 / #E6F2EA;語意:達成/正常 | brand.md「官方色與色彩規則」 | |
| --warn / --warn-bg | 色值:#8A5A00 / #FDF3E1;語意:注意/風險中 | brand.md「官方色與色彩規則」 | |
| --bad / --bad-bg | 色值:#B3282E / #FDECEC;語意:未達/風險高 | brand.md「官方色與色彩規則」 | |
| 筆畫模組 M | M = .32em | 品牌筆畫的統一粗細(約等於封面 LOGO 的筆畫);方塊邊長=桿厚=間隙 | spec_extra.md〔doc:brand.md「筆畫母題」〕 |
| 陰影色相 | rgba(4,10,22,…)/rgba(11,19,34,…) | 陰影一律取畫布的藍黑色相、不用純黑:深畫布與淺面元素各一組 | spec_extra.md〔grep:references/brand.md:rgba(4,10,22〕 |
| 畫布底噪點紋理 | body::before | 投影片外圍的深畫布疊一層極淡的噪點紋理,大面積純色才不顯得平板 | spec_extra.md〔grep:assets/template.html:feTurbulence〕 |
簡報態與互動32 條
present.md 的條目、粗體標籤與規則表(按節取:ref.py doc present <標題>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 匯出 Markdown 的自訂元件 | 引擎內建的元件都會轉; | present.md「作者要寫的互動(總覽)」 | |
| 鐵則(寫 deck 時要守的四條) | 1. 三秒層永遠在:結論列、標題、眉標不掛步驟(lint ✗;這幾層是槽位,只有圍欄裡自己寫了同名類名時碰得到); | present.md「兩態契約」 | |
| 三秒層永遠在 | 結論列、標題、眉標不掛步驟(lint ✗;這幾層是槽位,只有圍欄裡自己寫了同名類名時碰得到); | present.md「兩態契約」 | |
| 步驟只換透明度與顏色 | 屬性不改尺寸、位置、換行——measure_deck.js 量到的就是簡報態的版面,容量表一樣適用。 | present.md「兩態契約」 | |
| 逐步頁留給真的要一步步講的頁 | 超過全副三成 lint 出 △。 | present.md「兩態契約」 | |
| 強調一律加在目標上 | 不壓暗、不淡化其他內容(唯一例外是講者自己按的黑幕); | present.md「兩態契約」 | |
| 逐步揭示 data-step | 寫第幾步出現; | present.md「簡報態才作用的寫法」 | |
| 數字從基準值滾動 data-from+差額膠囊⋯ | (閱讀態也作用):數字從去年值滾到今年值(首次抵達時),滾完才淡入差額; | present.md「閱讀態也作用的互動」 | |
| 就地展開 popover | (閱讀態也作用):點一下攤開預先寫好的小表或定義,點外面或 Esc 關。 | present.md「閱讀態也作用的互動」 | |
| 狀態切換 data-switch | (閱讀態也作用):同一組內容的幾種看法(金額/占比、表/圖、季度/年度/年初至今), 值由作者預先寫好、頁面不計算。 | present.md「閱讀態也作用的互動」 | |
| 聯動 | (只在精準指標的螢幕,列印與觸控看不到;閱讀態也作用) 結論↔證據:結論列或內文寫 [ev=鍵]結論片語[/ev](圍欄內寫 <span class="ev" data-ev="⋯ | present.md「閱讀態也作用的互動」 | |
| <details> 收合(同一組寫同一個 na⋯ | 讀者用途:附錄級細節不佔版面;Ctrl+F 搜得到;寫法:components.md「層級、強調與互動元件」的收合 | present.md「作者要寫的互動(總覽)」 | |
| 就地展開 button.drill[popov⋯ | 讀者用途:被追問時當場攤開拆解;寫法:本檔「就地展開」 | present.md「作者要寫的互動(總覽)」 | |
| 狀態切換 [data-switch]+.sta⋯ | 讀者用途:同一組數字換一種看法(金額/占比、表/圖、各時距);寫法:本檔「狀態切換」 | present.md「作者要寫的互動(總覽)」 | |
| 結論↔證據 [ev=鍵]…[/ev]、表圖聯動⋯ | 讀者用途:「這個結論從哪裡看出來」一滑就框出證據;寫法:本檔「聯動」 | present.md「作者要寫的互動(總覽)」 | |
| hover 白話 [tip=…]名詞[/tip⋯ | 讀者用途:專有名詞白話;出處頁碼、案號這類後設資訊掛 .tip.s;寫法:什麼該掛 hover 見 design.md「分層揭露」表 | present.md「作者要寫的互動(總覽)」 | |
| 跨頁膠囊 .jump+回程列 .note.xr⋯ | 讀者用途:主文「附錄:頁名」去、附錄「回主文:頁名」回;build 自動對帳;寫法:revision-playbook.md「主文與附錄雙向互連」 | present.md「作者要寫的互動(總覽)」 | |
| 頁內頁籤 [data-tabs]、一鍵複製 .⋯ | 讀者用途:同區塊放多組平行內容;讀者直接取用文字段;寫法:components.md「頁內頁籤」 | present.md「作者要寫的互動(總覽)」 | |
| 案件清單 hover data-cases(d⋯ | 讀者用途:計數頁「這個數字是哪幾件」;寫法:python3 scripts/ref.py snippet data-cases | present.md「作者要寫的互動(總覽)」 | |
| 數字從基準值滾動 data-from+差額膠囊⋯ | 讀者用途:關鍵數字被看見;列印與匯出一律是最終值;寫法:本檔「數字從基準值滾動」 | present.md「作者要寫的互動(總覽)」 | |
| 逐步揭示、逐段強調、逐列聚焦、講者備註(簡報態⋯ | 讀者用途:講者控制節奏;寫法:本檔 §一–§二 | present.md「作者要寫的互動(總覽)」 | |
| 誰在用 | 閱讀態(預設):傳閱、手機、列印、截圖、measure_deck.js/export_pdf.js;簡報態:講者投影、Teams 分享 | present.md「兩態契約」 | |
| 畫面 | 閱讀態(預設):步驟全亮、沒有聚焦與釘住:步驟與聚焦類屬性(data-step、data-walk、data-focus、.stepmark 的逐段)不作用;data-from⋯ | present.md「兩態契約」 | |
| 進出 | 閱讀態(預設):開檔就是;簡報態:P、F5、網址 ?present 進入;P 或 Esc 離開,離開那一刻全部回到完整畫面;手機與小螢幕不提供 | present.md「兩態契約」 | |
| 結論↔證據 | 結論列或內文寫 [ev=鍵]結論片語[/ev](圍欄內寫 <span class="ev" data-ev="鍵">),滑過時本頁 data-k相同的元素鋪淡綠加綠框; | present.md「閱讀態也作用的互動」 | |
| 表圖聯動 | 同一頁畫布裡 data-k 相同的元素一起鋪淡綠(其餘不淡化)——表列、格、文字、新舊制對應格都行; | present.md「閱讀態也作用的互動」 | |
| 同詞同數 | 滑過掛 data-hl 的元素(值=要找的詞;空值取它自己的字),本頁同一個詞或數字用原生文字範圍標記標出,不改 DOM; | present.md「閱讀態也作用的互動」 | |
| # custom-js 的覆蓋層掛 role=⋯ | 引擎認得它——開著時翻頁與簡報態按鍵一律不作用、背後的頁不動,Esc 交給覆蓋層自己關(只關這一層、不連簡報態一起關); | present.md「進出與自訂覆蓋層」 | |
| 整副關閉 | 簡報態: off; | present.md「進出與自訂覆蓋層」 | |
| 列印=閱讀態的開檔畫面 | 紙本就是閱讀態打開檔案那一刻的畫面——頁籤只印開檔那一片(頁籤列照印、亮開檔那一顆); | present.md「列印印什麼」 | |
| 列印展開: on(個案才用) | 回到全展開——頁籤全部攤開並印出片名、收合全開(同名互斥組也全開)、.tip 轉括號(.tip.s 不轉)、沒寫 data-print 的切換並排、就地展開的浮層印到最後的補充頁⋯ | present.md「列印印什麼」 | |
| 游標閒置隱藏、螢幕常亮 | .pm-idle;Wake Lock | 簡報態游標閒置自動隱藏;會議室久不碰電腦也不休眠(企業環境拒絕就靜默) | spec_extra.md〔class:.pm-idle〕 |
交付與發布23 條
delivery.md 的條目、粗體標籤與規則表(按節取:ref.py doc delivery <標題>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 講者備註預設也剝 | (note:):那是講者自己的講稿與預期問答,交付版不該帶著走; | delivery.md「交付模式(`--ship`)」 | |
| 絕不剝 | OFL 授權聲明(SIL OFL 1.1 要求隨散布保留)、產出標記四層、署名。 | delivery.md「交付模式(`--ship`)」 | |
| 在哪裡開分支 | 已安裝的 skill 目錄 ~/.claude/skills/sinopac-deck 是所有 session 共用的 main,永遠停在 main、只做 git pull。 | delivery.md「分支命名規則」 | |
| 擋分支與 repo 狀態 | 不是 deck/ 規則分支、content.md 在已安裝的 skill 目錄裡、HEAD 不在分支上、合併做到一半、 暫存區有 site/ 以外的改動,一律拒絕。 | delivery.md「每次交付」 | |
| 完整驗收 | 跑 verify.sh <content.md> [-o …] --ship,不帶 --quick:五檔視窗+手機兩檔+列印 export --check+交付版產出標記。 | delivery.md「每次交付」 | |
| 再驗一次交付版 | 不可以有 data-slot 屬性,也不可以有 EDIT-MAP; | delivery.md「每次交付」 | |
| 重建 site/ | 先清空整個目錄再寫三個檔,deck 預覽網址上只會有這一副: 每個檔的上限是 25 MiB,超過就中止。 | delivery.md「每次交付」 | |
| commit site/ | 先用 git add -f,比照 decks/ 的做法; | delivery.md「每次交付」 | |
| 維運版 | 指令:build_deck.py content.md;用途:自己留著:改字、check_slots.py 對帳 | delivery.md「交付模式(`--ship`)」 | |
| 交付版 | 指令:build_deck.py content.md --ship(或 verify.sh content.md --ship);用途:實際寄出去的 _交付.html(自動命名⋯ | delivery.md「交付模式(`--ship`)」 | |
| ✓ 各層齊備、指紋一致 | → 未經改動的原版 | delivery.md「產出標記(provenance)」 | |
| △ 字型層在、HTML 層缺或不符 | → 改過 HTML 但沒動字型:仍是本產線衍生物,而且「被改過」這件事本身已被記錄下來 | delivery.md「產出標記(provenance)」 | |
| ✗ 完全找不到 | → 不是本產線產出,或標記已被刻意清除 | delivery.md「產出標記(provenance)」 | |
| deck 分支的預覽網址只服務分支上 comm⋯ | 。 | delivery.md「機制」 | |
| 網址內容只在交付時改變 | 平常改稿 push 不動 site/,網址還是上次發布的那一份。 | delivery.md「機制」 | |
| main 的正式網址 https://<專案>⋯ | Cloudflare build 時由 cf_build.sh 把 docs/ 組進 site/(設定與做法:MAINTAINING.md「發布:Cloudflare Pages⋯ | delivery.md「機制」 | |
| 格式 | 規則:deck/YYYYMMDD-<slug>,例 deck/20260928-branch-counter | delivery.md「分支命名規則」 | |
| 日期 | 規則:與 deck 檔名的日期相同:會議或交付日已定就用那天(# deck 的 日期:),沒定就用開工當天;decks/<YYYYMMDD_中文主題>/ 目錄名同一個日期 | delivery.md「分支命名規則」 | |
| slug | 規則:只用小寫英數,單字之間用單一 -,不以 - 開頭或結尾,最長 14 字元 | delivery.md「分支命名規則」 | |
| 總長 | 規則:分支名最長 28 字元(deck/+8 碼日期+- 已占 14) | delivery.md「分支命名規則」 | |
| 網址 | 規則:分支名把 / 換成 -:https://deck-20260928-branch-counter.<專案>.pages.dev/ | delivery.md「分支命名規則」 | |
| 中文名放哪 | 規則:# deck 的 主題:(檔名與交付檔名都從這裡來)、decks/<YYYYMMDD_中文主題>/ 目錄名、storyline.md 檔頭(記一行「分支+預覽網址」) | delivery.md「分支命名規則」 | |
| 明體只嵌一個字重 | .k/em/.stmt/.quote/.serif | 明體語境全是 900;.serif 用在非 900 的語境會被合成字重 | spec_extra.md〔doc:delivery.md「明體強調字的子集化內嵌」〕 |
改版協作94 條
revision-playbook.md 的條目、粗體標籤與規則表(按節取:ref.py doc revision-playbook <標題>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 引號慣例 | 使用者加引號的片語=原文照換,不自行潤飾; | revision-playbook.md「改版協作規則」 | |
| 整篇同類掃描 | 使用者點名一頁的問題,視為「一類問題」,全篇掃同類 (同一個詞、同一種句構、同一種版面毛病)。 | revision-playbook.md「改版協作規則」 | |
| 口語需求撞到硬限制時,分級處理,不要自行代換 | 阻斷級(會改語意、刪內容、動結構、或無法照字面實作):先停下來講清楚 「限制是什麼、為什麼擋住、有哪幾條路、每條犧牲什麼、建議哪一條」,等裁示再動手。 | revision-playbook.md「改版協作規則」 | |
| 改對方真正要防的事 | 使用者說「寫法很奇怪」時,先問清楚他要防的失效模式, 不要自己補一個聽起來合理的理由。 | revision-playbook.md「改版協作規則」 | |
| 文字與 HTML 分開交付 | 先確認文字稿,再組裝(同時處理兩者,其中一個品質必降)。 | revision-playbook.md「改版協作規則」 | |
| 改版不覆蓋舊檔;版號改完要驗證 build 輸出 | 。 | revision-playbook.md「改版協作規則」 | |
| 回報改版結果用固定三級 | (沿用 lint_content.py/measure_deck.js 的符號,別自創 emoji—— 兩套符號並存會讓驗收單自相矛盾):✗ 必改(溢出/禁詞/事實錯,同工具的硬⋯ | revision-playbook.md「改版協作規則」 | |
| 使用者說「看不懂」時,要補的是定義層,不是換句⋯ | 。 | revision-playbook.md「改版協作規則」 | |
| 每個逐頁要求都先問「這是不是通案」 | 。 | revision-playbook.md「改版協作規則」 | |
| 裁決要可覆核、可回退 | 。 | revision-playbook.md「改版協作規則」 | |
| 使用者給替換句時,先核事實再照換 | 。 | revision-playbook.md「改版協作規則」 | |
| 被打斷時先對照原指示,不補新論述 | 。 | revision-playbook.md「改版協作規則」 | |
| 「不重要」也是裁決 | 。 | revision-playbook.md「改版協作規則」 | |
| 回報時區分「照做了」與「我判斷了」 | 。 | revision-playbook.md「改版協作規則」 | |
| 使用者的批註從哪回來,就照那條管道回寫 | 匯出 Markdown(引擎內建,右下輸出鈕):使用者在匯出的 .md 上直接改字或批註傳回。 | revision-playbook.md「改版協作規則」 | |
| 保護清單只保護他人原文 | 。 | revision-playbook.md「改版協作規則」 | |
| 使用者嫌範例「虛幻、不實際」時,先自檢可取得性 | 逐個指標問「現在有哪個資料來源」 「效果能不能與同期因素區分」,兩個答不出來就是虛幻的來源。 | revision-playbook.md「改版協作規則」 | |
| 使用者嫌架構「太複雜」時,先依「誰用這個數字⋯ | 同一使用者、同一頻率的層 併成一層(例:執行+接觸 → 活動層、行為+價值 → 往來層,五層收成三層),原本獨立的側線 改寫成機制而不是一層; | revision-playbook.md「改版協作規則」 | |
| 溢出處理的優先順序 | (按資訊損失小到大): ① 精煉贅語,讓兩行的列收成一行; | revision-playbook.md「版面調整法則」 | |
| 成塊空洞的處理順序 | (measure_deck.js 的 △ 卡內空洞/下半空置會點名): 引擎先處理一半——內容少的頁先升字級(彈性字級),.fill 不把有框的卡撐高,垂直節奏把餘裕分給區段之間⋯ | revision-playbook.md「版面調整法則」 | |
| 板位平衡 | 區段之間的呼吸感由垂直節奏自動放大(區段間距權重最高),不必再手寫 .seg+.seg 的 margin-top; | revision-playbook.md「版面調整法則」 | |
| 頁籤各片要有不同的資訊軸 | 。 | revision-playbook.md「版面調整法則」 | |
| 能用一個視覺標記表達的維度,不另開一片 | 。 | revision-playbook.md「版面調整法則」 | |
| 能力邊界獨立一片,不混進分類表 | 。 | revision-playbook.md「版面調整法則」 | |
| △ 中文排版與並排不對稱的處理法 | 三種都改字、不動版面。 | revision-playbook.md「版面調整法則」 | |
| 螢幕幾何的唯一可信來源是 `node scri⋯ | (bash scripts/verify.sh content.md 會跑;本條是這件事的真相源, 其他檔只寫一句並指到這裡):逐頁捲動觸發動畫 → fx-off 凍結 → 三道⋯ | revision-playbook.md「長簡報驗收(8 頁以上)」 | |
| 多視窗掃描 | measure_deck.js 預設五檔(2560×1440 → 1100×620),逐頁溢出應為 0。 | revision-playbook.md「長簡報驗收(8 頁以上)」 | |
| 頁籤頁逐片量測 | measure_deck.js 每個視窗在整頁量測後,逐一把所有 [data-tabs] 切到第 2、3⋯片 再跑三道探測,溢出訊息標「頁籤第 k 片」——只量 .on 那一片等⋯ | revision-playbook.md「長簡報驗收(8 頁以上)」 | |
| 引擎本身的現象要先用原廠範例定基準,再判定是不⋯ | 量到可疑的溢出或警告時, 同環境 build 一次 references/content-example.md 做對照——對照樣本也有=引擎層,不列缺陷、 也不要為它改內容(改了⋯ | revision-playbook.md「長簡報驗收(8 頁以上)」 | |
| 頁籤頁的列印 | 預設列印=開檔畫面(present.md「列印印什麼」),頁籤只印開檔那一片,不會因為攤開而溢出; | revision-playbook.md「長簡報驗收(8 頁以上)」 | |
| 數據型 deck 附一支對帳腳本 | 把 content.md 上每個數字——結論列、卡片 .n、封底 sub、 note、hover 分組的筆數——對回原始資料,一項一斷言(EXPECT = {'名稱': (算式,⋯ | revision-playbook.md「長簡報驗收(8 頁以上)」 | |
| # custom-css 的內容必須寫在 `… | # custom-css 的內容必須寫在 ` css `` 圍籬之內; | revision-playbook.md「工具層踩雷(靜默失效清單)」 | |
| `html | html: 圍欄是原始 HTML,不經行內標記轉換:[br] 會被印成字面文字,要直接寫 <br>。 | revision-playbook.md「工具層踩雷(靜默失效清單)」 | |
| 批次重編頁碼=一張映射表跑一趟 | 頁首(## pNN)、錨點(href="#pNN")、 膠囊文字(>pNN<)、導覽標籤(<i>PNN</i>)全部經過同一個映射函式, 映射跑完才插入新頁。 | revision-playbook.md「工具層踩雷(靜默失效清單)」 | |
| 正文放結論、附錄放細節 | ; | revision-playbook.md「附錄頁通案」 | |
| 主文改版後,附錄要做一致性掃描 | 附錄裡「已納入主文 pNN」的宣稱要重驗 (主文那頁可能已經改掉了); | revision-playbook.md「附錄頁通案」 | |
| 主文與附錄雙向互連 | 去程放在主文相關段落,回程統一置於附錄區段標題右上角; | revision-playbook.md「附錄頁通案」 | |
| 主文精簡、其餘進附錄,是主管版的預設改版方向 | 。 | revision-playbook.md「附錄頁通案」 | |
| 附錄第一頁放主文直接指向的那張表 | 。 | revision-playbook.md「附錄頁通案」 | |
| 主文與附錄分母不同時,附錄自己標分母,主文不替⋯ | 。 | revision-playbook.md「附錄頁通案」 | |
| 方法論 deck:主文放方法,風險警示與說服論⋯ | 。 | revision-playbook.md「附錄頁通案」 | |
| 兩章以上就放章節隔頁 | 。 | revision-playbook.md「結構通案」 | |
| 右側圓點的提示要能自己定位 | 提示用「頁碼-標籤」(21-六類任務),同時回答「這是什麼」與 「跳過去要滑多遠」。 | revision-playbook.md「結構通案」 | |
| 母片 chrome 不遮內容 | deck 自訂的浮動元件收起來、放右下、不壓內文(引擎的輸出鈕就是這樣收成右下單一鈕)。 | revision-playbook.md「結構通案」 | |
| 分類要做窮盡性自檢 | 使用者補一類時,不要補完那一類就收工——把整個分類軸再走一遍問「還缺哪一格」。 | revision-playbook.md「結構通案」 | |
| 跨 deck 重用素材要連來源一起搬 | 沿用另一副的譯文或表格時, src 的一手來源同時複製過來,不要只搬中譯。 | revision-playbook.md「結構通案」 | |
| 章節頁的寫法 | dt 章名 ≤8 字、dx 寫本章要回答的問題(書面問句),不寫本章摘要。 | revision-playbook.md「結構通案」 | |
| 分母分層,寫成口徑表 | (writing.md「多個分母要有口徑表」):填報總數(含平台能力請求)→ 納入分析 (扣除純平台請求)→ 業務應用場景(再扣除唯一輸入為紙本影像或語音等目前無解者)。 | revision-playbook.md「需求盤點類簡報通案」 | |
| 判定分兩層,互不換算 | 第一層「能不能開始做」=外部限制(個資遮罩、資料介接、 工具是否開放)的聯集,答受限/可執行; | revision-playbook.md「需求盤點類簡報通案」 | |
| 既有能力已涵蓋者靜默扣除 | 連接器已上架(Outlook、SharePoint)、套件確定開放 (Playwright)所涵蓋的需求不列缺口,頁面上也不寫「已由 X 處理」——那是分析過程 (writing⋯ | revision-playbook.md「需求盤點類簡報通案」 | |
| 缺口認定取表單的「必須具備」 | ,期望具備另計,兩者在附錄同一張表並列; | revision-playbook.md「需求盤點類簡報通案」 | |
| 敘述型,不下建議 | 主管版只陳述數字、性質與集中處,不寫「建議優先」「應」「宜」; | revision-playbook.md「需求盤點類簡報通案」 | |
| 判定名詞要對讀者的語境 | 解禁槓桿寫產品名(Playwright 取得網頁內容,不寫「外部網頁」—— 行內站台也是網頁); | revision-playbook.md「需求盤點類簡報通案」 | |
| 表單沒問到的能力另立一格 | 盤點表未涵蓋的平台事項(掃描件辨識)與單位提的平台能力提案, 在附錄同一個框架內條列,不與有數據的缺口表混排,也不把已被涵蓋的類別(網頁內容讀取、 寄送與通知)列進去湊數。 | revision-playbook.md「需求盤點類簡報通案」 | |
| 這類 deck 的用語 | (主管點名過):去重→不重複計(集合扣除重複)| 掩碼→遮罩|受阻→受限(可執行性語境)|可行→可執行(能否開始做那一軸; 「可行性評估」屬本義)|企業 ID→依原始表單欄名(如⋯ | revision-playbook.md「需求盤點類簡報通案」 | |
| 場合是討論而非核示 | 、或評述他人文件的簡報,S0 就讀:storyline 檔頭先寫明場合, S1 起整副照這節寫——寫完才改場合,等於全篇重寫。 | revision-playbook.md「討論/評述類簡報通案」 | |
| 速查 | (細則在後面各條) 1. 中性決策點:只陳述現況與文件主張、點出決策點。 | revision-playbook.md「討論/評述類簡報通案」 | |
| 中性決策點 | 只陳述現況與文件主張、點出決策點。 | revision-playbook.md「討論/評述類簡報通案」 | |
| 場合用詞 | 純討論場合刪掉「核示/裁示/委員會/請示」,改用「討論/待討論」; | revision-playbook.md「討論/評述類簡報通案」 | |
| 讀者前提決定密度 | storyline 檔頭記「讀者讀過原件沒有」。 | revision-playbook.md「討論/評述類簡報通案」 | |
| 評述他人文件的隔離 | 提案者身分、與我方的利害關係、我方幕僚角色只放 deck 目錄的 CONTEXT.md,交付文件統一稱「提案者」「本文件」。 | revision-playbook.md「討論/評述類簡報通案」 | |
| 原文引用 | 引號內一字不動(writing.md「保護清單(改寫時圈起來、一字不動)」); | revision-playbook.md「討論/評述類簡報通案」 | |
| 出處只掛 hover | 文件頁碼出處掛 .tip.s(引擎內建的淡樣式 tooltip),不寫進正文、小標或 備註,該類頁 src 整行不寫; | revision-playbook.md「討論/評述類簡報通案」 | |
| 方案比較頁 | 各案共用同一組因子前置詞(writing.md「句式一致性與同層對稱」的跨卡同位),優缺數量對等 (各二優二缺); | revision-playbook.md「討論/評述類簡報通案」 | |
| 法遵、個資與姓名 | 不寫「增列法遵窗口」「須先完成法遵評估」這類我方要求; | revision-playbook.md「討論/評述類簡報通案」 | |
| 封面與檔名押會議日期 | who 寫單位全稱(「金控總經理辦公室」,可附報告人), date 寫到日=會議日期; | revision-playbook.md「討論/評述類簡報通案」 | |
| 隨時迭代 | 使用者每一則逐頁指示先問「是不是通案」(本檔「每個逐頁要求都先問」); | revision-playbook.md「分支協作:隨時迭代、定版回灌 main」 | |
| 定版回灌 | deck 定版(使用者說可以、或交付)那一輪,收尾前做完這三步才算完成: ① 逐條判斷 〔待回灌〕 的落點:文字規則 → references/writing.md|改版協作 →⋯ | revision-playbook.md「分支協作:隨時迭代、定版回灌 main」 | |
| deck 本身永不進 main | 合併的只有通案; | revision-playbook.md「分支協作:隨時迭代、定版回灌 main」 | |
| 回灌後回頭清 | 下次開工先 merge main,舊 deck 在 # custom-css/# custom-js 自帶的同名片段可刪 (不刪也不衝突,但自帶版會蓋過引擎版,吃不到引擎之後的改⋯ | revision-playbook.md「分支協作:隨時迭代、定版回灌 main」 | |
| 三種對位方式(同一份資料,三個方向) | EDIT-MAP 每頁一列,slots 欄逐槽附行號; | revision-playbook.md「改字對位與編輯地圖」 | |
| 改字流程 | 1. 正規:--where 找到行 → 改 content.md 那一行 → 重跑 build(或 verify)。 | revision-playbook.md「改字對位與編輯地圖」 | |
| 正規 | 正規:--where 找到行 → 改 content.md 那一行 → 重跑 build(或 verify)。 | revision-playbook.md「改字對位與編輯地圖」 | |
| 急救單點 | 急救單點:讀 EDIT-MAP → grep 'data-slot="p05.title"' → 只取代該節點; | revision-playbook.md「改字對位與編輯地圖」 | |
| 兩種都跑 `check_slots.py de⋯ | 兩種都跑 check_slots.py deck.html content.md 對帳——它會連行號一起校驗, 行號整體漂掉(content.md 插刪過行但沒重組)會收斂成一則⋯ | revision-playbook.md「改字對位與編輯地圖」 | |
| 阻斷級 | (會改語意、刪內容、動結構、或無法照字面實作):先停下來講清楚「限制是什麼、為什麼擋住、有哪幾條路、每條犧牲什麼、建議哪一條」,等裁示再動手。 | revision-playbook.md「改版協作規則」 | |
| 措辭級 | (同義替換,不影響語意與結構):可以先做,但當場在該處標註,不留到最後總結才順帶一提。 | revision-playbook.md「改版協作規則」 | |
| 匯出 Markdown | (引擎內建,右下輸出鈕):使用者在匯出的 .md 上直接改字或批註傳回。 | revision-playbook.md「改版協作規則」 | |
| Heptabase 卡片 | 批註一律寫在同一張卡片,不另開卡; | revision-playbook.md「改版協作規則」 | |
| 膠囊字寫頁名、不寫頁碼 | 去程「附錄:九類來源」、回程「回主文:同業比較」(writing.md「製作語言不進成品」)。 | revision-playbook.md「附錄頁通案」 | |
| 掛在哪 | 去程掛在主文該段的 .sh .x 或 .note 句尾; | revision-playbook.md「附錄頁通案」 | |
| 一對多 | 一張附錄表常被三頁主文指向,回程只連最主要的那一頁即可; | revision-playbook.md「附錄頁通案」 | |
| 附錄頁序照主文去程出現的順序 | (主文先指 KPI 風險、後指事件,附錄就照這個順序排),本節第 5 條「附錄第一頁放主文直接指向的那張表」是它的特例。 | revision-playbook.md「附錄頁通案」 | |
| build 自動對帳 | (build_deck.py):膠囊指向不存在的頁、附錄頁有主文連過來卻沒有任何回主文膠囊,都會出警告。 | revision-playbook.md「附錄頁通案」 | |
| 附錄也是一章 | 以一張 divider(dt: 附錄)起頭,引擎的章節頁籤就能直接跳到附錄; | revision-playbook.md「結構通案」 | |
| 結論列前置章 | 討論/評述類的寫法:主文用「脈絡」、原文引用頁用「原文」;不掛「結論」「建議」(writing.md「結論先行(BLUF)」) | revision-playbook.md「討論/評述類簡報通案」 | |
| 句型 | 討論/評述類的寫法:「文件規劃 X;Y 是否/為何」,收尾「⋯為本議題的決策點」;不附我方選項、不下評價、不用指示語氣 | revision-playbook.md「討論/評述類簡報通案」 | |
| .hot 語意 | 討論/評述類的寫法:只標「須主管裁定」的那一列,不標我方偏好的那一案;片段裡的 .hot(階段、步驟、矩陣格;片段說明寫的是只標目前那一個)同樣守這條,標決策點所在的那一個 | revision-playbook.md「討論/評述類簡報通案」 | |
| 密度 | 討論/評述類的寫法:讀者沒讀過原件:每頁一段說明+三到四條討論列;讀過:現況三格+討論方向三列 | revision-playbook.md「討論/評述類簡報通案」 | |
| 語體 | 討論/評述類的寫法:書面語帶(writing.md「語體帶」) | revision-playbook.md「討論/評述類簡報通案」 | |
| 封面 | 討論/評述類的寫法:who 寫單位全稱、date 寫到日=會議日期;# deck 寫 日期: | revision-playbook.md「討論/評述類簡報通案」 | |
| 槽位 → content.md 行 | 做法:python3 scripts/build_deck.py content.md --where p05.bluf(也吃 --where p05 整頁、--where bl⋯ | revision-playbook.md「改字對位與編輯地圖」 | |
| HTML 節點 → content.md 行 | 做法:讀 deck.html 檔頭 EDIT-MAP 該頁列,取 槽位@行號 | revision-playbook.md「改字對位與編輯地圖」 | |
| content.md → HTML 節點 | 做法:grep 'data-slot="p05.title"' deck.html | revision-playbook.md「改字對位與編輯地圖」 |
元件寫法27 條
components.md 的條目、粗體標籤與規則表(按節取:ref.py doc components <標題>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 圖例用色塊,不用文字色名 | 「■ 解除後可執行 29 ■ 原先可執行 46」,不寫「灰=」「深紅=」。 | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 | |
| 色義全副固定,記進 storyline | 灰=中性或現況(無影響/無需求/原先可執行)、 綠(引擎 --ok)=解除限制後可執行或達成、藍=次級(期望具備/中介資料庫)、 琥珀=部分受限、深紅=阻斷或必須。 | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 | |
| 切片順序自 12 點順時鐘由重到輕 | (深紅→琥珀→綠→藍→灰),圖例順序與切片一致, 值為 0 的類別整段略過。 | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 | |
| 兩群比較用兩張並列圓餅,不用內外環 | 內外環讀者要先對照半徑才知道哪環是誰, 主管版一律拆成兩張,各自上方 .cl 標「銀行 25 案」「證券 50 案」。 | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 | |
| hover 明細(data-cases 案件… | 概覽頁與框架定義頁的第一層不掛; | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 | |
| 圖旁文字卡 | (.cc 左圖右卡):右欄卡片 flex:1 1 auto,內容量不同時不強制等高; | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 | |
| .inner 字級是 cqh | (綁 16:9 框高),所有元件尺寸都用 em,五種視窗等比縮放。 | components.md「容量模型」 | |
| 內容區 | (.canvas)字級 12pt。 | components.md「容量模型」 | |
| 結論列每多一行,內容預算少約 1.2 行單位 | 資訊量大的頁把結論收 2 行。 | components.md「容量模型」 | |
| 內文字級: 14 的 deck | 約可容 14–16 行單位、全寬一行約 61 字,成本表各項約乘 1.15。 | components.md「容量模型」 | |
| 垂直節奏 | (預設 on):下表的成本是「不放大間距」時量的; | components.md「容量模型」 | |
| 彈性字級 | (預設 on,在垂直節奏之前求解):內容少的頁,引擎把內容區整區升到 13 或 14pt(小重點、關鍵句、數字跟著放大,層級不變),頁標題、結論列、來源註與頁尾不動; | components.md「容量模型」 | |
| 有框的卡寫 .g2/.g3/.g4.solid | 卡與卡要逐項比較(主卡的同位列,常配 .sync)、要用 .hot/.warn/.ok 的底色表態、或一塊內容本身有卡頭與關鍵句的完整結構,才加框(design.md「容器要有理⋯ | components.md「元件總表(類名+最小 DOM)」 | |
| .fill | (撐滿到區段底):開放欄與含圖表的格撐滿(撐長的只是欄間髮絲線;圖要有高度),包在 .seg 裡也生效; | components.md「元件總表(類名+最小 DOM)」 | |
| 每列都寫到單行容量七成以上的長句組 → 可改⋯ | (實心藍標籤+灰底長條)。 | components.md「元件總表(類名+最小 DOM)」 | |
| 預設輕量 → 一般情形 | components.md「元件總表(類名+最小 DOM)」 | ||
| 每列不到半行的短句組、≥5 列 → .lad.⋯ | (標籤|內文|標籤|內文),高度減半,或在行尾補一欄證據(數字、對照): | components.md「元件總表(類名+最小 DOM)」 | |
| 適用 | 同一頁要並列 ≥4 類、每類細節超過一列的內容(層級、活動類型、風險、質疑、出處分組); | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 | |
| 預設片 | 放總覽或第一類; | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 | |
| 每片同一版型 | 開頭一行 .blk-h 寫該類的判斷句,其下 .lad 明細,必要時一排格; | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 | |
| 頁籤、切換等元件名不寫進正文 | (writing.md「製作語言不進成品」)。 | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 | |
| 驗收 | measure_deck.js 逐片量測(每片都量,溢出訊息標「頁籤第 k 片」); | components.md「層級、強調與互動元件(成本除註明實量者皆估算)」 | |
| 灰色中性切片一律不掛 | (原先可執行、可全程自動化、無影響、無需求),那是「沒事的」。 | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 | |
| 表格掛到格、不掛到列 | 多欄計數表(必須具備/期望具備)每格各自掛,滑過哪格就只列那格; | components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」 | |
| 每 2–3 頁輪換一次視覺主角 | hero 大數字 → tb 表 → tl 時間軸 → 圖表 → 卡陣,交替使用。 | components.md「跨頁節奏(視覺主角差異化)」 | |
| 章界必換;章內連 3 頁同型要是刻意的平行組 | 同一章連用同型可接受的情形是「同一組東西逐頁攤開」(例:五個議題各一頁、同一版型),在 storyline 標明是平行組; | components.md「跨頁節奏(視覺主角差異化)」 | |
| S0 就檢查 | storyline.md 的版型欄一路看下來,若出現 ≥3 連同型,回頭改敘事切法或換元件,不要等到 build 完才發現整副節奏平掉。 | components.md「跨頁節奏(視覺主角差異化)」 |
引擎與工具內部130 條
MAINTAINING.md 的條目、粗體標籤與規則表(按節取:ref.py doc MAINTAINING <標題>)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 16:9 框架 | (嚴禁加 max-width): .frame{aspect-ratio:16/9;width:min(100%,calc((100vh - 32px) * 16 / 9));c⋯ | MAINTAINING.md「引擎內部規格」 | |
| 字級實作 | .inner{font-size:clamp(12px,2.6cqh,38px)}(1080p 全螢幕 1em ≈26px;列印母片框高 19.04cm,1em=0.495cm=⋯ | MAINTAINING.md「引擎內部規格」 | |
| 彈性字級與垂直節奏的求解 | (對寫作的影響寫在 components.md「容量模型」): 彈性字級先求解:自然排版止於畫布 90% 以上的頁維持 12pt; | MAINTAINING.md「引擎內部規格」 | |
| 列印實作 | 列印時 .slide/.frame 寫死 33.87cm × 19.04cm(高度留 0.1mm 捨入,免得多吐空白頁)、取消圓角陰影與 aspect-ratio,.frame⋯ | MAINTAINING.md「引擎內部規格」 | |
| 講者綠光與只加亮不壓暗 | (本條是這組引擎規則的真相源):簡報態裡講者在指的地方一律用綠色——游標的講者指示、十字定位、同詞標示、 釘住、聚焦、證據、聯動都改綠,字維持墨色; | MAINTAINING.md「引擎內部規格」 | |
| 引擎自動做的事 | (寫 deck 不必動;給人讀的說明從這裡取): 固定 chrome:右側圓點導覽(未看/已看/目前三態,提示「頁碼-標籤」)、頂端章節頁籤(≥2 張 divider 自動生成⋯ | MAINTAINING.md「引擎內部規格」 | |
| measure 的三道探測 | 逐頁捲動觸發動畫 → fx-off 凍結 → 三道探測(容器自身、壓出底線、中層裝不下),三道缺一不可的理由與各種失效形態寫在工具檔頭, 改工具前先讀那段。 | MAINTAINING.md「驗收工具內部」 | |
| measure 的 △ 門檻 | (只在 1920 檔印、不影響離開碼;前六列以兩位稽核 223 個內容頁的逐頁判定校正,括號內是對那份判定的 precision/recall; 墨跡=文字行框+圖形+色塊,被⋯ | MAINTAINING.md「驗收工具內部」 | |
| 行單位成本的量法 | (components.md「各元件的行單位成本」的數字從這裡來):1920×1080、垂直節奏: off+彈性字級: off(自然排版、12pt), 量單列網格(或單一 .lv⋯ | MAINTAINING.md「驗收工具內部」 | |
| export 與 check_present | export_pdf.js --check 以同一組三道探測在 print media 跑(scroll:1/寬表不豁免),另查水平撐出、頁數=投影片+僅列印頁 (補充頁、分身頁⋯ | MAINTAINING.md「驗收工具內部」 | |
| 代理環境 | Playwright 內建 Chromium 與版本不符時用 PW_CHROMIUM=/opt/pw-browsers/chromium 指定執行檔,不要 playwright⋯ | MAINTAINING.md「驗收工具內部」 | |
| 唯一真相源 | (改規則時只改這一處,其他檔只准一句+指向) | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 錨點與引用 | 每節、每條以標題文字當查法鍵(ref.py doc writing 孤字); | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 寫法 | 一條規則=做法+必要的條件; | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 詞表擴充 | (cn-terms.json、STYLE_MAP): 擴充前先讀 cn-terms.json 的 _allow_doc:中文沒有詞界,子字串比對會跨詞邊界誤判(「取用文字段落」被⋯ | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 審回灌時優先看的片段 | (修飾引擎元件、各副都可能用到;收不收照回灌門檻,收之前照片段貼): 問答階梯 .lad.qa、方塊標籤 .lad.qlab、列帶三段 .lad.tri:都是 .lad 的變體⋯ | MAINTAINING.md「回灌審查」 | |
| 剝除 | --ship 剝 data-slot、EDIT-MAP、引擎註解與講者備註(黃金樣本約省 14KB,大部分是註解),剝完逐項斷言 OFL、標記四層、署名還在, 少一樣直接中止 b⋯ | MAINTAINING.md「交付與產出標記內部」 | |
| 產出標記的四層 | (署名 chunhua+build 指紋,四個「移除路徑互不相同」的位置): | MAINTAINING.md「交付與產出標記內部」 | |
| 明體子集內嵌 | build 掃出明體語境(.k/em/.stmt/.quote/.serif,以及 custom-css 裡用 --font-serif 的類名)實際用到的字, 從 assets⋯ | MAINTAINING.md「交付與產出標記內部」 | |
| main 的 site/ 與 .gitigno⋯ | main 本身是 Pages 的 production branch,部署到 https://<專案>.pages.dev/,這個正式網址放給人讀的說明文件(§八),不放簡報。 | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| Cloudflare 的 build(scri⋯ | build command 填 bash scripts/cf_build.sh。 | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| 一次性設定 | (使用者在 dash.cloudflare.com 做,只做一次;前提:site/、publish.sh、cf_build.sh 已在 main。按鈕名稱以官方文件當下的寫法為準⋯ | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| 建專案 | 左側 Workers & Pages → Create application → Pages 分頁 → Connect to Git(有些版本叫 Import an exist⋯ | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| 授權 GitHub | 安裝 Cloudflare Workers & Pages GitHub App; | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| 選 repo,按 Begin setup | ,逐欄填: 按 Save and Deploy,第一次部署的是 main,網址打開會看到說明文件的總入口。 | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| 分支控制 | Settings → Builds & deployments(新版叫 Settings → Build)→ Branch control:Production branch 維⋯ | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| Build watch paths | (Settings → Build → Build watch paths):Include paths 填 site/*, docs/*.html, scripts/cf_bu⋯ | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| (選)Access | 預覽網址預設公開。 | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| 專案已經建好、要改設定 | build command 在 Settings → Build → Build configuration(舊版叫 Build & deployments → Build co⋯ | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| 限制 | 單檔 25 MiB; | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| 重組 | bash docs/src/build_docs.sh。 | MAINTAINING.md「改了引擎或文件後怎麼重組 docs」 | |
| 看導覽要不要改 | python3 scripts/check_docs.py。 | MAINTAINING.md「改了引擎或文件後怎麼重組 docs」 | |
| 規格全表的人寫補充 | gen_spec.py 檢查 spec_extra.md 每一條綁的存在性檢查(類名、檔頭鍵、檔、標題、字串),講的東西已不存在就 ✗、不產出: 刪掉或改寫那一條。 | MAINTAINING.md「改了引擎或文件後怎麼重組 docs」 | |
| commit | docs/*.html、docs/src/cited.json 跟著改動一起 commit。 | MAINTAINING.md「改了引擎或文件後怎麼重組 docs」 | |
| 會撞到的上限 | 一副投影片最多 99 頁(頁碼兩位數)。 | MAINTAINING.md「改了引擎或文件後怎麼重組 docs」 | |
| SKILL.md | 用途:做 deck 的 runbook:鐵則、開工、流程、查法(Skill 工具注入) | MAINTAINING.md「檔案地圖」 | |
| CLAUDE.md | 用途:repo 守則:讀者分流、分支/發布/回灌門檻/commit 鐵則(每個 repo session 自動載入) | MAINTAINING.md「檔案地圖」 | |
| MAINTAINING.md | 用途:本檔 | MAINTAINING.md「檔案地圖」 | |
| README.md | 用途:給人看的 GitHub 首頁(AI 不讀) | MAINTAINING.md「檔案地圖」 | |
| references/writing.md | 用途:文字規格:結論列、標題句式、槽位句式、孤字與兩端對齊的寫法、同層對稱、語言禁則、查證、製作語言、台灣用語與語體帶、示範稿 | MAINTAINING.md「檔案地圖」 | |
| references/components.md | 用途:字階、容量模型與行單位成本、元件類名與最小 DOM、圖表頁通案、滿版組合、跨頁節奏、個案定版 | MAINTAINING.md「檔案地圖」 | |
| references/design.md | 用途:版面判斷:三層資訊分工、簡報的精神九件事、HTML 的優勢八件事(hover 放哪)、大會場字級 | MAINTAINING.md「檔案地圖」 | |
| references/present.md | 用途:作者要寫的互動總覽、兩態契約、簡報態寫法、閱讀態互動、自訂覆蓋層、列印印什麼(列印規則的真相源) | MAINTAINING.md「檔案地圖」 | |
| references/brand.md | 用途:品牌外框、官方色與色彩規則、筆畫母題、自畫裝飾禁區、第三方品牌 | MAINTAINING.md「檔案地圖」 | |
| references/delivery.md | 用途:交付版 --ship、產出標記判讀、明體內嵌、分支預覽發布(命名、publish.sh) | MAINTAINING.md「檔案地圖」 | |
| references/revision-pla⋯ | 用途:改版協作、版面調整、長簡報驗收、靜默失效、附錄、結構、需求盤點類、討論評述類、分支協作與回灌、改字對位 | MAINTAINING.md「檔案地圖」 | |
| references/snippets.md | 用途:通用片段庫:版面片段(依功能分十類)、ECharts 圖表範例(共用 ecFit)、互動片段;貼 blank 圍欄、不進引擎(ref.py snippet|chart) | MAINTAINING.md「檔案地圖」 | |
| references/layout-catal⋯ | 用途:排法型錄:依「這一頁要回答的問題」分十組,每條指到元件、片段或圖表範例(ref.py layout) | MAINTAINING.md「檔案地圖」 | |
| references/content-exam⋯ | 用途:黃金樣本=元件包使用手冊(21 頁四章,build 零警告;selftest 的測試資料;ref.py example) | MAINTAINING.md「檔案地圖」 | |
| references/cn-terms.json | 用途:中國用語詞表:block=✗ 硬擋、warn=△ 提醒、allow=跨詞邊界誤判白名單 | MAINTAINING.md「檔案地圖」 | |
| context/quotes.md why.m⋯ | 用途:脈絡歸檔:使用者原話、為什麼與實測、否決與暫不做、沿革、研究依據(ref.py ctx;做 deck 不讀) | MAINTAINING.md「檔案地圖」 | |
| scripts/build_deck.py | 用途:content.md → deck.html 組裝器(--list/--schema/--check/--where/--ship/--no-embed-font);字數帶⋯ | MAINTAINING.md「檔案地圖」 | |
| scripts/lint_content.py | 用途:格式+字數+行數+禁詞+商務用語(STYLE_MAP)+中國用語檢查(含 html: 圍欄正文) | MAINTAINING.md「檔案地圖」 | |
| scripts/verify.sh | 用途:一鍵驗收:lint → build → check_slots → check_mark → measure →(必要時)export --check,印 ✗/△ 摘要與下⋯ | MAINTAINING.md「檔案地圖」 | |
| scripts/measure_deck.js | 用途:螢幕幾何驗收:五檔視窗三道溢出探測、同組不齊、留白與層級 △、中文排版 △、○ 彈性字級、手機兩檔、頁籤與切換逐片量測 | MAINTAINING.md「檔案地圖」 | |
| scripts/export_pdf.js | 用途:無人值守匯出 PDF+列印驗收:三道探測改在 print media 跑、水平撐出、頁數核對、圖表「大螢幕直接按列印」 | MAINTAINING.md「檔案地圖」 | |
| scripts/check_present.js | 用途:簡報態與列印模式驗收:簡報到半途印的 PDF 與閱讀態逐頁點陣比對、列印=開檔畫面、按鍵守門、減少動態、hover 只在 screen | MAINTAINING.md「檔案地圖」 | |
| scripts/shots.js | 用途:人工檢查用:每頁 1920 截圖+拼圖;--walk 進簡報態逐步截圖 | MAINTAINING.md「檔案地圖」 | |
| scripts/check_slots.py | 用途:deck.html ↔ content.md 的 slot 與 EDIT-MAP 行號對帳 | MAINTAINING.md「檔案地圖」 | |
| scripts/check_mark.py | 用途:產出標記驗證:四層署名與 build 指紋 | MAINTAINING.md「檔案地圖」 | |
| scripts/check_refs.py | 用途:文件交叉引用對帳:節號寫法(writing.md §四之二.7)與標題寫法(writing.md「孤字靠改寫」)每一處都要指得到 | MAINTAINING.md「檔案地圖」 | |
| scripts/check_snippets.⋯ | 用途:片段庫守門:標籤成對、類名不撞引擎、data-shape、hover 包 screen、版面片段不寫死色碼與 px | MAINTAINING.md「檔案地圖」 | |
| scripts/check_docs.py | 用途:導覽的引用指紋:docs/src/01_導覽.md 每頁依據的節改過就 △、對不到就 ✗;--accept 更新 docs/src/cited.json | MAINTAINING.md「檔案地圖」 | |
| scripts/check_sync.py | 用途:抄在兩處的規則逐字一致:溢出探測核心與門檻、小螢幕判定、字數與容量常數 ↔ 模板與 components.md | MAINTAINING.md「檔案地圖」 | |
| scripts/ref.py、scripts/⋯ | 用途:按名查詢:規格文件按節取、黃金樣本按頁取、脈絡條目、片段與排法只取一段;_docmap.py 是 ref.py 與 check_refs 共用的節與條解析 | MAINTAINING.md「檔案地圖」 | |
| scripts/_editmap.js | 用途:measure/export 共用:讀 EDIT-MAP,溢出訊息接上 content.md 行號 | MAINTAINING.md「檔案地圖」 | |
| scripts/publish.sh | 用途:分支預覽發布:擋分支 → verify.sh --ship → 寫 site/ → commit(不 push) | MAINTAINING.md「檔案地圖」 | |
| scripts/cf_build.sh | 用途:Cloudflare Pages 的 build command:main 把 docs/ 組成 site/(正式網址放說明文件),deck 分支不動 site/(§七) | MAINTAINING.md「檔案地圖」 | |
| scripts/selftest.sh | 用途:npm test:黃金樣本的完整驗收鏈,加 docs 重組比對(§十) | MAINTAINING.md「檔案地圖」 | |
| scripts/test_cn_terms.py | 用途:詞表誤判守門測試 | MAINTAINING.md「檔案地圖」 | |
| scripts/make_font_subse⋯ | 用途:一次性:產生 assets/serif-black.seed.woff2 種子字集 | MAINTAINING.md「檔案地圖」 | |
| assets/template.html | 用途:引擎+元件包樣式(logo 資產在檔尾 style#brand-assets,勿整檔讀入) | MAINTAINING.md「檔案地圖」 | |
| assets/serif-black.seed⋯ | 用途:明體種子字集(Noto Serif TC Black/Big5 一級常用字)與它的 SIL OFL 1.1 授權全文(須隨產出散布) | MAINTAINING.md「檔案地圖」 | |
| docs/、docs/src/ | 用途:給人讀的說明(獨立 HTML,§八);docs/src/ 是原稿、產生器、build_docs.sh、cited.json、spec_extra.md | MAINTAINING.md「檔案地圖」 | |
| site/、.pages-project、.g⋯ | 用途:Pages 輸出目錄(git 裡 main 只有佔位頁與 _headers)、Pages 專案名、site/** -merge | MAINTAINING.md「檔案地圖」 | |
| .gitignore | 用途:decks/、site/*(放行 main 的兩檔)、*.pdf、node_modules | MAINTAINING.md「檔案地圖」 | |
| requirements.txt | 用途:選用 Python 依賴(fonttools[woff],只影響明體內嵌) | MAINTAINING.md「檔案地圖」 | |
| 右側空置 | 門檻:某一區墨跡只用到左側 <60% 寬;常見成因:短節點直排(時間軸、步驟、收合清單單獨一欄);先做:.tl.h/.flow/.g2 拆兩欄,或 .split 並列主角 | MAINTAINING.md「驗收工具內部」 | |
| 卡內空洞 | 門檻:卡或格(含 deck 自訂的卡形盒)墨跡 <70% 內容高(hero <45%)且空 ≥4em;開放欄的欄沒有框,不算;另報表格列撐高:每列最滿的格 <60%(1.00/0⋯ | MAINTAINING.md「驗收工具內部」 | |
| 下半空置 | 門檻:主要內容止於投影片高 ≤75%;主要內容不含頁底最後一則 ≤2 行註解、膠囊、區段右註(1.00/0.91);常見成因:內容頭重腳輕、一頁只答了半個問題(垂直節奏放大到上限⋯ | MAINTAINING.md「驗收工具內部」 | |
| 圖旁欄空置 | 門檻:並排(.split、.g2–.g4)的一欄是圖表、旁邊的文字或表格欄墨跡止於圖高 ≤70% 且空 ≥4em;圖高 <8em 的小圖不看;常見成因:圖撐滿到區段底、旁邊只有三⋯ | MAINTAINING.md「驗收工具內部」 | |
| 長條留白 | 門檻:全頁同類的全寬底色長條 ≥3 條,字只填到條寬中位 <62%(1.00/0.91);常見成因:實心標籤列每列不到一行當量;先做:拿掉 .solid 回到預設輕量、.lad.⋯ | MAINTAINING.md「驗收工具內部」 | |
| 色塊過重 | 門檻:標籤級深色實心塊(≥4em²)+深色表頭列 ≥4(1.00/0.85);常見成因:實心 .lad.solid、.tb.solid 深藍表頭;先做:回到預設輕量;實心色只留給⋯ | MAINTAINING.md「驗收工具內部」 | |
| 無主角 | 門檻:沒有 hero、指標磚、定調句、關鍵句、唯一 hot(或唯一 warn/ok)、表格焦點欄、佔 canvas ≥10% 的圖表或形狀片段,也沒有 ≥1.45 倍的字(0.9⋯ | MAINTAINING.md「驗收工具內部」 | |
| 頁頁同構 | 門檻:連續 ≥3 張內容頁的主角元件相同,章節頁打斷(0.89/0.74);常見成因:同一骨架連用;先做:每 2–3 頁換一次視覺主角;刻意的平行組在 storyline 標明即可 | MAINTAINING.md「驗收工具內部」 | |
| 中文排版:孤字 | 門檻:多行文字(段落、列點、表格格、卡名、關鍵句、格標、節點/步驟/流程格標題、區塊標題、結論列)末行寬 ≤3.2 字;每頁最多報 3 則;常見成因:句子剛好多出一兩個字;先做⋯ | MAINTAINING.md「驗收工具內部」 | |
| 中文排版:撐開 | 門檻:兩端對齊的塊裡,被對齊撐滿的行在靠左排時右側空超過 1.5 字與行寬 8% 的較小者;每頁最多報 2 則;常見成因:長英文字、數字或行首不能放的標點把行尾擠空;先做:改寫換⋯ | MAINTAINING.md「驗收工具內部」 | |
| 並排不對稱 | 門檻:同一組 .g2/.g3/.g4/.flow/.tl.h 裡的關鍵句、卡名、格標(指標磚除外)、流程格或節點標題行數不一(只比同一列);常見成因:並排標題一長一短;先做:改寫⋯ | MAINTAINING.md「驗收工具內部」 | |
| 字數帶、標題上限、結論列字數、封底金句一行字數 | 真相源:build_deck.py 常數(--schema 印;check_sync 對模板與 components.md);其他地方只准:writing.md 句式+「查 --⋯ | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 檔頭鍵與值、檔名規則 | 真相源:build_deck.py 的 DECK_KEYS(--schema deck 印);其他地方只准:SKILL 提鍵名 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 中國用語、商務加嚴詞 | 真相源:references/cn-terms.json、lint_content.py 的 STYLE_MAP;其他地方只准:writing.md 講原則與詞表擋不到的語感詞 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 字階 | 真相源:components.md「字階」;其他地方只准:— | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 容量、行單位成本、彈性字級與垂直節奏對寫作的影響 | 真相源:components.md「容量模型」;其他地方只准:一句+指向;求解細節在本檔 §二 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 列印印什麼 | 真相源:present.md「列印印什麼」;其他地方只准:SKILL 鐵則 3 一句 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 簡報態寫法 | 真相源:present.md;其他地方只准:按鍵以引擎說明(按 ?)為準 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 講者綠光與只加亮不壓暗 | 真相源:本檔「講者綠光與只加亮不壓暗」;其他地方只准:design.md、present.md 一句 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 孤字、撐開寫法 | 真相源:writing.md「中文排版:孤字與兩端對齊」;其他地方只准:measure 訊息 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 溢出與空洞處理順序 | 真相源:revision-playbook.md「版面調整法則」;其他地方只准:measure fixHint | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| measure 是螢幕幾何唯一可信來源 | 真相源:revision-playbook.md「長簡報驗收」;其他地方只准:不再重述 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 品牌外框、色票、色彩規則、裝飾禁區 | 真相源:brand.md;其他地方只准:SKILL 鐵則 5 一句 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 交付版、產出標記判讀、發布 | 真相源:delivery.md;其他地方只准:SKILL S4 一句 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 回灌門檻 | 真相源:CLAUDE.md「repo 鐵則」;其他地方只准:revision-playbook.md 一句 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 回灌落點與流程 | 真相源:revision-playbook.md「分支協作:隨時迭代、定版回灌 main」;其他地方只准:CLAUDE.md 一句 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 使用者原話 | 真相源:context/quotes.md;其他地方只准:「(原話:context/quotes.md「標題」)」 | MAINTAINING.md「規格文件的寫法與唯一真相源」 | |
| 字型 | 位置:內嵌明體 name table(ID 256/257);為什麼放這裡:在 base64 二進位內。改 HTML 的人(或 AI)不會去編輯 1MB 的 blob,woff2⋯ | MAINTAINING.md「交付與產出標記內部」 | |
| meta | 位置:<meta name="generator">;為什麼放這裡:明文、好查,也最好刪——刻意留成「容易發現」的一層 | MAINTAINING.md「交付與產出標記內部」 | |
| css | 位置:style#deck-mark 的 --deck-mark/--deck-build;為什麼放這裡:與 meta 不同的移除路徑,清了 meta 未必想到這裡 | MAINTAINING.md「交付與產出標記內部」 | |
| 註解 | 位置:檔頭 HTML 註解;為什麼放這裡:同上,第三條路徑 | MAINTAINING.md「交付與產出標記內部」 | |
| 承重 | 位置:@font-face 家族名 SPX Serif TC;為什麼放這裡:整段拿掉=明體語境落回系統字型,2.3–3.5em 大字立刻走樣。標記自帶承重,不是貼紙 | MAINTAINING.md「交付與產出標記內部」 | |
| main | 先清空 site/,再把 docs/ 的 7 份放進去,_headers 沿用 git 裡那份。 | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| 其他分支(deck/…) | 不動 site/,只把檔案清單印進 build 紀錄; | MAINTAINING.md「發布:Cloudflare Pages 的設定與限制」 | |
| 00_總入口.html | 從哪裡來:六份的用途、頁數、閱讀路線(頁數與大小從組好的檔數出來);產生器:docs/src/gen_index.py | MAINTAINING.md「給人讀的文件」 | |
| 01_導覽.html | 從哪裡來:人寫:docs/src/01_導覽.md(每頁 src: 寫依據的「檔+標題」);產生器:直接 build | MAINTAINING.md「給人讀的文件」 | |
| 02_元件包使用手冊.html | 從哪裡來:黃金樣本 references/content-example.md;產生器:直接 build | MAINTAINING.md「給人讀的文件」 | |
| 03_片段範例集.html | 從哪裡來:snippets.md §一(依十類分章)、§三 每段一頁(html 圍欄原文照放);產生器:docs/src/gen_gallery.py snippets | MAINTAINING.md「給人讀的文件」 | |
| 04_圖表範例集.html | 從哪裡來:snippets.md §二 每段一頁(option JSON 原文照放);產生器:docs/src/gen_gallery.py charts | MAINTAINING.md「給人讀的文件」 | |
| 05_排法型錄.html | 從哪裡來:layout-catalog.md(ref.py 的 parse_layouts);產生器:docs/src/gen_catalog.py | MAINTAINING.md「給人讀的文件」 | |
| 06_規格全表.html | 從哪裡來:程式與規格文件自動抽+docs/src/spec_extra.md 人寫補充(每條綁存在性檢查);產生器:docs/src/gen_spec.py | MAINTAINING.md「給人讀的文件」 | |
| cn_terms | 守什麼:詞表誤判樣本 | MAINTAINING.md「selftest 步驟」 | |
| hover_screen、pointer_ru⋯ | 守什麼:引擎每條 :hover 都包在 @media screen;十字定位排除 .tb.heat/.tb.sym、簡報態列 hover 是講者綠 | MAINTAINING.md「selftest 步驟」 | |
| check_refs、check_snippe⋯ | 守什麼:交叉引用都指得到;片段庫守門;按名查詢逐字取回與查法守門;抄在兩處的規則與常數一致 | MAINTAINING.md「selftest 步驟」 | |
| docs、check_docs | 守什麼:docs/ 在暫存目錄重組、與 commit 的逐位元比對(§九);導覽依據的節改過 △、對不到 ✗ | MAINTAINING.md「selftest 步驟」 | |
| ref_doc、schema、filename⋯ | 守什麼:按節取的查法;--schema 與 DECK_KEYS、字數常數一致;檔名規則;示範稿模式 | MAINTAINING.md「selftest 步驟」 | |
| lint_content、lint_guard⋯ | 守什麼:黃金樣本 lint 0 ✗、lint 守門樣本、build 0 警告、--where、對帳、產出標記、跨頁膠囊對帳 | MAINTAINING.md「selftest 步驟」 | |
| build_ship、strip_ship、m⋯ | 守什麼:交付版剝得乾淨又不剝過頭 | MAINTAINING.md「selftest 步驟」 | |
| publish_guard、publish | 守什麼:發布擋分支;暫存 repo 上完整發布一次 | MAINTAINING.md「selftest 步驟」 | |
| cf_build | 守什麼:Cloudflare 的 build:模擬 main,site/ 剛好是 7 份說明+_headers、連結都指得到檔;模擬 deck 分支,site/ 不動 | MAINTAINING.md「selftest 步驟」 | |
| embed_font、measure_deck⋯ | 守什麼:需 playwright:明體內嵌、兩版五檔量測、verify 全鏈、中文排版 △、截圖與走步驟、示範稿的 verify | MAINTAINING.md「selftest 步驟」 | |
| export_pdf、print_expand⋯ | 守什麼:需 playwright:列印與頁數、列印展開: on、其他檔頭鍵變體、圖表直接列印、簡報態比對、簡報態: off | MAINTAINING.md「selftest 步驟」 | |
| 每條規則只有一處真相源 | MAINTAINING.md §四 | 改規則只改真相源那一處,其他檔只寫一句結論並指過去 | spec_extra.md〔doc:MAINTAINING.md「規格文件的寫法與唯一真相源」〕 |
字數帶與容量常數11 條
build_deck.py「字數帶與容量」那一區的常數(lint 與 --schema 讀同一份)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| CLOSING_CPL | CLOSING_CPL = 16 | 封底金句一行字數(=模板 .closing .quote 的 max-width em 數) | scripts/build_deck.py「字數帶與容量」 |
| TITLE_MAX | TITLE_MAX = 26 | 標題上限 26 字(寫作紀律):28pt 預設一行約 30 字;「內文字級: 14」的 32pt 一行約 26 字 | scripts/build_deck.py「字數帶與容量」 |
| TITLE_TIGHT | TITLE_TIGHT = 23 | 23–26 字=擠在邊緣,提醒(只在「內文字級: 14」時;28pt 預設還有 4 字餘裕) | scripts/build_deck.py「字數帶與容量」 |
| TITLE_STYLE_CUT | TITLE_STYLE_CUT = 12 | <12 字歸「框架名」、≥12 字歸「判斷句」(整副須一致) | scripts/build_deck.py「字數帶與容量」 |
| TITLE_JUDGE | TITLE_JUDGE = (12, 22) | 判斷句建議字數 | scripts/build_deck.py「字數帶與容量」 |
| KICKER_MAX | KICKER_MAX = 10 | (見同區註解) | scripts/build_deck.py「字數帶與容量」 |
| SRC_MAX | SRC_MAX = 40 | (見同區註解) | scripts/build_deck.py「字數帶與容量」 |
| BLUF | BLUF = (88, 175, 190, 64) | 結論列:建議下限、建議上限、硬上限、每行字數(3 行;「結論行數: N」等比縮放) | scripts/build_deck.py「字數帶與容量」 |
| CANVAS_UNITS | CANVAS_UNITS = (17, 19) | (見同區註解) | scripts/build_deck.py「字數帶與容量」 |
| CANVAS_CPL | CANVAS_CPL = 71 | (見同區註解) | scripts/build_deck.py「字數帶與容量」 |
| BLUF_UNIT_COST | BLUF_UNIT_COST = 1.2 | (見同區註解) | scripts/build_deck.py「字數帶與容量」 |
檢查訊息70 條
lint_content.py 與 build_deck.py 會報的 ✗/△(訊息都自帶改法)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| # deck 密度上限已停用 | △ lint_content.py | # deck 密度上限已停用(v2):此鍵不再有作用,可自檔頭移除; | scripts/lint_content.py |
| # deck 結論行數覆寫 | △ lint_content.py | # deck 結論行數覆寫 …:結論列上限已放寬(臨時覆寫需在交付說明中註明) | scripts/lint_content.py |
| 中國用語 | ✗ lint_content.py | 中國用語(對外零容忍)「…」 | scripts/lint_content.py |
| 疑似中國用語「…」 | △ lint_content.py | 疑似中國用語「…」→建議「 | scripts/lint_content.py |
| 禁詞裸用「…」 | ✗ lint_content.py | 禁詞裸用「…」——同一句沒有任何數字;帶受詞+數字或具體機制 | scripts/lint_content.py |
| 空話詞「…」 | △ lint_content.py | 空話詞「…」→…(有數字撐著就忽略):… | scripts/lint_content.py |
| 全形長破折號「 | △ lint_content.py | 全形長破折號「——」=AI 腔標記→改用「:」「;」「,」或拆成兩句 | scripts/lint_content.py |
| 商務用語確認「…」 | △ lint_content.py | 商務用語確認「…」→建議「…」 | scripts/lint_content.py |
| 標題 … 字 | ✗ lint_content.py | 標題 … 字(超過一行 … 字,會換行擠掉內容): | scripts/lint_content.py |
| 標題 … 字=貼著一行上限 | △ lint_content.py | 標題 … 字=貼著一行上限(內文字級: 14 的標題一行約 … 字), | scripts/lint_content.py |
| 眉標 … 字 | ✗ lint_content.py | 眉標 … 字(限 ≤…):格式「NN · 章名」, | scripts/lint_content.py |
| 來源註 … 字 | ✗ lint_content.py | 來源註 … 字(限 ≤…,一行收掉):只留出處名與年月, | scripts/lint_content.py |
| 結論列 … 字 | ✗ lint_content.py | 結論列 … 字(硬上限 …=… 行滿,每行約 … 字): | scripts/lint_content.py |
| 結論列疑似複述標題 | △ lint_content.py | 結論列疑似複述標題(重合 …)——結論列補標題沒講的: | scripts/lint_content.py |
| 清單行數不一 | △ lint_content.py | 清單行數不一(…)——同清單全 1 行或全 2 行 | scripts/lint_content.py |
| 逐步揭示/逐列聚焦用在 … 頁,超過全副 … 頁的三成 | △ lint_content.py | 逐步揭示/逐列聚焦用在 … 頁,超過全副 … 頁的三成 | scripts/lint_content.py |
| 整副標題句式混雜 | △ lint_content.py | 整副標題句式混雜:判斷句 … 頁、框架名 … 頁——同一副內擇一 | scripts/lint_content.py |
| 圍欄用 text-align:center | △ lint_content.py | 圍欄用 text-align:center——內容頁置中對不上左對齊容量表、 | scripts/lint_content.py |
| <svg> 內含 <text> | △ lint_content.py | <svg> 內含 <text>——SVG 文字不吃字級下限、measure 溢出 | scripts/lint_content.py |
| .note 內文以「註 | △ lint_content.py | .note 內文以「註:」開頭——虛線樣式已標示是備註, | scripts/lint_content.py |
| 結論列/標題/眉標 | ✗ lint_content.py | 結論列/標題/眉標(.…)掛了 data-…—— | scripts/lint_content.py |
| data-…="…" 不是正整數步驟號 | △ lint_content.py | data-…="…" 不是正整數步驟號(引擎會當成一直顯示) | scripts/lint_content.py |
| # deck 寫了「示範: on」,整副卻沒有任何示範字樣 | △ build_deck.py | # deck 寫了「示範: on」,整副卻沒有任何示範字樣:封面主標帶「(示範案例)」, | scripts/build_deck.py |
| 示範/占位字樣殘留 … 處 | △ build_deck.py | 示範/占位字樣殘留 … 處:…——正式稿要清零(改寫成真的內容); | scripts/build_deck.py |
| 頁碼跳號,投影片上顯示的頁次會與 id 不一致 | △ build_deck.py | 頁碼跳號,投影片上顯示的頁次會與 id 不一致: | scripts/build_deck.py |
| title | △ build_deck.py | title——標題是三秒層(讀者翻到這頁三秒內看到的判斷),內容頁建議必填: | scripts/build_deck.py |
| bluf | △ build_deck.py | bluf——內容頁建議必填:補一行「bluf: 結論+所以呢+下一步」 | scripts/build_deck.py |
| 議程第 … 項沒掛上跳章 | △ build_deck.py | 議程第 … 項沒掛上跳章:其餘項目對上了章名,這幾項對不上 | scripts/build_deck.py |
| 的跳轉膠囊指向 #…,但這副沒有這一頁 | △ build_deck.py | 的跳轉膠囊指向 #…,但這副沒有這一頁(搬頁、刪頁或重編頁碼後沒改膠囊): | scripts/build_deck.py |
| 是附錄頁、主文有膠囊連過來,但它沒有回主文的膠囊,讀者跳進來就回不去 | △ build_deck.py | 是附錄頁、主文有膠囊連過來,但它沒有回主文的膠囊,讀者跳進來就回不去: | scripts/build_deck.py |
| 未裝 fonttools,跳過明體子集內嵌 | △ build_deck.py | 未裝 fonttools,跳過明體子集內嵌(明體將落回系統字型堆疊); | scripts/build_deck.py |
| 缺種子字型 …,跳過明體子集內嵌 | △ build_deck.py | 缺種子字型 …,跳過明體子集內嵌; | scripts/build_deck.py |
| 明體子集化失敗 | △ build_deck.py | 明體子集化失敗(…: …),跳過內嵌 | scripts/build_deck.py |
| 內嵌明體 …KB 超過 …KB | △ build_deck.py | 內嵌明體 …KB 超過 …KB—— | scripts/build_deck.py |
| 引擎 JS 出現疑似 regex literal,交付模式跳過該段 JS 註解剝除 | △ build_deck.py | 引擎 JS 出現疑似 regex literal,交付模式跳過該段 JS 註解剝除 | scripts/build_deck.py |
| # deck 缺「主題:」或「版號:」,檔名落回 deck.html | △ build_deck.py | # deck 缺「主題:」或「版號:」,檔名落回 deck.html:補「主題: 中文標題」「版號: V01」 | scripts/build_deck.py |
| ``` 圍欄沒有收尾 | ✗ build_deck.py | ``` 圍欄沒有收尾 | scripts/build_deck.py |
| 圍欄出現在任何段落標題之前 | ✗ build_deck.py | 圍欄出現在任何段落標題之前 | scripts/build_deck.py |
| 內容出現在任何區塊標題之前 | ✗ build_deck.py | 內容出現在任何區塊標題之前:… | scripts/build_deck.py |
| 未知版型「…」 | ✗ build_deck.py | 未知版型「…」; | scripts/build_deck.py |
| 頁碼未遞增 | ✗ build_deck.py | 頁碼未遞增(前一頁 …) | scripts/build_deck.py |
| # deck 區段需「key: value」 | ✗ build_deck.py | # deck 區段需「key: value」:… | scripts/build_deck.py |
| 「…」不可覆寫 | ✗ build_deck.py | 「…」不可覆寫——品牌外框與官方色是硬規格,只能改 | scripts/build_deck.py |
| # deck 未知鍵「…」 | ✗ build_deck.py | # deck 未知鍵「…」;可用:… | scripts/build_deck.py |
| 只能是 | ✗ build_deck.py | 只能是 …:… | scripts/build_deck.py |
| 密度上限需寫 +N/-N | ✗ build_deck.py | 密度上限需寫 +N/-N(N 為 0–9):… | scripts/build_deck.py |
| 結論行數需寫 1–5 的整數 | ✗ build_deck.py | 結論行數需寫 1–5 的整數(1 限定調頁等短結論):… | scripts/build_deck.py |
| 日期需寫 YYYYMMDD | ✗ build_deck.py | 日期需寫 YYYYMMDD(如 20260923):… | scripts/build_deck.py |
| 版號寫 V01 | ✗ build_deck.py | 版號寫 V01(v1、V1、1、v01 也接受,一律正規化成 V01;改版遞增 V02、V03):… | scripts/build_deck.py |
| # … 區段缺 ``` 圍欄 | ✗ build_deck.py | # … 區段缺 ``` 圍欄 | scripts/build_deck.py |
| 未知頂層區段「# …」 | ✗ build_deck.py | 未知頂層區段「# …」;可用 # deck、# custom-css、# custom-js | scripts/build_deck.py |
| 頁首應為「## pNN 版型 標籤」 | ✗ build_deck.py | 頁首應為「## pNN 版型 標籤」 | scripts/build_deck.py |
| 頁首缺版型 | ✗ build_deck.py | 頁首缺版型(## … <版型> <標籤>); | scripts/build_deck.py |
| 頁首缺標籤 | ✗ build_deck.py | 頁首缺標籤(圓點導覽會顯示它): | scripts/build_deck.py |
| 標籤不可含 | | ✗ build_deck.py | 標籤不可含 |(EDIT-MAP 用它分欄):… | scripts/build_deck.py |
| 的 ``` 圍欄上一行需是圍欄型槽位 | ✗ build_deck.py | 的 ``` 圍欄上一行需是圍欄型槽位 | scripts/build_deck.py |
| 需「槽位: 值」,續行請縮排 | ✗ build_deck.py | 需「槽位: 值」,續行請縮排:… | scripts/build_deck.py |
| 不可重複 | ✗ build_deck.py | 不可重複(本版型只有一個 …) | scripts/build_deck.py |
| 是欄位型槽位,「…:」後面不寫值 | ✗ build_deck.py | 是欄位型槽位,「…:」後面不寫值—— | scripts/build_deck.py |
| 是圍欄型槽位,「…:」後面不寫值 | ✗ build_deck.py | 是圍欄型槽位,「…:」後面不寫值—— | scripts/build_deck.py |
| 縮排行沒有可接續的槽位 | ✗ build_deck.py | 縮排行沒有可接續的槽位:… | scripts/build_deck.py |
| 的內容要寫成 ``` 圍欄,不是縮排行 | ✗ build_deck.py | 的內容要寫成 ``` 圍欄,不是縮排行 | scripts/build_deck.py |
| 需「欄位: 值」 | ✗ build_deck.py | 需「欄位: 值」:… | scripts/build_deck.py |
| 未知欄位「…」 | ✗ build_deck.py | 未知欄位「…」;可用: | scripts/build_deck.py |
| 欄位「…」不可重複 | ✗ build_deck.py | 欄位「…」不可重複 | scripts/build_deck.py |
| 需要 ``` 圍欄 | ✗ build_deck.py | 需要 ``` 圍欄 | scripts/build_deck.py |
| 缺必填欄位「…: 」= | ✗ build_deck.py | 缺必填欄位「…: 」=… | scripts/build_deck.py |
| 欄位「…」需 | ✗ build_deck.py | 欄位「…」需 | scripts/build_deck.py |
| 沒有內容 | ✗ build_deck.py | 沒有內容 | scripts/build_deck.py |
| 序號要從 1 起連號 | ✗ build_deck.py | 序號要從 1 起連號(目前 …) | scripts/build_deck.py |
量測提示11 條
measure_deck.js 在 1920 檔印的 △ 與門檻(MAINTAINING.md「measure 的 △ 門檻」)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 右側空置 | 某一區墨跡只用到左側 <60% 寬 | MAINTAINING.md「measure 的 △ 門檻」 | |
| 卡內空洞 | 卡或格(含 deck 自訂的卡形盒)墨跡 <70% 內容高(hero <45%)且空 ≥4em;開放欄的欄沒有框,不算;另報表格列撐高:每列最滿的格 <60%(1.00/0.90) | MAINTAINING.md「measure 的 △ 門檻」 | |
| 下半空置 | 主要內容止於投影片高 ≤75%;主要內容不含頁底最後一則 ≤2 行註解、膠囊、區段右註(1.00/0.91) | MAINTAINING.md「measure 的 △ 門檻」 | |
| 圖旁欄空置 | 並排(.split、.g2–.g4)的一欄是圖表、旁邊的文字或表格欄墨跡止於圖高 ≤70% 且空 ≥4em;圖高 <8em 的小圖不看 | MAINTAINING.md「measure 的 △ 門檻」 | |
| 長條留白 | 全頁同類的全寬底色長條 ≥3 條,字只填到條寬中位 <62%(1.00/0.91) | MAINTAINING.md「measure 的 △ 門檻」 | |
| 色塊過重 | 標籤級深色實心塊(≥4em²)+深色表頭列 ≥4(1.00/0.85) | MAINTAINING.md「measure 的 △ 門檻」 | |
| 無主角 | 沒有 hero、指標磚、定調句、關鍵句、唯一 hot(或唯一 warn/ok)、表格焦點欄、佔 canvas ≥10% 的圖表或形狀片段,也沒有 ≥1.45 倍的字(0.93/0.82;1.45 倍是底線,設計目標照 design.md「主角要大一個量級,而且只有一個」) | MAINTAINING.md「measure 的 △ 門檻」 | |
| 頁頁同構 | 連續 ≥3 張內容頁的主角元件相同,章節頁打斷(0.89/0.74) | MAINTAINING.md「measure 的 △ 門檻」 | |
| 中文排版:孤字 | 多行文字(段落、列點、表格格、卡名、關鍵句、格標、節點/步驟/流程格標題、區塊標題、結論列)末行寬 ≤3.2 字;每頁最多報 3 則 | MAINTAINING.md「measure 的 △ 門檻」 | |
| 中文排版:撐開 | 兩端對齊的塊裡,被對齊撐滿的行在靠左排時右側空超過 1.5 字與行寬 8% 的較小者;每頁最多報 2 則 | MAINTAINING.md「measure 的 △ 門檻」 | |
| 並排不對稱 | 同一組 .g2/.g3/.g4/.flow/.tl.h 裡的關鍵句、卡名、格標(指標磚除外)、流程格或節點標題行數不一(只比同一列) | MAINTAINING.md「measure 的 △ 門檻」 |
指令與參數31 條
scripts/ 每支工具的參數(各檔檔頭的用法說明與 argparse)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| build_deck.py --out | build_deck.py --out | 輸出 HTML(預設依 # deck 生 YYYYMMDD_主題_V01.html) | scripts/build_deck.py |
| build_deck.py --check | build_deck.py --check | 只驗證不輸出 | scripts/build_deck.py |
| build_deck.py --list | build_deck.py --list | 列出全部版型 | scripts/build_deck.py |
| build_deck.py --schema | build_deck.py --schema | 查單一版型的槽位、字數帶與容量(cover/agenda/divider/blank/closing);deck=檔頭鍵的值與效果 | scripts/build_deck.py |
| build_deck.py --no-embed-font | build_deck.py --no-embed-font | 不內嵌明體子集(明體改吃系統字型堆疊,檔案小約 30–80KB) | scripts/build_deck.py |
| build_deck.py --ship | build_deck.py --ship | 交付模式:剝 EDIT-MAP/data-slot/引擎註解(另立 _交付 檔名); | scripts/build_deck.py |
| build_deck.py --where | build_deck.py --where | 反查槽位在 content.md 的行號(pNN/pNN.槽位/槽位名) | scripts/build_deck.py |
| check_mark.py --content | check_mark.py --content | content.md 路徑(加驗指紋是否出自這份原稿) | scripts/check_mark.py |
| check_mark.py --quiet | check_mark.py --quiet | 只印結論 | scripts/check_mark.py |
| check_mark.py --no-embed-font | check_mark.py --no-embed-font | 的產出本來就只有三層,判它失敗會讓 selftest 在沒裝 | scripts/check_mark.py |
| export_pdf.js --check | export_pdf.js --check | 三項都會算進 exit code—— | scripts/export_pdf.js |
| lint_content.py --units | lint_content.py --units | 印出每頁行單位(估計值,供容量規劃參考) | scripts/lint_content.py |
| make_font_subset.py --out | make_font_subset.py --out | scripts/make_font_subset.py | |
| make_font_subset.py --layout-features='' | make_font_subset.py --layout-features='' | 標題大字不需 kerning/liga,清空可再省體積 | scripts/make_font_subset.py |
| make_font_subset.py --no-hinting | make_font_subset.py --no-hinting | CJK 大字級不吃 hinting | scripts/make_font_subset.py |
| make_font_subset.py --desubroutinize | make_font_subset.py --desubroutinize | CFF 小子集時常產生更小輸出 | scripts/make_font_subset.py |
| measure_deck.js --quick | measure_deck.js --quick | 改字迭代用,只量 1280x720(參考幾何=列印母片尺寸,垂直節奏與彈性字級在這裡求解)+1920x1080(△ 提示只在這一檔印), | scripts/measure_deck.js |
| measure_deck.js --dump | measure_deck.js --dump | 把每一檔視窗、每一頁的原始量測數值寫成 JSON(校正門檻用;不影響離開碼) | scripts/measure_deck.js |
| publish.sh -o | publish.sh -o | 同 verify.sh/build_deck.py 的 -o(維運版檔名,沒給就依 # deck 自動命名 YYYYMMDD_主題_V01.html);交付版⋯ | scripts/publish.sh |
| publish.sh --dry-run | publish.sh --dry-run | 驗收+產 site/,不 commit(site/ 留在工作樹:不要就 git checkout -- site,或下次發布蓋掉) | scripts/publish.sh |
| ref.py --pitfalls | ref.py --pitfalls | 圖表範例附的「實測撞到的坑」印全文(預設只列每條的標題) | scripts/ref.py |
| shots.js -o | shots.js -o | 輸出目錄(預設 deck 旁邊的 _shots_<檔名>/) | scripts/shots.js |
| shots.js --pages | shots.js --pages | 只截這幾頁(逗號分隔 pid) | scripts/shots.js |
| shots.js --walk | shots.js --walk | 走一次逐步頁:進簡報態、從上一頁按 ↓ 抵達每一張有 data-step/data-focus/data-walk 的頁,每按一次截一張 | scripts/shots.js |
| shots.js --md | shots.js --md | 另存一份匯出 Markdown(引擎右下輸出鈕「匯出 Markdown」同一支函式)到輸出目錄的 <檔名>.md, | scripts/shots.js |
| shots.js --viewport | shots.js --viewport | 截圖視窗(預設 1920x1080) | scripts/shots.js |
| shots.js --no-sheet | shots.js --no-sheet | 不拼圖 | scripts/shots.js |
| verify.sh -o | verify.sh -o | 維運版檔名(同 build_deck.py -o;沒給就依 # deck 自動命名 YYYYMMDD_主題_V01.html) | scripts/verify.sh |
| verify.sh --quick | verify.sh --quick | 改字迭代用:measure 只量 1280×720+1920×1080(約省六成時間);交付前一定要不加 --quick 再跑一次 | scripts/verify.sh |
| verify.sh --ship | verify.sh --ship | 另產交付版(_交付.html)並驗產出標記;一律加跑 export --check | scripts/verify.sh |
| verify.sh --pdf | verify.sh --pdf | 加跑 export --check,PDF 留在 deck 旁邊(否則 PDF 只是驗收用的暫存檔) | scripts/verify.sh |
selftest 守門43 條
npm test 跑的每一步(scripts/selftest.sh;步驟名可給 SELFTEST_ONLY 單跑)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| cn_terms | SELFTEST_ONLY=cn_terms | 詞表誤判樣本 | scripts/selftest.sh |
| hover_screen | SELFTEST_ONLY=hover_screen | hover 樣式一律包 @media screen(沒包的話,滑鼠停著時按列印,:hover 樣式會印進 PDF——2026-09-27 實測)。 靜態掃 t⋯ | scripts/selftest.sh |
| pointer_rules | SELFTEST_ONLY=pointer_rules | 大表十字定位不碰熱力表與符號矩陣(格的底色就是資料)、簡報態的講者指示是綠 | scripts/selftest.sh |
| check_refs | SELFTEST_ONLY=check_refs | 文件交叉引用:規格互指上百處,改版插條、刪節後引用會靜默指錯;每一處都要指得到真的節與條 | scripts/selftest.sh |
| check_snippets | SELFTEST_ONLY=check_snippets | 交叉引用都指得到;片段庫守門;按名查詢逐字取回與查法守門;抄在兩處的規則與常數一致 | scripts/selftest.sh |
| ref | SELFTEST_ONLY=ref | 按名查詢(ref.py):每一段片段、圖表範例、排法都取得到,取出的內容與原檔逐字相同 | scripts/selftest.sh |
| check_sync | SELFTEST_ONLY=check_sync | 抄在兩處的規則逐字一致:measure/export 的溢出探測核心與門檻、template 的小螢幕判定 | scripts/selftest.sh |
| ref_doc | SELFTEST_ONLY=ref_doc | 按節取(ref.py doc/example/ctx):以標題文字查得到唯一一段、節號也能用、list 不帶參數不吐整份排法名單、 context/ 還沒建時⋯ | scripts/selftest.sh |
| ref_multi | SELFTEST_ONLY=ref_multi | 一次查完(2026-09-28 冷啟動 #2:圖表共通規則分三次查、讀了三遍,約 4,750 token 白讀):片段與圖表一次查多個名稱時 共用規則只附一次⋯ | scripts/selftest.sh |
| schema | SELFTEST_ONLY=schema | --schema deck 與 DECK_KEYS 一致:每個鍵都印、限定值都寫在可用值裡、不可覆寫鍵都列;每個鍵寫一個合法值 build 解析 0 錯; -⋯ | scripts/selftest.sh |
| filename | SELFTEST_ONLY=filename | 檔名規則(2026-09-28 使用者裁示):YYYYMMDD_中文標題_V01.html,不列單位、V 大寫兩位數;交付版 _V01_交付; 版號 v1/V⋯ | scripts/selftest.sh |
| demo_mode | SELFTEST_ONLY=demo_mode | 示範稿模式(# deck「示範: on」):示範字樣在正式稿是 △、在示範稿改印 ○ 不計入警告(build 與 check_slots 同一套); 示範稿整⋯ | scripts/selftest.sh |
| agenda_jump | SELFTEST_ONLY=agenda_jump | 議程跳章(2026-09-28 冷啟動 #2:使用者要議程、deck 只有 2 章,照放 4 項,lint 與 build 都沒有反應、點了不會跳): 整組對⋯ | scripts/selftest.sh |
| lint_content | SELFTEST_ONLY=lint_content | 黃金樣本 lint 0 ✗、lint 守門樣本、build 0 警告、--where、對帳、產出標記、跨頁膠囊對帳 | scripts/selftest.sh |
| lint_guard | SELFTEST_ONLY=lint_guard | lint 守門樣本:data-step-style 不誤報、三秒層掛步驟 ✗(blk-head 不算)、主角掛步驟 △、 圍欄語言檢查報命中的實際行號、禁詞裸⋯ | scripts/selftest.sh |
| build_deck | SELFTEST_ONLY=build_deck | build 必須 0 警告(黃金樣本宣稱零警告;build 有警告照樣 exit 0,這裡才擋得住) | scripts/selftest.sh |
| where | SELFTEST_ONLY=where | --where 反查:文件教的範例要真的查得到 | scripts/selftest.sh |
| check_slots | SELFTEST_ONLY=check_slots | 黃金樣本 lint 0 ✗、lint 守門樣本、build 0 警告、--where、對帳、產出標記、跨頁膠囊對帳 | scripts/selftest.sh |
| check_mark | SELFTEST_ONLY=check_mark | 產出標記:四層齊備+指紋一致+指紋確實算自黃金樣本原稿。 沒裝 fonttools 時字型層自動視為不適用(滿分降為三層),不會假警報。 | scripts/selftest.sh |
| link_check | SELFTEST_ONLY=link_check | 跨頁膠囊對帳(build_deck.check_links):把黃金樣本的一顆膠囊改指向不存在的頁,build 必須警告。 黃金樣本本身應 0 則;這步防的是⋯ | scripts/selftest.sh |
| build_ship | SELFTEST_ONLY=build_ship | 交付版剝得乾淨又不剝過頭 | scripts/selftest.sh |
| strip_ship | SELFTEST_ONLY=strip_ship | 交付版剝得乾淨又不剝過頭 | scripts/selftest.sh |
| mark_ship | SELFTEST_ONLY=mark_ship | 交付版剝得乾淨又不剝過頭 | scripts/selftest.sh |
| slots_ship | SELFTEST_ONLY=slots_ship | 交付版拿去對帳應該要被擋下並講清楚原因(而不是噴一串假的不一致) | scripts/selftest.sh |
| publish_guard | SELFTEST_ONLY=publish_guard | 發布守門(publish.sh):在暫存 git repo 上跑,不碰本 repo 的分支與 site/。 main 與不符命名規則的分支一律拒絕(在跑驗收之⋯ | scripts/selftest.sh |
| cf_build | SELFTEST_ONLY=cf_build | Cloudflare 的 build(scripts/cf_build.sh):在暫存複本跑,不碰本 repo 的 site/。模擬 deck 分支與沒設 C⋯ | scripts/selftest.sh |
| docs | SELFTEST_ONLY=docs | 給人讀的說明(docs/):在暫存目錄全部重組,與 commit 進去的 HTML 逐位元比對。docs 由引擎、片段庫、型錄、規格文件、黃金樣本 與 doc⋯ | scripts/selftest.sh |
| check_docs | SELFTEST_ONLY=check_docs | docs/ 在暫存目錄重組、與 commit 的逐位元比對(§九);導覽依據的節改過 △、對不到 ✗ | scripts/selftest.sh |
| embed_font | SELFTEST_ONLY=embed_font | 需 playwright:明體內嵌、兩版五檔量測、verify 全鏈、中文排版 △、截圖與走步驟、示範稿的 verify | scripts/selftest.sh |
| measure_deck | SELFTEST_ONLY=measure_deck | 需 playwright:明體內嵌、兩版五檔量測、verify 全鏈、中文排版 △、截圖與走步驟、示範稿的 verify | scripts/selftest.sh |
| measure_ship | SELFTEST_ONLY=measure_ship | 需 playwright:明體內嵌、兩版五檔量測、verify 全鏈、中文排版 △、截圖與走步驟、示範稿的 verify | scripts/selftest.sh |
| verify | SELFTEST_ONLY=verify | 一鍵驗收(verify.sh --quick):串得起來、摘要數得對(黃金樣本 ✗ 0)、溢出訊息接得上 content.md 行號 | scripts/selftest.sh |
| publish | SELFTEST_ONLY=publish | 發布(publish.sh --dry-run):在 publish_guard 建的暫存 repo 開 deck 分支跑。site/index.html 是⋯ | scripts/selftest.sh |
| measure_typo | SELFTEST_ONLY=measure_typo | 寫作提示的定位(2026-09-28 冷啟動卡點):數字與單位拆行(「67 萬|筆」)要報出來、撐開要指出是哪一行、封底金句被平分斷在詞中間要提醒、 溢出訊息⋯ | scripts/selftest.sh |
| measure_side | SELFTEST_ONLY=measure_side | 圖旁欄空置(2026-09-28 冷啟動兩次都是看截圖才發現):左圖右列點,列點只有兩條的那一頁要報、寫滿七條的不報。 圖不必真的畫出來(不載 ECharts⋯ | scripts/selftest.sh |
| shots | SELFTEST_ONLY=shots | 截圖與走查(shots.js):每頁一張、每 4 頁一張拼圖;--walk 從上一頁按 ↓ 抵達逐步頁,每一步畫面都要變 | scripts/selftest.sh |
| verify_demo | SELFTEST_ONLY=verify_demo | 示範稿模式接到 verify.sh:示範稿的示範字樣印 ○、下一步不叫人清;正式稿照樣要清零 | scripts/selftest.sh |
| export_pdf | SELFTEST_ONLY=export_pdf | 預設列印=開檔畫面:頁數=投影片數(沒有補充頁) | scripts/selftest.sh |
| print_expand | SELFTEST_ONLY=print_expand | 「列印展開: on」(個案用的全展開):頁籤全攤開、收合全開(同名互斥組也要全開)、白話轉括號、 就地展開印到補充頁 → 頁數=21+補充 1;五檔量測 0⋯ | scripts/selftest.sh |
| deck_keys | SELFTEST_ONLY=deck_keys | 其他標頭鍵的變體:build 0 錯、body class 掛上、1920 與手機兩檔量測 0 溢出。 「內文字級: 14」只驗 build 與 class⋯ | scripts/selftest.sh |
| chart_print | SELFTEST_ONLY=chart_print | 格線裡的圖表列印(2026-09-27):黃金樣本只有一張滿版圖,抓不到「.g2/2×2/.split 裡的圖在大螢幕直接按列印被撐破、 或停在螢幕尺寸」這一⋯ | scripts/selftest.sh |
| present | SELFTEST_ONLY=present | 簡報態(兩態契約):簡報到半途按列印仍是閱讀態的開檔畫面(PDF 逐頁比對)、減少動態下全部過場 0 秒、hover 規則只在螢幕、 抵達規則/概覽/跳頁/黑⋯ | scripts/selftest.sh |
| present_off | SELFTEST_ONLY=present_off | 需 playwright:列印與頁數、列印展開: on、其他檔頭鍵變體、圖表直接列印、簡報態比對、簡報態: off | scripts/selftest.sh |
檔案地圖42 條
repo 裡每一個檔的用途(MAINTAINING.md「檔案地圖」)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| SKILL.md | SKILL.md | 做 deck 的 runbook:鐵則、開工、流程、查法(Skill 工具注入) | MAINTAINING.md「檔案地圖」 |
| CLAUDE.md | CLAUDE.md | repo 守則:讀者分流、分支/發布/回灌門檻/commit 鐵則(每個 repo session 自動載入) | MAINTAINING.md「檔案地圖」 |
| MAINTAINING.md | MAINTAINING.md | 本檔 | MAINTAINING.md「檔案地圖」 |
| README.md | README.md | 給人看的 GitHub 首頁(AI 不讀) | MAINTAINING.md「檔案地圖」 |
| references/writing.md | references/writing.md | 文字規格:結論列、標題句式、槽位句式、孤字與兩端對齊的寫法、同層對稱、語言禁則、查證、製作語言、台灣用語與語體帶、示範稿 | MAINTAINING.md「檔案地圖」 |
| references/components.md | references/components.md | 字階、容量模型與行單位成本、元件類名與最小 DOM、圖表頁通案、滿版組合、跨頁節奏、個案定版 | MAINTAINING.md「檔案地圖」 |
| references/design.md | references/design.md | 版面判斷:三層資訊分工、簡報的精神九件事、HTML 的優勢八件事(hover 放哪)、大會場字級 | MAINTAINING.md「檔案地圖」 |
| references/present.md | references/present.md | 作者要寫的互動總覽、兩態契約、簡報態寫法、閱讀態互動、自訂覆蓋層、列印印什麼(列印規則的真相源) | MAINTAINING.md「檔案地圖」 |
| references/brand.md | references/brand.md | 品牌外框、官方色與色彩規則、筆畫母題、自畫裝飾禁區、第三方品牌 | MAINTAINING.md「檔案地圖」 |
| references/delivery.md | references/delivery.md | 交付版 --ship、產出標記判讀、明體內嵌、分支預覽發布(命名、publish.sh) | MAINTAINING.md「檔案地圖」 |
| references/revision-playbook.md | references/revision-playbook.md | 改版協作、版面調整、長簡報驗收、靜默失效、附錄、結構、需求盤點類、討論評述類、分支協作與回灌、改字對位 | MAINTAINING.md「檔案地圖」 |
| references/snippets.md | references/snippets.md | 通用片段庫:版面片段(依功能分十類)、ECharts 圖表範例(共用 ecFit)、互動片段;貼 blank 圍欄、不進引擎(ref.py snippet|chart) | MAINTAINING.md「檔案地圖」 |
| references/layout-catalog.md | references/layout-catalog.md | 排法型錄:依「這一頁要回答的問題」分十組,每條指到元件、片段或圖表範例(ref.py layout) | MAINTAINING.md「檔案地圖」 |
| references/content-example.md | references/content-example.md | 黃金樣本=元件包使用手冊(21 頁四章,build 零警告;selftest 的測試資料;ref.py example) | MAINTAINING.md「檔案地圖」 |
| references/cn-terms.json | references/cn-terms.json | 中國用語詞表:block=✗ 硬擋、warn=△ 提醒、allow=跨詞邊界誤判白名單 | MAINTAINING.md「檔案地圖」 |
| context/quotes.md why.md decisions.md history.md research.md | context/quotes.md why.md decisions.md history.md research.md | 脈絡歸檔:使用者原話、為什麼與實測、否決與暫不做、沿革、研究依據(ref.py ctx;做 deck 不讀) | MAINTAINING.md「檔案地圖」 |
| scripts/build_deck.py | scripts/build_deck.py | content.md → deck.html 組裝器(--list/--schema/--check/--where/--ship/--no-embed-font);字數帶與容量常數、檔頭鍵 DECK_KEYS 的真相源;明體子集內嵌、跨頁膠囊對帳 | MAINTAINING.md「檔案地圖」 |
| scripts/lint_content.py | scripts/lint_content.py | 格式+字數+行數+禁詞+商務用語(STYLE_MAP)+中國用語檢查(含 html: 圍欄正文) | MAINTAINING.md「檔案地圖」 |
| scripts/verify.sh | scripts/verify.sh | 一鍵驗收:lint → build → check_slots → check_mark → measure →(必要時)export --check,印 ✗/△ 摘要與下一步 | MAINTAINING.md「檔案地圖」 |
| scripts/measure_deck.js | scripts/measure_deck.js | 螢幕幾何驗收:五檔視窗三道溢出探測、同組不齊、留白與層級 △、中文排版 △、○ 彈性字級、手機兩檔、頁籤與切換逐片量測 | MAINTAINING.md「檔案地圖」 |
| scripts/export_pdf.js | scripts/export_pdf.js | 無人值守匯出 PDF+列印驗收:三道探測改在 print media 跑、水平撐出、頁數核對、圖表「大螢幕直接按列印」 | MAINTAINING.md「檔案地圖」 |
| scripts/check_present.js | scripts/check_present.js | 簡報態與列印模式驗收:簡報到半途印的 PDF 與閱讀態逐頁點陣比對、列印=開檔畫面、按鍵守門、減少動態、hover 只在 screen | MAINTAINING.md「檔案地圖」 |
| scripts/shots.js | scripts/shots.js | 人工檢查用:每頁 1920 截圖+拼圖;--walk 進簡報態逐步截圖 | MAINTAINING.md「檔案地圖」 |
| scripts/check_slots.py | scripts/check_slots.py | deck.html ↔ content.md 的 slot 與 EDIT-MAP 行號對帳 | MAINTAINING.md「檔案地圖」 |
| scripts/check_mark.py | scripts/check_mark.py | 產出標記驗證:四層署名與 build 指紋 | MAINTAINING.md「檔案地圖」 |
| scripts/check_refs.py | scripts/check_refs.py | 文件交叉引用對帳:節號寫法(writing.md §四之二.7)與標題寫法(writing.md「孤字靠改寫」)每一處都要指得到 | MAINTAINING.md「檔案地圖」 |
| scripts/check_snippets.py | scripts/check_snippets.py | 片段庫守門:標籤成對、類名不撞引擎、data-shape、hover 包 screen、版面片段不寫死色碼與 px | MAINTAINING.md「檔案地圖」 |
| scripts/check_docs.py | scripts/check_docs.py | 導覽的引用指紋:docs/src/01_導覽.md 每頁依據的節改過就 △、對不到就 ✗;--accept 更新 docs/src/cited.json | MAINTAINING.md「檔案地圖」 |
| scripts/check_sync.py | scripts/check_sync.py | 抄在兩處的規則逐字一致:溢出探測核心與門檻、小螢幕判定、字數與容量常數 ↔ 模板與 components.md | MAINTAINING.md「檔案地圖」 |
| scripts/ref.py、scripts/_docmap.py | scripts/ref.py、scripts/_docmap.py | 按名查詢:規格文件按節取、黃金樣本按頁取、脈絡條目、片段與排法只取一段;_docmap.py 是 ref.py 與 check_refs 共用的節與條解析 | MAINTAINING.md「檔案地圖」 |
| scripts/_editmap.js | scripts/_editmap.js | measure/export 共用:讀 EDIT-MAP,溢出訊息接上 content.md 行號 | MAINTAINING.md「檔案地圖」 |
| scripts/publish.sh | scripts/publish.sh | 分支預覽發布:擋分支 → verify.sh --ship → 寫 site/ → commit(不 push) | MAINTAINING.md「檔案地圖」 |
| scripts/cf_build.sh | scripts/cf_build.sh | Cloudflare Pages 的 build command:main 把 docs/ 組成 site/(正式網址放說明文件),deck 分支不動 site/(§七) | MAINTAINING.md「檔案地圖」 |
| scripts/selftest.sh | scripts/selftest.sh | npm test:黃金樣本的完整驗收鏈,加 docs 重組比對(§十) | MAINTAINING.md「檔案地圖」 |
| scripts/test_cn_terms.py | scripts/test_cn_terms.py | 詞表誤判守門測試 | MAINTAINING.md「檔案地圖」 |
| scripts/make_font_subset.py | scripts/make_font_subset.py | 一次性:產生 assets/serif-black.seed.woff2 種子字集 | MAINTAINING.md「檔案地圖」 |
| assets/template.html | assets/template.html | 引擎+元件包樣式(logo 資產在檔尾 style#brand-assets,勿整檔讀入) | MAINTAINING.md「檔案地圖」 |
| assets/serif-black.seed.woff2、assets/OFL.txt | assets/serif-black.seed.woff2、assets/OFL.txt | 明體種子字集(Noto Serif TC Black/Big5 一級常用字)與它的 SIL OFL 1.1 授權全文(須隨產出散布) | MAINTAINING.md「檔案地圖」 |
| docs/、docs/src/ | docs/、docs/src/ | 給人讀的說明(獨立 HTML,§八);docs/src/ 是原稿、產生器、build_docs.sh、cited.json、spec_extra.md | MAINTAINING.md「檔案地圖」 |
| site/、.pages-project、.gitattributes | site/、.pages-project、.gitattributes | Pages 輸出目錄(git 裡 main 只有佔位頁與 _headers)、Pages 專案名、site/** -merge | MAINTAINING.md「檔案地圖」 |
| .gitignore | .gitignore | decks/、site/*(放行 main 的兩檔)、*.pdf、node_modules | MAINTAINING.md「檔案地圖」 |
| requirements.txt | requirements.txt | 選用 Python 依賴(fonttools[woff],只影響明體內嵌) | MAINTAINING.md「檔案地圖」 |
否決與暫不做74 條
評估過、決定不做或暫不做的提案與撿回條件(context/decisions.md;做 deck 不讀,按條取 ref.py ctx)
| 名稱 | 類名/鍵/指令 | 做什麼 | 出處 |
|---|---|---|---|
| 改用 Slidev/reveal.js/Marp | 都要 Node runtime 或 build step,破壞單一 HTML 檔、投影室離線可開;沒有一個做得出 @page{size:33.87cm 19.05cm} 這種 c⋯ | context/decisions.md「外部建議:業界框架與 AI 簡報指南(2026-08)」 | |
| 改用「固定設計解析度 + transform:⋯ | 現行 aspect-ratio + container-type:size + cqh + 全 em 做法更好:文字是真渲染不是縮放點陣,列印時不必跟 transform 打架⋯ | context/decisions.md「外部建議:業界框架與 AI 簡報指南(2026-08)」 | |
| CJK 網頁字型子集化/切片字體(內文) | 內文刻意用系統字堆疊、零依賴離線可用是硬需求,不適用。唯一例外是「明體強調時刻」,已於 2026-08 做成子集化內嵌(brand.md「官方色與色彩規則」第 6 條)——那是全⋯ | context/decisions.md「外部建議:業界框架與 AI 簡報指南(2026-08)」 | |
| scrollytelling(Scrollam⋯ | 不同媒介:長文捲動敘事 vs 一頁一張定格簡報。已在待辦「無限制直向滑動」之列 | context/decisions.md「外部建議:業界框架與 AI 簡報指南(2026-08)」 | |
| 金字塔原理/BLUF/斷言式標題、認知科學護欄⋯ | 都已實作且更嚴:bluf 結論列是全內容頁固定配備、components.md 有精確到小數的行單位容量表(比數元素數更準)、lint_content.py 有禁詞硬擋+商務用語⋯ | context/decisions.md「外部建議:業界框架與 AI 簡報指南(2026-08)」 | |
| 換 PDF 引擎(WeasyPrint/Pri⋯ | 它們的強項全在 A4 多頁文件排版(分頁、頁碼、目錄、footnote),本系統一投影片=一頁、無流動分頁,一項都用不到。反而 WeasyPrint 非 Chromium 引擎⋯ | context/decisions.md「外部建議:七題深入研究報告(2026-08)」 | |
| 紙張尺寸改用 in/px 指定 | 建議所依據的 px 換算是錯的(該報告把 33.87cm 說成 960px;實際 1cm=37.795px,33.87cm≈1280px)。現行 cm 標示與母片規格同單位、可直⋯ | context/decisions.md「外部建議:七題深入研究報告(2026-08)」 | |
| 圖表改 vl-convert/matplotl⋯ | 方向(build 時預渲染靜態 SVG)合理且值得做,但選型不對:現行圖表已用 ECharts option JSON 撰寫,換成 Vega-Lite 或 matplotlib⋯ | context/decisions.md「外部建議:七題深入研究報告(2026-08)」 | |
| LLM/VLM 審視覺稿 | 研究自身引用的證據就指出 VLM 對版面幾何與位置判斷最弱、跨版本不穩,而「版面擁擠/層級失衡」正是這一塊;同時這些又剛好是 measure_deck.js/export_pdf⋯ | context/decisions.md「外部建議:七題深入研究報告(2026-08)」 | |
| 導入 zhlint/autocorrect | 兩者的主功能本系統已自建:build_deck.py 在縮排續行的「漢字↔英數」接縫自動補空格(句中不管,批次替換後的黏連靠 writing.md「批次替換後掃漢英黏連」的 gr⋯ | context/decisions.md「外部建議:七題深入研究報告(2026-08)」 | |
| 新增一批版型元件(風險矩陣/瀑布/子彈圖/KP⋯ | 逐項查證:7 種寫 ECharts option 就有(容器早內建)、3 種現有元件可組(.cell×.g4=KPI 磚牆等)、4 種做成 snippets.md 片段即可,動引⋯ | context/decisions.md「外部建議:簡報版型研究(2026-08)」 | |
| Tufte sidenote 邊註欄 | 投影閱讀距離下邊註字級必破內文下限;版心已被 bluf/src 佔滿,硬插邊欄=每頁可用寬少約 18%,components.md 容量表全部要重算作廢;且 tufte 原版無⋯ | context/decisions.md「外部建議:簡報版型研究(2026-08)」 | |
| 風格預覽畫廊(多主題起手讓使用者挑) | 本系統價值=永豐單一識別的跨部門一致性;畫廊機制的前提是「有多套風格可選」,一導入就誘導逐副換風格→視覺漂移、官方色守則失守。show-don't-tell 的可搬部分改用在「敘⋯ | context/decisions.md「外部建議:簡報版型研究(2026-08)」 | |
| guizang Playwright 幾何校驗⋯ | 已有更細的等價物:measure_deck.js 三道探測+五檔視窗+print media 複跑,比 guizang 單視窗更全。兩套幾何量測併存=兩個真相來源,門檻打架時無從⋯ | context/decisions.md「外部建議:簡報版型研究(2026-08)」 | |
| 密度改「每頁元素數上限」 | DOM 元素數對 CJK 失真:一個 .kv li 可裝 4 字也可裝 40 字,數元素抓不到爆版。現行行單位=字數×每行字數估行,準一階,且 measure_deck.js 直⋯ | context/decisions.md「外部建議:簡報版型研究(2026-08)」 | |
| 機器版型索引 layouts.json(met⋯ | 版型選擇是 S0 的敘事判斷(本頁回答什麼問題→配什麼版型),不是查表比對 tag;索引一旦存在,生成端會繞過 storyline 直接配版型,句式與敘事線就斷了。適用/避免改用⋯ | context/decisions.md「外部建議:簡報版型研究(2026-08)」 | |
| 卡內與整頁「安全置中」(justify-con⋯ | 並排卡的內容量不同,置中後卡頭高低不齊,跨卡同位失效;整頁置中讓內容起點隨內容量跳動,並把內容推離結論列。外部 17 副專業 deck 沒有一副把多行文字卡置中;撿回條件:單一主⋯ | context/decisions.md「外部建議:內文排版研究(2026-09-26)」 | |
| 純 CSS 做「有上限的撐開」(grid mi⋯ | grid 的上限會讓「內容原本多高」的計算虛胖,分區的基準高度被高估,擠壓時切到真內容(實測 ma p13、黃金樣本 p05 溢出 23–178px);calc-size() 在⋯ | context/decisions.md「外部建議:內文排版研究(2026-09-26)」 | |
| 兩端對齊 | 曾否決、2026-09-27 依使用者裁示改採(context/quotes.md「兩端對齊:改寫而不是縮行」)。當時的否決理由保留供追溯:WCAG 1.4.8 不建議;實測字距⋯ | context/decisions.md「外部建議:內文排版研究(2026-09-26)」 | |
| 中英接縫改插窄空格字元(U+2005 等),把⋯ | 空格字元會跟著複製、匯出 Markdown、搜尋走,對帳與搜尋會失效;改用 text-autospace 補沒打空格的接縫;撿回條件:CSS 能控制已打空格的寬度 | context/decisions.md「外部建議:內文排版研究(2026-09-26)」 | |
| 表格預設 .fit(欄寬跟內容) | 既有 deck 用百分比排好的欄寬會全部重算、列高改變;預設只換外觀(線表),.fit 維持新表格的推薦寫法;撿回條件:下一次連容量表一起重排的大改版 | context/decisions.md「外部建議:內文排版研究(2026-09-26)」 | |
| 間距 token 全面重構(41 種 em 值⋯ | 沒有可見收益、改動面積大;新規則已用同一套倍率;撿回條件:要改間距尺度時 | context/decisions.md「外部建議:內文排版研究(2026-09-26)」 | |
| 網格預設開放欄、.lv-k 恢復 20pt、內⋯ | 當時各自牴觸既有裁示(合理用卡、使用者裁示的「小重點 16pt」「內文 12pt」),列為待使用者裁示,不擅自改。2026-09-27 已裁示,三項都採用(context/quo⋯ | context/decisions.md「外部建議:內文排版研究(2026-09-26)」 | |
| 結論列固定高度(強制內容起點一致) | 每個兩行結論列的頁都要多付約 1.5 行單位,已調到滿版的 deck 會整批溢出;撿回條件:改成新 deck 的預設時連容量表一起改 | context/decisions.md「評估過、暫不做(2026-09 簡報設計檢視)」 | |
| hero 依自身高度自動放大數字(容器查詢) | hero 需 container-type:size,「手機版: 重排」沒有定尺會塌成 0 高;改走選用的 .big;撿回條件:重排模式退場時 | context/decisions.md「評估過、暫不做(2026-09 簡報設計檢視)」 | |
| 表格預設改成 .fit.lite | 既有 deck 的表格靠 table-layout:fixed+百分比欄寬排好,改預設會讓欄寬與列高全部重算、已滿版的頁溢出;新 deck 由 components.md 推薦寫⋯ | context/decisions.md「評估過、暫不做(2026-09 簡報設計檢視)」 | |
| 固定內容版型庫(14 種,v2 移除) | 不撿回引擎;主題固定反覆更新 → 個案定版(components.md「個案定版(需要固定版型的主題)」) | context/decisions.md「刻意排除與待辦」 | |
| 填答頁 poll(v2 隨版型庫移除) | 現場表決需求再議;嚴禁 localStorage 原則不變 | context/decisions.md「刻意排除與待辦」 | |
| PPTX 原生輸出 | 必須交付 .pptx | context/decisions.md「刻意排除與待辦」 | |
| 色盲友善硬門檻 | 對外公開 | context/decisions.md「刻意排除與待辦」 | |
| 效能門檻檢查 | 實際踩到卡頓 | context/decisions.md「刻意排除與待辦」 | |
| 螢幕版/列印版分檔 | 兩種版面真正衝突 | context/decisions.md「刻意排除與待辦」 | |
| 紅黃綠治理分級入檢查 | 產出外流至集團外 | context/decisions.md「刻意排除與待辦」 | |
| 對內/對外雙版本規範 | 出現對外發布需求 | context/decisions.md「刻意排除與待辦」 | |
| 簡報態滑過卡片=其餘淡化(逐列聚焦的 hove⋯ | 游標閒置隱藏後 hover 仍黏著,全場看到其餘淡掉卻不知道為什麼;且使用者裁示不淡化其他內容(context/quotes.md「講者工具用綠色、範圍大小適中」);改由「點選釘⋯ | context/decisions.md「簡報態:實作時刻意不做的」 | |
| 聚光燈(整頁壓暗、游標處留一圈亮) | 使用者裁示拿掉:主管視力不好,壓暗的地方看不到字;撿回條件:不撿 | context/decisions.md「簡報態:實作時刻意不做的」 | |
| ⤢ 燈箱重排 | 要自動在寬表與圖表掛按鈕=閱讀態畫面多東西;Alt+點擊放大已涵蓋「看清楚一格」;圖表另有片段 .ec-zoom(ref.py snippet 圖表放大檢視);撿回條件:≥3 副⋯ | context/decisions.md「簡報態:實作時刻意不做的」 | |
| 狀態切換的 FLIP 變形(同一條長條變長、列⋯ | 要「同一個元素、不同資料」的資料驅動渲染,等於在頁面上寫圖表引擎;引擎只做「預先寫好的幾態」交叉淡換;撿回條件:出現 ≥3 副需要排序動畫的 deck | context/decisions.md「簡報態:實作時刻意不做的」 | |
| 結論列數字自動同數聯動(零標記版) | 會命中不相干的同數字;先做成要標記的 data-hl,好用再議;撿回條件:一副 deck 試用後使用者要 | context/decisions.md「簡報態:實作時刻意不做的」 | |
| 狀態切換 pages 分身頁跑垂直節奏 | 分身頁內容與原頁不同,沿用原頁的倍率可能裝不下;分身頁一律自然排版(12pt、不放大間距);撿回條件:分身頁留白被點名 | context/decisions.md「簡報態:實作時刻意不做的」 | |
| 手寫標註 | 簡報態 D 開畫筆、C 清本頁;不保存、不上紙;撿回條件:講者要在會中圈數字、畫箭頭,且雷射筆不夠 | context/decisions.md「簡報態:候選、未做」 | |
| 跨頁膠囊預覽 | 滑過「附錄:頁名」膠囊浮出目標頁的即時縮圖(沿用概覽的縮圖做法);撿回條件:附錄 ≥10 頁、問答時常要先確認再跳 | context/decisions.md「簡報態:候選、未做」 | |
| 前後對照擦拭 | 兩張對齊的內容疊在一起,range 拖分隔線;列印兩張並排;撿回條件:燈號、流程、系統畫面的前後對照 ≥2 副 | context/decisions.md「簡報態:候選、未做」 | |
| 情境切換(離散) | range 五檔情境、<output> 顯示預先算好的結果;列印一張情境表;撿回條件:利率敏感度、壓力測試類 deck | context/decisions.md「簡報態:候選、未做」 | |
| 篩選/排序/條件標示 | 附錄長表篩選、點表頭排序、標未達標;預設=全部,紙本印全部並註「篩選=全部」;撿回條件:附錄表超過 40 列、問答時要只看某家 | context/decisions.md「簡報態:候選、未做」 | |
| 圖表逐步 | data-steps 聚焦系列、逐一出現註解、逐點畫軌跡;閱讀態=終態;撿回條件:≥2 副 deck 要在圖上逐步講 | context/decisions.md「簡報態:候選、未做」 | |
| 表格一鍵複製成 Excel | 剪貼簿同時寫 HTML 與 TSV(原始值);撿回條件:主管要把表貼進 Excel 再算;企業政策不擋剪貼簿(未確認) | context/decisions.md「簡報態:候選、未做」 | |
| 圖表複製為圖片 | ECharts getDataURL() 寫入剪貼簿,自動附來源一行;撿回條件:同上 | context/decisions.md「簡報態:候選、未做」 | |
| 只印這一頁 | 輸出鈕多一項;撿回條件:列印對話框選頁不夠用 | context/decisions.md「簡報態:候選、未做」 | |
| 章節式子地圖 | 標頭定義一條貫穿全副的式子,build 在章節頁印同一條、只強調本章那段(靜態);撿回條件:敘事是「一條式子逐段講」的 deck | context/decisions.md「簡報態:候選、未做」 | |
| GSAP 不進引擎 | 官方 AI skill(greensock/gsap-skills)教的是 API 與效能,沒有「何時該動、動什麼」的設計守則; | context/decisions.md「GSAP 不進引擎」 | |
| 用語:曾評估未採的替換詞 | 「腳本」作類別名的替換詞,理由留著免得重跑一次:規則程式(最貼分界線,但非台灣既有商務詞)、 程式(太廣,與機器學習/大語言模型並列時層級不齊)、傳統程式(✗ 隱含該被取代)、工⋯ | context/decisions.md「用語:曾評估未採的替換詞」 | |
| 片段:型錄判為要新片段但不收的 | - 掛框標籤框 .fbox:分組語彙只有 .sh+開放欄與 .solid 卡兩種,第三種框線語彙只會讓頁面變雜。 | context/decisions.md「片段:型錄判為要新片段但不收的」 | |
| 版面型(單圖滿版、圖+評論欄、圖+表並排、雙圖⋯ | 不另立 option;撿回條件:版面用現有元件組(型錄已寫類名組合),圖套任一圖表範例;圖表這一側要注意的只有圖高與同區段(ref.py chart 圖表共通規則 的版面條、re⋯ | context/decisions.md「圖表:不另立範例的型」 | |
| 表+列點+全寬瀑布 | 同上;撿回條件:瀑布用 ref.py chart ec-bridge | context/decisions.md「圖表:不另立範例的型」 | |
| 單指標專頁、單圖上的轉折注記、上下分層共用 X⋯ | 圖表部分已併入;撿回條件:ec-bracket、ec-turn/ec-endlabel、ec-twotier;版面照型錄 | context/decisions.md「圖表:不另立範例的型」 | |
| 值表圖例(疊進圖內的小表) | 不做;撿回條件:疊在 .xhb-ec 裡的 HTML 小表縮放與列印都沒驗過,還會壓到資料點;放圖旁 .tb.fit.lite。直接標籤部分=ec-endlabel | context/decisions.md「圖表:不另立範例的型」 | |
| 內外雙環圓餅 | 不做;撿回條件:讀者要先對半徑才知道哪環是誰(components.md「圖表頁通案(色塊圖例、雙圓餅、hover 明細)」第 4 條);用 ec-donut2 | context/decisions.md「圖表:不另立範例的型」 | |
| 儀表盤 | 不做;撿回條件:一個數字占半頁,刻度與色帶是裝飾;改 .hero+一句,或子彈圖 .blt | context/decisions.md「圖表:不另立範例的型」 | |
| 半圓雷達 | 不做;撿回條件:文字沿弧段散放找不到閱讀順序、字只能很小;唯一的資訊「上升/持平」用表格一欄就夠 | context/decisions.md「圖表:不另立範例的型」 | |
| 地圖 | 不做;撿回條件:CDN 版 ECharts 不含地圖資料,要自帶 geoJSON,離線不可靠;改區域格 .cell.kpi 或序軸 .axis | context/decisions.md「圖表:不另立範例的型」 | |
| 雙 y 軸 | 不做;撿回條件:讀者分不清哪條線看哪邊刻度;用 ec-twotier | context/decisions.md「圖表:不另立範例的型」 | |
| 圖上圈選、旋轉徽章、大紅圈、3D 柱與圓餅 | 不做;撿回條件:手工感與噪音,透視讓比例失真;自家用焦點色上色(ec-peer) | context/decisions.md「圖表:不另立範例的型」 | |
| 啞鈴、熱力表、行內長條、構成拆解、行事曆甘特⋯ | 歸版面片段(.dumb、.tb.heat、td.ib、.decomp、.gantt、.pband、.tlx);撿回條件:不經 ECharts:字可搜尋、匯出 Markdown 是⋯ | context/decisions.md「圖表:不另立範例的型」 | |
| 華夫格並排 | 歸版面片段 .waf;撿回條件:三個 .waf 放 .g3,純 CSS,不經 ECharts | context/decisions.md「圖表:不另立範例的型」 | |
| 欄組分段表(表格版) | 歸版面片段 tr.cg;撿回條件:圖表版=ec-fyhalf | context/decisions.md「圖表:不另立範例的型」 | |
| 篩選儀表 | 引擎;撿回條件:狀態切換 data-switch(present.md「閱讀態也作用的互動」) | context/decisions.md「圖表:不另立範例的型」 | |
| 瀑布延伸:柱下分組括號 | 未做;撿回條件:沒有實跑;可用 ec-bracket 的隱藏數值軸畫在 y 負值區,實跑後再收 | context/decisions.md「圖表:不另立範例的型」 | |
| 逐點畫出軌跡的動畫 | 未做;撿回條件:屬簡報態動畫;靜態版=ec-trail | context/decisions.md「圖表:不另立範例的型」 | |
| 續頁編號/成對頁標記 | 標題尾加「(1/3)」;撿回條件:build 偵測同標題連續頁自動加號,或「續頁: 1」頁層設定 | context/decisions.md「跨頁體例:要引擎支援、暫不做」 | |
| 章節頁附本章摘要 | 章首第一張內容頁固定用編號重點清單;撿回條件:divider 加選用槽位(例 pts: 最多 3 條、每條 ≤20 字),讓「只翻章節頁」就讀完全副結論 | context/decisions.md「跨頁體例:要引擎支援、暫不做」 | |
| 排法型錄:不做機器版型索引 | 排法型錄不是查表工具:版型選擇是 S0 的敘事判斷(讀 storyline、想清楚這一頁要對讀者論證什麼),不是拿頁面外觀去比對 tag; | context/decisions.md「排法型錄:不做機器版型索引」 | |
| 發布:用 Pages、不用 Workers | Cloudflare 在 Pages 文件頂端建議新專案用 Workers。 | context/decisions.md「發布:用 Pages、不用 Workers」 | |
| 給人讀的文件:獨立 HTML、main 正式網⋯ | 文件重組方案原本建議給人讀的文件站用第二個 Cloudflare Pages 專案、掛 Access。 | context/decisions.md「給人讀的文件:獨立 HTML、main 正式網址放總入口、不加登入」 |
沒有符合的條目。