diff --git a/template/classic/classic.typ b/template/classic/classic.typ index 43ae34c..e135132 100644 --- a/template/classic/classic.typ +++ b/template/classic/classic.typ @@ -5,6 +5,7 @@ // thesis types #import "bp.typ": bp +#import "dp.typ": dp #import "other.typ": other #let template_classic( @@ -21,6 +22,7 @@ // argument pre-checking let document_types = ( "bp": bp, + "dp": dp, "other": other, ) assert_in_dict(document_type, document_types, "document type"); diff --git a/template/classic/dp.typ b/template/classic/dp.typ new file mode 100644 index 0000000..2838fa4 --- /dev/null +++ b/template/classic/dp.typ @@ -0,0 +1,69 @@ +#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 + +#let dp( + // general settings + faculty_id, faculty_color, language, assignment_document, citation_file, + + // document info + title, author, author_pronouns, supervisor, consultant, study_programme, study_branch, + year_of_study, abstract_content, acknowledgement_content, keywords, + + content +) = { + let force_langs = ("cs", "en"); + assert_not_none(title, "title"); + assert_dict_has(force_langs, title, "title"); + + assert_not_none(study_programme, "study programme"); + assert_dict_has((language,), study_programme, "study programme"); + assert_not_none(study_branch, "study branch"); + assert_dict_has((language,), study_branch, "study branch"); + + assert_not_none(abstract_content, "abstract"); + assert_dict_has(force_langs, abstract_content, "abstract"); + if not is_none(keywords) { + assert_dict_has(force_langs, keywords, "keywords"); + } + assert_not_none(acknowledgement_content, "acknowledgement content"); + if language == "cs" { + assert_not_none(author_pronouns, "author gender"); + } + + assert_type_signature(supervisor, "string | none", "supervisor"); + assert_type_signature(consultant, "string | none", "consultant"); + + mainpage( + faculty_id, language, "bp", title, author, supervisor, consultant, study_programme, + study_branch, year_of_study, + ); + assignment(language, assignment_document); + default_styling(false, faculty_color, { + disclaimer(language, faculty_id, "bp", author, author_pronouns); + abstract("cs", title, abstract_content, keywords); + abstract("en", title, abstract_content, keywords); + acknowledgement(language, author, acknowledgement_content); + toc(language); + tablelist(language); + imagelist(language); + abbrlist(language); + pagebreak(weak: true); + content; + bibliogr(language, citation_file); + attachment_list(language); + }); +}