44 lines
1.6 KiB
Typst
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
|
|
}
|