@litfamily/litgrok 1.0.13 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.grok/hooks/auto-handoff-gate.mjs +15 -2
- package/.grok/rules/00-litgrok.md +1 -1
- package/.grok/skills/frontend-ui-ux/THIRD-PARTY-NOTICE.txt +0 -5
- package/.grok/skills/frontend-ui-ux/references/slop-register.md +4 -4
- package/.grok/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +1 -1
- package/.grok/skills/lit-docx/SKILL.md +59 -11
- package/.grok/skills/lit-docx/examples/01-report-ko.md +137 -0
- package/.grok/skills/lit-docx/examples/02-brief-ko.md +82 -0
- package/.grok/skills/lit-docx/examples/03-manual-ko.md +118 -0
- package/.grok/skills/lit-docx/examples/04-proposal-ko.md +92 -0
- package/.grok/skills/lit-docx/examples/05-memo-en.md +42 -0
- package/.grok/skills/lit-docx/examples/06-journal-en.md +90 -0
- package/.grok/skills/lit-docx/examples/07-report-en.md +103 -0
- package/.grok/skills/lit-docx/examples/08-proposal-en.md +90 -0
- package/.grok/skills/lit-docx/examples/09-memo-ko.md +41 -0
- package/.grok/skills/lit-docx/references/components.md +151 -0
- package/.grok/skills/lit-docx/references/direction-step.md +129 -0
- package/.grok/skills/lit-docx/references/page-composition.md +129 -0
- package/.grok/skills/lit-docx/references/tonalities/brief.md +98 -0
- package/.grok/skills/lit-docx/references/tonalities/journal.md +100 -0
- package/.grok/skills/lit-docx/references/tonalities/manual.md +107 -0
- package/.grok/skills/lit-docx/references/tonalities/memo.md +95 -0
- package/.grok/skills/lit-docx/references/tonalities/proposal.md +105 -0
- package/.grok/skills/lit-docx/references/tonalities/report.md +114 -0
- package/.grok/skills/lit-docx/scripts/convert_md_to_docx.py +394 -51
- package/.grok/skills/lit-docx/scripts/docx_design.py +2446 -0
- package/.grok/skills/lit-docx/scripts/docx_gate.py +203 -0
- package/.grok/skills/lit-docx/scripts/docx_layout.py +959 -0
- package/.grok/skills/lit-docx/scripts/run.mjs +3 -2
- package/.grok/skills/lit-docx/scripts/slop_lint.py +63 -17
- package/.grok/skills/lit-docx/templates/tonalities/brief.yaml +29 -0
- package/.grok/skills/lit-docx/templates/tonalities/journal.yaml +26 -0
- package/.grok/skills/lit-docx/templates/tonalities/manual.yaml +27 -0
- package/.grok/skills/lit-docx/templates/tonalities/memo.yaml +27 -0
- package/.grok/skills/lit-docx/templates/tonalities/proposal.yaml +27 -0
- package/.grok/skills/lit-docx/templates/tonalities/report.yaml +27 -0
- package/.grok/skills/lit-pptx/NOTICE.md +1 -1
- package/.grok/skills/lit-pptx/SKILL.md +70 -14
- package/.grok/skills/lit-pptx/agents/analyst.md +1 -1
- package/.grok/skills/lit-pptx/agents/thesis.md +2 -2
- package/.grok/skills/lit-pptx/examples/01-pitch-signal-ko.md +175 -0
- package/.grok/skills/lit-pptx/examples/02-business-review-ledger-ko.md +199 -0
- package/.grok/skills/lit-pptx/examples/03-research-talk-paper-en.md +177 -0
- package/.grok/skills/lit-pptx/examples/04-lecture-chalk-ko.md +176 -0
- package/.grok/skills/lit-pptx/examples/05-data-review-night-en.md +221 -0
- package/.grok/skills/lit-pptx/examples/06-image-led-atlas-en.md +143 -0
- package/.grok/skills/lit-pptx/examples/07-briefing-gazette-ko.md +192 -0
- package/.grok/skills/lit-pptx/examples/08-status-update-ledger-en.md +168 -0
- package/.grok/skills/lit-pptx/examples/09-pitch-studio-en.md +157 -0
- package/.grok/skills/lit-pptx/examples/10-image-led-studio-ko.md +175 -0
- package/.grok/skills/lit-pptx/examples/11-business-review-night-en.md +181 -0
- package/.grok/skills/lit-pptx/examples/12-status-update-gazette-ko.md +199 -0
- package/.grok/skills/lit-pptx/pretendard-font/public/static/Pretendard-Bold.otf +0 -0
- package/.grok/skills/lit-pptx/pretendard-font/public/static/Pretendard-Regular.otf +0 -0
- package/.grok/skills/lit-pptx/references/density-and-fill.md +155 -0
- package/.grok/skills/lit-pptx/references/direction-step.md +211 -0
- package/.grok/skills/lit-pptx/references/layout-families.md +193 -0
- package/.grok/skills/lit-pptx/references/title-treatments.md +134 -0
- package/.grok/skills/lit-pptx/references/tonalities/atlas.md +124 -0
- package/.grok/skills/lit-pptx/references/tonalities/chalk.md +135 -0
- package/.grok/skills/lit-pptx/references/tonalities/gazette.md +127 -0
- package/.grok/skills/lit-pptx/references/tonalities/ledger.md +134 -0
- package/.grok/skills/lit-pptx/references/tonalities/night.md +132 -0
- package/.grok/skills/lit-pptx/references/tonalities/paper.md +127 -0
- package/.grok/skills/lit-pptx/references/tonalities/signal.md +118 -0
- package/.grok/skills/lit-pptx/references/tonalities/studio.md +123 -0
- package/.grok/skills/lit-pptx/scripts/compile-deck.js +65 -17
- package/.grok/skills/lit-pptx/scripts/craft_extras.py +82 -18
- package/.grok/skills/lit-pptx/scripts/deck_output.py +598 -0
- package/.grok/skills/lit-pptx/scripts/embed_fonts.py +1 -1
- package/.grok/skills/lit-pptx/scripts/inventory.py +6 -2
- package/.grok/skills/lit-pptx/scripts/lib/directive-parser.js +2 -2
- package/.grok/skills/lit-pptx/scripts/lib/grid-resolver.js +521 -0
- package/.grok/skills/lit-pptx/scripts/lib/layout-resolver.js +401 -16
- package/.grok/skills/lit-pptx/scripts/lib/markdown-loader.js +6 -4
- package/.grok/skills/lit-pptx/scripts/lib/render-adapter-html.js +2 -2
- package/.grok/skills/lit-pptx/scripts/lib/render-adapter-pptx.js +500 -126
- package/.grok/skills/lit-pptx/scripts/lib/render-pack.js +3558 -0
- package/.grok/skills/lit-pptx/scripts/lib/slide-ast.js +54 -6
- package/.grok/skills/lit-pptx/scripts/lib/template-registry.js +335 -11
- package/.grok/skills/lit-pptx/scripts/qa_deck.py +43 -10
- package/.grok/skills/lit-pptx/scripts/run.mjs +3 -2
- package/.grok/skills/lit-pptx/scripts/validate_pptx.py +17 -5
- package/.grok/skills/lit-pptx/templates/boilerplate_professional.css +6 -6
- package/.grok/skills/lit-pptx/templates/enrolled/AZURE-A2Z/layout-mapping.yaml +1 -1
- package/.grok/skills/lit-pptx/templates/enrolled/AZURE-A2Z/template.yaml +4 -1
- package/.grok/skills/lit-pptx/templates/enrolled/AZURE-PRO/layout-mapping.yaml +1 -1
- package/.grok/skills/lit-pptx/templates/enrolled/AZURE-PRO/template.yaml +4 -1
- package/.grok/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +99 -0
- package/.grok/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +104 -0
- package/.grok/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +99 -0
- package/.grok/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +100 -0
- package/.grok/skills/lit-pptx/templates/tonalities/night/pack.yaml +100 -0
- package/.grok/skills/lit-pptx/templates/tonalities/paper/pack.yaml +105 -0
- package/.grok/skills/lit-pptx/templates/tonalities/signal/pack.yaml +101 -0
- package/.grok/skills/lit-pptx/templates/tonalities/studio/pack.yaml +99 -0
- package/.grok/skills/lit-typographic-motion/THIRD_PARTY_NOTICES +1 -1
- package/.grok/skills/lit-typographic-motion/fonts/pins.json +6 -6
- package/.grok/skills/lit-typographic-motion/references/runtime.md +1 -1
- package/.grok/skills/lit-typographic-motion/references/style-bible.md +2 -2
- package/.grok/skills/lit-typographic-motion/references/type-craft.md +2 -2
- package/.grok/skills/lit-typographic-motion/scripts/lib/gate.mjs +1 -1
- package/.grok/skills/litgrok/SKILL.md +1 -1
- package/.grok-plugin/plugin.json +1 -1
- package/CHANGELOG.md +11 -0
- package/README.md +9 -9
- package/README_ko-KR.md +9 -9
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/reference.md +1 -1
- package/docs/reference_ko-KR.md +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/.grok/skills/lit-pptx/pretendard-font/public/static/PretendardGOV-Bold.otf +0 -0
- package/.grok/skills/lit-pptx/pretendard-font/public/static/PretendardGOV-Regular.otf +0 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# Direction step
|
|
2
|
+
|
|
3
|
+
A deck's look is decided once, before the first slide is written, and it is decided as data: one of
|
|
4
|
+
the eight tonality packs in `templates/tonalities/<id>/pack.yaml`. The pack fixes the palette roles,
|
|
5
|
+
the type ramp, the title treatments each slide role may take, the layout families the engine will
|
|
6
|
+
draw, the cover, section and closing variants, and the density and variance dials. Skipping this
|
|
7
|
+
step leaves the engine without a design and the deck without a reason for looking the way it does.
|
|
8
|
+
|
|
9
|
+
The step produces three things: a direction card in the build log, a `tonality:` line in the deck
|
|
10
|
+
frontmatter, and two or three sentences in the reply that name the choice and two alternatives. A
|
|
11
|
+
bare request (`lit 발표자료 만들어줘`, "make me a deck on X") asks the user nothing. The skill
|
|
12
|
+
infers what it needs, writes the inference on the card, and lets the user correct it afterwards.
|
|
13
|
+
|
|
14
|
+
## What to settle first
|
|
15
|
+
|
|
16
|
+
Write down four facts. Take them from the brief when it says them and infer them from the request
|
|
17
|
+
and the sources when it does not.
|
|
18
|
+
|
|
19
|
+
| Fact | Question it answers | Typical inference |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| Deck type | What job does the deck do? | "투자 유치" → pitch; "분기 실적" → business review; "주간 보고" → status update |
|
|
22
|
+
| Setting | Who looks at it, where, for how long? | a board at a desk, a hall with a stage screen, a class reviewing the file later |
|
|
23
|
+
| Delivery | Presented live, read alone, or both? | "미리 배포", "보고서형", "circulate" → read; "keynote", "demo day" → presented |
|
|
24
|
+
| Language | Korean, English or mixed? | the language of the request, unless the sources or the user say otherwise |
|
|
25
|
+
|
|
26
|
+
Pretendard Regular and Bold are the only faces this skill ships. Every pack draws with them, so the
|
|
27
|
+
direction never depends on a font the machine might lack. Hierarchy comes from size, weight, colour
|
|
28
|
+
and placement.
|
|
29
|
+
|
|
30
|
+
## Candidates by deck type
|
|
31
|
+
|
|
32
|
+
Start from the row for the deck type. The first name is the default when no signal below moves it.
|
|
33
|
+
|
|
34
|
+
| Deck type | First choice | Second | Third, and when |
|
|
35
|
+
|---|---|---|---|
|
|
36
|
+
| Pitch (투자·제안) | signal | studio | atlas, when the product is a physical thing to show |
|
|
37
|
+
| Business review (실적 보고) | ledger | gazette, when circulated in Korean before the meeting | night, when shown on a stage screen |
|
|
38
|
+
| Research talk (연구 발표) | paper | night, for a keynote hall | chalk, for a tutorial |
|
|
39
|
+
| Lecture (강의·교육) | chalk | paper | studio, for a public lecture |
|
|
40
|
+
| Data-heavy review (데이터 리뷰) | night | ledger | paper, for a written analysis |
|
|
41
|
+
| Image-led (제품·현장·포트폴리오) | atlas | studio | signal, for a launch |
|
|
42
|
+
| Korean briefing (보고서형 덱) | gazette | ledger | — |
|
|
43
|
+
| Status update (주간·월간 보고) | ledger | gazette | night |
|
|
44
|
+
|
|
45
|
+
## Count the outline, then reorder
|
|
46
|
+
|
|
47
|
+
Draft the outline before choosing: one line per slide with its message and the visual it needs (a
|
|
48
|
+
table, a chart, a picture, a list, a sequence). Then count. Apply the rows below from top to bottom;
|
|
49
|
+
when two packs tie, the deck-type order breaks the tie, so the same outline always yields the same
|
|
50
|
+
choice.
|
|
51
|
+
|
|
52
|
+
| Signal | Fires when | Effect |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| User's choice | the brief or an earlier turn names a tonality | use it, still write the card |
|
|
55
|
+
| Named template | the brief names an enrolled template such as AZURE-PRO | use that template, offer two tonalities as alternatives |
|
|
56
|
+
| Read, not presented | the brief says the file is sent ahead or filed | gazette (Korean) or ledger (any language) moves to first |
|
|
57
|
+
| Tables | 30 % or more of content slides hold a table | ledger and gazette up one place |
|
|
58
|
+
| Charts | 30 % or more hold a chart | ledger, night and paper up one place |
|
|
59
|
+
| Pictures | 30 % or more hold a photo or screenshot | atlas and studio up one place; gazette down one |
|
|
60
|
+
| Long bodies | over about 150 Korean glyphs or 300 Latin characters per content slide | gazette and ledger up; signal down |
|
|
61
|
+
| Short bodies | under about 40 Korean glyphs or 80 Latin characters per content slide | signal and studio up; density stays 10 |
|
|
62
|
+
| Citations | numbered references, DOIs or a references slide | paper up one place |
|
|
63
|
+
| Teaching structure | definitions, a formula, or a sequence of three or more steps taught in order | chalk up one place, paper up one |
|
|
64
|
+
| Dark room | keynote, stage, demo day | night up one place |
|
|
65
|
+
| Coverage gap | a pack has no family for a slide the outline needs | drop that pack |
|
|
66
|
+
|
|
67
|
+
The coverage row decides more often than it seems. Read `--list-layouts <id>` against the outline:
|
|
68
|
+
|
|
69
|
+
| Pack | Has no family for |
|
|
70
|
+
|---|---|
|
|
71
|
+
| ledger | pictures (no image family) |
|
|
72
|
+
| signal | agenda, timeline, running text |
|
|
73
|
+
| atlas | tables, charts |
|
|
74
|
+
| chalk | charts, KPI rows, timelines |
|
|
75
|
+
| paper | agenda, KPI rows, timelines, process steps |
|
|
76
|
+
| gazette | charts, pictures |
|
|
77
|
+
| studio | tables |
|
|
78
|
+
| night | tables (KPI rows and charts only), pictures, running text |
|
|
79
|
+
|
|
80
|
+
A ten-slide deck with four charts cannot be a chalk or gazette deck, however well the rest fits. A
|
|
81
|
+
deck with a 2×2 option matrix needs ledger or gazette.
|
|
82
|
+
|
|
83
|
+
**Worked case.** A Korean monthly status update built from a project tracker, eleven slides. The
|
|
84
|
+
type gives ledger, gazette, night. Three of nine content slides hold a table (33 %), so ledger and
|
|
85
|
+
gazette each move up one: no change in order. Bodies average 170 glyphs, so the long-body row fires
|
|
86
|
+
for both again. The brief says "월간 보고서로 배포", so the read row puts gazette first. The outline
|
|
87
|
+
has no chart, which costs gazette nothing. Result: gazette; alternatives ledger and night. Example
|
|
88
|
+
`12-status-update-gazette-ko.md` is a deck of this kind.
|
|
89
|
+
|
|
90
|
+
## The direction card
|
|
91
|
+
|
|
92
|
+
The card records the decision and why. Fill every field; a build that cannot name its tonality and
|
|
93
|
+
its reason stops and asks instead of guessing a look.
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
Direction card
|
|
97
|
+
Deck type status update (월간 보고), read before the monthly steering meeting
|
|
98
|
+
Setting eight executives, on laptops and printed, about ten minutes each
|
|
99
|
+
Language Korean
|
|
100
|
+
Tonality gazette alternatives: ledger, night
|
|
101
|
+
Reason read rather than presented; 33 % table slides; bodies near 170 glyphs
|
|
102
|
+
Signals read-not-presented, tables, long bodies
|
|
103
|
+
Dials density 10, variance 4 (pack defaults)
|
|
104
|
+
Titles by role content band · data top-rule · data-takeaway side-rail · sequence kicker-numeral
|
|
105
|
+
Families cover-index, agenda, summary-box-list, ledger-table, table-insight, section-rule,
|
|
106
|
+
text-column, matrix-2x2, timeline, closing-ask
|
|
107
|
+
Wrong if the deck is presented to a room; ledger's top titles and KPI rows suit that better
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
The "wrong if" line names the fact that would overturn the choice. A reviewer checks it first. If it
|
|
111
|
+
turns out true, rebuild under the alternative it names and update the card.
|
|
112
|
+
|
|
113
|
+
**Dials.** Density (1-10) and variance (1-10) start at the pack defaults: density 10 in every pack,
|
|
114
|
+
variance between 4 (gazette) and 8 (studio). The skill may move either dial by up to 2 on its own and
|
|
115
|
+
records the move on the card. A larger move needs the user's word. Lower density to 8 for a deck shown
|
|
116
|
+
to a large room; raise variance when the deck is long and its slide jobs repeat. Variance under 4 is
|
|
117
|
+
for a user who asks for a uniform deck. Set the dials in the frontmatter (`density: 8`,
|
|
118
|
+
`variance: 6`) so the source carries the decision. `density-and-fill.md` says what each step changes.
|
|
119
|
+
|
|
120
|
+
**Titles and families.** The role-to-title map comes straight from the pack's sheet in
|
|
121
|
+
`references/tonalities/`; each outline line gets one family from the pack's own list. The engine may draw a slide under another allowed title when the body fills
|
|
122
|
+
better there, and the compile log says so.
|
|
123
|
+
|
|
124
|
+
## Say it in the reply
|
|
125
|
+
|
|
126
|
+
Name the tonality, the reason, and the two alternatives in plain words, in the user's language:
|
|
127
|
+
|
|
128
|
+
> gazette로 만들었습니다. 회의 전에 읽는 월간 보고이고 표가 슬라이드의 3분의 1을 넘어서입니다.
|
|
129
|
+
> 발표 화면에 띄운다면 ledger, 어두운 회의실이라면 night도 맞습니다.
|
|
130
|
+
|
|
131
|
+
> Built in ledger: the deck is a weekly status read on screen, and a third of its slides are tables.
|
|
132
|
+
> Gazette fits if it circulates in Korean; night fits a stage screen.
|
|
133
|
+
|
|
134
|
+
Keep the sentences short. The card stays in the build log; the reply carries only the decision.
|
|
135
|
+
|
|
136
|
+
## Build log
|
|
137
|
+
|
|
138
|
+
Write the log beside the source. It is working evidence, delivered only when the user asks for the
|
|
139
|
+
audit trail.
|
|
140
|
+
|
|
141
|
+
```text
|
|
142
|
+
deck.md source, with tonality: in the frontmatter
|
|
143
|
+
deck.build.md direction card, compile output (note:, variety:, fill:, Treatments: lines), gate JSON summary
|
|
144
|
+
deck.pptx compiled deck
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Compile and gate from the project root:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
node .grok/skills/lit-pptx/scripts/compile-deck.js deck.md --pptx deck.pptx
|
|
151
|
+
node .grok/skills/lit-pptx/scripts/run.mjs qa_deck.py deck.pptx
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
The first line of the compile output repeats the direction (`Tonality gazette · density 10 ·
|
|
155
|
+
variance 4 · 16:9 compact grid`); paste it into the log under the card.
|
|
156
|
+
|
|
157
|
+
## Comparing looks
|
|
158
|
+
|
|
159
|
+
When the user asks to see options, or says the look is open ("어떤 느낌이 좋을지 모르겠어요",
|
|
160
|
+
"show me a few styles"), build the cover and the first two content slides under the chosen pack and
|
|
161
|
+
the two alternatives. Keep content and order identical; change only the `tonality:` line.
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
for t in gazette ledger night; do
|
|
165
|
+
sed "s/^tonality: .*/tonality: $t/" strip.md > "strip-$t.md"
|
|
166
|
+
node .grok/skills/lit-pptx/scripts/compile-deck.js "strip-$t.md" --pptx "strip-$t.pptx"
|
|
167
|
+
done
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
If `soffice` is available, convert each strip to PDF and show the three rows of three pages. If it
|
|
171
|
+
is not, say the comparison is unrendered and describe each strip from its pack sheet. The user's
|
|
172
|
+
pick becomes the card's reason ("chosen from the comparison"); then build the full deck.
|
|
173
|
+
|
|
174
|
+
## Enrolled templates
|
|
175
|
+
|
|
176
|
+
The templates in `templates/enrolled/` keep their single fixed look. `--list-tonalities` lists them
|
|
177
|
+
as legacy templates after the eight packs. Use one only when the user names it or an existing source
|
|
178
|
+
already says `template:`. The card names the template, the reply still offers two tonalities, and
|
|
179
|
+
the gate reports its variety and band checks as advisories, because a named template asks for one
|
|
180
|
+
look on purpose.
|
|
181
|
+
|
|
182
|
+
## Mistakes this step prevents
|
|
183
|
+
|
|
184
|
+
- Choosing by topic ("a startup, so signal") without counting the outline.
|
|
185
|
+
- A reply that names one look, or none.
|
|
186
|
+
- A reason that restates the deck type instead of naming the signals.
|
|
187
|
+
- A pack that cannot draw a slide the outline needs; the compile prints `note: slide N: <family> is
|
|
188
|
+
not a <pack> layout family`, and the fix is another family or another pack.
|
|
189
|
+
- Moving a dial by three or more without asking.
|
|
190
|
+
- Swapping the tonality after the build without updating the card and the reply.
|
|
191
|
+
|
|
192
|
+
## Example decks
|
|
193
|
+
|
|
194
|
+
Twelve complete decks live in `examples/`, each verified to compile and pass the gate under its
|
|
195
|
+
pack. Open the one whose deck type and language match the job before drafting. The picture slides name `assets/example-a.png`, `assets/example-b.png` and
|
|
196
|
+
`assets/example-c.png`; put real images at those paths, or change the paths, before compiling.
|
|
197
|
+
|
|
198
|
+
| File | Deck type | Tonality | Alternatives |
|
|
199
|
+
|---|---|---|---|
|
|
200
|
+
| `01-pitch-signal-ko.md` | pitch | signal | studio, atlas |
|
|
201
|
+
| `02-business-review-ledger-ko.md` | business review | ledger | gazette, night |
|
|
202
|
+
| `03-research-talk-paper-en.md` | research talk | paper | night, chalk |
|
|
203
|
+
| `04-lecture-chalk-ko.md` | lecture | chalk | paper, studio |
|
|
204
|
+
| `05-data-review-night-en.md` | data-heavy review | night | ledger, paper |
|
|
205
|
+
| `06-image-led-atlas-en.md` | image-led field report | atlas | studio, signal |
|
|
206
|
+
| `07-briefing-gazette-ko.md` | Korean briefing | gazette | ledger |
|
|
207
|
+
| `08-status-update-ledger-en.md` | status update | ledger | gazette, night |
|
|
208
|
+
| `09-pitch-studio-en.md` | pitch for a physical product | studio | signal, atlas |
|
|
209
|
+
| `10-image-led-studio-ko.md` | image-led portfolio | studio | atlas, signal |
|
|
210
|
+
| `11-business-review-night-en.md` | business review on a stage screen | night | ledger, gazette |
|
|
211
|
+
| `12-status-update-gazette-ko.md` | status update, circulated in Korean | gazette | ledger, night |
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Layout families
|
|
2
|
+
|
|
3
|
+
Each slide does one job, and each job has a shape the engine knows how to draw: that shape is a
|
|
4
|
+
layout family. You write its name after `layout:`; the pack then supplies the titles it may take and
|
|
5
|
+
the look of its tables, charts and rules. There are 28 content families and 20 cover, section and closing variants. No pack
|
|
6
|
+
carries all of them. Each pack lists the ones that suit its character, and a slide that asks for a
|
|
7
|
+
family outside that list is drawn with the family's own geometry and a `note:` line, which is a
|
|
8
|
+
signal to change the family or the pack.
|
|
9
|
+
|
|
10
|
+
Choose the family from what the slide must do, never from what the previous slide used. Variety in
|
|
11
|
+
a deck comes from slides doing different jobs; the gate's OF-111 check reads the compiled file and
|
|
12
|
+
fails a deck whose content slides share one composition too often.
|
|
13
|
+
|
|
14
|
+
List what a pack offers before writing:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
node .grok/skills/lit-pptx/scripts/compile-deck.js --list-tonalities
|
|
18
|
+
node .grok/skills/lit-pptx/scripts/compile-deck.js --list-layouts gazette
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The second command prints each family with the titles it may take under that pack, then the cover,
|
|
22
|
+
section and closing variants.
|
|
23
|
+
|
|
24
|
+
## Content families
|
|
25
|
+
|
|
26
|
+
| Family | Job | What the source gives it | Packs |
|
|
27
|
+
|---|---|---|---|
|
|
28
|
+
| `text-column` | itemised text that keeps a reading measure | `- **head** text` lines with `(1)` `(2)` sub-points | atlas, chalk, gazette, paper |
|
|
29
|
+
| `text-two-column` | a longer itemised body split in two | four to six bold-headed groups; the engine splits at a group boundary | gazette, ledger, studio |
|
|
30
|
+
| `summary-box-list` | a boxed conclusion over its evidence | `::: key-message` (one or two lines), then bold-headed groups | gazette |
|
|
31
|
+
| `sidebar-note` | a point with a fenced note beside it; a note too short for its column stands across the top at lead size with the points in two columns under it, and under a side title it stands in the rail | bold-headed groups, then `::: main-box` holding the definition or the usual mistake | chalk |
|
|
32
|
+
| `agenda` | the deck's parts, numbered | `- **Part** what it covers`, three to six lines | chalk, gazette, ledger |
|
|
33
|
+
| `statement` | a quotation or a display-led page the user asked for | the `##` line is the sentence; one body line becomes the support line | atlas, chalk, night, paper, signal, studio |
|
|
34
|
+
| `quote` | a quotation with its source | a line opening with `“`, then a line opening with `—` | chalk, paper, signal |
|
|
35
|
+
| `kpi-row` | four to six headline figures | a two-row table: values, then each figure's basis; then takeaways and a source line | atlas, ledger, night, signal, studio |
|
|
36
|
+
| `kpi-over-chart` | figures above the trend that explains them | the KPI table, then a `::: chart` block, then one takeaway and a source line | ledger, night |
|
|
37
|
+
| `dashboard-grid` | two or three small charts read together | two or three `::: chart` blocks, then one takeaway and a source line | ledger, night |
|
|
38
|
+
| `table-insight` | a table with its reading beside it | a pipe table, a `>` caption, two or three takeaways, a source line | chalk, gazette, ledger, paper, signal |
|
|
39
|
+
| `ledger-table` | a full-width table that is the evidence | a table of five to eight rows and up to six columns, caption, takeaways under it | gazette, ledger |
|
|
40
|
+
| `matrix-2x2` | options on two axes | a 3 × 3 table: corner `효과 \ 난이도`, two column heads, two row heads; cells `item · detail · owner` | gazette, ledger |
|
|
41
|
+
| `comparison` | two sides read across shared criteria | `:::: columns 1fr 1fr`, each `::: col` with `- **side**` and `(1) 기준: …` items | all eight |
|
|
42
|
+
| `chart-insight` | a chart with its reading | a `::: chart` block with a `>` caption, two to four takeaways, a source line | ledger, night, paper, signal, studio |
|
|
43
|
+
| `full-chart` | one chart across the page | a `::: chart` block and a source line | ledger, night, paper, signal |
|
|
44
|
+
| `big-number` | two to four related figures as a data panel | a KPI table (labels, values, basis row), then evidence bullets | ledger, night, signal, studio |
|
|
45
|
+
| `process` | three to five steps in order | `- **1. 단계** what happens`; plain bullets after the steps are takeaways | chalk, signal |
|
|
46
|
+
| `step-diagram` | steps taught one at a time | as `process` | chalk |
|
|
47
|
+
| `timeline` | dated events on one axis | a `시점 \| 할 일 \| 담당` table (or Date, Milestone, Owner), caption, takeaways | atlas, gazette, ledger, night, studio |
|
|
48
|
+
| `method` | a formula or figure with its terms | a formula line or an image, then `- **term** meaning` lines | chalk, night, paper |
|
|
49
|
+
| `image-full` | one photograph as the page | one image whose alt text is the caption | atlas, studio |
|
|
50
|
+
| `image-split` | a picture beside its explanation | an image, then bold-headed bullets | atlas, chalk, signal, studio |
|
|
51
|
+
| `photo-grid` | a row of two or three pictures | the images on consecutive lines, then a single sentence | atlas, studio |
|
|
52
|
+
| `figure-pair` | two states of one subject (before/after, A/B) | two images, then one or two measured lines | atlas, paper |
|
|
53
|
+
| `figure-academic` | a journal figure and how to read it | an image captioned `Figure N.`, then bullets headed observation, limitation, implication | paper |
|
|
54
|
+
| `asymmetric-feature` | one large picture and a narrow text column | an image, then four or five short bullets | atlas, signal, studio |
|
|
55
|
+
| `references-appendix` | sources and definitions, one a line | `- [1] …` lines, eight to ten entries | gazette, ledger, paper |
|
|
56
|
+
|
|
57
|
+
Old layout names still compile under a tonality: `content` and `main` become `text-column`,
|
|
58
|
+
`summary` becomes `comparison`, `closing` becomes `closing-statement`, and `cover` or `section` take
|
|
59
|
+
the pack's first variant.
|
|
60
|
+
|
|
61
|
+
## Source details that decide the result
|
|
62
|
+
|
|
63
|
+
- **Charts.** `::: chart type=column unit="억 원"` around a pipe table: categories in the first
|
|
64
|
+
column, one column per series, a `>` caption inside the block. Types: bar, column, line, area, pie,
|
|
65
|
+
doughnut, stacked. The chart is native and editable; on the compact step its values also appear as
|
|
66
|
+
a small table beside the takeaways when they fit (up to eight rows and four columns).
|
|
67
|
+
- **Captions.** A `>` line after a table or inside a chart block is its caption; say what is shown,
|
|
68
|
+
the unit, the period, and "(예시 데이터)" or "(sample data)" for sample values.
|
|
69
|
+
- **Source strip.** A body line that opens with `출처:`, `자료:`, `주:`, `Source:` or `Note:` is set as a
|
|
70
|
+
strip at source size, so it costs the takeaways no room. Under a side title it closes the rail;
|
|
71
|
+
beside a chart, table or picture it closes the takeaway column on the floor, so the column runs as
|
|
72
|
+
long as the visual; elsewhere it runs across the foot of the body. A takeaway column that still
|
|
73
|
+
stops halfway down the visual beside it fails the gate (OF-115): add the source or a note line, or
|
|
74
|
+
the takeaway the slide lacks. The gate reads the largest empty band inside the column, so a strip
|
|
75
|
+
at the foot under two short points still fails; see density-and-fill.md for how the engine fills it.
|
|
76
|
+
- **Run-in labels.** A point may open with a bold label: `- **요약:** 앱에서 맡기면 …`, `- **Basis:**
|
|
77
|
+
1.0 L/min feed`. Write the colon; the engine adds one when the label ends without a separator,
|
|
78
|
+
because a bold word running into its sentence reads as part of it. A bold line with nothing after
|
|
79
|
+
it is a group heading and takes none. The gate fails a hand-set label without a separator (OF-118).
|
|
80
|
+
- **Pictures.** ``. The text before `|` is the caption, the rest
|
|
81
|
+
its source. Write the caption without a number: the engine prefixes `도 N.` on a Korean deck and
|
|
82
|
+
`Figure N.` otherwise, and drops a `도/그림/Figure/Table N.` you typed. The gate wants every figure's
|
|
83
|
+
caption and source beside it: under the picture, or on the panel laid over a full-bleed photograph
|
|
84
|
+
and the picture a cover borrows (examples 06, 09 and 10).
|
|
85
|
+
- **Covers take no blocks.** A cover slide holds only its `#` title (and notes). `cover-split-image`
|
|
86
|
+
and `cover-full-image` borrow the deck's first picture; `cover-figures` borrows its first KPI row;
|
|
87
|
+
`cover-index` borrows the agenda.
|
|
88
|
+
- **Bullets beside a picture are narrow.** Under a bottom title the takeaways run in columns 10-12;
|
|
89
|
+
keep each under about 60 Latin characters or 30 Korean glyphs, and captions under about 70.
|
|
90
|
+
|
|
91
|
+
## Covers, sections and closings
|
|
92
|
+
|
|
93
|
+
Name a variant on the `layout:` line (`layout: cover-band`). The engine draws it when the pack lists
|
|
94
|
+
it and the deck holds what it needs; otherwise it takes the pack's first variant it can draw and
|
|
95
|
+
prints `note: slide 1: drawn as …`.
|
|
96
|
+
|
|
97
|
+
| Variant | What it shows | Needs | Packs |
|
|
98
|
+
|---|---|---|---|
|
|
99
|
+
| `cover-typographic` | the title drawn with the pack's cover device | nothing | atlas, chalk, gazette, ledger, night, paper, signal |
|
|
100
|
+
| `cover-figures` | the title over the deck's headline figures | a KPI row in the deck | ledger, night |
|
|
101
|
+
| `cover-index` | the title beside the deck's parts | an agenda, or two or more sections | gazette, ledger, paper |
|
|
102
|
+
| `cover-numeral` | a year or real figure at title size above the title | a year or figure in the title or date | chalk, night, signal, studio |
|
|
103
|
+
| `cover-split-field` | half the page in the accent field | nothing | signal |
|
|
104
|
+
| `cover-split-image` | the title beside the first picture | a picture in the deck | atlas, paper, studio |
|
|
105
|
+
| `cover-full-image` | the first picture full-bleed, title on a panel | a picture | atlas |
|
|
106
|
+
| `cover-band` | the title under a strong head band, the parts across the page | nothing | gazette |
|
|
107
|
+
| `cover-rail` | the title in a left rail | nothing | chalk, studio |
|
|
108
|
+
| `section-field` | the part title on a colour field | nothing | atlas, night, paper, signal |
|
|
109
|
+
| `section-numeral` | the part number beside the part title | nothing | chalk, ledger, night, signal, studio |
|
|
110
|
+
| `section-rule` | with an agenda, an index page with this part marked | nothing | gazette, ledger, paper |
|
|
111
|
+
| `section-rail` | the part title in the rail | nothing | chalk, studio |
|
|
112
|
+
| `section-band` | the part index in the band, the part title under it | nothing | gazette |
|
|
113
|
+
| `section-image` | the part title on the section's own picture | a picture on that slide | atlas |
|
|
114
|
+
| `closing-ask` | the ask as title, its table as action rows, the next step on the floor | a table or bullets | atlas, chalk, gazette, ledger, paper, signal |
|
|
115
|
+
| `closing-decision-box` | a boxed decision line over the items to approve | one decision bullet, then a table if there are items | gazette, ledger, night |
|
|
116
|
+
| `closing-statement` | one closing sentence | no table or picture | night, signal |
|
|
117
|
+
| `closing-summary-list` | the takeaways numbered down the page | bullets | chalk, paper, studio |
|
|
118
|
+
| `closing-contact-split` | action rows beside a field holding each row's amount or date | a table or bullets, plus a next-step line | atlas, studio |
|
|
119
|
+
|
|
120
|
+
A closing title names the ask ("시드 투자 15억 원 사용 계획", "Decisions for the November peak"). The
|
|
121
|
+
body carries what is to be decided, the amount or deadline, the owner, and the next step with its
|
|
122
|
+
date. "감사합니다" or "Questions?" alone is not a closing.
|
|
123
|
+
|
|
124
|
+
## Display devices
|
|
125
|
+
|
|
126
|
+
A cover or a section page holds a handful of words, so a pack's `display:` key names the device that
|
|
127
|
+
gives such a page its weight. A device frames what the source already says; it never
|
|
128
|
+
adds words or figures.
|
|
129
|
+
|
|
130
|
+
| Device | Draws | Packs |
|
|
131
|
+
|---|---|---|
|
|
132
|
+
| cover `drench` | the field over the whole page, title anchored low | signal |
|
|
133
|
+
| cover `plate` | a field plate over a little under half the page, title on it | atlas |
|
|
134
|
+
| cover `rail` / `band` | the pack's `cover-rail` / `cover-band` | chalk / gazette |
|
|
135
|
+
| cover `figures` | `cover-figures` when a KPI row exists, else the plain cover | ledger |
|
|
136
|
+
| cover `numeral` | `cover-numeral` with the year | night |
|
|
137
|
+
| cover `rules` | a journal title page: heavy rule, title, hairline, presenter, place and date | paper |
|
|
138
|
+
| statement `open` / `drench` / `rules` / `offset` | the sentence alone; on the field over the whole page; between hairlines; beside a short rail | signal, night / chalk, atlas / paper, studio / no pack (the rail beside a quote stood empty) |
|
|
139
|
+
| number `field` / `tint` / `outline` | the panel behind a big number | signal / atlas, chalk, ledger, night, studio / gazette, paper |
|
|
140
|
+
| closing `band` / `box` / `rules` | the next step on the floor as a field band, a tinted or outlined box, or under a rule | atlas, night, signal, studio / chalk, gazette, ledger / paper |
|
|
141
|
+
| `index: true` | sections show the deck's parts with this one marked | gazette, ledger, paper |
|
|
142
|
+
|
|
143
|
+
## What the engine does with the source
|
|
144
|
+
|
|
145
|
+
- A title that needs two lines is split so both lines are about as wide, never leaving one word
|
|
146
|
+
alone below; figures are glued to their counter ("15억 원", "4 분기", "다섯 곳").
|
|
147
|
+
- Line breaks in body text and table cells are placed by the engine at spaces, so "51점" or "(10월" is
|
|
148
|
+
never split between digit and unit by the renderer, and a short parenthetical such as "(▲ +3.9%)" (up to
|
|
149
|
+
16 characters) is never split inside.
|
|
150
|
+
- Section numerals come from the agenda: write the section title exactly as its agenda head and the
|
|
151
|
+
page shows "02 / 04". With no agenda the sections are counted; a lone section gets no numeral at
|
|
152
|
+
all, and its title is set large over the titles of the next slides.
|
|
153
|
+
- A closing's table becomes action rows keyed by the amount column (each row gets a bar for its share
|
|
154
|
+
of the total), else by the date column. A `합계` or `Total` row is never an action row.
|
|
155
|
+
- A big number is a panel of two to four figures, one row each (value, label, basis), never larger
|
|
156
|
+
than title size, seven of twelve columns wide, with the evidence beside it.
|
|
157
|
+
- Dark devices that do not fill the page (plates, rails, panels) stay under half its area, so the
|
|
158
|
+
pack's ground still reads as the page colour.
|
|
159
|
+
- In tables of signal and night, the row whose first cell appears in the slide title is tinted as
|
|
160
|
+
the row the slide is about.
|
|
161
|
+
|
|
162
|
+
## Families under different titles
|
|
163
|
+
|
|
164
|
+
The same family changes shape with its title, which is where a lot of a deck's variety comes from:
|
|
165
|
+
|
|
166
|
+
- With a `side-rail` title, figures from a KPI table stack as rows, process steps run downward, and a
|
|
167
|
+
chart fills columns 5-12 from top to floor. The rail under the title carries the slide's supporting
|
|
168
|
+
content: a comparison's criteria labels, a visual's takeaways (a step up, at lead size, when body
|
|
169
|
+
size leaves the rail more than 40 % empty), a values table and the source strip. A table gives up
|
|
170
|
+
its takeaways only when its rows, opened, still fill the body. A slide whose rail would stay more
|
|
171
|
+
than 40 % empty takes another title unless `title: side-rail` pins it, and the gate fails that
|
|
172
|
+
rail (OF-115).
|
|
173
|
+
- With a `bottom-anchor` title, the chart, figure or panel owns the zone from y 36 to 24 pt above the
|
|
174
|
+
title, and the title's last line stands on the body floor.
|
|
175
|
+
- Beside a visual, takeaways that leave their column more than 40 % empty are set a step up (lead)
|
|
176
|
+
when they still fit; compact process rows that leave a quarter of the body's width empty do the same.
|
|
177
|
+
- Under `band`, the body starts at y 120 and runs to the floor at reading size.
|
|
178
|
+
- A `quote` under `statement` sets the quotation as the page's sentence and the source as support.
|
|
179
|
+
|
|
180
|
+
## Reading the compile log
|
|
181
|
+
|
|
182
|
+
```text
|
|
183
|
+
note: slide 4: timeline is not a chalk layout family (step-diagram, process, …); drawn with its own geometry
|
|
184
|
+
note: slide 1: cover-figures cannot be drawn (the deck has no row of headline numbers)
|
|
185
|
+
note: slide 1: drawn as cover-typographic
|
|
186
|
+
variety: slide 3 drawn under top-rule so the deck carries 6 layouts
|
|
187
|
+
fill: slide 6 band 0.19 -> 0.19 (none: nothing on the slide can grow; choose a fuller family)
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Treat every `note:` as a request the pack could not honour. Change the source: pick a family from the
|
|
191
|
+
pack's list, shorten the title, or go back to `direction-step.md` and choose another pack.
|
|
192
|
+
A `variety:` line is the engine keeping the deck varied and needs no action. A `fill:` line that
|
|
193
|
+
ends in "choose a fuller family" is covered in `density-and-fill.md`.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Title treatments
|
|
2
|
+
|
|
3
|
+
A title treatment is where a slide's title sits and what is drawn with it. The engine has eight,
|
|
4
|
+
each with one fixed frame, so every slide under a treatment puts its title in the same spot. A deck
|
|
5
|
+
reads as designed when it uses three to five of them and each one always marks the same kind of
|
|
6
|
+
slide: a reader learns "the side rail means a chart with its reading" in two slides.
|
|
7
|
+
|
|
8
|
+
## Two rules for every title
|
|
9
|
+
|
|
10
|
+
**A title is a topic label.** Think of it as the heading of a table of contents: what is shown, in
|
|
11
|
+
what measure, for which period when that matters:
|
|
12
|
+
"권역별 대여소 이용 현황", "On-time delivery by region, Q3 2026". The claim goes in the body, as the
|
|
13
|
+
first takeaway, the first point, the boxed summary or the caption. The gate's OF-114 check fails a
|
|
14
|
+
title or cover subtitle that reads as a sentence:
|
|
15
|
+
|
|
16
|
+
- Korean: the last word ends in -다, -니다, -요 forms or -죠, or in a nominalised claim (-음 after a
|
|
17
|
+
past or future stem, 있음, 없음, or -함/-됨 on a word other than 포함). "보고 순서" passes;
|
|
18
|
+
"매출 증가함" and "목표를 달성했다" fail.
|
|
19
|
+
- English: a final period, an auxiliary (is, are, was, has, will …), or a finite verb after the
|
|
20
|
+
first word: past forms (grew, rose, fell, improved, exceeded …) and a few third-person forms that
|
|
21
|
+
seldom act as nouns (beats, exceeds, improves, grows …). Plural nouns such as "leads", "works" or
|
|
22
|
+
"cuts" and hyphenated compounds such as "cut-over" stay labels: "Milestones to cut-over" passes,
|
|
23
|
+
"Revenue rose 12%" fails.
|
|
24
|
+
- A question, a title that opens with a quotation mark, and a trailing parenthesis are not read as
|
|
25
|
+
claims.
|
|
26
|
+
|
|
27
|
+
**No eyebrow, no decorative numeral.** Nothing small sits above a title. A numeral next to a title is
|
|
28
|
+
a real part, step or recommendation number, drawn by `kicker-numeral` or a section variant; it is
|
|
29
|
+
never added for texture.
|
|
30
|
+
|
|
31
|
+
## The eight
|
|
32
|
+
|
|
33
|
+
Geometry is for 16:9 on the compact grid (density 10: 24 pt margins, 54 pt columns, 24 pt gutters,
|
|
34
|
+
title 26 pt, display 36 pt). Budgets are Korean glyphs per line; Latin text takes about 1.7 times as
|
|
35
|
+
many characters.
|
|
36
|
+
|
|
37
|
+
| Treatment | Title frame | Drawn with it | Body zone | Budget |
|
|
38
|
+
|---|---|---|---|---|
|
|
39
|
+
| `top-rule` | columns 1-12 at y 36, title size | an accent rule one column wide, or a full-width hairline in packs without `accent-rule`, 6 pt under the title | 18 pt under the rule (y ≈ 92 for one line) to the floor at 486 | 2 lines of about 35 |
|
|
40
|
+
| `top-plain-large` | columns 1-10 at y 36, display size | nothing | 18 pt under the title (y ≈ 108 for one line) | 2 lines of about 20 |
|
|
41
|
+
| `side-rail` | columns 1-4 from y 36, title size | a filled rail (surface, or the field with white type in chalk) where the pack has `rail-fill`, else a hairline after column 4 | columns 5-12, from y 36; the rail under the title carries the criteria labels, the takeaways and the source | 4 lines of about 10 |
|
|
42
|
+
| `band` | inside a full-width band 108 pt tall, columns 1-11 | the band in the field colour, title in `on-field` | y 120 to the floor | 2 lines of about 32 |
|
|
43
|
+
| `statement` | columns 1-10, centred near y 303, display size | an optional support line under it | none | 3 lines of about 20 |
|
|
44
|
+
| `overlay` | lower left on a dark panel (columns 1-7) over a full-bleed picture; the panel is as tall as the title and its caption and stands on the page foot | the panel and the picture's caption | none: the picture is the content | 2 lines of about 19 |
|
|
45
|
+
| `kicker-numeral` | columns 3-12 at y 48, with a cover-size numeral in columns 1-2 | the numeral in the accent | y 120 to the floor | 1 line of about 27 |
|
|
46
|
+
| `bottom-anchor` | columns 1-9, its last line on the body floor at 486 (a one-line title leaves no band under it) | a hairline 12 pt above the title where the pack has `hairline-rule` | y 36 to 24 pt above the title for the visual; columns 10-12 beside the title stay clear | 2 lines of about 24 |
|
|
47
|
+
|
|
48
|
+
`kicker-numeral` needs a real number: a step, a ledger part, the part a section opened. An agenda is
|
|
49
|
+
not one: its rows carry the numbers, and a count beside its title read as a stray section number, so
|
|
50
|
+
the agenda takes another title (the gate fails a numeral there, OF-119). Without a number the engine
|
|
51
|
+
cannot draw it and picks another title.
|
|
52
|
+
|
|
53
|
+
## How a slide gets its title
|
|
54
|
+
|
|
55
|
+
The family sets the slide role: text families are `content`; tables, KPI rows, comparisons and
|
|
56
|
+
matrices are `data`; charts and big numbers are `data-takeaway`; processes, steps and timelines are
|
|
57
|
+
`sequence`; picture families are `image`; statements and quotes are `statement`; `method` is
|
|
58
|
+
`definition`; references are `reference`. The pack's `role-defaults` map gives each role a default
|
|
59
|
+
treatment. A pack may also give one family its own title under `structure`: Paper draws a comparison
|
|
60
|
+
under `top-rule` as a ruled table, Chalk sets the comparison's criteria on its board rail under
|
|
61
|
+
`side-rail`. That title comes before the role default and holds even when the deck already leans on
|
|
62
|
+
it, so two tonalities of one source differ in structure, not only in colour. When the role default
|
|
63
|
+
is a bottom title the slide may not take (a table), the pack's next treatment stands in.
|
|
64
|
+
|
|
65
|
+
For each slide the engine tries every treatment that both the family and the pack accept and that
|
|
66
|
+
the title fits. The role default is the pack's structure, so it stays unless another treatment fills
|
|
67
|
+
the body better by a tenth of the zone (by 0.15 when neither fills it) or the default cannot be drawn
|
|
68
|
+
without overflow; a side rail that would stay more than 40 % empty also gives way. Two deck-level passes follow: no title zone may
|
|
69
|
+
hold more than 40 % of the content slides, and the deck must carry enough distinct layouts for the
|
|
70
|
+
composition check. Each move is printed:
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
variety: slide 5 drawn under side-rail so no title zone covers more than 40 % of the content slides
|
|
74
|
+
Treatments: 2:band 3:top-rule 4:band 5:top-rule 7:side-rail 8:top-rule 9:band 10:top-rule 11:band
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The variance dial caps how many treatments one deck mixes: 2 at variance 3 or lower, 3 at 4, 4 at
|
|
78
|
+
5-6, 5 at 7 and above, never more than the pack has.
|
|
79
|
+
|
|
80
|
+
Closings with a table or a decision take only top titles (`top-rule`, `band`, `top-plain-large`).
|
|
81
|
+
Covers and sections draw their own variant's title and refuse a `title:` key.
|
|
82
|
+
|
|
83
|
+
## Pinning a title
|
|
84
|
+
|
|
85
|
+
Put `title: <treatment>` on the line after `layout:` when a slide must take a particular treatment.
|
|
86
|
+
The compile stops with a message naming the allowed list if the treatment is unknown, not in the pack,
|
|
87
|
+
not allowed by the family, or cannot hold the title:
|
|
88
|
+
|
|
89
|
+
```markdown
|
|
90
|
+
---
|
|
91
|
+
layout: comparison
|
|
92
|
+
title: side-rail
|
|
93
|
+
|
|
94
|
+
## 재배치 대안 비교
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Pin sparingly. The usual reasons are a low-variance pack that needs a different partition to pass
|
|
98
|
+
the composition check (example 07 pins its agenda to `top-rule` and its comparison to `side-rail`),
|
|
99
|
+
or a comparison whose rows leave a column hollow under the role default (example 04).
|
|
100
|
+
|
|
101
|
+
## Choosing well
|
|
102
|
+
|
|
103
|
+
- **A chart or table with a reading** wants `side-rail` or `bottom-anchor`: the visual takes the full
|
|
104
|
+
height and the title labels it from beside or below.
|
|
105
|
+
- **A page that is read** (briefing, status) wants `band` or `top-rule`, the most predictable heads.
|
|
106
|
+
- **A real sequence** wants `kicker-numeral`; a list with no order never gets a numeral.
|
|
107
|
+
- **A full-bleed photograph** takes `overlay`, and only on `image-full`. A large picture with a short
|
|
108
|
+
label beneath takes `bottom-anchor`.
|
|
109
|
+
- **`statement`** is for a quotation (the `quote` family) or a display-led deck the user asked for. A
|
|
110
|
+
single claim on an empty page is not a slide; it becomes the boxed summary or the first takeaway of
|
|
111
|
+
a content slide.
|
|
112
|
+
|
|
113
|
+
Never move a title with a placed `box`. The frame is the treatment; a nudged title is a ninth,
|
|
114
|
+
broken treatment, and OF-113 fails it.
|
|
115
|
+
|
|
116
|
+
## What the gate checks
|
|
117
|
+
|
|
118
|
+
The gate classifies each title from the compiled file by geometry and companions and compares that
|
|
119
|
+
with the `title@<treatment>` name the engine writes on the shape; the name alone is never accepted.
|
|
120
|
+
|
|
121
|
+
- **OF-110**: a deck of eight or more slides shows at least three treatments (covers and sections
|
|
122
|
+
not counted) and no more than the variance dial allows; every title is drawn as it is named.
|
|
123
|
+
- **OF-113**: slides under one treatment keep one frame (within 1 pt; a statement compares x and
|
|
124
|
+
width only, a bottom title x, width and its bottom edge, because it stands on the floor).
|
|
125
|
+
- **OF-115**: a bottom title that ends more than 12 pt above the body floor fails, and so does a side
|
|
126
|
+
rail more than 40 % empty under its title. What stands in the rail under the title belongs to the
|
|
127
|
+
rail: it neither changes the side-rail reading nor counts as a body column. A text or picture column
|
|
128
|
+
whose largest empty band, read beside a longer column, passes 40 % of the body fails as well; a
|
|
129
|
+
source strip at the column's foot counts as a block but does not hide the band above it.
|
|
130
|
+
- **OF-119**: an agenda title stands without a numeral beside it.
|
|
131
|
+
- **OF-114**: titles and the cover subtitle are labels, as above.
|
|
132
|
+
|
|
133
|
+
On an enrolled template these findings are advisory, because the user asked for one fixed title
|
|
134
|
+
position.
|