@litfamily/litclaude 1.0.19 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +14 -8
- package/README_ko-KR.md +13 -8
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/hooks.md +3 -2
- package/package.json +1 -1
- package/plugins/litclaude/.claude-plugin/plugin.json +1 -1
- package/plugins/litclaude/bin/litclaude-hook.js +4 -4
- package/plugins/litclaude/bin/litclaude-mcp.js +1 -1
- package/plugins/litclaude/lib/canonical-skill-resources.mjs +91 -31
- package/plugins/litclaude/skills/frontend-ui-ux/ATTRIBUTION.md +3 -6
- package/plugins/litclaude/skills/lit-docx/SKILL.md +50 -19
- package/plugins/litclaude/skills/lit-docx/references/components.md +207 -0
- package/plugins/litclaude/skills/lit-docx/references/direction-step.md +277 -0
- package/plugins/litclaude/skills/lit-docx/references/examples/01-report-ko.md +166 -0
- package/plugins/litclaude/skills/lit-docx/references/examples/02-brief-ko.md +105 -0
- package/plugins/litclaude/skills/lit-docx/references/examples/03-manual-ko.md +164 -0
- package/plugins/litclaude/skills/lit-docx/references/examples/04-proposal-ko.md +138 -0
- package/plugins/litclaude/skills/lit-docx/references/examples/05-memo-en.md +55 -0
- package/plugins/litclaude/skills/lit-docx/references/examples/06-journal-en.md +130 -0
- package/plugins/litclaude/skills/lit-docx/references/examples/07-report-en.md +123 -0
- package/plugins/litclaude/skills/lit-docx/references/examples/08-proposal-en.md +123 -0
- package/plugins/litclaude/skills/lit-docx/references/examples/09-memo-ko.md +45 -0
- package/plugins/litclaude/skills/lit-docx/references/page-composition.md +221 -0
- package/plugins/litclaude/skills/lit-docx/references/tonalities/brief.md +143 -0
- package/plugins/litclaude/skills/lit-docx/references/tonalities/journal.md +142 -0
- package/plugins/litclaude/skills/lit-docx/references/tonalities/manual.md +148 -0
- package/plugins/litclaude/skills/lit-docx/references/tonalities/memo.md +137 -0
- package/plugins/litclaude/skills/lit-docx/references/tonalities/proposal.md +140 -0
- package/plugins/litclaude/skills/lit-docx/references/tonalities/report.md +156 -0
- package/plugins/litclaude/skills/lit-docx/scripts/convert_md_to_docx.py +274 -73
- package/plugins/litclaude/skills/lit-docx/scripts/docx_design.py +2449 -0
- package/plugins/litclaude/skills/lit-docx/scripts/docx_layout.py +959 -0
- package/plugins/litclaude/skills/lit-docx/scripts/qa_docx.py +66 -9
- package/plugins/litclaude/skills/lit-docx/scripts/slop_lint.py +18 -6
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/brief.yaml +28 -0
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/journal.yaml +25 -0
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/manual.yaml +26 -0
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/memo.yaml +26 -0
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/proposal.yaml +26 -0
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/report.yaml +26 -0
- package/plugins/litclaude/skills/lit-pptx/SKILL.md +105 -48
- package/plugins/litclaude/skills/lit-pptx/references/agents/analyst.md +1 -1
- package/plugins/litclaude/skills/lit-pptx/references/agents/thesis.md +1 -1
- package/plugins/litclaude/skills/lit-pptx/references/anti-slop-checklist.md +59 -30
- package/plugins/litclaude/skills/lit-pptx/references/authoring-guide.md +119 -42
- package/plugins/litclaude/skills/lit-pptx/references/consensus-protocol.md +1 -1
- package/plugins/litclaude/skills/lit-pptx/references/data-display-cookbook.md +13 -6
- package/plugins/litclaude/skills/lit-pptx/references/density-and-fill.md +164 -0
- package/plugins/litclaude/skills/lit-pptx/references/design-system-azure.md +7 -4
- package/plugins/litclaude/skills/lit-pptx/references/direction-step.md +186 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/01-pitch-signal-ko.md +210 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/02-pitch-studio-ko.md +147 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/03-business-review-ledger-ko.md +199 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/04-business-review-night-en.md +203 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/05-research-talk-paper-en.md +179 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/06-lecture-chalk-ko.md +199 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/07-data-review-night-en.md +194 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/08-image-led-atlas-ko.md +175 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/09-briefing-gazette-ko.md +204 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/10-status-update-ledger-ko.md +179 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/11-portfolio-studio-en.md +164 -0
- package/plugins/litclaude/skills/lit-pptx/references/examples/12-research-tutorial-chalk-en.md +174 -0
- package/plugins/litclaude/skills/lit-pptx/references/interview-protocol.md +1 -1
- package/plugins/litclaude/skills/lit-pptx/references/layout-families.md +198 -0
- package/plugins/litclaude/skills/lit-pptx/references/stages/autopilot.md +1 -1
- package/plugins/litclaude/skills/lit-pptx/references/stages/interview.md +2 -2
- package/plugins/litclaude/skills/lit-pptx/references/stages/plan.md +1 -1
- package/plugins/litclaude/skills/lit-pptx/references/title-treatments.md +109 -0
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/atlas.md +139 -0
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/chalk.md +148 -0
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/gazette.md +149 -0
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/ledger.md +149 -0
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/night.md +147 -0
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/paper.md +151 -0
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/signal.md +150 -0
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/studio.md +132 -0
- package/plugins/litclaude/skills/lit-pptx/scripts/compile-deck.js +64 -16
- package/plugins/litclaude/skills/lit-pptx/scripts/craft_extras.py +664 -3
- package/plugins/litclaude/skills/lit-pptx/scripts/deck_craft.py +48 -6
- package/plugins/litclaude/skills/lit-pptx/scripts/lib/grid-resolver.js +521 -0
- package/plugins/litclaude/skills/lit-pptx/scripts/lib/layout-resolver.js +362 -11
- package/plugins/litclaude/skills/lit-pptx/scripts/lib/markdown-loader.js +6 -4
- package/plugins/litclaude/skills/lit-pptx/scripts/lib/render-adapter-pptx.js +211 -65
- package/plugins/litclaude/skills/lit-pptx/scripts/lib/render-pack.js +3559 -0
- package/plugins/litclaude/skills/lit-pptx/scripts/lib/slide-ast.js +10 -6
- package/plugins/litclaude/skills/lit-pptx/scripts/lib/template-registry.js +286 -1
- package/plugins/litclaude/skills/lit-pptx/scripts/qa_deck.py +39 -10
- package/plugins/litclaude/skills/lit-pptx/scripts/validate_pptx.py +22 -7
- package/plugins/litclaude/skills/lit-pptx/templates/enrolled/AZURE-A2Z/layout-mapping.yaml +1 -1
- package/plugins/litclaude/skills/lit-pptx/templates/enrolled/AZURE-A2Z/template.yaml +4 -1
- package/plugins/litclaude/skills/lit-pptx/templates/enrolled/AZURE-PRO/layout-mapping.yaml +1 -1
- package/plugins/litclaude/skills/lit-pptx/templates/enrolled/AZURE-PRO/template.yaml +4 -1
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +92 -0
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +97 -0
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +93 -0
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +94 -0
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/night/pack.yaml +93 -0
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/paper/pack.yaml +98 -0
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/signal/pack.yaml +94 -0
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/studio/pack.yaml +92 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Repair café network for the east district
|
|
3
|
+
subtitle: Funding proposal for an eighteen-month pilot in four libraries
|
|
4
|
+
author: Example Community Trust
|
|
5
|
+
organization: Example Org
|
|
6
|
+
date: 2026-10-16
|
|
7
|
+
short_title: Repair café network proposal
|
|
8
|
+
notice: "Sample proposal: organisations, budget and figures are examples"
|
|
9
|
+
tonality: Proposal
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
::: cover variant=typographic kicker="Funding proposal"
|
|
13
|
+
A monthly repair café in each of four branch libraries, run by trained volunteers, keeping small appliances, clothes and bicycles in use and out of the district's waste stream.
|
|
14
|
+
:::
|
|
15
|
+
|
|
16
|
+
# Proposal in brief
|
|
17
|
+
|
|
18
|
+
The east district has no regular place where residents can get a toaster, a coat zip or a bicycle brake fixed for free. A one-off repair event held in the central library in May 2026 drew about 260 people, who brought 310 items; 214 were repaired in five hours, and the queue had to be closed at noon. This proposal turns that single event into a monthly network: one café in each of four branch libraries, each open for one Saturday morning a month, staffed by volunteers who have been trained and insured.
|
|
19
|
+
|
|
20
|
+
::: keyfigures
|
|
21
|
+
- **60** café sessions over the pilot (sample)
|
|
22
|
+
- Two cafés from April 2027, two more from June, monthly to July 2028
|
|
23
|
+
- **About 2,000** items repaired (sample)
|
|
24
|
+
- 50 items a session, two thirds repaired as at the May event
|
|
25
|
+
- **6.4 t** kept out of disposal (sample)
|
|
26
|
+
- 3.2 kg per repaired item, waste team weighing method
|
|
27
|
+
:::
|
|
28
|
+
|
|
29
|
+
The trust asks the district's community fund for €96,000 over eighteen months. The money pays for a part-time coordinator, tools and spare parts, volunteer training and insurance, and an evaluation at the end of the pilot. The libraries contribute the rooms at no cost.
|
|
30
|
+
|
|
31
|
+
::: callout kind=key title="Decision requested"
|
|
32
|
+
Approval of €96,000 (sample) from the 2027 community fund round, with a start date of 1 February 2027.
|
|
33
|
+
:::
|
|
34
|
+
|
|
35
|
+
# Need and evidence
|
|
36
|
+
|
|
37
|
+
## What residents asked for
|
|
38
|
+
|
|
39
|
+
The May event closed with a short survey. Of 188 people who answered, 71 % said they had at least one broken item at home that they would bring to a regular café, and 58 % said the nearest paid repair shop was too expensive for the item in question. Small kitchen appliances topped the list, followed by clothing and bicycles.
|
|
40
|
+
|
|
41
|
+
Table 1. Items brought to the May 2026 event (sample data)
|
|
42
|
+
|
|
43
|
+
| Category | Items brought | Repaired | Repair rate (%) |
|
|
44
|
+
| --- | ---: | ---: | ---: |
|
|
45
|
+
| Small appliances | 112 | 71 | 63 |
|
|
46
|
+
| Clothing and textiles | 86 | 74 | 86 |
|
|
47
|
+
| Bicycles | 54 | 41 | 76 |
|
|
48
|
+
| Electronics | 40 | 18 | 45 |
|
|
49
|
+
| Other | 18 | 10 | 56 |
|
|
50
|
+
| Total | 310 | 214 | 69 |
|
|
51
|
+
|
|
52
|
+
Source: Example Community Trust event log, 16 May 2026 (sample)
|
|
53
|
+
|
|
54
|
+
## Why libraries
|
|
55
|
+
|
|
56
|
+
Branch libraries already have a meeting room, step-free access and a Saturday opening, and three of the four sit next to a bus interchange. The library service has agreed to host the cafés as part of its programme of community events, which also means the cafés appear in the library's printed and online calendar at no cost.
|
|
57
|
+
|
|
58
|
+
Four partners take part. The trust runs the network and employs the coordinator; the library service hosts the cafés and lists them in its calendar; about 40 volunteer fixers, trained in safe electrical repair, do the repairs; and the district's waste and recycling team weighs and records the items saved, so that the tonnage reported at the end uses the same method as the district's own waste statistics.
|
|
59
|
+
|
|
60
|
+
# Budget and plan
|
|
61
|
+
|
|
62
|
+
## Budget
|
|
63
|
+
|
|
64
|
+
The request covers eighteen months of running costs. Half of it pays the part-time coordinator who keeps the volunteer rota, the café calendar and the item log; the rest buys tools and spare parts, trains the fixers in safe repair, insures the sessions and pays for the publicity and the external evaluation. The libraries give the rooms at no cost, so no rent appears in the table.
|
|
65
|
+
|
|
66
|
+
Table 2. Budget over eighteen months (sample data)
|
|
67
|
+
|
|
68
|
+
| Item | Detail | Amount (€) |
|
|
69
|
+
| --- | --- | ---: |
|
|
70
|
+
| Coordinator | 0.5 FTE for 18 months | 48,000 |
|
|
71
|
+
| Tools and spare parts | Four tool kits, consumables | 17,500 |
|
|
72
|
+
| Volunteer training | Safety and repair courses | 9,800 |
|
|
73
|
+
| Insurance | Public liability, 18 months | 6,200 |
|
|
74
|
+
| Publicity | Posters, leaflets, signage | 4,500 |
|
|
75
|
+
| Evaluation | External review in months 16-18 | 10,000 |
|
|
76
|
+
| Total | | 96,000 |
|
|
77
|
+
|
|
78
|
+
Source: supplier quotes and insurer offer, September 2026 (sample)
|
|
79
|
+
|
|
80
|
+
## How a café runs
|
|
81
|
+
|
|
82
|
+
Each café opens from 10:00 to 13:00 on a fixed Saturday of the month. Visitors register their item at the door and wait with a coffee; a host matches them with a fixer for that category, and the visitor stays to watch and learn. Electrical items are tested for safety after every repair. Items that cannot be fixed on the day get a note on what part is needed and where to find it.
|
|
83
|
+
|
|
84
|
+
::: columns 2
|
|
85
|
+
### Months 1 to 3
|
|
86
|
+
|
|
87
|
+
Hire the coordinator, recruit and train the first 24 volunteers, buy tools for two libraries, and open the first two cafés in April.
|
|
88
|
+
|
|
89
|
+
### Months 4 to 9
|
|
90
|
+
|
|
91
|
+
Open the third and fourth cafés in June, add a second training round, and start the monthly weighing and reporting with the waste team.
|
|
92
|
+
|
|
93
|
+
<!-- column-break -->
|
|
94
|
+
|
|
95
|
+
### Months 10 to 15
|
|
96
|
+
|
|
97
|
+
Run all four cafés monthly, add a bicycle corner at the two libraries with outdoor space, and train three volunteers as café leads.
|
|
98
|
+
|
|
99
|
+
### Months 16 to 18
|
|
100
|
+
|
|
101
|
+
Carry out the evaluation, publish the results, and agree with the library service how the network continues without project funding.
|
|
102
|
+
:::
|
|
103
|
+
|
|
104
|
+
# Outcomes and evaluation
|
|
105
|
+
|
|
106
|
+
The pilot will count repairs, weigh the items saved, and survey visitors at every café. The external evaluation will compare the cost per repaired item with the cost of collecting and disposing of the same weight of waste, and will report what volunteers and visitors say they learned.
|
|
107
|
+
|
|
108
|
+
Table 3. Pilot measures and how they are counted (sample data)
|
|
109
|
+
|
|
110
|
+
| Measure | Expected over the pilot | Counted by |
|
|
111
|
+
| --- | ---: | --- |
|
|
112
|
+
| Café sessions | 60 | Library events calendar |
|
|
113
|
+
| Items brought | 3,000 | Registration sheet at the door |
|
|
114
|
+
| Items repaired | 2,000 | Fixer's note on each item |
|
|
115
|
+
| Weight kept out of disposal (t) | 6.4 | Waste team scales |
|
|
116
|
+
| Trained volunteer fixers | 40 | Training records |
|
|
117
|
+
| Funding per repaired item (€) | 48 | Total request over items repaired |
|
|
118
|
+
|
|
119
|
+
Source: Example Community Trust pilot plan (sample)
|
|
120
|
+
|
|
121
|
+
Besides the disposal cost, the evaluation will set the funding per repaired item, about €48, against the price of replacing each kind of item new, which for small appliances is usually higher.
|
|
122
|
+
|
|
123
|
+
The main risk is volunteer turnover. The plan trains more fixers than the cafés need at any one time and names three café leads by month fifteen, so that the network does not depend on the coordinator alone when the funding ends.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 사내 전산망 정기 점검 안내
|
|
3
|
+
subtitle: 2026년 11월 8일(토) 작업 시간과 부서별 준비 사항
|
|
4
|
+
author: 예시 기관 정보보안팀
|
|
5
|
+
organization: 예시 기관
|
|
6
|
+
date: 2026-10-20
|
|
7
|
+
short_title: 전산망 정기 점검 안내
|
|
8
|
+
notice: "예시 안내문: 일정과 시스템 이름은 모두 가정입니다"
|
|
9
|
+
tonality: Memo
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
::: cover variant=masthead kicker="안내"
|
|
13
|
+
받는 사람: 전 직원, 지역 사무소 포함 · 보내는 사람: 정보보안팀 · 제목: 11월 8일 전산망 정기 점검과 시스템 중단
|
|
14
|
+
:::
|
|
15
|
+
|
|
16
|
+
# 점검 개요
|
|
17
|
+
|
|
18
|
+
정보보안팀은 11월 8일 토요일 08시부터 18시까지 본사와 지역 사무소 세 곳의 전산망을 정기 점검한다. 이번 점검에서는 방화벽 장비 교체, 무선망 인증 서버 갱신, 백업 저장소 이전을 한꺼번에 진행한다. 작업 시간에는 사내 메일, 전자결재, 인사 시스템, 사내 무선망을 비롯한 사내 시스템 여섯 가지를 쓸 수 없다(표 1).
|
|
19
|
+
|
|
20
|
+
토요일 근무가 있는 부서는 업무 계획을 미리 조정해야 한다. 휴대전화는 그대로 쓸 수 있다. 지난해에는 토요일 근무 부서 두 곳이 안내를 늦게 확인해 오전 내내 결재와 메일을 쓰지 못했으므로, 이번에는 부서장이 목요일까지 근무 인원에게 직접 알려 주기를 부탁한다. 외부 고객이 쓰는 누리집과 민원 접수 창구는 별도 회선이라 영향이 없지만, 사내망에서만 열리는 누리집 관리자 화면은 같은 시간 동안 접속할 수 없다.
|
|
21
|
+
|
|
22
|
+
# 시스템별 중단 시간
|
|
23
|
+
|
|
24
|
+
표 1. 시스템별 사용 중단 시간 (2026년 11월 8일, 예시)
|
|
25
|
+
|
|
26
|
+
| 시스템 | 중단 시작 | 재개 예정 | 비고 |
|
|
27
|
+
| --- | --- | --- | --- |
|
|
28
|
+
| 사내 메일 | 08:00 | 14:00 | 외부 수신 메일은 재개 후 순서대로 도착 |
|
|
29
|
+
| 전자결재 | 08:00 | 16:00 | 결재 기한이 그날인 문서는 금요일까지 처리 |
|
|
30
|
+
| 인사·급여 시스템 | 08:00 | 18:00 | 근태 기록은 월요일에 일괄 반영 |
|
|
31
|
+
| 사내 무선망 | 10:00 | 17:00 | 유선 연결은 사용 가능 |
|
|
32
|
+
| 원격 접속(가상사설망) | 08:00 | 18:00 | 재택 근무자 접속 불가 |
|
|
33
|
+
| 공용 파일 저장소 | 12:00 | 18:00 | 백업 저장소 이전 작업 |
|
|
34
|
+
|
|
35
|
+
출처: 정보보안팀 작업 계획서(2026년 10월 확정)
|
|
36
|
+
|
|
37
|
+
재개 시각은 작업 상황에 따라 최대 두 시간 늦어질 수 있으며, 실제 시각은 사내 게시판 첫 화면과 문자 알림으로 알린다.
|
|
38
|
+
|
|
39
|
+
# 부서별 준비 사항
|
|
40
|
+
|
|
41
|
+
토요일 근무 부서는 11월 6일 목요일까지 근무 인원과 필요한 시스템을 정보보안팀에 알린다. 꼭 필요한 업무가 있으면 임시 계정이나 대체 수단을 마련해 주고, 결재 기한과 근태 기록은 표 1의 비고대로 처리하면 따로 신청할 일이 없다.
|
|
42
|
+
|
|
43
|
+
재택 근무자는 그날 원격 접속이 되지 않는다. 필요한 파일은 금요일 퇴근 전에 업무용 노트북에 내려받아 두되, 개인정보가 들어 있는 파일은 내려받지 않는다. 인증서 안내 창은 2분이면 끝난다.
|
|
44
|
+
|
|
45
|
+
컴퓨터와 프린터는 켜 둔다. 점검 중에 설치되는 보안 업데이트를 놓치면 월요일 아침 한꺼번에 내려받느라 컴퓨터가 한 시간가량 느려진다. 문의는 내선 3310으로 한다.
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# Page composition
|
|
2
|
+
|
|
3
|
+
A document is judged page by page. A reader who turns to a page that is half empty, or that ends with
|
|
4
|
+
a heading whose text is overleaf, or that shows the top of a table and leaves its last two rows for
|
|
5
|
+
the next page, reads the document as unfinished, whatever its content. The same reader reads a page
|
|
6
|
+
with coloured headings, tinted boxes and a figure tile on every spread as machine-made. This file says
|
|
7
|
+
how a page is filled at the density the user asked for, what the converter already does to keep pages
|
|
8
|
+
whole and quiet, what the gate measures, and how to fix each failure in the Markdown source. Shrinking
|
|
9
|
+
type, squeezing leading or loosening a gate threshold is never the fix.
|
|
10
|
+
|
|
11
|
+
## Density by default
|
|
12
|
+
|
|
13
|
+
The user's standing preference is high density: pages carry information to the bottom and there are
|
|
14
|
+
no airy layouts unless the user asks for one. Every pack's default density is between 8 and 9 (Report
|
|
15
|
+
9, Brief 9, Manual 9, Proposal 8, Memo 9, Journal 9), and body pages aim at a median fill of 0.80
|
|
16
|
+
(0.75 in a Proposal, because a proposal may give a page to a figure). The skill may move density by up to 2
|
|
17
|
+
from the pack default without asking and writes the move on the direction card; going below 7 needs
|
|
18
|
+
the user's word.
|
|
19
|
+
|
|
20
|
+
Density comes from three things: the measure, the leading and the structure. The measure is an A4 page
|
|
21
|
+
with 25 mm side margins, a text block of 160 mm, wide enough for a full line of Korean or English
|
|
22
|
+
prose without the eye losing its place. The leading is calibrated on rendered pages (next section).
|
|
23
|
+
The structure is sections that carry their own tables and lists, so the page holds evidence rather
|
|
24
|
+
than space. Density never comes from type under 10.5 pt, from side margins under 25 mm, or from boxes
|
|
25
|
+
packed with text; a page made dense that way is hard to read and looks crowded.
|
|
26
|
+
|
|
27
|
+
## Leading, calibrated
|
|
28
|
+
|
|
29
|
+
Line pitch is the distance from one baseline to the next, given as a share of the type size. Hangul
|
|
30
|
+
needs more of it than Latin because its syllable blocks fill the whole em square: a Korean body reads
|
|
31
|
+
well at a pitch of 175-185 % of the size, a Latin body at 130-140 %.
|
|
32
|
+
|
|
33
|
+
Word does not take the pitch directly. It takes a "multiple" of the face's single line, and a single
|
|
34
|
+
line of Pretendard is not 1.0 em: measured on rendered pages it is 1.55 em in Word and 1.51 em in
|
|
35
|
+
LibreOffice. The converter uses the mean of the two, so the Word multiple is the pitch divided by
|
|
36
|
+
1.53. A Korean body at 175 % is set at a multiple of about 1.14; an English body at 133 % at about
|
|
37
|
+
0.87. A multiple of 1.5 or 1.6 copied from a style guide written for another face gives a pitch near
|
|
38
|
+
240 %, and the page turns to stripes of white. Times New Roman (Journal's Latin body) has a single
|
|
39
|
+
line of about 1.15 em and is computed the same way. A paragraph that holds a picture is single spaced
|
|
40
|
+
so the picture does not float in an oversized line.
|
|
41
|
+
|
|
42
|
+
| Density | Margins top / bottom / left / right (mm) | Text block width (mm) | Body size | Pitch Korean / English | Word multiple Korean / English |
|
|
43
|
+
|---|---|---|---|---|---|
|
|
44
|
+
| 1-2 | 30 / 32 / 30 / 30 | 150 | pack + 0.5 pt | 185 % / 140 % | 1.21 / 0.92 |
|
|
45
|
+
| 3-4 | 28 / 30 / 28 / 28 | 154 | pack + 0.5 pt at 3, pack at 4 | 185 % / 140 % | 1.21 / 0.92 |
|
|
46
|
+
| 5-6 | 27 / 29 / 27 / 27 | 156 | pack | 180 % / 137 % | 1.18 / 0.90 |
|
|
47
|
+
| 7 | 26 / 28 / 26 / 26 | 158 | pack | 180 % / 137 % | 1.18 / 0.90 |
|
|
48
|
+
| 8 | 26 / 28 / 26 / 26 | 158 | pack | 175 % / 133 % | 1.14 / 0.87 |
|
|
49
|
+
| 9 | 25 / 27 / 25 / 25 | 160 | pack | 175 % / 133 % | 1.14 / 0.87 |
|
|
50
|
+
| 10 | 24 / 26 / 25 / 25 | 160 | pack | 175 % / 133 % | 1.14 / 0.87 |
|
|
51
|
+
|
|
52
|
+
The bottom margin is never smaller than the top. Body text never goes under 10.5 pt (Proposal and
|
|
53
|
+
Memo set English at 11 pt); table text is 9.5 pt at a 140 % pitch. Paragraphs part by 6 pt of space
|
|
54
|
+
(5 pt in English) and never by space and a first-line indent together. Korean body text is justified;
|
|
55
|
+
Latin body text is ragged right.
|
|
56
|
+
|
|
57
|
+
**Hangul line breaks.** Word, with word wrap on and the eastAsia language set to ko-KR (every pack's
|
|
58
|
+
styles carry both), breaks Korean lines between words (어절). LibreOffice ignores that setting and
|
|
59
|
+
breaks between syllables, so a LibreOffice preview, including the page images `visual_audit.py` and
|
|
60
|
+
the `--layout` gate render, shows words split across lines. That is expected and is not a defect in
|
|
61
|
+
the document; check line breaks in Word when they matter, and judge fill and pagination from the
|
|
62
|
+
preview, which runs slightly shorter than Word.
|
|
63
|
+
|
|
64
|
+
## What the converter already does
|
|
65
|
+
|
|
66
|
+
- Every heading keeps with the next paragraph, and a paragraph under a heading that is shorter than
|
|
67
|
+
about two lines keeps with what follows it, so a heading always carries some of its section. Space
|
|
68
|
+
above a heading is about twice the space below it.
|
|
69
|
+
- No h1 forces a page break. A new part starts where the last one ended; a page that ends early
|
|
70
|
+
because a part ended is a short page and is fixed in the source (below).
|
|
71
|
+
- A table caption (`<표 1>` / `Table 1.`) keeps with its table; an image caption keeps with its image.
|
|
72
|
+
A Korean source may write the caption as `표 1. 제목`; the converter sets it as `<표 1> 제목`, moves a
|
|
73
|
+
unit shared by the numeric headers to a right-aligned `(단위: …)` line above the table, and writes
|
|
74
|
+
`출처:` lines as `자료:`, after any `주:` line.
|
|
75
|
+
- A table estimated to fit in nine tenths of the text frame keeps its rows on one page; a longer one
|
|
76
|
+
(header and six or more body rows) may break between rows with its header repeated and three body
|
|
77
|
+
rows on each side.
|
|
78
|
+
- Text under a table stands 8 pt clear of its bottom rule; a `주:` or `자료:` line stands 3 pt clear.
|
|
79
|
+
- A closing paragraph of up to about four lines keeps the paragraph before it company, so the last
|
|
80
|
+
page never holds one orphaned paragraph.
|
|
81
|
+
- A list of up to six items keeps together: every item but the last keeps with the next, and a
|
|
82
|
+
lead-in of a line or two right before it ("다음 단계는 아래와 같다.") keeps with the list. In a
|
|
83
|
+
column body a list of five or six items keeps its lead-in with its first two items and its last two
|
|
84
|
+
items together, and may break once between them: moved whole, it left the column before it a third
|
|
85
|
+
empty.
|
|
86
|
+
- The last section of a single-column document, when it has no table or picture and comes to about
|
|
87
|
+
twelve lines or fewer, keeps whole, so its paragraph travels with its list to the last page instead of
|
|
88
|
+
leaving the list and a closing line alone there.
|
|
89
|
+
- In a column body (Journal) a `자료:` or `주:` line under a page-wide table spans with the table, so the
|
|
90
|
+
heading after it opens the column section with its first lines; the column body ends with a continuous
|
|
91
|
+
section break, so the last page sets its columns to an even depth instead of one column beside an
|
|
92
|
+
empty one (its last paragraph may break across the two columns).
|
|
93
|
+
- A heading whose first paragraph opens a table keeps both with the table (and its caption and units
|
|
94
|
+
line), so the heading and its sentence never wait at a page foot.
|
|
95
|
+
- A source of about one page (by the converter's estimate) is set with tight spacing in any
|
|
96
|
+
tonality, as a memo is, so it does not spill a few lines onto a second page.
|
|
97
|
+
- A section that opens under a hairline right after a ruled box draws no second rule.
|
|
98
|
+
- Table columns: no column narrower than its longest word; a text column that wraps while the others
|
|
99
|
+
hold their longest cell with room to spare takes that room when it is enough to set its longest
|
|
100
|
+
cell on one line. Negative figures in tables take the minus sign (−), Korean tables too. A sentence
|
|
101
|
+
right above a table without a caption keeps 6 pt under itself.
|
|
102
|
+
- Under a publisher profile the paragraph after a table stands three quarters of a body line clear,
|
|
103
|
+
a paragraph after a list 6 pt, and a list of up to six items keeps together.
|
|
104
|
+
- Callouts keep their paragraphs together; a sidebar's row cannot split.
|
|
105
|
+
- Figures are scaled to the container width and at most the pack's share of the frame height
|
|
106
|
+
(0.40-0.45, Proposal 0.60).
|
|
107
|
+
|
|
108
|
+
The converter does not lay pages out, so these are instructions to the renderer. The rendered pages
|
|
109
|
+
are the evidence.
|
|
110
|
+
|
|
111
|
+
## What the gate measures
|
|
112
|
+
|
|
113
|
+
`qa_docx.py --layout` renders the document and adds page checks to the structural gate. Each one fails
|
|
114
|
+
the gate on a tonality document:
|
|
115
|
+
|
|
116
|
+
| Check | Rule |
|
|
117
|
+
|---|---|
|
|
118
|
+
| `fill.page` | no body page has less than 0.35 of its frame height filled (from the top of the frame to the lowest ink), except the last page and a cover page |
|
|
119
|
+
| `heading.stranded` | no page ends with a heading line |
|
|
120
|
+
| `page.spill` | a two-page document fills its second page to at least 0.4 of the frame, and no document ends on a page filled under an eighth (a paragraph or two) |
|
|
121
|
+
| `list.split` | a list of up to six items stands on one page and in one column; in a column body a list of five or six may break once, two items or more on each side |
|
|
122
|
+
| `heading.apart` | a heading and its lead sentence stand on the page where the table they open starts |
|
|
123
|
+
| `heading.column` | in a column body a heading never ends a column while its first lines open the next one |
|
|
124
|
+
| `columns.balance` | in a column body no column stops a quarter of the frame short (under 0.75) beside one that runs to the foot, and the last page sets its columns to about the same depth (the shorter at least half the longer) |
|
|
125
|
+
| `notice.dash` | the frontmatter notice joins its label and line with a colon (`예시 데이터: …`), not a spaced dash (structural; FAIL on a tonality run, advice on the plain and publisher paths) |
|
|
126
|
+
| `table.split` | a table that fits in one frame is on one page and with its caption, except a long table (header and six or more body rows) that breaks between rows with its header repeated, three or more body rows on each side, where moving it whole would leave the page under 0.75 filled; a key-figure, callout or sidebar box is never split |
|
|
127
|
+
| `title.lines` | the title takes at most three lines (the converter balances it and steps the size down) |
|
|
128
|
+
| `folio.total` | a "page / total" folio counts the pages the reader has |
|
|
129
|
+
| `sidebar.overlap` | a floating sidebar ends before the next heading starts beside it |
|
|
130
|
+
| `heading.wrap` | the title, the subtitle and every heading break between words, never inside one (제/안서); the converter sets title lines at word boundaries itself |
|
|
131
|
+
| `figure.split` | an image and its caption are on the same page |
|
|
132
|
+
| `heading.order` | heading levels never skip downward (h1 to h3 with no h2); the first heading is h1 or h2 |
|
|
133
|
+
| `component.variety` | a document of four or more pages built with a tonality uses at least two component kinds (a cover or title-block directive counts) |
|
|
134
|
+
| `heading.declarative` | headings, the title and the subtitle are noun-phrase labels, not sentences (structural; runs without `--layout` too) |
|
|
135
|
+
|
|
136
|
+
The median fill is reported (`fill_median`), not failed. A page found by a check is named
|
|
137
|
+
with its number; open that page before changing anything.
|
|
138
|
+
|
|
139
|
+
### The restraint checks (A4.11)
|
|
140
|
+
|
|
141
|
+
These read the Word file itself. They fail a tonality document and are advice on the plain and
|
|
142
|
+
publisher paths, except `date.iso`, which holds everywhere. Most of them catch something the
|
|
143
|
+
converter no longer produces on its own, so a failure usually means a hand-made directive attribute,
|
|
144
|
+
an edited template or an old source pattern.
|
|
145
|
+
|
|
146
|
+
| Check | What it catches | Fix in the Markdown |
|
|
147
|
+
|---|---|---|
|
|
148
|
+
| `color.accent-kinds` | more than one hue outside the ink, or the accent on more than two element kinds (figures aside) | remove colour from the source: no coloured spans, no HTML colour, no attribute that asks for a colour; the pack's accent is already placed |
|
|
149
|
+
| `heading.ink` | a heading set in colour | drop the colour from the heading; levels part by weight and space |
|
|
150
|
+
| `heading.ratio` | an h1 more than 1.5 times the body size | remove any size override on headings; the pack ramp (h1 about 1.4×) is the size |
|
|
151
|
+
| `table.fill` | a shaded data-table cell, or a component tint darker than L 95 % | remove cell shading and zebra rows; tables are booktabs, three rules and a bold ink header |
|
|
152
|
+
| `component.budget` | more than three component kinds, more than one key-figure strip, any pull quote, or key figures on the cover | delete the `::: pullquote`, merge or drop the second `::: keyfigures`, move key figures from `::: cover` into the summary, and cut the kind with the weakest purpose on the direction card |
|
|
153
|
+
| `cover.block` | a filled shape over more than 25 % of the cover page | use `variant=typographic` (or `masthead`) and no picture on the cover unless the user supplied one |
|
|
154
|
+
| `furniture.chip` | a coloured or shaded notice in a page header | keep the sample-data line in frontmatter `notice:`; it prints once under the title block, and nothing goes in the header by hand |
|
|
155
|
+
| `date.iso` | an ISO date (2026-06-30) in the text of a Korean document | write `2026. 6. 30.` or `2026년 6월 30일` in body text, captions and tables; the frontmatter `date:` may stay ISO, the converter rewrites it |
|
|
156
|
+
| `tonality.structure` | two tonalities of one source that differ in fewer than three structural features (title block, summary form, numbering, component set, running head, contents) | run `qa_docx.py a.docx --compare b.docx`; if it fails, the alternative is the wrong one to offer, or the source flattens the difference (a Brief summary written as one long paragraph cannot become numbered points) |
|
|
157
|
+
|
|
158
|
+
## Fixing a short page
|
|
159
|
+
|
|
160
|
+
A page under 0.35, or a run of pages under the 0.80 median, almost always has one of four causes.
|
|
161
|
+
Find which on the rendered page, then fix the source.
|
|
162
|
+
|
|
163
|
+
1. **A large block jumped to the next page.** A table or figure that did not fit under the text left
|
|
164
|
+
the page short. Move the block earlier, to a point where it starts a page or fits; split a long
|
|
165
|
+
table at a natural group (by region, by quarter) into two captioned tables; or shorten its cells by
|
|
166
|
+
moving explanations into the sentence after it.
|
|
167
|
+
2. **A part ended early.** The page holds the end of one part and nothing else because the next part
|
|
168
|
+
opens with a long block. Put the next part's opening sentences first, so text fills the space and
|
|
169
|
+
the block follows.
|
|
170
|
+
3. **The content is thin.** A section that says two sentences where the reader needs the basis. Add
|
|
171
|
+
what is missing from the sources: the table that backs a claim, the definitions the method relies
|
|
172
|
+
on, a `자료:` or Source line. Never add filler sentences and never add a box to take up room.
|
|
173
|
+
4. **The density is lower than the material.** Raise density one step. This is the last resort.
|
|
174
|
+
|
|
175
|
+
## Fixing a stranded heading
|
|
176
|
+
|
|
177
|
+
The converter keeps headings with their next paragraph, so a stranded heading usually follows a
|
|
178
|
+
component or a table: the heading is the last line of the page and the block after it moved over.
|
|
179
|
+
Put one or two sentences of text between the heading and the block; the claim the heading only names
|
|
180
|
+
belongs there anyway.
|
|
181
|
+
|
|
182
|
+
## Fixing a split table or figure
|
|
183
|
+
|
|
184
|
+
- Shorten the table: fewer columns (six at most), shorter cells, units in the header.
|
|
185
|
+
- Move it so it starts a page, or put the paragraph that reads it before it rather than after.
|
|
186
|
+
- For a table that is genuinely longer than a page, split it into two captioned tables at a natural
|
|
187
|
+
group; the gate measures each.
|
|
188
|
+
- A figure split from its caption is a figure too tall for the space left: reduce its height in the
|
|
189
|
+
source image's proportions, or place it at a page start.
|
|
190
|
+
|
|
191
|
+
## Heading order and labels
|
|
192
|
+
|
|
193
|
+
Number the outline before writing: `#` parts, `##` sections, `###` items, three levels at most. Never
|
|
194
|
+
jump from `#` to `###`. Leave at least one paragraph between an h1 and its first h2. Every heading, the
|
|
195
|
+
title and the subtitle are noun phrases ("1년 운영 결과", "Cost per order by site"), never declarative
|
|
196
|
+
sentences ("1년 동안 목표를 달성했다", "Costs fell at every site"); the claim goes in the first
|
|
197
|
+
sentence under the heading. A question is allowed when the section answers it. No glyph markers
|
|
198
|
+
(■ ✓ ▶) in headings or list heads, and no zero-padded numerals; the pack numbers the headings.
|
|
199
|
+
|
|
200
|
+
## Component variety and budget
|
|
201
|
+
|
|
202
|
+
A document of four pages or more needs two component kinds for `component.variety`, and no document
|
|
203
|
+
may use more than three. Both limits are met by planning components from the content: a cover or
|
|
204
|
+
title-block directive and a callout for the decision request, or key figures in the summary and the
|
|
205
|
+
callout. Each planned component has a one-line purpose on the direction card, the out-of-sequence
|
|
206
|
+
content it carries. A component that carries nothing is worse than none; the check counts kinds, a
|
|
207
|
+
reader judges content. A short document (a memo, a two-page brief) needs no component at all.
|
|
208
|
+
|
|
209
|
+
## Numbers on the page
|
|
210
|
+
|
|
211
|
+
Key figures sit at the h2 size with a label and a basis line, once, in the summary. Numbers in tables
|
|
212
|
+
are right-aligned, with units in the header or the `(단위: …)` line and a source line under the
|
|
213
|
+
table. The figures in the summary, the strip and the tables agree with each other and are rounded
|
|
214
|
+
honestly. No figure is set larger to fill a page.
|
|
215
|
+
|
|
216
|
+
## Typeface
|
|
217
|
+
|
|
218
|
+
Pretendard is the default face for every pack and the plain profile, for Latin and Hangul, headings
|
|
219
|
+
and body. Journal sets Latin body text in Times New Roman and everything else in Pretendard. The
|
|
220
|
+
document declares its faces but does not embed them; the rendering machine needs Pretendard installed,
|
|
221
|
+
and a substituted face changes line breaks and therefore page fill.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Brief
|
|
2
|
+
|
|
3
|
+
Brief is the briefing written for a person who has to decide something today: one to three pages,
|
|
4
|
+
conclusion first. The reader takes in the decision request under the title, reads three or four
|
|
5
|
+
numbered points that each open with a bold sentence, checks one table, and stops. Everything on the
|
|
6
|
+
page serves that single pass. The look is plain: near-black headings that part from the text by
|
|
7
|
+
weight and by a full-width ink hairline above each section, one deep green rule under the title block,
|
|
8
|
+
one request between two green rules, and the folio alone at the foot. Nothing is
|
|
9
|
+
shaded, numbered for show or repeated in a header.
|
|
10
|
+
|
|
11
|
+
## When to use it
|
|
12
|
+
|
|
13
|
+
Choose Brief for 현황 보고, 검토 보고, 결과 보고 for an executive, a decision request with options, a
|
|
14
|
+
one-page incident summary, a pre-meeting note, or any document under about three pages whose reader
|
|
15
|
+
decides rather than studies. It is the first candidate for the itemised briefing type and the second
|
|
16
|
+
for reports and proposals. It moves up when the source is under about 900 words, when the brief says
|
|
17
|
+
"한두 장", or when the request names a decision maker and a date. It is also the right home for a
|
|
18
|
+
Korean 개조식 briefing: write the lines yourself under the unnumbered sections when the user asks for
|
|
19
|
+
that form.
|
|
20
|
+
|
|
21
|
+
## When it is the wrong choice
|
|
22
|
+
|
|
23
|
+
- More than three pages, or sections that need running paragraphs to argue a point: use Report.
|
|
24
|
+
- A notice or a letter addressed to many people: Memo's To / From / Date / Subject block is the right
|
|
25
|
+
shape.
|
|
26
|
+
- A proposal asking for approval of money and a schedule: Proposal carries the cover, the budget table
|
|
27
|
+
and the decision box.
|
|
28
|
+
- A procedure: Manual.
|
|
29
|
+
|
|
30
|
+
## Structure
|
|
31
|
+
|
|
32
|
+
Brief differs from Report in its title block, its summary form, its numbering, its running head and
|
|
33
|
+
its absence of contents, which keeps any two renders of one source clearly apart
|
|
34
|
+
(`qa_docx.py a.docx --compare b.docx`, check `tonality.structure`).
|
|
35
|
+
|
|
36
|
+
- **Page 1: a compact title block, then the decision.** The label and date line, the title, the
|
|
37
|
+
subtitle, the byline, one green rule and the notice once in small muted text. Directly under it
|
|
38
|
+
stands the decision request: the first `::: callout kind=key` in the source is moved there wherever
|
|
39
|
+
it was written. `variant=` on a cover is accepted and ignored; Brief has no cover page.
|
|
40
|
+
- **Summary form: numbered points.** The paragraphs of the first section become points ① ② ③ ④. The
|
|
41
|
+
first sentence of each paragraph is set bold as its lead, the rest stays plain. Write the summary as
|
|
42
|
+
three or four short paragraphs, each opening with a complete sentence that carries the point (the
|
|
43
|
+
situation, the number that matters, the option recommended, what is asked). A fifth paragraph stays
|
|
44
|
+
unnumbered.
|
|
45
|
+
- **Numbering.** Sections are unnumbered. Each h1 opens under a full-width ink hairline, which is how
|
|
46
|
+
a reader finds the next part without numerals.
|
|
47
|
+
- **Components and their purpose.** Two kinds are allowed: `callout` (one box at most, the decision
|
|
48
|
+
request, because that is the one thing the reader must not miss) and `columns` (two options of
|
|
49
|
+
nearly equal length set side by side for comparison). Brief has no key-figure strip; the numbers live
|
|
50
|
+
in the points and in the one table. Key figures written in a cover stay out, with a note on stdout,
|
|
51
|
+
so state those numbers in the summary text as well.
|
|
52
|
+
- **Tables.** One small booktabs table per part at most, `<표 n>` above, `(단위: …)` when the numeric
|
|
53
|
+
columns share a unit, `주:` then `자료:` below.
|
|
54
|
+
- **Running head.** The folio alone at the foot, right, from page 2. No header, no short title.
|
|
55
|
+
- **Contents.** None; a briefing is too short to need one.
|
|
56
|
+
|
|
57
|
+
## Tokens
|
|
58
|
+
|
|
59
|
+
Values at the pack default (density 9, variance 3), from `templates/tonalities/brief.yaml`.
|
|
60
|
+
|
|
61
|
+
| Token | Value |
|
|
62
|
+
|---|---|
|
|
63
|
+
| Paper, margins | A4; top 25, bottom 27, left 25, right 25 mm; text block 160 mm |
|
|
64
|
+
| Body | Pretendard 10.5 pt; Korean justified, English ragged right |
|
|
65
|
+
| Line pitch | Hangul 175 % (Word multiple 1.14), Latin 133 % (0.87) |
|
|
66
|
+
| Paragraph spacing | 6 pt after (5 pt English), no indent |
|
|
67
|
+
| Scale | h1 13.5 pt (1.3x), h2 12 pt (1.15x), h3 10.5 pt bold; title 26.5 pt (2.5x) |
|
|
68
|
+
| h1 | unnumbered, under a full-width 0.5 pt ink hairline; 22 pt above, 9 pt below |
|
|
69
|
+
| Ink | body and headings `#1A1A1A`; muted `#555555`; rules `#8C8C8C` |
|
|
70
|
+
| Accent | green `2D5A47`, on the title rule and the callout rule only |
|
|
71
|
+
| Tables | booktabs, 9.5 pt, header bold, numbers right-aligned |
|
|
72
|
+
| Running head | folio only, footer right, 8.5 pt muted |
|
|
73
|
+
| Components | callout (one at most), columns |
|
|
74
|
+
| Figures | at most 0.40 of the frame height |
|
|
75
|
+
| Fill | no body page under 0.35 except the last (`fill.page`) |
|
|
76
|
+
|
|
77
|
+
**Dials.** Density 9 is the pack's working point. Density 10 closes the top margin to 24 mm, which buys
|
|
78
|
+
a few lines for a brief that spills onto an extra page; cutting a sentence is usually better. Density 7
|
|
79
|
+
opens the margins to 27/29/27/27 mm with a 180 % Hangul pitch, for a brief that will be printed and
|
|
80
|
+
annotated. Variance changes nothing visible: the one-box limit holds at every setting.
|
|
81
|
+
|
|
82
|
+
## Worked source
|
|
83
|
+
|
|
84
|
+
```markdown
|
|
85
|
+
::: cover kicker="검토 보고"
|
|
86
|
+
:::
|
|
87
|
+
|
|
88
|
+
# 요약
|
|
89
|
+
|
|
90
|
+
3분기 민원 처리 기간이 평균 4.2일로 목표 3일을 넘었다. 접수 창구가 둘로 나뉜 뒤 이관 대기가 길어진 것이 주된 원인이다.
|
|
91
|
+
|
|
92
|
+
담당 인력 2명이 결원 상태다. 9월 이후 1인당 처리 건수가 18% 늘었다(예시).
|
|
93
|
+
|
|
94
|
+
온라인 접수 일원화와 임시 인력 2명 배치를 함께 추진하는 안이 가장 빠르다. 두 조치를 합치면 처리 기간을 3일 안으로 줄일 수 있다고 본다.
|
|
95
|
+
|
|
96
|
+
::: callout kind=key title="결정 요청"
|
|
97
|
+
온라인 접수 일원화와 임시 인력 2명 배치를 10월 운영 회의에서 승인해 주시기 바랍니다.
|
|
98
|
+
:::
|
|
99
|
+
|
|
100
|
+
# 처리 현황
|
|
101
|
+
|
|
102
|
+
표 1. 분기별 민원 처리 현황 (예시)
|
|
103
|
+
|
|
104
|
+
| 구분 | 2분기 | 3분기 |
|
|
105
|
+
|---|---|---|
|
|
106
|
+
| 접수 건수 | 1,020 | 1,180 |
|
|
107
|
+
| 평균 처리 기간 (일) | 3.1 | 4.2 |
|
|
108
|
+
|
|
109
|
+
자료: 민원 관리 시스템 (예시)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The callout moves above `# 요약` in the output, and the three summary paragraphs become ① ② ③ with
|
|
113
|
+
their first sentences bold. The frontmatter date prints in the label line in the Korean form
|
|
114
|
+
(`2026. 10. 2.`).
|
|
115
|
+
|
|
116
|
+
## Headings
|
|
117
|
+
|
|
118
|
+
| Use | Not |
|
|
119
|
+
|---|---|
|
|
120
|
+
| 민원 처리 지연 현황 | 민원 처리가 지연되고 있음 |
|
|
121
|
+
| 온라인 접수 일원화 방안 | 온라인 접수를 일원화해야 한다 |
|
|
122
|
+
| 건의 사항 | 다음과 같이 건의드립니다 |
|
|
123
|
+
|
|
124
|
+
Body lines may end in `-음/-함` when the user wants 개조식; headings, the title and the subtitle may not
|
|
125
|
+
end that way. `heading.declarative` reads every heading, the title and the subtitle.
|
|
126
|
+
|
|
127
|
+
## Numbers
|
|
128
|
+
|
|
129
|
+
A number sits inside its sentence with its unit and period. Estimates say (추정) or (예시); a figure a
|
|
130
|
+
reader cannot trace to a source does not go into a briefing. Korean bullets print as a plain dash, and
|
|
131
|
+
a list of one item becomes a plain paragraph.
|
|
132
|
+
|
|
133
|
+
## Failure patterns
|
|
134
|
+
|
|
135
|
+
- The decision request written at the end and not as a callout: write it as `kind=key` and the engine
|
|
136
|
+
lifts it to the top.
|
|
137
|
+
- Summary paragraphs that open with a fragment ("배경:") instead of a sentence, so the bold lead reads
|
|
138
|
+
as a label.
|
|
139
|
+
- A second callout: only the first by priority (decision request, then warning, then note) is boxed;
|
|
140
|
+
the others print as text under a bold lead line.
|
|
141
|
+
- Glyph markers (filled squares, check marks, arrows) typed into headings or list heads.
|
|
142
|
+
- A table split over two pages in a two-page brief (`table.split`); shorten the cells or move the
|
|
143
|
+
table up.
|