From 79df0d4dd942c091f28ce010a512962d53ad5136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Mekina?= Date: Fri, 10 Oct 2025 19:41:12 +0200 Subject: [PATCH] make bp and dp definitions cleaner --- template/classic/bp.typ | 42 ++++++----------------------- template/classic/classic.typ | 1 + template/classic/common.typ | 18 ++++++++++--- template/classic/dp.typ | 46 +++++++------------------------- template/classic/thesis_base.typ | 35 ++++++++++++++++++++++++ 5 files changed, 69 insertions(+), 73 deletions(-) create mode 100644 template/classic/thesis_base.typ diff --git a/template/classic/bp.typ b/template/classic/bp.typ index 70e2054..785a89c 100644 --- a/template/classic/bp.typ +++ b/template/classic/bp.typ @@ -1,21 +1,7 @@ -#import "../lang.typ": get_lang_item -#import "common.typ": ( - mainpage, - default_styling, - assignment, - disclaimer, - abstract, - acknowledgement, - toc, - abbrlist, - imagelist, - tablelist, - bibliogr -) -#import "../attachments.typ": attachment_list -#import "../utils.typ": is_none, assert_dict_has, assert_not_none, assert_type_signature, map_none -#import "../arguments.typ": req_arg, get_arg, map_arg -#import "../theme.typ": faculty_color +#import "../arguments.typ": req_arg, get_arg +#import "../utils.typ": assert_dict_has, is_none +#import "common.typ": mainpage, assignment, external_title_pages +#import "thesis_base.typ": thesis_base #let bp(args, content) = { let force_langs = ("cs", "en"); @@ -45,21 +31,9 @@ if is_none(title_pages) { mainpage(args); assignment(args); + } else { + external_title_pages(title_pages); } - default_styling(false, faculty_color(req_arg(args, "document.faculty")), { - if is_none(title_pages) { - disclaimer(args); - } - abstract("cs", args); - abstract("en", args); - acknowledgement(args); - toc(language); - tablelist(language); - imagelist(language); - abbrlist(language); - pagebreak(weak: true); - content; - bibliogr(args); - attachment_list(language); - }, language); + + thesis_base(args, content); } diff --git a/template/classic/classic.typ b/template/classic/classic.typ index 429035e..2e89189 100644 --- a/template/classic/classic.typ +++ b/template/classic/classic.typ @@ -31,6 +31,7 @@ args.assignment = map_arg(args, "assignment", (v) => "../../" + v); args.citations = map_arg(args, "citations", (v) => "../../" + v); + args.title_pages = map_arg(args, "title_pages", (v) => "../../" + v); document_types.at(req_arg(args, "document.type"))(args, content); } diff --git a/template/classic/common.typ b/template/classic/common.typ index 3a5342f..f58dc5b 100644 --- a/template/classic/common.typ +++ b/template/classic/common.typ @@ -232,6 +232,14 @@ }, margin: 2cm); } +// _ EMBEDDED + +#let pdfembed(path) = { + import "@preview/muchpdf:0.1.1": muchpdf + set page(margin: 0em); + muchpdf(read(path, encoding: none)); +} + // ASSIGNMENT PAGE #let assignment(args) = { @@ -249,9 +257,13 @@ ); return; } - import "@preview/muchpdf:0.1.1": muchpdf - set page(margin: 0em); - muchpdf(read(document, encoding: none)); + pdfembed(req_arg(args, "assignment")) +} + +// EXTERNAL TITLE PAGES + +#let external_title_pages(path) = { + pdfembed(path); } // DISCLAIMER PAGE diff --git a/template/classic/dp.typ b/template/classic/dp.typ index f0fe9ba..597f218 100644 --- a/template/classic/dp.typ +++ b/template/classic/dp.typ @@ -1,21 +1,7 @@ -#import "../lang.typ": get_lang_item -#import "common.typ": ( - mainpage, - default_styling, - assignment, - disclaimer, - abstract, - acknowledgement, - toc, - abbrlist, - imagelist, - tablelist, - bibliogr -) -#import "../attachments.typ": attachment_list -#import "../utils.typ": is_none, assert_dict_has, assert_not_none, assert_type_signature, map_none #import "../arguments.typ": req_arg, get_arg, map_arg -#import "../theme.typ": faculty_color +#import "../utils.typ": assert_dict_has, is_none +#import "common.typ": mainpage, assignment, external_title_pages +#import "thesis_base.typ": thesis_base #let dp(args, content) = { let force_langs = ("cs", "en"); @@ -35,9 +21,9 @@ if is_none(title_pages) { let programme = req_arg(args, "author.programme"); assert_dict_has((language,), programme, "study programme"); - let _ = map_arg( - args, "author.specialization", (v) => assert_dict_has((language,), v, "study specialization") - ); + map_arg(args, "author.specialization", (v) => { + assert_dict_has((language,), v, "study specialization"); + }); if language == "cs" { let _ = req_arg(args, "author.pronouns"); } @@ -46,21 +32,9 @@ if is_none(title_pages) { mainpage(args); assignment(args); + } else { + external_title_pages(title_pages); } - default_styling(false, faculty_color(req_arg(args, "document.faculty")), { - if is_none(title_pages) { - disclaimer(args); - } - abstract("cs", args); - abstract("en", args); - acknowledgement(args); - toc(language); - tablelist(language); - imagelist(language); - abbrlist(language); - pagebreak(weak: true); - content; - bibliogr(args); - attachment_list(language); - }, language); + + thesis_base(args, content); } diff --git a/template/classic/thesis_base.typ b/template/classic/thesis_base.typ new file mode 100644 index 0000000..92d27f5 --- /dev/null +++ b/template/classic/thesis_base.typ @@ -0,0 +1,35 @@ +#import "../theme.typ": faculty_color +#import "../arguments.typ": get_arg, req_arg +#import "../utils.typ": is_none +#import "common.typ": ( + default_styling, + disclaimer, + abstract, + acknowledgement, + toc, + tablelist, + imagelist, + abbrlist, + bibliogr, +) +#import "../attachments.typ": attachment_list + +#let thesis_base(args, content) = { + let language = req_arg(args, "document.language"); + default_styling(false, faculty_color(req_arg(args, "document.faculty")), { + if is_none(get_arg(args, "title_pages")) { + disclaimer(args); + } + abstract("cs", args); + abstract("en", args); + acknowledgement(args); + toc(language); + tablelist(language); + imagelist(language); + abbrlist(language); + pagebreak(weak: true); + content; + bibliogr(args); + attachment_list(language); + }, language); +}