diff options
| author | Данила Григорьев <danila.sar@yandex.ru> | 2024-09-04 18:44:02 +0400 |
|---|---|---|
| committer | Данила Григорьев <danila.sar@yandex.ru> | 2024-09-04 18:44:02 +0400 |
| commit | e790c6bc654d94c6f51104df86cc6d56237f4e15 (patch) | |
| tree | 3f9c99a10f31ab06f33215e69d497507c2faf37a | |
Взлетаем
| -rw-r--r-- | conf.typ | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/conf.typ b/conf.typ new file mode 100644 index 0000000..63ad32f --- /dev/null +++ b/conf.typ @@ -0,0 +1,188 @@ +#let header() = { + set align(center) + set text(font: "Cambria") + text("МИНОБРНАУКИ РОССИИ\nФедеральное государственное бюджетное образовательное учреждение\nвысшего образования\n") + v(0.2em) + text(weight: "bold", "«САРАТОВСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ + ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ + ИМЕНИ Н. Г. ЧЕРНЫШЕВСКОГО»\n") + set align(left) +} + +#let signature(post, name) = { + grid( + columns: (1fr,) * 3, + align: (left, center, right), + row-gutter: 5pt, + post, block(inset: (y: 13pt), line(length: 3cm, stroke: .4pt)), name + ) +} + +#let get_student_word(sex) = { + if sex == "male" { + return "студента" + } else if sex == "female" { + return "студентки" + } else if sex == "plural" { + return "студентов" + } +} + +#let get_speciality(group) = { + let specialities = ( + [02.03.02 --- Фундаментальная информатика и информационные технологии], + [09.03.01 --- Информатика и вычислительная техника], + [10.05.01 --- Компьютерная безопасность], + [02.03.03 --- Математическое обеспечение и администрирование информационных систем], + [09.03.04 --- Программная инженерия], + [], // x6x + [09.04.01 --- Информатика и вычислительная техника], + [02.04.03 --- Математическое обеспечение и администрирование информационных систем], + [], // x8x + ) + if group.at(1) == "7" { // x7x + if group.at(2) == "1" { // x71 + return specialities.at(6) // ивт + } else if group.at(2) == "3" { // x73 + return specialities.at(7) // моаис + } + return [] + } + let id = int(group.at(1)) - 1; + + if id < 0 or id > 8 { + return [] + } + return specialities.at(id) +} + +#let referat_title(info) = { + let author = info.at("author", default: (:)) + set align(center) + v(3cm) + text(weight: "bold", upper(info.at("title", default: [Тема работы]))) + par[РЕФЕРАТ] + v(1.5cm) + set align(left) + let author_string = get_student_word(author.at("sex", default: "male")) + author_string = author_string + " " + author.group.at(0) + " курса " + author.group + " группы\n" + if author.faculty == [КНиИТ] { + author_string = author_string + "направления " + get_speciality(author.group) + "\n" + } else if author.at("speciality", default: []) != [] { + author_string = author_string + "направления " + author.speciality + "\n" + } + + text(author_string + "факультета " + author.faculty + "\n" + author.name) + v(1fr) + text("Проверено:\n") + signature(info.inspector.degree, info.inspector.name) +} + +#let make_title( + type: "referat", + info: () +) = { + set page( + paper: "a4", + margin: ( + top: 2cm, + bottom: 2cm, + left: 2.5cm, + right: 1.5cm + ) + ) + + header() + if type == "referat" { + referat_title(info) + } + + v(1fr) + set align(center) + text("Саратов 2024") +} + +#let make_toc( + info: () +) = { + + outline(indent: 2%, title: [Содержание]) + pagebreak(weak: true) +} + +#let aboba(settings: ()) = { + +} + +#let conf( + title: none, + info: (), + type: "referat", + settings: (), + doc +) = { + info.title = title + settings.title_page = settings.at("title_page", default: (:)) + + + set text( + size: 14pt + ) + + if settings.title_page.at("enabled", default: true) { + make_title(type: type, info: info) + } + set align(left) + + set page(footer: context [ + #h(1fr) + #counter(page).display( + "1" + ) + ]) + + + let caps_headings = ( + [Содержание], + [Введение], + [Заключение], + [Список использованных источников] + ) + show heading: it => { + set text(size: 14pt) + if it.depth == 1 { + pagebreak(weak: true) + } + if caps_headings.contains(it.body) { + set align(center) + counter(heading).update(i => i - 1) + upper(it.body) + } else { + it + } + } + set heading(numbering: "1.1") + set page(numbering: "1") + if settings.contents_page.enabled { + make_toc(info: info) + } + + doc + + /*let count = authors.len() + let ncols = calc.min(count, 3) + grid( + columns: (1fr,) * ncols, + row-gutter: 24pt, + ..authors.map(author => [ + #author.name \ + #author.affiliation \ + #link("mailto:" + author.email) + ]), + ) + + par(justify: false)[ + *Abstract* \ + #abstract + ]*/ +}
\ No newline at end of file |