First commit
This commit is contained in:
commit
8808f32ece
1 changed files with 109 additions and 0 deletions
109
lib.typ
Normal file
109
lib.typ
Normal file
|
|
@ -0,0 +1,109 @@
|
||||||
|
#let signature(at: none, date: none, ..signatories) = {
|
||||||
|
let answer = [ _Fait à_ ]
|
||||||
|
|
||||||
|
if at == none {
|
||||||
|
answer += box(width: 30%, stroke: (bottom: (thickness: 0.5pt, dash: "dotted")), none)
|
||||||
|
} else {
|
||||||
|
answer += text(weight: "bold", at)
|
||||||
|
}
|
||||||
|
|
||||||
|
answer += [, _le_ ]
|
||||||
|
|
||||||
|
if date == none {
|
||||||
|
answer += box(width: 30%, stroke: (bottom: (thickness: 0.5pt, dash: "dotted")), none)
|
||||||
|
} else {
|
||||||
|
answer += text(weight: "bold", date.display("[day]/[month]/[year]"))
|
||||||
|
}
|
||||||
|
|
||||||
|
let grid-construction(s) = text(weight: "bold", s.at(0)) + "\n" + text(style: "italic", s.at(1))
|
||||||
|
let g = signatories.pos().map(grid-construction)
|
||||||
|
|
||||||
|
answer += grid(columns: (50%, 50%), rows: (100pt), ..g)
|
||||||
|
|
||||||
|
block(answer, breakable: false)
|
||||||
|
}
|
||||||
|
|
||||||
|
#let template(body, title: "Title", subtitle: "Subtitle", logo: none, watermark: "", size: 10pt) = {
|
||||||
|
// Apparence du document
|
||||||
|
set page(columns: 2, margin: 1.5cm, numbering: "1/1")
|
||||||
|
set page(background: rotate(-55deg, text(size: 50pt, rgb(0, 0, 0, 30))[*#watermark*]))
|
||||||
|
|
||||||
|
set text(font: "New Computer Modern", lang: "fr", size: size)
|
||||||
|
|
||||||
|
set par(justify: true, first-line-indent: (amount: 1em, all: true))
|
||||||
|
|
||||||
|
set list(marker: sym.bar.h)
|
||||||
|
|
||||||
|
// Style des titres
|
||||||
|
let premier(.., last, format: "I") = numbering(format, last) + if last == 1 { super[er] }
|
||||||
|
|
||||||
|
set heading(numbering: "I.1.I.", supplement: [])
|
||||||
|
|
||||||
|
show heading.where(level: 1): it => [
|
||||||
|
#align(center, block[
|
||||||
|
#if it.numbering != none [
|
||||||
|
Titre #context counter(heading).display(premier.with(format: "I"))
|
||||||
|
]
|
||||||
|
|
||||||
|
#text(size: 0.9em, it.body)
|
||||||
|
#line(length: 3cm)
|
||||||
|
#v(1em)
|
||||||
|
])
|
||||||
|
]
|
||||||
|
|
||||||
|
let articlecounter = counter("article")
|
||||||
|
show heading.where(level: 2): it => {
|
||||||
|
articlecounter.step()
|
||||||
|
align(center, block[
|
||||||
|
Article #context articlecounter.display(premier.with(format: "1")) #sym.bar.h #text(size: 0.9em, style: "italic", it.body)
|
||||||
|
])
|
||||||
|
}
|
||||||
|
|
||||||
|
show heading.where(level: 3): it => [
|
||||||
|
#context counter(heading).display(premier.with(format: "I")) #sym.bar.h #if it.body != [] { text(size: 0.9em, style: "italic", [#it.body.]) }
|
||||||
|
]
|
||||||
|
|
||||||
|
show ref: it => {
|
||||||
|
let el = it.element
|
||||||
|
let article = articlecounter.at(el.location()).at(0, default: none)
|
||||||
|
let par = counter(heading).at(el.location()).at(2, default: none)
|
||||||
|
if el != none and el.func() == heading and article != none {
|
||||||
|
// Override heading references.
|
||||||
|
if (par == none) {
|
||||||
|
link(el.location(), numbering(
|
||||||
|
"1",
|
||||||
|
article + 1,
|
||||||
|
))
|
||||||
|
} else {
|
||||||
|
link(el.location(), numbering(
|
||||||
|
"1.I",
|
||||||
|
article,
|
||||||
|
par
|
||||||
|
))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Other references as usual.
|
||||||
|
it
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Début du document
|
||||||
|
place(
|
||||||
|
top + center,
|
||||||
|
scope: "parent",
|
||||||
|
float: true,
|
||||||
|
align(center)[
|
||||||
|
#if logo != none {
|
||||||
|
image(logo, height: 5em)
|
||||||
|
}
|
||||||
|
|
||||||
|
#text(size: 2.5em, weight: "extrabold")[#title]
|
||||||
|
|
||||||
|
#text(size: 1.5em)[#subtitle]
|
||||||
|
|
||||||
|
#v(1cm)
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
body
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue