88 lines
2.3 KiB
Typst
88 lines
2.3 KiB
Typst
#import "theme.typ": faculty_logotype, tul_logomark, faculty_color
|
|
#import "lang.typ": lang_id
|
|
#import "utils.typ": assert_in_dict
|
|
|
|
#let base_font = "Cabin";
|
|
|
|
#let classic_header(faculty_id, language) = {
|
|
let logotype = faculty_logotype(faculty_id, language);
|
|
grid(
|
|
logotype,
|
|
block(align(right, block(tul_logomark(faculty_id), height: 5em)), width: 100%),
|
|
columns: 2
|
|
);
|
|
}
|
|
|
|
#let classic_info(
|
|
faculty_id,
|
|
language,
|
|
document_type,
|
|
title, author, supervisor, study_programme,
|
|
) = {
|
|
let lang_id = lang_id(language);
|
|
|
|
// document type
|
|
if type(document_type) != type(none) {
|
|
let document_types = (
|
|
bp: ("Bakalářská práce", "Bachelor thesis"),
|
|
dp: ("Diplomová práce", "Diploma thesis"),
|
|
ds: ("Disertační práce", "Dissertation thesis"),
|
|
);
|
|
assert_in_dict(document_type, document_types, "document type abbreviation");
|
|
text(document_types.at(document_type).at(lang_id), weight: "bold", font: base_font);
|
|
v(0em);
|
|
}
|
|
|
|
// title
|
|
text(
|
|
title, weight: "bold", size: 2em,
|
|
faculty_color(faculty_id), font: base_font,
|
|
);
|
|
v(0em);
|
|
|
|
// other info
|
|
// [field_name, field_value, bold]
|
|
let info_fields = (
|
|
(("Studijní program", "Study programme"), study_programme, false),
|
|
(("Autor", "Author"), author, true),
|
|
(("Vedoucí práce", "Vedoucí práce"), supervisor, false),
|
|
);
|
|
context {
|
|
let max_field_name_width = calc.max(..info_fields.map((v) => {
|
|
if type(v.at(1)) == type(none) {
|
|
0pt
|
|
} else {
|
|
measure(v.at(0).at(lang_id) + ":").width
|
|
}
|
|
}));
|
|
grid(
|
|
columns: 2,
|
|
rows: (auto, 1.2em),
|
|
..info_fields.filter((v) => { type(v.at(1)) != type(none) }).map((v) => {
|
|
(
|
|
block(
|
|
text(v.at(0).at(lang_id) + ":", style: "italic", font: base_font),
|
|
width: max_field_name_width + 5em,
|
|
),
|
|
text(v.at(1), font: base_font, weight: if v.at(2) { "bold" } else { "regular" })
|
|
)
|
|
}).flatten()
|
|
);
|
|
}
|
|
}
|
|
|
|
#let template_classic(
|
|
faculty_id,
|
|
language,
|
|
document_type,
|
|
title, author, supervisor, study_programme
|
|
) = {
|
|
page({
|
|
classic_header(faculty_id, language);
|
|
align({
|
|
classic_info(faculty_id, language, document_type, title, author, supervisor, study_programme);
|
|
v(5em);
|
|
}, bottom);
|
|
}, margin: 2cm);
|
|
}
|