change table of contents design, add activity outline

This commit is contained in:
2026-09-05 09:44:49 +09:00
parent e657b76b52
commit 9045520b57
2 changed files with 212 additions and 148 deletions
+134 -77
View File
@@ -326,7 +326,7 @@
align(bottom)[
#hl[]
*활동 증빙 자료:*
#underline[#ref(label("Evidence) " + ca.name))]
#underline[#ref(label("evidence) " + ca.name))]
]
}
@@ -364,7 +364,7 @@
)[
#context {
let m = meta.get()
link((page: 1, x: 0pt, y: 0pt))[#m.cur_domain. #m.domain_name]
link((page: 2, x: 0pt, y: 0pt))[#m.cur_domain. #m.domain_name]
h(1fr)
if show_activity {
let ca = cur_activity()
@@ -441,17 +441,47 @@
]
}
// Table of contents templage function
#let table_of_contents() = page(
footer: footer_template(),
)[
#context {
let m = meta.get()
heading(level: 1, outlined: false, numbering: none)[#m.cur_domain. #m.domain_name]
}
// Table of contents template function
#let table_of_contents() = context {
let cp = color-palette.get()
let m = meta.get()
#outline(title: none, depth: 2)
]
page(
footer: footer_template(),
)[
#show outline.entry.where(level: 1): it => link(it.element.location())[
#block(above: 25pt)[
#grid(
columns: (1fr, auto),
align: horizon,
text(font: font-subhead, size: 15pt, weight: 700)[
#it.indented(it.prefix(), heading_text(it.body()))
],
text(size: 10pt, fill: color-ink-helper)[
#it.page()
],
)
#let desc = it.element.supplement
#if desc != [domain] and desc != [evidence] {
text(fill: color-ink-helper, size: 10pt)[
#it.element.supplement
]
}
#v(10pt)
#line(length: 100%, stroke: (paint: cp.accent-faint, thickness: 0.5pt))
]
]
#heading(level: 1, outlined: false, numbering: none)[#m.cur_domain. #m.domain_name]
#label("table_of_contents")
#outline(title: none, depth: 1)
]
}
// Domain frame template function
#let domain_frame(
@@ -477,7 +507,7 @@
#set text(fill: font_color)
#show strong: set text(fill: font_color)
#heading(level: 1)[
#heading(level: 1, supplement: [domain])[
#title
]
@@ -485,21 +515,29 @@
]
// Activity cover template function
#let activity_cover(name: "", hook: "", content) = page(
header: header_template(),
footer: footer_template(),
)[
#heading(level: 1)[
#name
]
#label(heading_text(name))
#let activity_cover(name: "", hook: "", content) = context {
let cp = color-palette.get()
#block_quote()[
#hook
]
page(
header: header_template(),
footer: footer_template(),
fill: cp.cover-surface,
)[
#show heading.where(level: 1): set block(above: 0em, below: 25pt)
#heading(level: 1, supplement: hook)[
#name
]
#label(heading_text(name))
#content
]
#block_quote()[
#hook
]
#v(25pt)
#content
]
}
// Activity intro template function
#let activity_intro(title: "", content) = page(
@@ -508,21 +546,81 @@
)[
#kicker("프로젝트 소개")
#heading(level: 2)[
#heading(level: 2, outlined: false)[
#title
]
#content
]
#let activity_table() = context {
let cp = color-palette.get()
let ca = cur_activity()
let level1s = query(heading.where(level: 1, outlined: true))
let n = counter(heading).get().at(0)
let sel = heading.where(level: 2, outlined: true).after(ca.location)
if n < level1s.len() {
sel = sel.before(level1s.at(n).location(), inclusive: false)
}
page(
header: header_template(show_activity: true),
footer: footer_template(),
)[
#show outline: it => [
#line(length: 100%, stroke: (paint: cp.accent-faint, thickness: 0.5pt))
#it
]
#show outline.entry.where(level: 2): it => link(it.element.location())[
#set par(
spacing: 1em,
)
#block(above: 15pt)[
#grid(
columns: (1fr, auto),
align: horizon,
text(size: 12pt, weight: 700)[
#it.body()
],
text(size: 8pt, fill: color-ink-helper)[
#it.page()
],
)
#let desc = it.element.supplement
#par(
spacing: 0pt,
leading: 0pt,
)[
#text(fill: color-ink-helper, size: 10pt)[
#it.element.supplement
]
]
#line(length: 100%, stroke: (paint: cp.accent-faint, thickness: 0.5pt))
]
]
#heading(level: 2, outlined: false)[
시행착오 목차
]
#outline(title: none, target: sel)
]
}
// Activity process
#let activity_process(title: "", content) = page(
#let activity_process(title: "", hook: [], content) = page(
header: header_template(show_activity: true),
footer: footer_template(),
)[
#kicker("시행착오")
#heading(level: 2)[
#heading(level: 2, supplement: hook)[
#title
]
@@ -551,9 +649,12 @@
header: header_template(),
footer: footer_template(),
)[
#set heading(numbering: (..nums) => {
numbering("A", nums.at(1))
})
#set heading(
numbering: (..nums) => {
numbering("A", nums.at(1))
},
supplement: [evidence],
)
#show heading.where(level: 2): it => {
let num = counter(heading).display(
(..nums) => numbering("A", nums.at(1)),
@@ -576,7 +677,7 @@
#let cnt = ed.len()
#for (name, data) in ed [
#heading(level: 2, supplement: "evidence")[#name]
#label("Evidence) " + name)
#label("evidence) " + name)
#table(
columns: (10em, 1fr),
@@ -719,50 +820,6 @@
fill: color-ink,
)
// outline config
set outline(
indent: 2em,
)
show outline: set par(leading: 1em)
show outline.entry: it => link(
it.element.location(),
)[
#grid(
columns: (1fr, auto),
it.indented(it.prefix(), heading_text(it.body())), it.page(),
)
]
show outline.entry.where(level: 1): it => {
set text(
font: font-subhead,
size: 15pt,
weight: 700,
)
block(above: 50pt)[
#it
#line(length: 100%, stroke: (paint: color-ink-secondary, thickness: 1pt))
]
}
show outline.entry.where(level: 2): it => {
set text(
font: font-body,
size: 12pt,
weight: 400,
fill: color-ink-secondary,
)
if it.element.supplement.text != "evidence" {
block(above: 20pt)[
#it
]
}
}
// render content
doc
}