first draft

This commit is contained in:
Jean-Marie Mineau 2025-06-10 13:35:53 +02:00
commit f1abfbfa5b
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
15 changed files with 2893 additions and 0 deletions

19
README.md Normal file
View file

@ -0,0 +1,19 @@
# Template Thesis MATISSE
Typst template for thesis from the MATISSE doctoral school.
## Usage
Install locally (run `ln` from the git repo):
```
mkdir -p ~/.local/share/typst/packages/local/template-thesis-matisse/
ln -s $(pwd) ~/.local/share/typst/packages/local/template-thesis-matisse/0.0.1
```
To generate a new project, run `typst init @local/template-thesis-matisse <directory>`
## Reference
- Inspired by [the thesis of Timothe Albouy](https://github.com/TimotheAlbouy/talb-thesis/tree/main), some code might be copied from it.

BIN
assets/UR.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

527
assets/abstracts-bg.svg Normal file
View file

@ -0,0 +1,527 @@
<svg class="typst-doc" viewBox="0 0 595.2764999999999 841.89105" width="595.2764999999999pt" height="841.89105pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:h5="http://www.w3.org/1999/xhtml">
<g>
<g transform="translate(0 -99.21275)">
<g class="typst-group">
<g>
<g transform="translate(0 234.7673328)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 231.42406559999998)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 228.08079840000002)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 224.7375312)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 221.394264)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 218.05099679999998)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 214.70772960000002)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 211.3644624)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 208.0211952)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 204.67792799999998)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 201.3346608)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 197.9913936)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 194.6481264)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 191.3048592)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 187.96159200000002)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 184.6183248)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 181.2750576)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 177.9317904)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 174.5885232)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 171.24525599999998)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 167.90198880000003)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 164.5587216)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 161.21545440000003)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 157.8721872)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 154.52892)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 151.1856528)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 147.8423856)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 144.4991184)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 141.15585119999997)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 137.812584)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 134.46931679999997)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 131.12604960000002)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 127.78278240000002)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 124.4395152)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(0 113.386)">
<path class="typst-shape" fill="#ffffff" stroke="#000000" stroke-width="0" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 63.609547 C 0 63.609547 199.84282 124.7246 199.84282 124.7246 C 199.84282 124.7246 199.84282 0 199.84282 0 C 199.84282 0 0 0 0 0 C 0 0 0 0 0 0 C 0 0 0 63.609547 0 63.609547 C 0 63.609547 0 63.609547 0 63.609547 Z "/>
</g>
<g transform="translate(397.41792999999996 915.0833327999999)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 911.7400656000001)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 908.3967983999999)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 905.0535312)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 901.710264)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 898.3669968)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 895.0237296)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 891.6804624)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 888.3371952)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 884.9939280000001)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 881.6506608000001)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 878.3073936000001)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 874.9641264)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 871.6208592)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 868.277592)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 864.9343248)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 861.5910576)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 858.2477904)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 854.9045232)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 851.561256)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 848.2179888000001)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 844.8747216)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 841.5314544)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 838.1881872)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 834.84492)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 831.5016528)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 828.1583856)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 824.8151184)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 821.4718512)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 818.128584)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 814.7853168)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 811.4420496)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 808.0987824)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(397.41792999999996 804.7555152)">
<path class="typst-shape" fill="none" stroke="#0054a026" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 198.4255 55.8993 198.4255 55.8993 "/>
</g>
<g transform="translate(396.000605 793.702)">
<path class="typst-shape" fill="#ffffff" stroke="#000000" stroke-width="0" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 124.7246 C 0 124.7246 199.84282 63.609547 199.84282 63.609547 C 199.84282 63.609547 199.84282 0 199.84282 0 C 199.84282 0 0 0 0 0 C 0 0 0 0 0 0 C 0 0 0 124.7246 0 124.7246 C 0 124.7246 0 124.7246 0 124.7246 Z "/>
</g>
<g transform="translate(198.4255 121.3813328)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 118.0380656)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 114.69479839999998)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 111.35153119999998)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 108.00826400000003)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 104.66499680000003)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 101.32172960000001)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 97.97846240000001)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 94.6351952)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 91.291928)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 87.9486608)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 84.60539359999999)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 81.26212639999999)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 77.91885920000003)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 74.57559200000001)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 71.23232480000001)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 67.88905760000002)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 64.5457904)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 61.202523199999995)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 57.859255999999995)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 54.51598880000004)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 51.17272160000003)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 47.829454400000024)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 44.48618720000002)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 41.14292000000001)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 37.79965280000001)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 34.456385600000004)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 31.113118399999998)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 27.76985119999999)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 24.426583999999984)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 21.083316799999977)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 17.740049600000024)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 14.396782400000019)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(198.4255 11.053515200000012)">
<path class="typst-shape" fill="none" stroke="#0054a040" stroke-width="1.190553" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 55.8993 C 0 55.8993 198.4255 0 198.4255 0 "/>
</g>
<g transform="translate(197.008175 22.67720000000002)">
<path class="typst-shape" fill="#ffffff" stroke="#000000" stroke-width="0" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 1.70079 0 1.70079 0 C 1.70079 0 1.70079 198.4255 1.70079 198.4255 C 1.70079 198.4255 0 198.4255 0 198.4255 C 0 198.4255 0 0 0 0 C 0 0 0 0 0 0 Z "/>
</g>
<g transform="translate(198.4255 0)">
<path class="typst-shape" fill="url(#g7179281B9ED37EB8A6C69B5BD9331455)" stroke="#000000" stroke-width="0" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" d="M 0 0 C 0 0 199.84282 0 199.84282 0 C 199.84282 0 199.84282 180.6239 199.84282 180.6239 C 199.84282 180.6239 0 180.6239 0 180.6239 C 0 180.6239 0 0 0 0 C 0 0 0 0 0 0 Z "/>
</g>
</g>
</g>
</g>
</g>
<defs id="gradients">
<linearGradient id="f11DEDD21F9E7EA3BFE5EDC4ECE632631" spreadMethod="pad" gradientUnits="userSpaceOnUse" x1="0" y1="0" x2="0.00000000000000006123233995736766" y2="1">
<stop offset="0%" stop-color="#ffffff"/>
<stop offset="0.53%" stop-color="#ffffff"/>
<stop offset="1.06%" stop-color="#ffffff"/>
<stop offset="1.59%" stop-color="#ffffff"/>
<stop offset="2.12%" stop-color="#ffffff"/>
<stop offset="2.65%" stop-color="#ffffff"/>
<stop offset="3.17%" stop-color="#ffffff"/>
<stop offset="3.7%" stop-color="#ffffff"/>
<stop offset="4.23%" stop-color="#ffffff"/>
<stop offset="4.76%" stop-color="#ffffff"/>
<stop offset="5.29%" stop-color="#ffffff"/>
<stop offset="5.82%" stop-color="#ffffff"/>
<stop offset="6.35%" stop-color="#ffffff"/>
<stop offset="6.88%" stop-color="#ffffff"/>
<stop offset="7.41%" stop-color="#ffffff"/>
<stop offset="7.94%" stop-color="#ffffff"/>
<stop offset="8.47%" stop-color="#ffffff"/>
<stop offset="8.99%" stop-color="#ffffff"/>
<stop offset="9.52%" stop-color="#ffffff"/>
<stop offset="10.05%" stop-color="#ffffff"/>
<stop offset="10.58%" stop-color="#ffffff"/>
<stop offset="11.11%" stop-color="#ffffff"/>
<stop offset="11.64%" stop-color="#ffffff"/>
<stop offset="12.17%" stop-color="#ffffff"/>
<stop offset="12.7%" stop-color="#ffffff"/>
<stop offset="13.23%" stop-color="#ffffff"/>
<stop offset="13.76%" stop-color="#ffffff"/>
<stop offset="14.29%" stop-color="#ffffff"/>
<stop offset="14.81%" stop-color="#ffffff"/>
<stop offset="15.34%" stop-color="#ffffff"/>
<stop offset="15.87%" stop-color="#ffffff"/>
<stop offset="16.4%" stop-color="#ffffff"/>
<stop offset="16.93%" stop-color="#ffffff"/>
<stop offset="17.46%" stop-color="#ffffff"/>
<stop offset="17.99%" stop-color="#ffffff"/>
<stop offset="18.52%" stop-color="#ffffff"/>
<stop offset="19.05%" stop-color="#ffffff"/>
<stop offset="19.58%" stop-color="#ffffff"/>
<stop offset="20.11%" stop-color="#ffffff"/>
<stop offset="20.63%" stop-color="#ffffff"/>
<stop offset="21.16%" stop-color="#ffffff"/>
<stop offset="21.69%" stop-color="#ffffff"/>
<stop offset="22.22%" stop-color="#ffffff"/>
<stop offset="22.75%" stop-color="#ffffff"/>
<stop offset="23.28%" stop-color="#ffffff"/>
<stop offset="23.81%" stop-color="#ffffff"/>
<stop offset="24.34%" stop-color="#ffffff"/>
<stop offset="24.87%" stop-color="#ffffff"/>
<stop offset="25.4%" stop-color="#ffffff"/>
<stop offset="25.93%" stop-color="#ffffff"/>
<stop offset="26.46%" stop-color="#ffffff"/>
<stop offset="26.98%" stop-color="#ffffff"/>
<stop offset="27.51%" stop-color="#ffffff"/>
<stop offset="28.04%" stop-color="#ffffff"/>
<stop offset="28.57%" stop-color="#ffffff"/>
<stop offset="29.1%" stop-color="#ffffff"/>
<stop offset="29.63%" stop-color="#ffffff"/>
<stop offset="30.16%" stop-color="#ffffff"/>
<stop offset="30.69%" stop-color="#ffffff"/>
<stop offset="31.22%" stop-color="#ffffff"/>
<stop offset="31.75%" stop-color="#ffffff"/>
<stop offset="32.28%" stop-color="#ffffff"/>
<stop offset="32.8%" stop-color="#ffffff"/>
<stop offset="33.33%" stop-color="#ffffff"/>
<stop offset="33.33%" stop-color="#ffffff"/>
<stop offset="33.86%" stop-color="#ffffff"/>
<stop offset="34.39%" stop-color="#ffffff"/>
<stop offset="34.92%" stop-color="#ffffff"/>
<stop offset="35.45%" stop-color="#ffffff"/>
<stop offset="35.98%" stop-color="#ffffff"/>
<stop offset="36.51%" stop-color="#ffffff"/>
<stop offset="37.04%" stop-color="#ffffff"/>
<stop offset="37.57%" stop-color="#ffffff"/>
<stop offset="38.1%" stop-color="#ffffff"/>
<stop offset="38.62%" stop-color="#ffffff"/>
<stop offset="39.15%" stop-color="#ffffff"/>
<stop offset="39.68%" stop-color="#ffffff"/>
<stop offset="40.21%" stop-color="#ffffff"/>
<stop offset="40.74%" stop-color="#ffffff"/>
<stop offset="41.27%" stop-color="#ffffff"/>
<stop offset="41.8%" stop-color="#ffffff"/>
<stop offset="42.33%" stop-color="#ffffff"/>
<stop offset="42.86%" stop-color="#ffffff"/>
<stop offset="43.39%" stop-color="#ffffff"/>
<stop offset="43.92%" stop-color="#ffffff"/>
<stop offset="44.44%" stop-color="#ffffff"/>
<stop offset="44.97%" stop-color="#ffffff"/>
<stop offset="45.5%" stop-color="#ffffff"/>
<stop offset="46.03%" stop-color="#ffffff"/>
<stop offset="46.56%" stop-color="#ffffff"/>
<stop offset="47.09%" stop-color="#ffffff"/>
<stop offset="47.62%" stop-color="#ffffff"/>
<stop offset="48.15%" stop-color="#ffffff"/>
<stop offset="48.68%" stop-color="#ffffff"/>
<stop offset="49.21%" stop-color="#ffffff"/>
<stop offset="49.74%" stop-color="#ffffff"/>
<stop offset="50.26%" stop-color="#ffffff"/>
<stop offset="50.79%" stop-color="#ffffff"/>
<stop offset="51.32%" stop-color="#ffffff"/>
<stop offset="51.85%" stop-color="#ffffff"/>
<stop offset="52.38%" stop-color="#ffffff"/>
<stop offset="52.91%" stop-color="#ffffff"/>
<stop offset="53.44%" stop-color="#ffffff"/>
<stop offset="53.97%" stop-color="#ffffff"/>
<stop offset="54.5%" stop-color="#ffffff"/>
<stop offset="55.03%" stop-color="#ffffff"/>
<stop offset="55.56%" stop-color="#ffffff"/>
<stop offset="56.08%" stop-color="#ffffff"/>
<stop offset="56.61%" stop-color="#ffffff"/>
<stop offset="57.14%" stop-color="#ffffff"/>
<stop offset="57.67%" stop-color="#ffffff"/>
<stop offset="58.2%" stop-color="#ffffff"/>
<stop offset="58.73%" stop-color="#ffffff"/>
<stop offset="59.26%" stop-color="#ffffff"/>
<stop offset="59.79%" stop-color="#ffffff"/>
<stop offset="60.32%" stop-color="#ffffff"/>
<stop offset="60.85%" stop-color="#ffffff"/>
<stop offset="61.38%" stop-color="#ffffff"/>
<stop offset="61.9%" stop-color="#ffffff"/>
<stop offset="62.43%" stop-color="#ffffff"/>
<stop offset="62.96%" stop-color="#ffffff"/>
<stop offset="63.49%" stop-color="#ffffff"/>
<stop offset="64.02%" stop-color="#ffffff"/>
<stop offset="64.55%" stop-color="#ffffff"/>
<stop offset="65.08%" stop-color="#ffffff"/>
<stop offset="65.61%" stop-color="#ffffff"/>
<stop offset="66.14%" stop-color="#ffffff"/>
<stop offset="66.67%" stop-color="#ffffff"/>
<stop offset="66.67%" stop-color="#ffffff"/>
<stop offset="67.2%" stop-color="#fffffffb"/>
<stop offset="67.72%" stop-color="#fffffff7"/>
<stop offset="68.25%" stop-color="#fffffff3"/>
<stop offset="68.78%" stop-color="#ffffffef"/>
<stop offset="69.31%" stop-color="#ffffffeb"/>
<stop offset="69.84%" stop-color="#ffffffe7"/>
<stop offset="70.37%" stop-color="#ffffffe3"/>
<stop offset="70.9%" stop-color="#ffffffdf"/>
<stop offset="71.43%" stop-color="#ffffffdb"/>
<stop offset="71.96%" stop-color="#ffffffd7"/>
<stop offset="72.49%" stop-color="#ffffffd2"/>
<stop offset="73.02%" stop-color="#ffffffce"/>
<stop offset="73.54%" stop-color="#ffffffca"/>
<stop offset="74.07%" stop-color="#ffffffc6"/>
<stop offset="74.6%" stop-color="#ffffffc2"/>
<stop offset="75.13%" stop-color="#ffffffbe"/>
<stop offset="75.66%" stop-color="#ffffffba"/>
<stop offset="76.19%" stop-color="#ffffffb6"/>
<stop offset="76.72%" stop-color="#ffffffb2"/>
<stop offset="77.25%" stop-color="#ffffffae"/>
<stop offset="77.78%" stop-color="#ffffffaa"/>
<stop offset="78.31%" stop-color="#ffffffa6"/>
<stop offset="78.84%" stop-color="#ffffffa2"/>
<stop offset="79.37%" stop-color="#ffffff9e"/>
<stop offset="79.89%" stop-color="#ffffff9a"/>
<stop offset="80.42%" stop-color="#ffffff96"/>
<stop offset="80.95%" stop-color="#ffffff92"/>
<stop offset="81.48%" stop-color="#ffffff8e"/>
<stop offset="82.01%" stop-color="#ffffff8a"/>
<stop offset="82.54%" stop-color="#ffffff86"/>
<stop offset="83.07%" stop-color="#ffffff82"/>
<stop offset="83.6%" stop-color="#ffffff7d"/>
<stop offset="84.13%" stop-color="#ffffff79"/>
<stop offset="84.66%" stop-color="#ffffff75"/>
<stop offset="85.19%" stop-color="#ffffff71"/>
<stop offset="85.71%" stop-color="#ffffff6d"/>
<stop offset="86.24%" stop-color="#ffffff69"/>
<stop offset="86.77%" stop-color="#ffffff65"/>
<stop offset="87.3%" stop-color="#ffffff61"/>
<stop offset="87.83%" stop-color="#ffffff5d"/>
<stop offset="88.36%" stop-color="#ffffff59"/>
<stop offset="88.89%" stop-color="#ffffff55"/>
<stop offset="89.42%" stop-color="#ffffff51"/>
<stop offset="89.95%" stop-color="#ffffff4d"/>
<stop offset="90.48%" stop-color="#ffffff49"/>
<stop offset="91.01%" stop-color="#ffffff45"/>
<stop offset="91.53%" stop-color="#ffffff41"/>
<stop offset="92.06%" stop-color="#ffffff3d"/>
<stop offset="92.59%" stop-color="#ffffff39"/>
<stop offset="93.12%" stop-color="#ffffff35"/>
<stop offset="93.65%" stop-color="#ffffff31"/>
<stop offset="94.18%" stop-color="#ffffff2d"/>
<stop offset="94.71%" stop-color="#ffffff28"/>
<stop offset="95.24%" stop-color="#ffffff24"/>
<stop offset="95.77%" stop-color="#ffffff20"/>
<stop offset="96.3%" stop-color="#ffffff1c"/>
<stop offset="96.83%" stop-color="#ffffff18"/>
<stop offset="97.35%" stop-color="#ffffff14"/>
<stop offset="97.88%" stop-color="#ffffff10"/>
<stop offset="98.41%" stop-color="#ffffff0c"/>
<stop offset="98.94%" stop-color="#ffffff08"/>
<stop offset="99.47%" stop-color="#ffffff04"/>
<stop offset="100%" stop-color="#ffffff00"/>
</linearGradient>
</defs>
<defs id="gradient-refs">
<linearGradient gradientTransform="matrix(199.842825 0 0 180.623898 0 0)" id="g7179281B9ED37EB8A6C69B5BD9331455" href="#f11DEDD21F9E7EA3BFE5EDC4ECE632631" xlink:href="#f11DEDD21F9E7EA3BFE5EDC4ECE632631"/>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 46 KiB

1876
assets/cover-bg.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 259 KiB

BIN
assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

85
lib/abstracts.typ Normal file
View file

@ -0,0 +1,85 @@
#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(
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, image(assets-folder + "UR.png", width: 6cm))
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]
}

