typst-ysec/exam.typ
2024-05-22 15:10:56 +02:00

43 lines
1.1 KiB
Plaintext

#let qctr = counter("question")
#let french_month = ("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")
#let exam(title: "Exam", course: none, date: none, class: none,
author: none, subtitle: none, indications: none, doc) = {
set text(font: "Montserrat")
let date = if date == none { datetime.today() } else { date };
align(center, text(size:26pt, course + " - " + date.display("[year]")))
align(center, text(size:26pt, title))
align(center, text(size:15pt, fill: luma(80), subtitle))
v(5%)
align(center, text(size:14pt, author))
v(3%)
align(center, text(size:14pt, date.display("[day] ") + french_month.at(date.month() - 1) + date.display(" [year]")))
v(7%)
align(left, text(size: 20pt, "Nom :"))
align(left, text(size: 20pt, "Prénom :"))
v(3%)
line(length: 100%, stroke: luma(80))
text(size: 14pt, indications)
pagebreak()
doc
};
#let question(points: 1, q, a) = {
let pts = text(weight: "bold",
[#points] + if points < 2 { "pt" } else { "pts" });
context { qctr.step(); qctr.display() }
q
}