#let assets-folder = "../assets/" #let cover( title-en: "", title-fr: "", author: "", affiliation: "", defense-place: "", defense-date: "", jury-content: [], university: [], speciality: "Informatique", heading-font: "TeX Gyre Heros", ) = { set page( margin: (left: 20mm, right: 20mm, top: 30mm, bottom: 30mm), header: none, numbering: none, background: image(assets-folder + "cover-bg.svg") ) set text(font: heading-font, fill: black) place(dx: 110mm, dy: -15mm, image(assets-folder + "UR.png", width: 6cm)) place(dx: 0mm, dy: -15mm, image(assets-folder + "logo.png", width: 7.5cm)) v(2.1cm) text(size: 2em, smallcaps[Thèse de doctorat de]) v(2.25cm) set text(fill: white) text(size: 1.5em, smallcaps[l'Université de Rennes]) v(.01cm) text(size: 1.2em)[ #smallcaps[École Doctorale N° 601] \ _Mathématiques, Télécommunications, Informatique, \ Signal, Systèmes, Électronique_ \ Spécialité : _ #speciality _ \ #v(.1cm) #h(.6cm) Par \ ] // Add a blue background with the width of the page context { let y-start = locate().position().y - 1cm let y-end = locate().position().y + measure(query().first()).height + .5cm let height = 5em place( top + left, float: false, dy: y-start - page.margin.top, dx: -page.margin.left, block( width: page.width, height: y-end - y-start, fill: blue ) ) } // Author name v(0em) h(.6cm) text(size: 1.9em)[*#author* \ ] v(.1cm) // Title + defense info block text(size: 1.6em)[*#title-en* ] parbreak() text(size: 1.4em, title-fr) parbreak() text(size: 1.1em)[ *Thèse présentée et soutenue à #defense-place, le #defense-date* \ *Unité de recherche : #affiliation* ] v(1em) set text(fill: black) jury-content pagebreak() set page(background: none) }