85
lib/cover.typ Normal file
View file

@ -0,0 +1,85 @@
#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 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(<cover:title-en>).position().y - 1cm
let y-end = locate(<cover:defense-info>).position().y + measure(query(<cover:defense-info>).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* <cover: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*
<cover:defense-info>
]
v(1em)
set text(fill: black)
jury-content
pagebreak()
set page(background: none)
}

2
lib/lib.typ Normal file
View file

@ -0,0 +1,2 @@
#import "matisse-thesis.typ": *
#import "todos.typ": *

214
lib/matisse-thesis.typ Normal file
View file

@ -0,0 +1,214 @@
#import "@preview/hydra:0.6.1": hydra
#import "cover.typ": cover
#import "abstracts.typ": abstracts
#let matisse-thesis(
// English title, will be used for the document title metadata
title-en: "",
title-fr: "",
author: "",
affiliation: "",
defense-place: "",
defense-date: "",
jury-content: [],
university: [l'Université de Rennes],
speciality: "Informatique",
// List of keyword for the abstract
keywords-en: (),
// List of french keywords for the abstract
keywords-fr: (),
abstract-en: [],
abstract-fr: [],
// If the current document is a draft
draft: true,
bibliography-style: "association-for-computing-machinery",
// text font
font: "New Computer Modern",
// font for heading
heading-font: "TeX Gyre Heros",
// text lang
lang: "en",
school-color-verso: rgb("0054a0"),
body
) = {
// ---------- GENERAL ----------
let draft-string = ""
if draft { draft-string = "DRAFT - " }
set document(
title: draft-string + title-en,
author: author,
)
set par(justify: true)
set text(font: font, fill: black, lang: lang)
// ---------- PAGE FORMAT ---------- //
set page("a4",
margin: (outside: 20mm, inside: 30mm, top: 50mm, bottom: 50mm),
numbering: "1",
number-align: center,
header: context {
// disable linebreaks in header
show linebreak: none
// get the current page number
let current-page = here().page()
let all-lvl1 = query(heading.where(level: 1))
if all-lvl1.any(it => it.location().page() == current-page) {
return
}
// if the page is odd
if calc.odd(current-page) {
// display the last level-1 heading
let header-content = hydra(1,
display: (_, it) => {
if it.numbering != none {
let nb = counter(heading).at(it.location())
let nb-fmt = numbering(it.numbering, ..nb)
[#it.supplement #nb-fmt -- _ #it.body _ ]
} else { emph(it.body) }
}
)
text(0.35cm, header-content)
}
// if the page is even
else {
// display last level-2 heading (current page included)
let header-content = hydra(2, use-last: true,
display: (_, it) => {
if it.numbering == none [_ #it.body _ ]
else {
let nb = counter(heading).at(it.location())
let nb-fmt = numbering(
it.numbering.replace(" ", "."),
..nb
)
[ _ #nb-fmt #it.body _ ]
}
}
)
align(right, text(0.35cm, header-content))
}
// horizontal rule
v(-.3cm)
line(length: 100%, stroke: .2mm)
}
)
// ---------- HEADINGS ----------
// for the thesis' body:
// 1. headings are normally numbered
// (there is a small space after the last number)
set heading(numbering: "1.1 ")
// 2. level-1 headings are called chapters
show heading.where(level: 1): set heading(supplement: [Chapter])
// for level-1 headings
show heading.where(level: 1): it => context {
// always start on odd pages
pagebreak(to: "odd")
set align(right)
v(-.8cm)
// if numbering is enabled, display level-1 heading number
if it.numbering != none {
let sec-nb = counter(heading).get().first()
let fmt-nb = numbering(heading.numbering, sec-nb)
text(
smallcaps[#heading.supplement #fmt-nb \ ],
size: .45cm, weight: "regular", font: font,
)
v(0cm)
}
// level-1 heading name
text(smallcaps(it.body), font: heading-font, size: .9cm)
set align(left)
// horizontal rule
v(.7cm)
line(length: 100%, stroke: .2mm)
v(.7cm)
}
// ---------- FIGURES ----------
show figure.caption: it => box(
inset: (left: 1em, right: 1em),
align(left, it)
)
// ---------- OUTLINES ----------
// justify outline entries
show outline.entry: set par(justify: true)
show outline: out => {
show outline.entry.where(level: 1): ent => {
// for the table of contents
if out.target == selector(heading) {
block(above: 1.2em)[#ent]
}
// for other types of outlines
else {
link(
ent.element.location(),
[#ent.prefix(): #h(.5em) #ent.inner()]
)
}
}
out
}
// disable linebreaks in outlines
show outline.entry: it => {
show linebreak: none
it
}
// ---------- FOOTNOTES ----------
show footnote.entry: it => {
let loc = it.note.location()
numbering(
"1. ",
..counter(footnote).at(loc),
)
it.note.body
}
// ---------- BIBLIOGRAPHY ----------
set bibliography(style: bibliography-style)
// ---------- COVER PAGE ----------
cover(
title-en: title-en,
title-fr: title-fr,
author: author,
affiliation: affiliation,
defense-place: defense-place,
defense-date: defense-date,
jury-content: jury-content,
university: university,
speciality: speciality,
heading-font: heading-font,
)
// ---------- BODY ----------
body
// ---------- ABSTRACT ----------
abstracts(
title-fr: title-fr, keywords-fr: keywords-fr, abstract-fr: abstract-fr,
title-en: title-en, keywords-en: keywords-en, abstract-en: abstract-en,
heading-font: heading-font, school-color-verso: school-color-verso,
)
}

21
lib/todos.typ Normal file
View file

@ -0,0 +1,21 @@
#let todo-list = state("todo-list",())
#let show-todos = state("show-todos", true)
#let todo(done: false, content) = context {
if (not done) and (show-todos.get()) {
let todonum = todo-list.get().len() + 1
text(weight: "bold", fill: red, [TODO #todonum #label("todo-"+str(todonum)): #content])
todo-list.update(x => x + (("todo-"+str(x.len()+1),x.len()+1, content),))
}
}
#let todos() = context {
if (todo-list.final().len() != 0) and (show-todos.get()) {
pagebreak(weak: true)
[= TO-DOs]
for t in todo-list.final() {
let l = label(t.first())
list.item(link(l)[TODO #t.at(1) p.#locate(l).page() : #t.last()])
}
}
}

8
template/abstract.typ Normal file
View file

@ -0,0 +1,8 @@
#let keywords-en = ("Lorem", "Ipsum", "Dolore", "Sit", "Amet")
#let keywords-fr = ("Lorem", "Ipsum", "Dolore", "Sit", "Amet")
#let abstract-en = lorem(200)
#let abstract-fr = lorem(200)

View file

18
template/jury.typ Normal file
View file

@ -0,0 +1,18 @@
#let jury-content = [
#text(size: 1.3em)[Composition du jury :]
#{
set text(size: .92em)
table(
columns: 4,
column-gutter: 2em,
stroke: 0pt,
inset: (x: 0pt, y: .5em),
"Présidente :", "Alice", "Professeure des universités", "Université de Rennes",
"Rapporteurs :", "Bob", "", "",
"", "Eve", "", "",
"Examinatrice :", "Mallory", "", "",
"Dir. de thèse :", "Trent", "", "",
)
}
]

26
template/main.typ Normal file
View file

@ -0,0 +1,26 @@
#import "@local/template-thesis-matisse:0.0.1": *
#import "jury.typ": jury-content
#import "abstract.typ": keywords-en, keywords-fr, abstract-en, abstract-fr
#show: matisse-thesis.with(
title-fr: "Lorem Ipsum Fr",
title-en: "Lorem Ipsum",
author: "Anne Onyme",
affiliation: "Inria",
defense-place: "Rennes",
defense-date: datetime.today().display(),
jury-content: jury-content,
university: [l'Université de Rennes],
keywords-en: keywords-en,
keywords-fr: keywords-fr,
abstract-en: abstract-en,
abstract-fr: abstract-fr,
draft: true,
)
#todo[Write the Thesis]
#bibliography("bibliography.bib")
#todos()

12
typst.toml Normal file
View file

@ -0,0 +1,12 @@
[package]
name = "template-thesis-matisse"
version = "0.0.1"
entrypoint = "lib/lib.typ"
authors = ["Jean-Marie Mineau"]
license = "AGPL-3.0-or-later"
description = "A typst template for thesis from the MATISSE doctoral school."
#repository = ""
[template]
path = "template"
entrypoint = "main.typ"