Created theme

This commit is contained in:
Marius Drechsler 2025-06-15 15:20:41 +02:00
commit 424eeef545
Signed by: marius
GPG key ID: 56D4131BA3104777
14 changed files with 453 additions and 0 deletions

178
template/conf.typ Normal file
View file

@ -0,0 +1,178 @@
#import "@preview/touying:0.6.1": *
#let slide(title: auto, ..args) = touying-slide-wrapper(self => {
let info = self.info + args.named()
if title != auto {
self.store.title = title
}
let header(self) = {
set align(top)
set text(fill: rgb("0065BD"), size: 25pt, weight: "bold")
place(top + right,
dx: -1em,
dy: 1em,
image("./resources/TUM_Logo_blau.svg", width: 7%)
)
v(1.5em)
h(1em)
utils.display-current-heading(level: 1)
v(-1.6em)
linebreak()
h(1em)
set text(fill: rgb("005293"), size: 20pt)
if self.store.title != none {
utils.call-or-display(self, self.store.title)
} else {
utils.display-current-heading(level: 2)
}
}
let footer(self) = {
set align(bottom)
show: pad.with(.4em)
set text(size: 14pt)
h(1em)
h(1fr)
grid(
columns: (1fr, 4fr, 1fr, 1fr),
align: center,
grid.cell(align: left)[
#h(1em)
#info.footer-author],
info.title,
utils.display-info-date(self),
grid.cell(align: right)[
#context [#utils.slide-counter.display()/#utils.last-slide-number] #h(1em)]
)
}
self = utils.merge-dicts(
self,
config-page(
header: header,
footer: footer,
),
)
touying-slide(self: self, ..args)
})
#let title-slide(..args) = touying-slide-wrapper(self => {
let info = self.info + args.named()
let header = {
set text(fill: rgb("0065BD"), size: 25pt, weight: "bold")
place(top + right,
dx: -1em,
dy: 1em,
image("./resources/TUM_Logo_blau.svg", width: 7%)
)
place(top + left,
dy: 3em,
dx: 0.9em,
grid(
columns: (3fr, 1fr),
[
#set text(fill: rgb("0065BD"), size: 32pt, weight: "bold")
#info.title
]
)
)
}
let body = {
set text(weight: "bold")
v(5em)
info.author
v(2em)
set text(weight: "regular")
utils.display-info-date(self)
place(bottom + right,
dx: 2em,
dy: 2em,
image("./resources/TUM_Tower.png", width: 50%)
)
}
self = utils.merge-dicts(
self,
config-page(
header: header,
),
)
touying-slide(self: self, body)
})
#let outline-slide(..args) = touying-slide-wrapper(self => {
let header = {
set text(fill: rgb("0065BD"), size: 25pt, weight: "bold")
place(top + right,
dx: -1em,
dy: 1em,
image("./resources/TUM_Logo_blau.svg", width: 7%)
)
place(top + left,
dy: 3em,
dx: 0.9em,
grid(
columns: (3fr, 1fr),
[
#set text(fill: rgb("0065BD"), size: 25pt, weight: "bold")
Outline
]
)
)
}
let body = {
show outline.entry: it => link(
it.element.location(),
[
#it.body() #linebreak() #v(1em)
]
)
align(horizon)[
#outline(title: none, depth: 1)
//#utils.slide-counter.update(0)
]
}
self = utils.merge-dicts(
self,
config-page(
header: header,
),
)
touying-slide(self: self, body)
})
#let tum-slides(
aspect-ratio: "16-9",
footer: none,
..args,
language: "en",
body,
) = {
set text(size: 20pt, font: "TUM Neue Helvetica", lang: language)
set par(spacing: 0.6em)
show: touying-slides.with(
config-page(
paper: "presentation-" + aspect-ratio,
margin: (top: 5.5em, left: 1.2em),
),
config-common(
slide-fn: slide,
datetime-format: "[day].[month].[year]"
),
config-store(
title: none,
footer: footer,
),
..args,
)
title-slide()
outline-slide()
body
}