Files
Report-showcase/.template/lib/appendices.typ
T
2026-10-09 01:45:17 +00:00

44 lines
1.6 KiB
Typst

// ==========================================
// ЛОГИКА ПРИЛОЖЕНИЙ
// ==========================================
#import "shared/numbering.typ": attachment_numbering
// Макрос для приложений отчёта. Каждый подключённый файл должен начинаться
// заголовком первого уровня: = Название приложения <appendix-label>.
#let make_appendices(body, numbering: "cyrillic", start: 1) = {
let appendix-numbering = (..nums) => {
attachment_numbering(numbering, nums.pos().last())
}
counter(heading).update(start - 1)
// Supplement одновременно используется штатным ref и системой падежей vref.
set heading(numbering: appendix-numbering, supplement: [Приложение])
show heading.where(level: 1): it => {
pagebreak()
// Заголовок 1 уровня в приложениях выровнен по правому краю, жирным и чуть меньшим шрифтом
set align(right)
set text(weight: "bold", size: 12pt)
set par(leading: 0.7em)
let num = attachment_numbering(numbering, counter(heading).get().first())
if num == "" {
[Приложение. #it.body]
} else {
[Приложение #num. #it.body]
}
v(0.5em)
}
set figure(numbering: (..nums) => {
let h = counter(heading).get().first()
let prefix = attachment_numbering(numbering, h)
if prefix == "" {
str(nums.pos().last())
} else {
prefix + "." + str(nums.pos().last())
}
})
body
}