diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/LICENSE b/packages/preview/paris-saclay-thesis-flat/1.0.2/LICENSE new file mode 100644 index 000000000..f5c3313bc --- /dev/null +++ b/packages/preview/paris-saclay-thesis-flat/1.0.2/LICENSE @@ -0,0 +1,18 @@ +MIT No Attribution + +Copyright 2025 Sébastien Mestrallet + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/README.md b/packages/preview/paris-saclay-thesis-flat/1.0.2/README.md new file mode 100644 index 000000000..795d52cdd --- /dev/null +++ b/packages/preview/paris-saclay-thesis-flat/1.0.2/README.md @@ -0,0 +1,125 @@ +# The `paris-saclay-thesis-flat` Typst package + +An unofficial, flat-design Typst template for Paris-Saclay University theses + +[![Maintenance Level: Actively Maintained](https://badgen.net/badge/Maintenance%20Level/Actively%20Maintained?color=97ca00)](https://gist.github.com/cheerfulstoic/d107229326a01ff0f333a1d3476e068d) + +

+page 1 of an example thesis based on this template +page 2 of an example thesis based on this template +

+ +
+About the name + +- `typst-paris-saclay-thesis-flat` is the name of the GitHub repo, `paris-saclay-thesis-flat` is the name of the Typst template +- The Typst template name does not contain `typst`, because it is redundant[^typst_template_naming] +- The Typst template name is not just `paris-saclay-thesis`, because it is not an official template[^typst_template_naming]. I got rid of the ugly white gradients in the vertical banner, so here is a flat-design version (was accepted by the university library for my thesis). + +[^typst_template_naming]: https://github.com/typst/packages?tab=readme-ov-file#submission-guidelines + +
+ +## Usage + + + +You can use this template in the [Typst web app](https://typst.app/) by clicking "Start from template" on the dashboard and searching for `paris-saclay-thesis-flat`. + +Alternatively, you can use the CLI to kick this project off using the command: +```bash +typst init @preview/paris-saclay-thesis-flat +cd paris-saclay-thesis-flat +``` + +Then download the _Segoe UI This_ font, e.g. from [here](https://font.download/font/segoe-ui-this), and place the .ttf files e.g. in a `fonts/` subfolder. + +If you use the CLI, you must tell the binary where to look for additional fonts with the `--font-path` argument: +```bash +typst watch main.typ --font-path fonts +``` + +And if you use [VS Code](https://code.visualstudio.com/) and [tinymist](https://github.com/Myriad-Dreamin/tinymist), set `["${workspaceFolder}/fonts"]` for `tinymist.fontPaths` in VS Code settings. + +In the web app, [project fonts are automatically discovered](https://typst.app/docs/reference/text/text/#parameters-font). + +## Configuration + +This template exports the `paris-saclay-thesis` function with the following named arguments: +- `candidate-name`: Name of the PhD candidate [type: content] +- `title-fr`: Thesis title in French [content] +- `title-en`: Translated thesis title, in English [content] +- `keywords-fr`: Keywords of the thesis subject, in French [strings array] +- `keywords-en`: Translated keywords of the thesis subject, in English [strings array] +- `abstract-fr`: Abstract of the thesis, in French [content] +- `abstract-en`: Translated abstract of the thesis, in English [content] +- `NNT`: National thesis number [content] +- `doctoral-school`: Line mentioning the doctoral school [content] +- `doctoral-school-code`: Short code of the doctoral school (usually the acronym) to fetch the right logo [string] +- `specialty`: Line mentioning the specialty [content] +- `graduate-school`: Line mentioning the graduate school [content] +- `university-component`: Line mentioning the university component ("référent") [content] +- `research-unit-and-advisors`: Paragraph mentioning the research unit and the PhD advisors [content] +- `defense-date`: Date of the PhD defense [content] +- `thesis-examiners`: List of thesis examiners [array of dictionaries, each with a `name`, `title` and `status` field, of type content] + +Some spacings are adjustable, see [`src/lib.typ`](src/lib.typ) for the complete list of arguments. + +The template will initialize your package with a sample call to the `paris-saclay-thesis` function in a show rule. If you want to change an existing project to use this template, you can add a show rule like this at the top of your file: + +```typst +#import "@preview/paris-saclay-thesis-flat:1.0.2": paris-saclay-thesis + +#show: paris-saclay-thesis.with( + candidate-name: [Frodon Sacquet], + title-fr: [Propriétés et conséquences psychiques, magiques et géopoliques du métal Au lorsque forgé en Anneau Unique], + title-en: [Properties and psychic, magical and geopolitical consequences of Au metal when forged into the One Ring], + keywords-fr: ("Or", "montagne du Destin", "Magie occulte"), + keywords-en: ("Gold","Mount Doom", "Occult magic"), + abstract-fr: lorem(200), + abstract-en: lorem(200), + NNT: [1955UPASX000], + doctoral-school: [École doctorale n°573 : INTERFACES - approches interdisciplinaires,\ fondements, applications et innovation], + doctoral-school-code: "INTERFACES", + specialty: [Spécialité de doctorat : Sciences des matériaux], + graduate-school: [Graduate School : Physique], + university-component: [Référent : Faculté des sciences d'Orsay], + research-unit-and-advisors: [ + Thèse préparée dans l'unité de recherche *Fondcombe*,\ sous la direction d'*Elrond*, seigneur de Fondcombe,\ + et l'encadrement de *Gandalf*, magicien de l'ordre des Istari. + ], + defense-date: [20 octobre 1955], + thesis-examiners: ( + ( + name: [*Aragorn*], + title: [Roi du Gondor], + status: [Président] + ), + ( + name: [*Legolas*], + title: [Prince des Elfes Sylvains], + status: [Rapporteur &\ Examinateur] + ), + ( + name: [*Gimli*], + title: [Guerrier du royaume d'Erebor], + status: [Rapporteur &\ Examinateur] + ), + ( + name: [*Faramir*], + title: [Intendant du Gondor], + status: [Examinateur] + ), + ), +) + +// Your content goes below. +``` + +## Resources + +- [Official MS Word & LaTeX templates](https://www.universite-paris-saclay.fr/recherche/doctorat-et-hdr/le-guide-de-la-soutenance-de-doctorat#Ressources) from the Paris-Saclay University + +# License + +[MIT-0](./LICENSE) \ No newline at end of file diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/2MIB.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/2MIB.png new file mode 100755 index 000000000..019452140 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/2MIB.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/AAIF.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/AAIF.png new file mode 100755 index 000000000..e8215ef76 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/AAIF.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/ABIES.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/ABIES.png new file mode 100755 index 000000000..64af72b2a Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/ABIES.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/BIOSIGNE.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/BIOSIGNE.png new file mode 100755 index 000000000..32f6017bf Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/BIOSIGNE.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/CBMS.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/CBMS.png new file mode 100755 index 000000000..16a98b8ae Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/CBMS.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/DEM.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/DEM.png new file mode 100755 index 000000000..c9e989d1c Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/DEM.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EDMH.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EDMH.png new file mode 100755 index 000000000..c53049693 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EDMH.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EDOM.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EDOM.png new file mode 100755 index 000000000..4feb475d7 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EDOM.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EDSP.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EDSP.png new file mode 100755 index 000000000..251d8651c Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EDSP.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EOBE.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EOBE.png new file mode 100755 index 000000000..fa374f8fb Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/EOBE.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/INTERFACES.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/INTERFACES.png new file mode 100755 index 000000000..533f433ce Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/INTERFACES.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/ITFA.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/ITFA.png new file mode 100755 index 000000000..10b51216d Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/ITFA.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/PHENIICS.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/PHENIICS.png new file mode 100755 index 000000000..0485ff97d Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/PHENIICS.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/PIF.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/PIF.png new file mode 100755 index 000000000..98d8ebfc5 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/PIF.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/README.md b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/README.md new file mode 100644 index 000000000..a3fe08f19 --- /dev/null +++ b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/README.md @@ -0,0 +1 @@ +images from the official LaTex template \ No newline at end of file diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SDSV.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SDSV.png new file mode 100755 index 000000000..1a750d00e Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SDSV.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SEIF.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SEIF.png new file mode 100755 index 000000000..3d56a1076 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SEIF.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SEVE.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SEVE.png new file mode 100755 index 000000000..1f187e7e4 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SEVE.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SMEMAG.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SMEMAG.png new file mode 100755 index 000000000..5621efe02 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SMEMAG.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SSH.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SSH.png new file mode 100755 index 000000000..34febd12f Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SSH.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SSMMH.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SSMMH.png new file mode 100755 index 000000000..49711ebb2 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/SSMMH.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/STIC.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/STIC.png new file mode 100755 index 000000000..08d285407 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/STIC.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/universite-paris-saclay.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/universite-paris-saclay.png new file mode 100644 index 000000000..5b9ce0bc0 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/img/universite-paris-saclay.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/src/lib.typ b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/lib.typ new file mode 100644 index 000000000..3ee3fa2ca --- /dev/null +++ b/packages/preview/paris-saclay-thesis-flat/1.0.2/src/lib.typ @@ -0,0 +1,311 @@ +// The main color of the Paris-Saclay University visual identity +#let prune = rgb(99, 0, 60) + +// Yellow background color for highlighting +#let yellow-highlighting = rgb("#fffd11a1") // default color of highlight() https://typst.app/docs/reference/text/highlight/#parameters-fill + +// An highlighted empty rectangle for missing parameters +#let missing-field(width: 10em) = box( + fill: yellow-highlighting, + width: width, + height: 1em, + baseline: 0.2em +) + +// An highlighted block for when the doctoral school logo is not selected +#let missing-doctoral-school-logo = block( + height: 65pt, + width: 200pt, + fill: yellow-highlighting +)[ + #align(center+horizon)[ + Logo de l'école doctorale + ] +] + +// The function takes the whole document as `body` parameter +// and formats it for a Paris-Saclay University thesis +#let paris-saclay-thesis( + + // The first and last names of the candidate + candidate-name: highlight[Prénom Nom], + + // The thesis title in French + title-fr: highlight[Titre de la thèse], + + // The translated thesis title in English + title-en: highlight[Title of the thesis], + + // The keywords of the thesis subject, in French + keywords-fr: (highlight[Mot-clé 1], highlight[Mot-clé 2], highlight[Mot-clé 3]), + + // The translated keywords of the thesis subject, in English + keywords-en: (highlight[Keyword 1], highlight[Keyword 2], highlight[Keyword 3]), + + // Abstract of the thesis, in French + abstract-fr: highlight(lorem(200)), + + // Translated abstract of the thesis, in English + abstract-en: highlight(lorem(200)), + + // The national thesis number (NNT, Numéro National de Thèse) + NNT: highlight[XXXXXXXXXX], + + // The line for the doctoral school number and name + doctoral-school: [École doctorale n°#missing-field(width: 3em) : #missing-field()], + + // The short code of the doctoral school. See images filename in ./img/ + doctoral-school-code: none, + + // The line for the specialty + specialty: [Spécialité de doctorat : #missing-field()], + + // The line for the graduate school + graduate-school: [Graduate School : #missing-field()], + + // The line for the university component / associated university (référent) + university-component: [Référent : #missing-field()], + + // The paragraph for the research unit and the PhD advisors + research-unit-and-advisors: [ + Thèse préparée dans l'unité de recherche #missing-field(),\ sous la direction de #missing-field(), #highlight[titre du directeur de thèse],\ + et l'encadrement de #missing-field(), #highlight[titre du co-endadrant]. + ], + + // The date of the PhD defense + defense-date: [#missing-field()], + + // The list of thesis examiners (rapporteurs and defense examiners) + thesis-examiners: ( + ( + name: missing-field(), + title: missing-field(width: 25em), + status: highlight[Président(e)] + ), + ( + name: missing-field(), + title: missing-field(width: 25em), + status: highlight[Rapporteur &\ Examinateur/trice] + ), + ( + name: missing-field(), + title: missing-field(width: 25em), + status: highlight[Rapporteur &\ Examinateur/trice] + ), + ( + name: missing-field(), + title: missing-field(width: 25em), + status: highlight[Examinateur/trice] + ), + ), + + // Spacings in the first page + vertical-spacing-1: 15pt, + vertical-spacing-2: 55pt, + vertical-spacing-3: 40pt, + vertical-spacing-4: 40pt, + vertical-spacing-5: 40pt, + horizontal-spacing-1: 50pt, + horizontal-spacing-2: 100pt, + + // The thesis content + body + +) = { + + set page( + paper: "a4", + margin: ( + left: 0pt, + top: 0pt, + bottom: 0pt, + right: 2.5cm + ) + ) + + set text( + font: ("Segoe UI This"), + size: 12pt, + lang: "fr" + ) + + let rectangle_width = 16.4%*21cm // 16.4% of the page width + + grid( + columns: (rectangle_width, 100%-rectangle_width), + gutter: 25pt, + [ + #rect( + fill: prune, + width: 100%,// 100% of rectangle_width, + height: 100% + ) + + #place( + bottom+left, + dx: 0.1cm, + dy: -3cm, + rotate( + -90deg, + block[ + #text( + fill: white, + size: 16pt, + )[ + THESE~DE~DOCTORAT + ] + #v(0.5pt) + #text( + fill: white, + )[ + NNT~:~#NNT + ] + ] + ) + ) + ], + [ // right part of the grid + + #v(vertical-spacing-1) + + #image("img/universite-paris-saclay.png", width: 25.4%*21cm) + + #v(vertical-spacing-2) + + #align(right)[ + #text( + size: 20pt, + fill: prune, + )[ + #title-fr + ]\ + #v(2pt) + #text( + size: 13pt, + fill: black, + style: "italic" + )[ + #title-en + ]\ + + #v(vertical-spacing-3) + + #text( + size: 13pt, + weight: 400, + )[ + *Thèse de doctorat de l’université Paris-Saclay* + ] + #v(10pt) + #text( + size: 12pt, + )[ + #doctoral-school\ + #specialty\ + #graduate-school\ + #university-component + #v(10pt) + #research-unit-and-advisors + ] + + #v(vertical-spacing-4) + + #text( + size: 11pt, + )[ + *Thèse soutenue à Paris-Saclay, le #defense-date, par* \ + ] + + #text( + size: 20pt, + fill: prune, + weight: 600, + )[ + #candidate-name + ] + ] + + #v(vertical-spacing-5) + + #grid( + columns: (horizontal-spacing-1, auto), + row-gutter: 1em, + stroke: (x,y) => if x == 1 and y == 1 { (left: (1pt + prune)) }, + [], + [ + #text(size: 14pt, fill: prune)[*Composition du jury*]\ + #text(size: 11pt, fill: prune)[Membres du jury avec voix délibérative] + ], + [], + [ + #set text(10pt) + #grid( + columns: (auto, auto), + column-gutter: horizontal-spacing-2, + inset: (x: 6pt, y: 3pt), + align: horizon, + ..for thesis-examiner in thesis-examiners { + (thesis-examiner.name, grid.cell(rowspan: 2)[#thesis-examiner.status], text(size: 9pt)[#thesis-examiner.title]) + if thesis-examiner != thesis-examiners.last() { + ([],[]) + } + } + ) + ], + ) + ] + ) // end grid + + // from the second page, default margins of the A4 paper size + set page( + margin: auto + ) + + pagebreak() + + if doctoral-school-code == none { + missing-doctoral-school-logo + } + else { + assert(type(doctoral-school-code) == str) + image("img/" + doctoral-school-code + ".png", width: 60%) + } + + v(10pt) + + grid( + columns: (100%), + rows: 2, + gutter: 40pt, + inset: 10pt, + stroke: 1pt+prune, + [ + #set text(10pt) + *Titre :* #title-fr\ + *Mots-clés :* #for keyword in keywords-fr { + (keyword) + if keyword != keywords-fr.last() { + (", ") + } + }\ + #v(5pt) + *Résumé :* #abstract-fr + ], + [ + #set text(10pt) + *Title :* #title-en\ + *Keywords :* #for keyword in keywords-en { + (keyword) + if keyword != keywords-en.last() { + (", ") + } + }\ + #v(5pt) + *Abstract :* #abstract-en + ] + ) + + pagebreak(weak: true) + + body +} \ No newline at end of file diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/template/bib.yml b/packages/preview/paris-saclay-thesis-flat/1.0.2/template/bib.yml new file mode 100644 index 000000000..68386a9e1 --- /dev/null +++ b/packages/preview/paris-saclay-thesis-flat/1.0.2/template/bib.yml @@ -0,0 +1,6 @@ +# https://github.com/typst/hayagriva/blob/main/docs/file-format.md + +bib:concerning-hobbits: + title: Concerning Hobbits + author: Bilbon Sacquet + type: book \ No newline at end of file diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/template/main.typ b/packages/preview/paris-saclay-thesis-flat/1.0.2/template/main.typ new file mode 100644 index 000000000..2bf288967 --- /dev/null +++ b/packages/preview/paris-saclay-thesis-flat/1.0.2/template/main.typ @@ -0,0 +1,268 @@ +#import "@preview/paris-saclay-thesis-flat:1.0.2": paris-saclay-thesis, prune + +/////////////////////////////////////////// +// 1/3 If not already done, download the +// "Segoe UI This" font (see README) +/////////////////////////////////////////// + +/////////////////////////////////////////// +// 2/3 Change the value of the following +// parameters to edit the first two pages. +// All parameters have a default value, so +// you can remove some to highlight which +// ones are still missing. +/////////////////////////////////////////// + +#show: paris-saclay-thesis.with( + candidate-name: [Frodon Sacquet], + title-fr: [Propriétés et conséquences psychiques, magiques et géopoliques du métal Au lorsque forgé en Anneau Unique], + title-en: [Properties and psychic, magical and geopolitical consequences of Au metal when forged into the One Ring], + keywords-fr: ("Or", "montagne du Destin", "Magie occulte"), + keywords-en: ("Gold","Mount Doom", "Occult magic"), + abstract-fr: lorem(200), + abstract-en: lorem(200), + NNT: [1955UPASX000], + doctoral-school: [École doctorale n°573 : INTERFACES - approches interdisciplinaires,\ fondements, applications et innovation], + doctoral-school-code: "INTERFACES", // for the logo to insert + specialty: [Spécialité de doctorat : Sciences des matériaux], + graduate-school: [Graduate School : Physique], + university-component: [Référent : Faculté des sciences d'Orsay], + research-unit-and-advisors: [ + Thèse préparée dans l'unité de recherche *Fondcombe*,\ sous la direction d'*Elrond*, seigneur de Fondcombe,\ + et l'encadrement de *Gandalf*, magicien de l'ordre des Istari. + ], + defense-date: [20 octobre 1955], + thesis-examiners: ( + ( + name: [*Aragorn*], + title: [Roi du Gondor], + status: [Président] + ), + ( + name: [*Legolas*], + title: [Prince des Elfes Sylvains], + status: [Rapporteur &\ Examinateur] + ), + ( + name: [*Gimli*], + title: [Guerrier du royaume d'Erebor], + status: [Rapporteur &\ Examinateur] + ), + ( + name: [*Faramir*], + title: [Intendant du Gondor], + status: [Examinateur] + ), + ), + // You can also adjust spacings in the first page with + // `vertical-spacing-1` to `vertical-spacing-5` + // and `horizontal-spacing-1` to `horizontal-spacing-2` +) + +/////////////////////////////////////////// +// 3/3 Starting from here, the third page, +// no formatting is imposed. +// However here are some tweaks you +// might like. +/////////////////////////////////////////// + +// Switch to a serif font family, size 11 + +#set text( + font: "Libertinus Serif", + size: 11pt +) + +// Show links in blue + +#show link: set text(fill: blue) + +// Show numbers in references (to a bibliography entry, a section, a figure) in blue +// thanks Eric Biedert https://github.com/typst/typst/discussions/4143 + +#show cite: it => { + // reference to a bibliography entry -> color only the number, not square brackets, not the potential supplement + show regex("\[",): set text(fill: black) // enforce square brackets in black + show regex("^\[(\d+)",): set text(fill: blue) // only the first number, in case there is a number in the supplement + it +} +#show ref: it => { + if it.element == none { + // reference to a bibliography entry -> manage by `#show cite` above + return it + } + // reference to a section or a figure + show regex("[\d]+[\.]?[\d]*[\.]?[\d]*"): set text(fill: blue) // find something like "1", "1.2" or "1.3" + it +} + +// Figure legends in italic and with smaller font size + +#show figure.caption: it => [ + #text(size: 10pt, style: "italic")[#it] +] + +// Headings numbering & refer to a section with "Chapitre X" instead of "Section X" + +#set heading(numbering: "1.1", supplement: "Chapitre") + +// Refer to an equation with "Équation X" instead of "Equation X" + +#set math.equation(supplement: "Équation") + +// Headings formatting + +#let heading_text_size = (none, 18pt, 15pt, 12pt, 11pt) // for each heading level +#show heading.where(level: 1): header => { + set text( + size: heading_text_size.at(1), + fill: prune, + font: "Segoe UI This", + weight: "bold" + ) + let number = context counter(heading).display("1 • ") // prefix format + pagebreak(weak: true) // start level 1 headings on a new page + block(breakable: false)[ + #if header.numbering != none [ #number ] + #upper(header.body) + ] + v(heading_text_size.at(1)) // same height spacing as the font size +} +#show heading.where(level: 2): header => { + set text( + size: heading_text_size.at(2), + font: "Segoe UI This", + weight: "bold" + ) + v(heading_text_size.at(2)) // same height spacing as the font size + box()[ + #counter(heading).display()~ + #upper(header.body) + ] + v(heading_text_size.at(2)) // same height spacing as the font size +} +#show heading.where(level: 3): header => { + set text( + size: heading_text_size.at(3), + font: "Segoe UI This", + weight: "bold" + ) + v(heading_text_size.at(3)) // same height spacing as the font size + box()[ + #h(10pt) // small indent + #counter(heading).display()~ + #header.body + ] + v(heading_text_size.at(3)) // same height spacing as the font size +} + +// Headings formatting in the outline + +#show outline.entry.where(level: 1): it => { + v(12pt, weak: true) // small spacing before + strong(it) // in bold +} +#show outline.entry.where(level: 3): it => { + text(size: 10pt)[#it] // slightly smaller +} + +// Footer with the page number + +#set page(footer: context [ + #set align(center) + #text( + fill: black, + size: 12pt, + weight: "regular" + )[ + #counter(page).display("1") + ] + ] +) + +// Text justification + +#set par( + justify: true, + linebreaks: "optimized" +) + +// A "Remarque : " text box + +#let remarque(number: none, body) = { + block(stroke: (left: 1pt), inset: 0.5em)[ + #smallcaps[Remarque #number :] #body + ] +} + +// "En résumé" & "Publications et communications scientifiques" boxes + +#import "@preview/colorful-boxes:1.4.1": colorbox + +#let en_résumé(body) = { + colorbox( + title: text(font: "Segoe UI This")[En résumé], + radius: 2pt, + width: auto, + color: "default" + )[ + #body + #v(2pt) + ] +} + +#let publications(body) = { + colorbox( + title: text(font: "Segoe UI This")[Publications et communications scientifiques], + radius: 2pt, + width: auto, + box-colors: ( + prune: (stroke: prune, fill: white, title: white), + ), + color: "prune" + )[ + #body + #v(2pt) + ] +} + +// Display the outline + +#outline( + title: [Table des matières], + indent: 1em +) + +/////////////////////////////////////////// +// Write your thesis below. Bon courage ! +/////////////////////////////////////////// + += Chapitre + +#lorem(50) + +#en_résumé[ + #lorem(25) +] + +#publications[ + - #lorem(12) + - #lorem(12) + - #lorem(12) +] + +== Sous-chapitre + +#lorem(25) + +=== Sous-sous-chapitre + +#lorem(50) @bib:concerning-hobbits + +#remarque[ + #lorem(25) +] + +#lorem(50) + +#bibliography("bib.yml", title: [Bibliographie]) \ No newline at end of file diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/thumbnails/p1.png b/packages/preview/paris-saclay-thesis-flat/1.0.2/thumbnails/p1.png new file mode 100644 index 000000000..31e4ca433 Binary files /dev/null and b/packages/preview/paris-saclay-thesis-flat/1.0.2/thumbnails/p1.png differ diff --git a/packages/preview/paris-saclay-thesis-flat/1.0.2/typst.toml b/packages/preview/paris-saclay-thesis-flat/1.0.2/typst.toml new file mode 100644 index 000000000..970dd3f2f --- /dev/null +++ b/packages/preview/paris-saclay-thesis-flat/1.0.2/typst.toml @@ -0,0 +1,33 @@ +# for a description of available keys, see https://github.com/typst/packages/?tab=readme-ov-file#package-format + +[package] +name = "paris-saclay-thesis-flat" +version = "1.0.2" +entrypoint = "src/lib.typ" +authors = ["Sébastien Mestrallet <@sebmestrallet>"] +license = "MIT-0" +description = "An unofficial, flat-design template for Paris-Saclay University theses" +repository = "https://github.com/sebmestrallet/typst-paris-saclay-thesis-flat" +keywords = ["thesis", "Paris-Saclay"] +categories = ["thesis"] +disciplines = [] +compiler = "0.12.0" +exclude = [ + ".github/", + "fonts/", + "scripts/", + "template/main.pdf", + "thumbnails/p2.png", + "thumbnails/README.md", + ".gitignore", + ".typstignore", + "CHANGELOG.md", + "CITATION.cff", + "Justfile" +] + +[template] +path = "template/" # all files inside will be copied into the user's new project directory +entrypoint = "main.typ" # compilation target +thumbnail = "thumbnails/p1.png" +