|
@@ -45,8 +45,6 @@
|
|
|
}
|
|
}
|
|
|
let mode = if report_mode == "draft" or report_mode == "paper" { report_mode } else { "default" }
|
|
let mode = if report_mode == "draft" or report_mode == "paper" { report_mode } else { "default" }
|
|
|
let with-title-page = mode != "paper"
|
|
let with-title-page = mode != "paper"
|
|
|
- // Личный проект: содержание выводится и без фирменного титульного листа.
|
|
|
|
|
- let with-toc = true
|
|
|
|
|
let with-signs-and-stamps = mode == "default"
|
|
let with-signs-and-stamps = mode == "default"
|
|
|
let has-watermark = watermark != none
|
|
let has-watermark = watermark != none
|
|
|
let watermark-mark = (dx, dy) => place(center + horizon, dx: dx, dy: dy)[
|
|
let watermark-mark = (dx, dy) => place(center + horizon, dx: dx, dy: dy)[
|
|
@@ -419,39 +417,6 @@
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==========================================
|
|
|
|
|
- // 3. СОДЕРЖАНИЕ
|
|
|
|
|
- // ==========================================
|
|
|
|
|
- if with-toc {
|
|
|
|
|
- service-title([СОДЕРЖАНИЕ])
|
|
|
|
|
-
|
|
|
|
|
- // Настройка внешнего вида содержания под стандарт
|
|
|
|
|
- show outline.entry.where(level: 1): it => {
|
|
|
|
|
- v(12pt, weak: true)
|
|
|
|
|
- text(weight: "regular")[#it]
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // Переопределяем отображение элементов содержания для Приложений (где есть supplement "Приложение")
|
|
|
|
|
- show outline.entry.where(level: 1): it => {
|
|
|
|
|
- if it.element.supplement == [Приложение] {
|
|
|
|
|
- // Поскольку нумерация - функция, мы передаем ее в платформенную функцию numbering
|
|
|
|
|
- let app_num = numbering(it.element.numbering, ..counter(heading).at(it.element.location()))
|
|
|
|
|
- // Отменяем глобальный абзацный отступ, чтобы Приложение Б, В не уезжали вправо, и делаем кликабельным
|
|
|
|
|
- set par(first-line-indent: 0pt)
|
|
|
|
|
- link(it.element.location())[
|
|
|
|
|
- #text(weight: "regular")[Приложение #app_num. #it.element.body]
|
|
|
|
|
- #box(width: 1fr, repeat[.])
|
|
|
|
|
- #it.page()
|
|
|
|
|
- ]
|
|
|
|
|
- } else {
|
|
|
|
|
- text(weight: "regular")[#it]
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- outline(title: none, depth: 3, indent: 2em)
|
|
|
|
|
-
|
|
|
|
|
- pagebreak()
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
// --- ВСТАВКА ОСНОВНОГО ТЕКСТА ---
|
|
// --- ВСТАВКА ОСНОВНОГО ТЕКСТА ---
|
|
|
// В Typst leading — дополнительный промежуток между строками, а не
|
|
// В Typst leading — дополнительный промежуток между строками, а не
|
|
|
// коэффициент высоты строки. Для Times New Roman 12 pt значение 0.85em
|
|
// коэффициент высоты строки. Для Times New Roman 12 pt значение 0.85em
|
|
@@ -459,3 +424,39 @@
|
|
|
set par(leading: 0.85em, spacing: 0.85em)
|
|
set par(leading: 0.85em, spacing: 0.85em)
|
|
|
body
|
|
body
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+// ==========================================
|
|
|
|
|
+// СОДЕРЖАНИЕ (вставляется вызывающей стороной — render-report)
|
|
|
|
|
+// ==========================================
|
|
|
|
|
+#let report-toc() = {
|
|
|
|
|
+ let service-title = title => {
|
|
|
|
|
+ align(center)[
|
|
|
|
|
+ #text(size: 14pt, weight: "bold")[#title]
|
|
|
|
|
+ #v(1.2em)
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ service-title([СОДЕРЖАНИЕ])
|
|
|
|
|
+
|
|
|
|
|
+ show outline.entry.where(level: 1): it => {
|
|
|
|
|
+ v(12pt, weak: true)
|
|
|
|
|
+ if it.element.numbering == none {
|
|
|
|
|
+ text(weight: "bold")[#it]
|
|
|
|
|
+ } else {
|
|
|
|
|
+ text(weight: "regular")[#it]
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ show outline.entry.where(level: 1): it => {
|
|
|
|
|
+ if it.element.supplement == [Приложение] {
|
|
|
|
|
+ let app_num = numbering(it.element.numbering, ..counter(heading).at(it.element.location()))
|
|
|
|
|
+ set par(first-line-indent: 0pt)
|
|
|
|
|
+ link(it.element.location())[
|
|
|
|
|
+ #text(weight: "regular")[Приложение #app_num. #it.element.body]
|
|
|
|
|
+ #box(width: 1fr, repeat[.])
|
|
|
|
|
+ #it.page()
|
|
|
|
|
+ ]
|
|
|
|
|
+ } else {
|
|
|
|
|
+ text(weight: "regular")[#it]
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ outline(title: none, depth: 3, indent: 2em)
|
|
|
|
|
+}
|