More fixes

This commit is contained in:
2026-01-23 20:47:02 +07:00
parent e6ff2cf07a
commit 3b1d18b001
11 changed files with 274 additions and 212 deletions
+79 -10
View File
@@ -1,3 +1,12 @@
#let page-numbering(n) = {
let chars = ("ก", "ข", "ค", "ง", "จ", "ฉ", "ช")
if n <= chars.len() {
chars.at(n - 1)
} else {
str(n - chars.len()) // fallback to numbers if exceeds available characters
}
}
#let thai-numbering(n) = {
let chars = ("ก", "ข", "ค", "ง", "จ", "ฉ", "ช")
if n <= chars.len() {
@@ -5,6 +14,7 @@
} else {
str(n - chars.len()) // fallback to numbers if exceeds available characters
}
[)]
}
#let chapter-page(doc) = {
@@ -38,6 +48,26 @@
#let iiiiii = h(16.85em)
#let listy(
numbering: "1)",
indent: 1em,
hanging-indent: 0em,
body-spacing: .3em,
..items,
) = context {
let nums = range(1, items.pos().len() + 1)
let fnums = nums.map(std.numbering.with(numbering))
let numwidth = calc.max(..fnums.map(it => measure(it).width))
for (num, item) in fnums.zip(items.pos()) {
block(inset: (left: hanging-indent), {
h(indent - hanging-indent)
box(width: numwidth + body-spacing, stroke: none, num)
item
})
v(1em, weak: true)
}
}
#let page-theme(doc) = {
set page(
paper: "a4",
@@ -49,7 +79,7 @@
),
header: context [
#h(1fr)
#counter(page).display(thai-numbering)
#counter(page).display(page-numbering)
],
)
set text(
@@ -101,18 +131,57 @@
}
show figure.where(kind: "i-figured-table"): set align(start)
show figure.where(kind: table): set figure.caption(position: top)
show figure.caption: it => {
text(weight: "bold")[
#it.supplement
#it.counter.display(it.numbering)
]
it.body
show figure.where(kind: table): t => {
show figure.caption: it => {
it.supplement
" "
it.counter.display(it.numbering)
" "
it.body
}
it
}
show figure.caption.where(position: bottom): it => place(center, it, dy: 2em)
set figure.caption(separator: "")
// show figure.where(kind: image): set figure(gap: 2em)
show figure.where(kind: "i-figured-image"): i => {
show figure.caption: it => {
place(
center,
[
#text(weight: "bold")[
#it.supplement
#it.counter.display(it.numbering)
]
#it.body
],
dy: 2em,
)
}
i
}
set figure.caption(separator: " ")
show figure.where(kind: image): set block(below: 2.5em)
set enum(number-align: start + top)
show enum.item: it => context {
if (it.number == auto) {
return it
}
let spacing = enum.indent
if spacing == auto {
if enum.tight {
spacing = par.leading
} else {
spacing = par.spacing
}
}
(
h(spacing)
+ [#{ str(it.number) + ")" }]
+ h(enum.body-indent)
+ it.body
+ linebreak()
)
}
set ref(supplement: "หัวข้อ")
doc
}
@@ -132,7 +201,7 @@
),
header: context [
#h(1fr)
#counter(page).display(thai-numbering)
#counter(page).display(page-numbering)
],
)
set text(