#let lettre( de: "", pour: "", objet: "", date: "", lieu: "", introduction: "", cloture: "", signature: "", post: "", doc ) = { set page(margin: 1.5in) set par(leading: 0.55em, first-line-indent: 2em, justify: true, spacing: 0.55em) set text(font: "Libertinus Serif", size: 12pt) set document(title: objet, author: signature) show raw: set text(font: "Inconsolata") show heading: set block(above: 1.4em, below: 1em) let formatLieuDate(lieu, date) = { let isDate = date.trim().len() > 0; let isLieu = lieu.trim().len() > 0; if isLieu [#lieu] if isDate { if isLieu [, ] [le #date] } } grid( columns: (2fr, 1fr, 2fr), par(de), text[], text[ #formatLieuDate(lieu, date) ] + v(2em), text[], text[], par(pour) ) v(1em) if objet.trim().len() > 0 { heading(level: 3, text("Objet: " + objet)) v(1em) } par(first-line-indent: 0pt, text(introduction + ",")) v(1em) doc v(1em) par(first-line-indent: 0pt, text(cloture)) v(.7em) grid( columns: (2fr, 1fr), text[], text(signature) ) v(1em) post } #let er = [#super[er]] #let ème = [#super[ème]] #let no(num) = { text([n°~] + num) }