77 lines
2.2 KiB
Typst
77 lines
2.2 KiB
Typst
|
|
#let accent = rgb(75, 50, 200)
|
|
#let yellow = rgb(255, 243, 0, 100)
|
|
#let darkyellow = rgb(255, 213, 00, 150)
|
|
|
|
#let report(
|
|
title: [Title],
|
|
task: [Task],
|
|
university: [Universität Graz],
|
|
institute: [Uni for Life],
|
|
course: [Course name],
|
|
instructor: [Instructor],
|
|
author: [Firstname Lastname],
|
|
date: [#datetime.today().display("[day]. [month repr:long] [year]")],
|
|
fontsize: 1.269em,
|
|
logo: "logo_uniforlife.svg",
|
|
lang: "de",
|
|
smallcaps_headings: true,
|
|
underline_headings: false,
|
|
|
|
body
|
|
) = {
|
|
let doublerule = [#set text(1pt, bottom-edge: "descender")
|
|
#line(length: 100%, stroke: darkyellow+2pt)#line(length: 100%, stroke: luma(150)+1pt)
|
|
]
|
|
|
|
show heading.where(level: 1): it => {
|
|
let heading_text = if smallcaps_headings {smallcaps(it)} else {it}
|
|
if underline_headings {
|
|
block(stroke: (bottom: darkyellow+0.2em), inset: (bottom: 0.05em))[#heading_text]
|
|
} else {
|
|
heading_text
|
|
}
|
|
}
|
|
|
|
show link: it => underline(stroke: yellow+0.2em, offset: 0.15em, evade: false, background: true)[#it]
|
|
|
|
let ulink(.. args) = {
|
|
[#underline(stroke: darkyellow+0.2em, offset: 0em, evade: false, background: true)[#link(.. args)]]
|
|
}
|
|
|
|
set page(
|
|
margin: (top: 8em, bottom: 5em),
|
|
header: context {
|
|
if counter(page).get().first() == 1 [
|
|
#set text(0.7em, top-edge: 1em)
|
|
#grid(inset: 0.1em, columns: (1fr, auto, 1fr), align: (left, center, right),
|
|
course,
|
|
[#emph(author)],
|
|
grid.cell(rowspan:3)[#image(logo, height: 3em)],
|
|
instructor, grid.cell(rowspan: 2)[#set text(1.3em); #align(bottom)[#task]],
|
|
date)
|
|
#doublerule
|
|
] else [
|
|
#set text(0.7em, top-edge: 1em)
|
|
#align(right)[#image(logo, height: 3em)]
|
|
#doublerule
|
|
]},
|
|
footer: context [
|
|
#doublerule
|
|
#v(0.5em)
|
|
#align(center)[#counter(page).display("1 / 1", both: true)]
|
|
],
|
|
)
|
|
|
|
let leading = 1.5em
|
|
let leading = leading - 0.75em // "Normalization"
|
|
set block(spacing: leading)
|
|
set par(spacing: leading, leading: leading, first-line-indent: 2em, justify: true)
|
|
set text(top-edge: 0.7em, fontsize, lang: lang)
|
|
|
|
v(-0.5cm)
|
|
align(center)[#text(1.1em)[#underline(stroke: darkyellow+0.3em, extent: 0.1em, offset: 0.05em, evade: false, background: true)[#smallcaps([#heading(numbering: none, outlined: false, level: 2)[*#title*]])]]]
|
|
v(0.5cm)
|
|
|
|
body
|
|
}
|