#let ovensvg = ``````.text
#let hourglasssvg = ``````.text
#let timersvg = ``````.text
#let knifesvg = ``````.text
#let template(
title: "",
subtitle: none,
persons: none,
quantity: none,
preptime: none,
cooktime: none,
waittime: none,
doc
) = {
set page(
paper: "a4",
numbering: "1",
)
set par(justify: true, leading: 0.6em)
set text(
font: "Libertinus Serif",
size: 12pt,
)
show heading: set text(font: "Nimbus Sans")
align(center, text(32pt, font: "Nimbus Sans")[
#text(title, weight: "medium") \
#if subtitle != none {
v(-0.9cm)
text(subtitle, size: 18pt)
} else {
v(-0.5cm)
}
])
v(-0.2cm)
align(center, {
let l = [#v(-0.25em)#line(length: 1.5em, angle: 90deg)]
let data = ()
if persons != none and persons != 0 {
data.push([#box([*#persons* pers], baseline: 3.5mm)])
data.push(l)
}
if quantity != none and quantity != 0 {
data.push([#box([*#quantity* pièces], baseline: 3.5mm)])
data.push(l)
}
if preptime != none and preptime != "" {
data.push([#box(image.decode(knifesvg, format: "svg", height: 4.7mm), baseline: 1.2mm) *#preptime*])
data.push(l)
}
if cooktime != none and cooktime != "" {
data.push([#box(image.decode(ovensvg, format: "svg", height: 4.4mm), baseline: 0.9mm) *#cooktime*])
data.push(l)
}
if waittime != none and waittime != "" {
data.push([#box(image.decode(hourglasssvg, format: "svg", height: 4mm), baseline: 0.5mm) *#waittime*])
data.push(l)
}
if (data.len() > 0) {
let _ = data.pop() // remove last separator
grid(
columns: data.len(),
rows: 1,
gutter: 3.5mm,
..data
)
}
})
v(0.5cm)
doc
}
#let step(ingredients, procedure) = {
v(2.5mm)
context {
let space = measure(par(ingredients, leading: 0.8em)).height - 0.75em
grid(columns: (1fr, 1fr), par(ingredients, leading: 0.8em), [#v(space)#procedure])
v(2.5mm)
}
}