// ========================================== // ЛОГИКА ПРИЛОЖЕНИЙ // ========================================== #import "shared/numbering.typ": attachment_numbering // Макрос для приложений отчёта. Каждый подключённый файл должен начинаться // заголовком первого уровня: = Название приложения . #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 }