2024-10-19 15:57:23 +02:00
|
|
|
#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)
|
|
|
|
|
2024-10-20 11:23:04 +02:00
|
|
|
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]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-10-19 15:57:23 +02:00
|
|
|
grid(
|
|
|
|
columns: (2fr, 1fr, 2fr),
|
|
|
|
par(de),
|
|
|
|
text[],
|
|
|
|
text[
|
2024-10-20 11:23:04 +02:00
|
|
|
#formatLieuDate(lieu, date)
|
2024-10-19 15:57:23 +02:00
|
|
|
] + 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) }
|