first draft
This commit is contained in:
		
						commit
						f1abfbfa5b
					
				
					 15 changed files with 2893 additions and 0 deletions
				
			
		
							
								
								
									
										19
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								README.md
									
										
									
									
									
										Normal 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
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/UR.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 12 KiB  | 
							
								
								
									
										527
									
								
								assets/abstracts-bg.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										527
									
								
								assets/abstracts-bg.svg
									
										
									
									
									
										Normal 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
									
								
							
							
						
						
									
										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
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/logo.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 100 KiB  | 
							
								
								
									
										85
									
								
								lib/abstracts.typ
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								lib/abstracts.typ
									
										
									
									
									
										Normal 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
									
								
							
							
						
						
									
										85
									
								
								lib/cover.typ
									
										
									
									
									
										Normal 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 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(<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
									
								
							
							
						
						
									
										2
									
								
								lib/lib.typ
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
#import "matisse-thesis.typ": *
 | 
			
		||||
#import "todos.typ": *
 | 
			
		||||
							
								
								
									
										214
									
								
								lib/matisse-thesis.typ
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										214
									
								
								lib/matisse-thesis.typ
									
										
									
									
									
										Normal 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
									
								
							
							
						
						
									
										21
									
								
								lib/todos.typ
									
										
									
									
									
										Normal 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 n°#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 n°#t.at(1) p.#locate(l).page() : #t.last()])
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								template/abstract.typ
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								template/abstract.typ
									
										
									
									
									
										Normal 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)
 | 
			
		||||
							
								
								
									
										0
									
								
								template/bibliography.bib
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								template/bibliography.bib
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										18
									
								
								template/jury.typ
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								template/jury.typ
									
										
									
									
									
										Normal 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
									
								
							
							
						
						
									
										26
									
								
								template/main.typ
									
										
									
									
									
										Normal 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
									
								
							
							
						
						
									
										12
									
								
								typst.toml
									
										
									
									
									
										Normal 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"
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue