template-thesis-matisse/lib/abstracts.typ
2025-06-19 16:23:13 +02:00

86 lines
1.9 KiB
Typst

#import "etablissements.typ": etablissements-data
#let assets-folder = "../assets/"
// workaround for: https://github.com/typst/typst/issues/466
#let balanced-cols(n-cols, gutter: 11pt, body) = layout(bounds => context {
// Measure the height of the container of the text if it was single
// column, full width
let text-height = measure(box(
width: (bounds.width - (n-cols - 1) * gutter) / n-cols,
body
)).height
// Recompute the height of the new container. Add a few points to avoid the
// second column being longer than the first one
let balanced-height = text-height/n-cols + text.size/2
box(
height: balanced-height,
columns(n-cols, gutter: gutter, body)
)
})
#let abstracts(
university: "UR",
title-fr: "",
keywords-fr: (),
abstract-fr: [],
title-en: "",
keywords-en: (),
abstract-en: [],
heading-font: "TeX Gyre Heros",
school-color-verso: rgb("0054a0")
) = {
set page(
numbering: none,
header: none,
)
pagebreak()
pagebreak(to: "even")
set page(
margin: (
left: 20mm, right: 30mm,
top: 30mm, bottom: 30mm,
),
background: image(assets-folder + "abstracts-bg.svg")
)
set text(font: heading-font, fill: black)
place(dx: 100mm, dy: -15mm, etablissements-data.at(university).logo)
place(dx: 0mm, dy: -15mm, image(assets-folder + "logo.png", width: 7.5cm))
v(2cm)
line(length: 100%, stroke: .2cm + school-color-verso)
v(.4cm)
[
#show linebreak: none
#text(school-color-verso)[Titre :] #title-fr
]
[
Mots clés : #keywords-fr.join(", ")
]
balanced-cols(2,gutter: 11pt)[Résumé : #abstract-fr]
v(1cm)
line(length: 100%, stroke: .2cm + school-color-verso)
v(.4cm)
[
#show linebreak: none
#text(school-color-verso)[Title :] #title-en
]
[
Keywords: #keywords-en.join(", ")
]
balanced-cols(2, gutter: 11pt)[Abstract: #abstract-en]
}