modeles-documents/assemblee_generale.typ
2025-07-21 18:40:46 +02:00

65 lines
1.3 KiB
Typst

// This is a Typst template for general assembly meetings
#let signatures(..signataires) = {
grid(
columns: (1fr, ) * calc.min(signataires.pos().len(), 4),
align: center,
..signataires.pos().map(a => [#a \ #box(height: 100pt, fill: red)])
)
}
#let assemblee_generale(
background: rgb("f4f1eb"),
company-details: none,
title: "",
margin: 2.1cm,
vertical-center-level: 2,
numbering: "1 / 1",
signataires: (),
body
) = {
set text(font: "Fira Sans")
let page_header = [
#text(size: 9.2pt, company-details)
]
// accomodate for page header, can't measure?
let real_margin_top = margin + 2cm
set page(
fill: background,
margin: (top: real_margin_top, rest: margin),
numbering: numbering,
header: page_header,
)
show quote: it => {
box(it.body, fill: rgb("#ccc"), inset: (x: 5pt, y: 0pt), outset: (x: 0pt, y: 5pt))
}
show heading.where(level: 1): set align(center)
show link: it => underline(
text(it, fill: blue, font: "Fira Mono", weight: "medium", size: 9pt),
offset: 1.5pt,
evade: false,
stroke: 0.8pt,
)
let body = [
#set text(size: 11pt, weight: "regular")
#set par(spacing: 2em, justify: true)
#body
]
heading(level: 1, title)
v(30pt)
body
if signataires.len() > 0 {
signatures(..signataires)
}
}