add fullpage heading support for presentation

This commit is contained in:
2025-12-02 15:39:27 +01:00
committed by Ondřej Mekina
parent 9cdb4cc9c2
commit 97dfd40542
4 changed files with 86 additions and 25 deletions

View File

@@ -39,6 +39,8 @@
#let presentation_structure = (
append_thanks: "boolean",
wide: "boolean",
first_heading_is_fullpage: "boolean",
)

View File

@@ -4,14 +4,15 @@
#import "../lang.typ": get_lang_item
#import "common.typ": common_styling, bibliogr, base_font
#let header_margin = 20pt
#let footer_margin = header_margin
#let set_page_style(lang, faculty, faculty_color, content, paper) = {
#let set_page_style(lang, faculty, faculty_color, paper, content) = {
context {
let footer_margin = 20pt
let footer_logotype = faculty_logotype(faculty, lang)
let footer_logotype = faculty_logotype(faculty, lang, long: false)
let footer_height = measure(footer_logotype).height + footer_margin
set page(paper: paper, margin: (bottom: footer_height, rest: 1cm), footer-descent: 0%, footer: {
box(outset: (top: footer_margin, bottom: footer_margin), {
text(box(outset: (top: footer_margin, bottom: footer_margin), {
footer_logotype
h(1fr)
context text(
@@ -19,24 +20,42 @@
font: "TUL Mono",
faculty_color,
)
}), size: 11pt)
})
})
set text(size: 1.3em)
content
}
}
#let set_heading_styles(content) = {
show heading.where(level: 1): it => {
#let set_heading_styles(first_heading_is_fullpage, faculty_color, content) = {
let slide_title = (it) => {
pagebreak(weak: true)
box(text(it, size: 1.25em), inset: (top: 2em, bottom: 2em))
box(it, inset: (top: 1em, bottom: 1em))
}
show heading.where(level: 1): it => {
if first_heading_is_fullpage {
page(place(center + horizon, it), header: none, margin: (top: 0em))
} else {
slide_title(it)
}
}
if first_heading_is_fullpage {
show heading.where(level: 2): it => {
slide_title(it)
}
content
} else {
content
}
}
#let apply_style(language, faculty, faculty_color, content, paper) = {
#let apply_style(language, faculty, faculty_color, paper, first_heading_fullpage, content) = {
common_styling(
faculty_color, language,
set_page_style(language, faculty, faculty_color, set_heading_styles(content), paper)
set_page_style(
language, faculty, faculty_color, paper,
set_heading_styles(first_heading_fullpage, faculty_color, content)
)
)
}
@@ -82,20 +101,23 @@
let faculty_color = faculty_color(faculty)
let presentation_args = req_arg(args, "presentation_info")
let author = req_arg(args, "author.name")
let paper = "presentation-4-3"
if presentation_args.at("aspect_16-9") {
paper = "presentation-16-9"
let paper = if presentation_args.at("wide") {
"presentation-16-9"
} else {
"presentation-4-3"
}
mainpage(
language, faculty, faculty_color,
req_arg(args, "title").at(language), author, paper,
)
apply_style(language, faculty, faculty_color, {
apply_style(language, faculty, faculty_color, paper,
presentation_args.at("first_heading_is_fullpage"), {
content
bibliogr(args)
}, paper)
},
)
if presentation_args.at("append_thanks") {
thankspage(language, faculty, faculty_color, author, paper,)
thankspage(language, faculty, faculty_color, author, paper)
}
}

View File

@@ -9,6 +9,10 @@
"TECHNICKÁ UNIVERZITA V LIBERCI&",
"TECHNICAL UNIVERSITY OF LIBEREC&",
),
(
"TUL&",
"TUL&",
),
),
fs: (
@@ -17,6 +21,10 @@
"FAKULTA STROJNÍ TUL&",
"FACULTY OF MECHANICAL ENGINEERING TUL&",
),
(
"FS TUL&",
"FME TUL&",
),
),
ft: (
@@ -25,6 +33,10 @@
"FAKULTA TEXTILNÍ TUL&",
"FACULTY OF TEXTILE ENGINEERING TUL&",
),
(
"FT TUL&",
"FT TUL&",
),
),
fp: (
@@ -33,6 +45,10 @@
"FAKULTA\nPŘÍRODOVĚDNĚ-HUMANITNÍ\nA PEDAGOGICKÁ TUL&",
"FACULTY OF SCIENCE,\nHUMANITIES AND\nEDUCATION TUL&",
),
(
"FP TUL&",
"FED TUL&",
),
),
ef: (
@@ -41,6 +57,10 @@
"EKONOMICKÁ FAKULTA TUL&",
"FACULTY OF ECONOMICS TUL&",
),
(
"EF TUL&",
"FE TUL&",
),
),
fua: (
@@ -49,6 +69,10 @@
"FAKULTA UMĚNÍ A ARCHITEKTURY TUL&",
"FACULTY OF ARTS AND ARCHITECTURE TUL&",
),
(
"FUA TUL&",
"FAA TUL&",
),
),
fm: (
@@ -57,6 +81,10 @@
"FAKULTA MECHATRONIKY,\nINFORMATIKY A MEZIOBOROVÝCH\nSTUDIÍ TUL&",
"FACULTY OF MECHATRONICS,\nINFORMATICS AND\nINTERDISCIPLINARY STUDIES TUL&",
),
(
"FM TUL&",
"FM TUL&",
),
),
fzs: (
@@ -65,6 +93,10 @@
"FAKULTA ZDRAVOTNICKÝCH STUDIÍ TUL&",
"FACULTY OF HEALTH STUDIES TUL&",
),
(
"FZS TUL&",
"FHS TUL&",
),
),
cxi: (
@@ -73,6 +105,10 @@
"ÚSTAV PRO NANOMATERIÁLY,\nPOKROČILÉ TECHNOLOGIE\nA INOVACE TUL&",
"INSTITUTE FOR NANOMATERIALS,\nADVANCED TECHNOLOGY\nAND INNOVATION TUL&",
),
(
"CXI TUL&",
"CXI TUL&",
),
),
);
@@ -89,20 +125,20 @@
return theme_color;
}
#let faculty_logotype_text(faculty_id, lang) = {
#let faculty_logotype_text(faculty_id, lang, long: true) = {
let theme = faculty_theme(faculty_id);
let logotype_text = theme.at(1).at(lang_id(lang));
let logotype_text = theme.at(if long { 1 } else { 2 }).at(lang_id(lang));
assert(type(logotype_text) == str);
return logotype_text;
}
#let faculty_logotype(faculty_id, lang, color: none) = {
#let faculty_logotype(faculty_id, lang, color: none, long: true) = {
let theme_color = if type(color) == type(none) {
faculty_color(faculty_id)
} else {
color
};
let logotype_text = faculty_logotype_text(faculty_id, lang);
let logotype_text = faculty_logotype_text(faculty_id, lang, long: long);
text(logotype_text, font: "TUL Mono", theme_color, weight: "black");
}

View File

@@ -11,7 +11,8 @@
),
presentation: (
append_thanks: true,
aspect_16-9: true,
wide: true,
first_heading_is_fullpage: true,
),
citations: "citations.bib",
)