#let ovensvg = ``````.text #let clocksvg = ``````.text #let template( title: "", persons: none, preptime: none, cooktime: none, doc ) = { set page( paper: "a4", numbering: "1", ) set par(justify: true, leading: 0.6em) set text( font: "Linux Libertine", size: 12pt, ) show heading: set text(font: "Roboto") v(0.5cm) align(center, text(35pt, font: "Roboto")[ #text(title, weight: "medium") ]) v(-0.8cm) align(center, { let l = [#v(-0.25em)#line(length: 1.5em, angle: 90deg)] let data = () if persons != none or persons != 0 { data.push([#box([*#persons* pers], baseline: 3.5mm)]) data.push(l) } if preptime != none or preptime == "" { data.push([#box(image.decode(clocksvg, format: "svg", height: 4.5mm), baseline: 1mm) *#preptime*]) data.push(l) } if cooktime != none or cooktime == "" { data.push([#box(image.decode(ovensvg, format: "svg", height: 4.5mm), baseline: 1mm) *#cooktime*]) data.push(l) } let _ = data.pop() grid( columns: data.len(), rows: 1, gutter: 3.5mm, ..data ) }) v(1cm) doc } #let step(ingredients, procedure) = { style(styles => { let space = measure(par(ingredients, leading: 0.8em), styles).height - 0.75em grid(columns: (1fr, 1fr), par(ingredients, leading: 0.8em), [#v(space)#procedure]) }) v(5mm) }