Files
chfoit-ipa/util/title.typ
T
2026-09-18 16:36:52 +02:00

125 lines
2.9 KiB
Typst

#import "./persons.typ"
#import "../pallete.typ": palette
// helpers for title
#let getWhere(person) = {
let function = person.function
if function == "Validierungsexperte" {
return "In der Genehmigung"
}
if function == "Hauptexperte" or function == "Nebenexperte" or function == "Verantwortliche Fachkraft" {
return "In der Durchführung"
}
if function == "Berufsbildner" {
return "Zur Information, Kenntnis"
}
return ""
}
#let beteiligtePersonen() = {
return (
persons.byFunction("Validierungsexperte"),
persons.byFunction("Hauptexperte"),
persons.byFunction("Nebenexperte"),
persons.byFunction("Verantwortliche Fachkraft"),
persons.byFunction("Berufsbildner"),
)
}
#let title(
title: content,
author: content,
company: content,
departement: content,
tradeschool: "Gewerblich-industrielle Berufsschule Bern GIBB",
metadata: (
specialisation: "Applikationsentwicklung",
managementMethod: "HERMES",
// year as in "Jahrgang"
year: "IPA 2025",
place: "Kanton Bern",
dateOfSubmission: datetime,
currentversion: version,
),
) = {
// set text(font: "Helvetica Neue")
place(
top + left,
image("../assets/Logo_RGB_farbig_positiv.svg", height: 2cm),
)
place(
top + right,
[
#set text(size: 8pt, font: "Helvetica Neue")
#v(4pt)
Eidgenössisches Finanzdepartement EFD
*#company* \
#departement \
Individuelle praktische Arbeit
],
)
v(4cm)
text(
size: 21pt,
font: "Helvetica Neue",
fill: palette.secondary.at("500"),
title,
)
align(
right,
text(
size: 17pt,
font: "Helvetica Neue",
fill: gray,
[
Individuelle praktische Arbeit \
#author
],
),
)
set table(stroke: 0.1pt + palette.ui.border)
v(.5cm)
[
#set text(font: "Helvetica Neue")
#table(
columns: (.5fr, 1fr),
inset: 8pt,
align: horizon,
[*Autor*], author,
[*Firma*], company,
[*Abteilung*], departement,
[*Berufsschule*], [gibb Berufsfachschule Bern],
)
#heading(level: 3, [Beteiligte Personen], outlined: false)
#context table(
columns: (.5fr, .5fr, .5fr),
inset: 8pt,
..beteiligtePersonen()
.map(p => (
par([*#p.at("function-name", default: p.function)*], justify: false),
link("mailto:" + p.email)[#p.name],
context getWhere(p),
))
.flatten()
)
#table(
columns: (.5fr, 1fr),
inset: 8pt,
align: horizon,
[*Fachrichtung*], [#metadata.specialisation],
[*Projektvorgehensmodell*], [#metadata.managementMethod],
[*Jahrgang, Kanton*], [#metadata.dateOfSubmission.year(), #metadata.place],
[*Abgabedatum*], metadata.dateOfSubmission.display("[day].[month].[year]"),
[*Version*], [Version v#metadata.currentversion],
)
]
}