#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], ) ] }