Initial commit

This commit is contained in:
2024-04-17 08:11:16 +00:00
commit 2b18ec9562
55 changed files with 7979 additions and 0 deletions

255
00-templates/boxes.typ Normal file
View File

@ -0,0 +1,255 @@
//
// Description: Creating nice looking information boxes with different logos
// Author : Silvan Zahno
//
#import "constants.typ": *
#let iconbox(
width: 100%,
radius: 4pt,
border: 4pt,
inset: 10pt,
outset: -10pt,
linecolor: code-border,
icon: none,
iconheight: 1cm,
body
) = {
if body != none {
align(left,
rect(
stroke: (left:linecolor+border, rest:code-border+0.1pt),
radius: (left:0pt, right:radius),
fill: code-bg,
outset: (left:outset, right:outset),
inset: (left:inset*2, top:inset, right:inset*2, bottom:inset),
width: width)[
#if icon != none {
align(left,
table(
stroke:none,
align:left+horizon,
columns: (auto,auto),
image(icon, height:iconheight), [#body]
)
)
} else {
body
}
]
)
}
}
#let infobox(
width: 100%,
radius: 4pt,
border: 4pt,
inset:10pt,
outset: -10pt,
body
) = {
iconbox(
width: width,
radius: radius,
border: border,
inset: inset,
outset: outset,
linecolor: color-info,
icon: icon-info,
)[#body]
}
#let warningbox(
width: 100%,
radius: 4pt,
border: 4pt,
inset:10pt,
outset: -10pt,
body
) = {
iconbox(
width: width,
radius: radius,
border: border,
inset: inset,
outset: outset,
linecolor: color-warning,
icon: icon-warning,
)[#body]
}
#let ideabox(
width: 100%,
radius: 4pt,
border: 4pt,
inset:10pt,
outset: -10pt,
body
) = {
iconbox(
width: width,
radius: radius,
border: border,
inset: inset,
outset: outset,
linecolor: color-idea,
icon: icon-idea
)[#body]
}
#let firebox(
width: 100%,
radius: 4pt,
border: 4pt,
inset:10pt,
outset: -10pt,
body
) = {
iconbox(
width: width,
radius: radius,
border: border,
inset: inset,
outset: outset,
linecolor: color-fire,
icon: icon-fire,
)[#body]
}
#let importantbox(
width: 100%,
radius: 4pt,
border: 4pt,
inset:10pt,
outset: -10pt,
body
) = {
iconbox(
width: width,
radius: radius,
border: border,
inset: inset,
outset: outset,
linecolor: color-important,
icon: icon-important,
)[#body]
}
#let rocketbox(
width: 100%,
radius: 4pt,
border: 4pt,
inset:10pt,
outset: -10pt,
body
) = {
iconbox(
width: width,
radius: radius,
border: border,
inset: inset,
outset: outset,
linecolor: color-rocket,
icon: icon-rocket,
)[#body]
}
#let todobox(
width: 100%,
radius: 4pt,
border: 4pt,
inset:10pt,
outset: -10pt,
body
) = {
iconbox(
width: width,
radius: radius,
border: border,
inset: inset,
outset: outset,
linecolor: color-todo,
icon: icon-todo,
)[#body]
}
// Creating nice looking information boxes with different headings
#let colorbox(
title: "title",
color: color-todo,
stroke: 0.5pt,
radius: 4pt,
width: auto,
body
) = {
let strokeColor = color
let backgroundColor = color.lighten(50%)
return box(
fill: backgroundColor,
stroke: stroke + strokeColor,
radius: radius,
width: width
)[
#block(
fill: strokeColor,
inset: 8pt,
radius: (top-left: radius, bottom-right: radius),
)[
#text(fill: white, weight: "bold")[#title]
]
#block(
width: 100%,
inset: (x: 8pt, bottom: 8pt)
)[
#body
]
]
}
#let slantedBackground(
color: black, body) = {
set text(fill: white, weight: "bold")
style(styles => {
let size = measure(body, styles)
let inset = 8pt
[#block()[
#polygon(
fill: color,
(0pt, 0pt),
(0pt, size.height + (2*inset)),
(size.width + (2*inset), size.height + (2*inset)),
(size.width + (2*inset) + 6pt, 0cm)
)
#place(center + top, dy: size.height, dx: -3pt)[#body]
]]
})
}
#let slantedColorbox(
title: "title",
color: color-todo,
stroke: 0.5pt,
radius: 4pt,
width: auto,
body
) = {
let strokeColor = color
let backgroundColor = color.lighten(50%)
return box(
fill: backgroundColor,
stroke: stroke + strokeColor,
radius: radius,
width: width
)[
#slantedBackground(color: strokeColor)[#title]
#block(
width: 100%,
inset: (top: -2pt, x: 10pt, bottom: 10pt)
)[
#body
]
]
}

View File

@ -0,0 +1,87 @@
//
// Description: Commonly used constants in the templates
// Author : Silvan Zahno
//
// Fontsizes
#let tinyer = 6pt
#let tiny = 8pt
#let smaller = 9pt
#let small = 10pt
#let normal = 11pt
#let large = 14pt
#let larger = 16pt
#let huge = 24pt
#let huger = 36pt
// fontsize+
#let tinyer_p = tinyer+5pt
#let tiny_p = tiny+5pt
#let smaller_p = smaller+5pt
#let small_p = small+5pt
#let normal_p = normal+5pt
#let large_p = large+5pt
#let larger_p = larger+5pt
#let huge_p = huge+5pt
#let huger_p = huger+5pt
// fontsizes++
#let tinyer_pp = tinyer+10pt
#let tiny_pp = tiny+10pt
#let smaller_pp = smaller+10pt
#let small_pp = small+10pt
#let normal_pp = normal+10pt
#let large_pp = large+10pt
#let larger_pp = larger+10pt
#let huge_pp = huge+10pt
#let huger_pp = huger+10pt
// Colors
#let box-border = rgb("#252525")
#let code-bg = rgb("#F5F5F5")
#let code-border = rgb("#F5F5F5").darken(10%)
#let gray-80 = rgb("#000000").lighten(20%)
#let gray-70 = rgb("#000000").lighten(30%)
#let gray-60 = rgb("#000000").lighten(40%)
#let gray-50 = rgb("#000000").lighten(50%)
#let gray-40 = rgb("#000000").lighten(60%)
#let gray-30 = rgb("#000000").lighten(70%)
#let gray-20 = rgb("#000000").lighten(80%)
#let gray-10 = rgb("#000000").lighten(90%)
#let hei-orange = rgb("#eb6a28").darken(20%)
#let hei-blue = rgb("#0095d8").darken(20%)
#let hei-pink = rgb("#da0066").darken(20%)
#let hei-yellow = rgb("#f5c400").darken(20%)
#let hei-green = rgb("#00925a").darken(20%)
#let spl-green = rgb("#bed600").darken(20%)
#let spl-blue = rgb("#00a9e0").darken(20%)
#let spl-pink = rgb("#da0066").darken(20%)
#let color-info = rgb("#5b75a0ff")
#let color-idea = rgb("#ffe082ff")
#let color-warning = rgb("#ffce31ff")
#let color-important = rgb("#f44336ff")
#let color-fire = rgb("#fc9502ff")
#let color-rocket = rgb("#bc5fd3ff")
#let color-todo = rgb("#F5F5F5").darken(10%)
// Resources
#let icons-folder = "../00-templates/icons/"
#let resources-folder = "../04-resources/"
#let icon = resources-folder + "icon.svg"
#let icon-check-badge = icons-folder + "check-badge.svg"
#let icon-check-circle = icons-folder + "check-circle.svg"
#let icon-check-square = icons-folder + "check-square.svg"
#let icon-check = icons-folder + "check.svg"
#let icon-circle = icons-folder + "circle.svg"
#let icon-file = icons-folder + "file.svg"
#let icon-fire = icons-folder + "fire.svg"
#let icon-folder = icons-folder + "folder.svg"
#let icon-idea = icons-folder + "idea.svg"
#let icon-important = icons-folder + "important.svg"
#let icon-info = icons-folder + "info.svg"
#let icon-rocket = icons-folder + "rocket.svg"
#let icon-square = icons-folder + "square.svg"
#let icon-todo = icons-folder + "todo.svg"
#let icon-warning = icons-folder + "warning.svg"
#let icon-x-circle = icons-folder + "x-circle.svg"
#let icon-x-square = icons-folder + "x-square.svg"
#let icon-x = icons-folder + "x.svg"

276
00-templates/helpers.typ Normal file
View File

@ -0,0 +1,276 @@
//
// Description: Import other modules so you only need to import the helpers
// Use : #import "../00-templates/helpers.typ": *
// Author : Silvan Zahno
//
#import "../00-templates/boxes.typ": *
#import "../00-templates/constants.typ": *
#import "../00-templates/items.typ": *
#import "../00-templates/sections.typ": *
#import "../00-templates/tablex.typ": *
#import "../01-settings/metadata.typ": *
#import "../03-tail/glossary.typ": *
// External Plugins
// Fancy pretty print with line numbers and stuff
#import "@preview/codelst:2.0.1": sourcecode
#let myref(label) = locate(loc =>{
if query(label,loc).len() != 0 {
ref(label)
} else {
text(fill: red)[?]
}
})
//-------------------------------------
// Acronym functions
//
#let acrshort(item) = {
item.abbr
}
#let acrlong(item) = {
[#item.long)]
}
#let acrfull(item) = {
[#item.long (#item.abbr)]
}
//-------------------------------------
// Table of content
//
#let toc(
lang: "en",
tableof: (
toc: true,
minitoc : false,
tof: false,
tot: false,
tol: false,
toe: false,
),
indent: true,
depth: none,
) = {
// Table of content
if tableof.toc == true {
outline(
title: [#if lang == "de" {"Inhalt"} else if lang == "fr" {"Contenu"} else {"Contents"}],
indent: indent,
depth: depth,
)
}
// Table of figures
if tableof.tof == true {
outline(
title: [#if lang == "de" {"Abbildungen"} else if lang == "fr" {"Figures"} else {"Figures"}],
target: figure.where(kind: image),
indent: indent,
depth: depth,
)
}
// Table of tables
if tableof.tot == true {
outline(
title: [#if lang == "de" {[Tabellen]} else if lang == "fr" {[Tables]} else {[Tables]}],
target: figure.where(kind: table),
indent: indent,
depth: depth,
)
}
// Table of listings
if tableof.tol == true {
outline(
title: [#if lang == "de" {"Programme"} else if lang == "fr" {"Programmes"} else {"Listings"}],
target: figure.where(kind: raw),
indent: indent,
depth: depth,
)
}
// Table of equation
if tableof.toe == true {
outline(
title: [#if lang == "de" {"Gleichungen"} else if lang == "fr" {"Équations"} else {"Equations"}],
target: math.equation.where(block:true),
indent: indent,
depth: depth,
)
}
}
#let minitoc(
after: none,
before: none,
addline: true,
stroke: 0.5pt,
length: 100%
) = {
v(2em)
text(large, [*Contents*])
if addline == true {
line(length:length, stroke:stroke)
}
outline(
title: none,
target: selector(heading)
.after(after)
.before(before, inclusive: false)
)
if addline == true {
line(length:length, stroke:stroke)
}
}
//-------------------------------------
// Heading shift
//
#let unshift_prefix(prefix, content) = style((s) => {
pad(left: -measure(prefix, s).width, prefix + content)
})
//-------------------------------------
// Research
//
// item, item, item and item List
//
#let enumerating_authors(
items: none,
) = {
let i = 1
if items != none {
for item in items {
if item != none {
if item.name != none and item.institute != none {
[#item.name#super(repr(item.institute))]
} else if item.name != none {
[#item.name]
}
if i < items.len() {
[, ]
}
}
i = i + 1
}
}
}
#let enumerating_institutes(
items: none,
) = {
let i = 1
if items != none {
for item in items {
if item != none {
[_#super(repr(i))_ #if item.research_group != none { [_ #item.research_group - _]} _ #item.name __, #item.address _ \ ]
i = i + 1
}
}
}
}
//-------------------------------------
// Script
//
// item, item, item and item List
//
#let enumerating_items(
items: none,
) = {
let i = 1
if items != none {
for item in items {
if item != none {
[#item]
if i < items.len() {
[, ]
}
}
i = i + 1
}
}
}
#let enumerating_links(
names: none,
links: none,
) = {
if names != none {
let i = 0
for name in names {
if name != none {
[#link(links.at(i))[#name]]
if i+1 < names.len() {
[, ]
}
}
i = i + 1
}
}
}
#let enumerating_emails(
names: none,
emails: none,
) = {
if names != none {
let i = 0
for name in names {
if name != none {
[#link("mailto:"+emails.at(i))[#name]]
if i+1 < names.len() {
[, ]
}
}
i = i + 1
}
}
}
//-------------------------------------
// safe_link
//
#let safe_link(
name: none,
url: none,
) = {
if name != none {
if url != none {
link(url)[#name]
} else {
name
}
}
}
//-------------------------------------
// Counter
//
#let word_counter_init() = {[
#show regex("\b\w+\b"): it => counter("words").step() + it
]}
#let word_count(preamble:"Word count:") = {[
#preamble #counter("words").display()
]}
#let char_counter_init() = {
show regex(".+"): it => counter("chars").step() + it
}
#let char_count(preamble:"Char count:") = {[
#preamble #counter("chars").display()
]}
//-------------------------------------
// Option Style
//
#let option_style(
type: "draft",
size: small,
style: "italic",
fill: gray-40,
body) = {[
#if option.type == type {text(size:size, style:style, fill:fill)[#body]
}
]}

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="800px"
height="800px"
viewBox="0 0 24 24"
fill="none"
version="1.1"
id="svg583"
sodipodi:docname="check-badge.svg"
inkscape:version="1.2.2 (b0a84865, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs587" />
<sodipodi:namedview
id="namedview585"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="0.295"
inkscape:cx="291.52542"
inkscape:cy="323.72881"
inkscape:window-width="1720"
inkscape:window-height="1387"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="svg583" />
<path
opacity="0.1"
d="M13.8179 4.54512L13.6275 4.27845C12.8298 3.16176 11.1702 3.16176 10.3725 4.27845L10.1821 4.54512C9.76092 5.13471 9.05384 5.45043 8.33373 5.37041L7.48471 5.27608C6.21088 5.13454 5.13454 6.21088 5.27608 7.48471L5.37041 8.33373C5.45043 9.05384 5.13471 9.76092 4.54512 10.1821L4.27845 10.3725C3.16176 11.1702 3.16176 12.8298 4.27845 13.6275L4.54512 13.8179C5.13471 14.2391 5.45043 14.9462 5.37041 15.6663L5.27608 16.5153C5.13454 17.7891 6.21088 18.8655 7.48471 18.7239L8.33373 18.6296C9.05384 18.5496 9.76092 18.8653 10.1821 19.4549L10.3725 19.7215C11.1702 20.8382 12.8298 20.8382 13.6275 19.7215L13.8179 19.4549C14.2391 18.8653 14.9462 18.5496 15.6663 18.6296L16.5153 18.7239C17.7891 18.8655 18.8655 17.7891 18.7239 16.5153L18.6296 15.6663C18.5496 14.9462 18.8653 14.2391 19.4549 13.8179L19.7215 13.6275C20.8382 12.8298 20.8382 11.1702 19.7215 10.3725L19.4549 10.1821C18.8653 9.76092 18.5496 9.05384 18.6296 8.33373L18.7239 7.48471C18.8655 6.21088 17.7891 5.13454 16.5153 5.27608L15.6663 5.37041C14.9462 5.45043 14.2391 5.13471 13.8179 4.54512Z"
fill="#323232"
id="path577" />
<path
d="M13.8179 4.54512L13.6275 4.27845C12.8298 3.16176 11.1702 3.16176 10.3725 4.27845L10.1821 4.54512C9.76092 5.13471 9.05384 5.45043 8.33373 5.37041L7.48471 5.27608C6.21088 5.13454 5.13454 6.21088 5.27608 7.48471L5.37041 8.33373C5.45043 9.05384 5.13471 9.76092 4.54512 10.1821L4.27845 10.3725C3.16176 11.1702 3.16176 12.8298 4.27845 13.6275L4.54512 13.8179C5.13471 14.2391 5.45043 14.9462 5.37041 15.6663L5.27608 16.5153C5.13454 17.7891 6.21088 18.8655 7.48471 18.7239L8.33373 18.6296C9.05384 18.5496 9.76092 18.8653 10.1821 19.4549L10.3725 19.7215C11.1702 20.8382 12.8298 20.8382 13.6275 19.7215L13.8179 19.4549C14.2391 18.8653 14.9462 18.5496 15.6663 18.6296L16.5153 18.7239C17.7891 18.8655 18.8655 17.7891 18.7239 16.5153L18.6296 15.6663C18.5496 14.9462 18.8653 14.2391 19.4549 13.8179L19.7215 13.6275C20.8382 12.8298 20.8382 11.1702 19.7215 10.3725L19.4549 10.1821C18.8653 9.76092 18.5496 9.05384 18.6296 8.33373L18.7239 7.48471C18.8655 6.21088 17.7891 5.13454 16.5153 5.27608L15.6663 5.37041C14.9462 5.45043 14.2391 5.13471 13.8179 4.54512Z"
stroke="#323232"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
id="path579" />
<path
d="M9 12L10.8189 13.8189V13.8189C10.9189 13.9189 11.0811 13.9189 11.1811 13.8189V13.8189L15 10"
stroke="#323232"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
id="path581" />
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="800px"
height="800px"
viewBox="0 0 24 24"
fill="none"
version="1.1"
id="svg718"
sodipodi:docname="check-circle.svg"
inkscape:version="1.2.2 (b0a84865, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs722" />
<sodipodi:namedview
id="namedview720"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="0.295"
inkscape:cx="305.08475"
inkscape:cy="333.89831"
inkscape:window-width="1720"
inkscape:window-height="1387"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="svg718" />
<path
opacity="0.1"
d="M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z"
fill="#323232"
id="path712" />
<path
d="M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z"
stroke="#323232"
stroke-width="2"
id="path714" />
<path
d="M9 12L10.6828 13.6828V13.6828C10.858 13.858 11.142 13.858 11.3172 13.6828V13.6828L15 10"
stroke="#323232"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
id="path716" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.1" d="M3 12C3 4.5885 4.5885 3 12 3C19.4115 3 21 4.5885 21 12C21 19.4115 19.4115 21 12 21C4.5885 21 3 19.4115 3 12Z" fill="#323232"/>
<path d="M3 12C3 4.5885 4.5885 3 12 3C19.4115 3 21 4.5885 21 12C21 19.4115 19.4115 21 12 21C4.5885 21 3 19.4115 3 12Z" stroke="#323232" stroke-width="2"/>
<path d="M9 12L10.6828 13.6828V13.6828C10.858 13.858 11.142 13.858 11.3172 13.6828V13.6828L15 10" stroke="#323232" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 718 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 12L9.89075 14.8907V14.8907C9.95114 14.951 10.049 14.9511 10.1094 14.8907V14.8907L17 8" stroke="#323232" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 412 B

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.1" d="M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" fill="#323232"/>
<path d="M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="#323232" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 546 B

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.1" d="M17.8284 6.82843C18.4065 7.40649 18.6955 7.69552 18.8478 8.06306C19 8.4306 19 8.83935 19 9.65685L19 17C19 18.8856 19 19.8284 18.4142 20.4142C17.8284 21 16.8856 21 15 21H9C7.11438 21 6.17157 21 5.58579 20.4142C5 19.8284 5 18.8856 5 17L5 7C5 5.11438 5 4.17157 5.58579 3.58579C6.17157 3 7.11438 3 9 3H12.3431C13.1606 3 13.5694 3 13.9369 3.15224C14.3045 3.30448 14.5935 3.59351 15.1716 4.17157L17.8284 6.82843Z" fill="#323232"/>
<path d="M17.8284 6.82843C18.4065 7.40649 18.6955 7.69552 18.8478 8.06306C19 8.4306 19 8.83935 19 9.65685L19 17C19 18.8856 19 19.8284 18.4142 20.4142C17.8284 21 16.8856 21 15 21H9C7.11438 21 6.17157 21 5.58579 20.4142C5 19.8284 5 18.8856 5 17L5 7C5 5.11438 5 4.17157 5.58579 3.58579C6.17157 3 7.11438 3 9 3H12.3431C13.1606 3 13.5694 3 13.9369 3.15224C14.3045 3.30448 14.5935 3.59351 15.1716 4.17157L17.8284 6.82843Z" stroke="#323232" stroke-width="2" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="-33 0 255 255" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<defs>
<style>
.cls-3 {
fill: url(#linear-gradient-1);
}
.cls-4 {
fill: #fc9502;
}
.cls-5 {
fill: #fce202;
}
</style>
<linearGradient id="linear-gradient-1" gradientUnits="userSpaceOnUse" x1="94.141" y1="255" x2="94.141" y2="0.188">
<stop offset="0" stop-color="#ff4c0d"/>
<stop offset="1" stop-color="#fc9502"/>
</linearGradient>
</defs>
<g id="fire">
<path d="M187.899,164.809 C185.803,214.868 144.574,254.812 94.000,254.812 C42.085,254.812 -0.000,211.312 -0.000,160.812 C-0.000,154.062 -0.121,140.572 10.000,117.812 C16.057,104.191 19.856,95.634 22.000,87.812 C23.178,83.513 25.469,76.683 32.000,87.812 C35.851,94.374 36.000,103.812 36.000,103.812 C36.000,103.812 50.328,92.817 60.000,71.812 C74.179,41.019 62.866,22.612 59.000,9.812 C57.662,5.384 56.822,-2.574 66.000,0.812 C75.352,4.263 100.076,21.570 113.000,39.812 C131.445,65.847 138.000,90.812 138.000,90.812 C138.000,90.812 143.906,83.482 146.000,75.812 C148.365,67.151 148.400,58.573 155.999,67.813 C163.226,76.600 173.959,93.113 180.000,108.812 C190.969,137.321 187.899,164.809 187.899,164.809 Z" id="path-1" class="cls-3" fill-rule="evenodd"/>
<path d="M94.000,254.812 C58.101,254.812 29.000,225.711 29.000,189.812 C29.000,168.151 37.729,155.000 55.896,137.166 C67.528,125.747 78.415,111.722 83.042,102.172 C83.953,100.292 86.026,90.495 94.019,101.966 C98.212,107.982 104.785,118.681 109.000,127.812 C116.266,143.555 118.000,158.812 118.000,158.812 C118.000,158.812 125.121,154.616 130.000,143.812 C131.573,140.330 134.753,127.148 143.643,140.328 C150.166,150.000 159.127,167.390 159.000,189.812 C159.000,225.711 129.898,254.812 94.000,254.812 Z" id="path-2" class="cls-4" fill-rule="evenodd"/>
<path d="M95.000,183.812 C104.250,183.812 104.250,200.941 116.000,223.812 C123.824,239.041 112.121,254.812 95.000,254.812 C77.879,254.812 69.000,240.933 69.000,223.812 C69.000,206.692 85.750,183.812 95.000,183.812 Z" id="path-3" class="cls-5" fill-rule="evenodd"/>
</g>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.1" d="M3 9.312C3 4.93757 3.93757 4 8.312 4H9.92963C10.5983 4 11.2228 4.3342 11.5937 4.8906L12.4063 6.1094C12.7772 6.6658 13.4017 7 14.0704 7C15.9647 7 17.8145 7 19.1258 7C20.1807 7 21.0128 7.82095 21.0029 8.8758C21.0013 9.05376 21 9.20638 21 9.312V14.688C21 19.0624 20.0624 20 15.688 20H8.312C3.93757 20 3 19.0624 3 14.688V9.312Z" fill="#323232"/>
<path d="M3 9.312C3 4.93757 3.93757 4 8.312 4H9.92963C10.5983 4 11.2228 4.3342 11.5937 4.8906L12.4063 6.1094C12.7772 6.6658 13.4017 7 14.0704 7C15.9647 7 17.8145 7 19.1258 7C20.1807 7 21.0128 7.82095 21.0029 8.8758C21.0013 9.05376 21 9.20638 21 9.312V14.688C21 19.0624 20.0624 20 15.688 20H8.312C3.93757 20 3 19.0624 3 14.688V9.312Z" stroke="#323232" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 966 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" ?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 128 128" data-name="Слой 1" id="Слой_1" xmlns="http://www.w3.org/2000/svg"><defs><style>.cls-1{fill:#ffe082;}.cls-2{fill:#404040;}.cls-3{fill:#9e9e9e;}.cls-4{fill:#f5f5f5;}</style></defs><title/><path class="cls-1" d="M82,93V81.82a20.38,20.38,0,0,1,6.65-15.23,37,37,0,1,0-49.39-.09A20.59,20.59,0,0,1,46,81.82V92.59"/><path class="cls-2" d="M82,95a2,2,0,0,1-2-2V81.82A22.38,22.38,0,0,1,87.31,65.1,35,35,0,1,0,40.59,65,22.61,22.61,0,0,1,48,81.82V92.58a2,2,0,0,1-4,0V81.82A18.6,18.6,0,0,0,37.92,68,39,39,0,1,1,90,68.08a18.38,18.38,0,0,0-6,13.74V93A2,2,0,0,1,82,95Z"/><path class="cls-3" d="M82,92v16a18.05,18.05,0,0,1-18,18h0a18.05,18.05,0,0,1-18-18V92Z"/><path class="cls-2" d="M64,128a20,20,0,0,1-20-20V92a2,2,0,0,1,2-2H82a2,2,0,0,1,2,2v16A20,20,0,0,1,64,128ZM48,94v14a16,16,0,0,0,32,0V94Z"/><line class="cls-4" x1="54" x2="82" y1="102" y2="98"/><path class="cls-2" d="M54,104a2,2,0,0,1-.28-4l28-4a2,2,0,0,1,.57,4l-28,4Z"/><line class="cls-4" x1="54" x2="82" y1="110" y2="106"/><path class="cls-2" d="M54,112a2,2,0,0,1-.28-4l28-4a2,2,0,0,1,.57,4l-28,4Z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 1024 1024" class="icon" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M452.266667 955.733333l-384-384c-34.133333-34.133333-34.133333-87.466667 0-121.6l384-384c34.133333-34.133333 87.466667-34.133333 121.6 0l384 384c34.133333 34.133333 34.133333 87.466667 0 121.6l-384 384c-34.133333 34.133333-89.6 34.133333-121.6 0z" fill="#F44336" /><path d="M460.8 697.6c0-6.4 2.133333-12.8 4.266667-19.2 2.133333-6.4 6.4-10.666667 10.666666-14.933333 4.266667-4.266667 10.666667-8.533333 17.066667-10.666667s12.8-4.266667 21.333333-4.266667 14.933333 2.133333 21.333334 4.266667c6.4 2.133333 12.8 6.4 17.066666 10.666667 4.266667 4.266667 8.533333 8.533333 10.666667 14.933333 2.133333 6.4 4.266667 12.8 4.266667 19.2s-2.133333 12.8-4.266667 19.2-6.4 10.666667-10.666667 14.933333c-4.266667 4.266667-10.666667 8.533333-17.066666 10.666667-6.4 2.133333-12.8 4.266667-21.333334 4.266667s-14.933333-2.133333-21.333333-4.266667-10.666667-6.4-17.066667-10.666667c-4.266667-4.266667-8.533333-8.533333-10.666666-14.933333s-4.266667-10.666667-4.266667-19.2z m89.6-98.133333h-76.8L462.933333 277.333333h98.133334l-10.666667 322.133334z" fill="#FFFFFF" /></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" ?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg"><defs><style>
.cls-1 {
fill: #5b75a0;
fill-rule: evenodd;
}
</style></defs><path class="cls-1" d="M1050,360a30,30,0,1,1,30,30A30,30,0,0,1,1050,360Zm30,18a4,4,0,0,1-4-4V358a4,4,0,0,1,8,0v16A4,4,0,0,1,1080,378Zm0-36a4,4,0,1,1-4,4A4,4,0,0,1,1080,342Z" id="info" transform="translate(-1050 -330)"/></svg>

After

Width:  |  Height:  |  Size: 524 B

View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="800px"
height="800px"
viewBox="0 0 72 72"
id="emoji"
version="1.1"
sodipodi:docname="rocket.svg"
inkscape:version="1.2.2 (b0a84865, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs9566" />
<sodipodi:namedview
id="namedview9564"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="1.18"
inkscape:cx="350"
inkscape:cy="313.13559"
inkscape:window-width="1720"
inkscape:window-height="1387"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="color" />
<g
id="color">
<path
fill="#FCEA2B"
d="M16.12,48.114 c-3.1584,3.1634-4.6518,7.5601-3.97,11.688c4.128,0.6763,8.5223-0.8196,11.683-3.977c3.1584-3.1634,4.6518-7.5601,3.97-11.688 C23.675,43.4607,19.2807,44.9566,16.12,48.114z"
id="path9530" />
<path
fill="#61B2E4"
d="M31.973,45.839 c-0.1919,0.966-0.6657,1.8536-1.3616,2.5507c-0.3389,0.3373-0.7246,0.6241-1.1452,0.8516 c2.1626,2.9716,3.7579,6.2847,4.6952,9.7506c0.7092-0.6216,1.3906-1.2786,2.0417-1.9685c1.9136-2.0343,3.5491-4.3376,4.8516-6.8326 c1.2507-2.4201,2.1751-4.9922,2.7442-7.6354c-3.7285,1.9544-7.7719,3.0771-11.826,3.2837L31.973,45.839z"
id="path9532" />
<path
fill="#92D3F5"
d="M14.923,35.749 c-0.69,0.65-1.3472,1.3303-1.9691,2.0383c3.4682,0.9313,6.7846,2.521,9.7604,4.6784c0.2264-0.414,0.5104-0.7939,0.8435-1.1281 c0.6949-0.6935,1.5791-1.1665,2.5417-1.3598c0.2106-4.0507,1.3364-8.0899,3.293-11.814c0.0019-0.0037,0.0037-0.0074,0.0056-0.0112 c-2.645,0.5687-5.2188,1.4928-7.6405,2.7434C19.2616,32.199,16.9577,33.8349,14.923,35.749L14.923,35.749z"
id="path9534" />
<path
fill="#EA5A47"
d="M34.821,20.747 c-5.2314,5.2507-8.3665,12.1635-8.7228,19.233c1.6376-0.3318,3.3326,0.1781,4.515,1.3584c1.186,1.1868,1.6956,2.8903,1.356,4.5332 c7.0754-0.3609,13.9919-3.5024,19.242-8.7398c6.7117-6.7229,9.8843-16.067,8.4337-24.839 c-1.7318-0.2827-3.5044-0.3879-5.2915-0.3141c-7.1741,0.2926-14.2097,3.4508-19.532,8.7677L34.821,20.747z M45.07,20.2179 c1.8412-1.8413,4.8269-1.8418,6.6687-0.0012c0.0004,0.0004,0.0008,0.0008,0.0012,0.0012c1.8418,1.8407,1.8424,4.8255,0.0012,6.6667 c-0.0004,0.0004-0.0008,0.0008-0.0012,0.0012c-1.8419,1.8404-4.8274,1.8398-6.6685-0.0014 C43.2297,25.0438,43.229,22.0592,45.07,20.2179z"
id="path9536"
style="fill:#bc5fd3" />
<path
fill="#F1B31C"
d="M26.538,52.037 c-0.8756,0.9831-1.8894,1.8467-3.0072,2.5617c-3.4907,2.2228-7.7244,2.8345-11.441,1.653c-0.1495,1.1964-0.1293,2.3916,0.06,3.5496 c4.128,0.6763,8.5223-0.8195,11.683-3.9769c1.1048-1.1131,2.0209-2.3956,2.7055-3.7874L26.538,52.037z"
id="path9538" />
<path
fill="#D22F27"
d="M26.204,38.687 c-0.033,0.4281-0.0559,0.8558-0.0684,1.283c1.6271-0.316,3.305,0.1967,4.4773,1.3682c1.186,1.1868,1.6956,2.8903,1.356,4.5332 c7.075-0.3618,13.9907-3.5038,19.24-8.7412c1.4932-1.5067,2.8266-3.1619,3.9746-4.9339c-1.3472,1.2267-2.8051,2.3344-4.353,3.3074 c-7.5574,4.7109-16.6938,5.8918-24.627,3.1832L26.204,38.687z"
id="path9540"
style="fill:#892ca0" />
<polygon
points="36.1664,-14.4511 36.1664,-14.4511 36.1664,-14.4511"
id="polygon9542" />
<path
fill="#61B2E4"
d="M24.039,48.551 c0.8703-0.4372,1.7206-0.9178,2.5501-1.438c2.4433-1.5323,4.6776-3.4046,6.6294-5.5552l0.0028-0.0028 c1.8803-2.0911,3.4745-4.4187,4.7329-6.9122c0.061-0.1204,0.0967-0.252,0.1047-0.3867 C34.6604,33.5028,23.2129,44.5071,24.039,48.551L24.039,48.551z"
id="path9544" />
</g>
<g
id="hair" />
<g
id="skin" />
<g
id="skin-shadow" />
<g
id="line">
<path
d="M48.405,29.49c-3.2761,0-5.941-2.6641-5.941-5.9392s2.6649-5.9392,5.941-5.9392c3.2761,0,5.941,2.6641,5.941,5.9392 S51.6811,29.49,48.405,29.49z M48.405,19.5913c-2.1839,0-3.9607,1.7757-3.9607,3.9595c0,2.1837,1.7768,3.9595,3.9607,3.9595 c2.1838,0,3.9607-1.7758,3.9607-3.9595C52.3657,21.367,50.5888,19.5913,48.405,19.5913z"
id="path9550" />
<path
fill="none"
stroke="#000000"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
stroke-width="1.949"
d="M20.653,45.063c-1.678,0.7083-3.2222,1.7475-4.5331,3.0508c-3.1581,3.1631-4.6517,7.5594-3.9703,11.687 c4.128,0.6762,8.5221-0.8196,11.683-3.9769c1.3043-1.3104,2.3446-2.8541,3.0537-4.5318"
id="path9552" />
<path
fill="none"
stroke="#000000"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
stroke-width="1.949"
d="M14.923,35.749c-0.69,0.65-1.3472,1.3303-1.9691,2.0383c3.4682,0.9313,6.7846,2.521,9.7604,4.6784 c0.2264-0.414,0.5104-0.7939,0.8435-1.1281c0.6949-0.6935,1.5791-1.1665,2.5417-1.3598c0.2106-4.0507,1.3364-8.0899,3.293-11.814 c0.0019-0.0037,0.0037-0.0074,0.0056-0.0112c-2.645,0.5687-5.2188,1.4928-7.6405,2.7434 C19.2616,32.199,16.9577,33.8349,14.923,35.749L14.923,35.749z"
id="path9554" />
<path
fill="none"
stroke="#000000"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
stroke-width="1.949"
d="M31.973,45.839c-0.1919,0.966-0.6657,1.8536-1.3616,2.5507c-0.3389,0.3373-0.7246,0.6241-1.1452,0.8516 c2.1626,2.9716,3.7579,6.2847,4.6952,9.7506c0.7092-0.6216,1.3906-1.2786,2.0417-1.9685c1.9136-2.0343,3.5491-4.3376,4.8516-6.8326 c1.2507-2.4201,2.1751-4.9922,2.7442-7.6354c-3.7285,1.9544-7.7719,3.0771-11.826,3.2837L31.973,45.839z"
id="path9556" />
<path
fill="none"
stroke="#000000"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
stroke-width="1.949"
d="M31.83,43.345c0.2696,0.8863,0.2506,1.6919,0.1371,2.5245c7.0759-0.3611,13.993-3.5031,19.243-8.7412 c6.7106-6.7215,9.8836-16.063,8.4351-24.834c-8.7712-1.4365-18.108,1.742-24.823,8.4508 c-5.2322,5.2509-8.3679,12.164-8.7242,19.234c0.9413-0.1907,1.8984-0.0942,2.7693,0.2387"
id="path9558" />
<path
fill="none"
stroke="#000000"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
stroke-width="1.949"
d="M37.072,34.196l-0.0002,0c-2.4156,1.2183-4.6724,2.7626-6.6996,4.5844c-2.0849,1.8911-3.9,4.0556-5.3844,6.4211 c-0.5039,0.8031-0.9684,1.6273-1.3917,2.4694"
id="path9560" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.1" d="M3 12C3 4.5885 4.5885 3 12 3C19.4115 3 21 4.5885 21 12C21 19.4115 19.4115 21 12 21C4.5885 21 3 19.4115 3 12Z" fill="#323232"/>
<path d="M3 12C3 4.5885 4.5885 3 12 3C19.4115 3 21 4.5885 21 12C21 19.4115 19.4115 21 12 21C4.5885 21 3 19.4115 3 12Z" stroke="#323232" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 536 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--emojione" preserveAspectRatio="xMidYMid meet">
<path d="M5.9 62c-3.3 0-4.8-2.4-3.3-5.3L29.3 4.2c1.5-2.9 3.9-2.9 5.4 0l26.7 52.5c1.5 2.9 0 5.3-3.3 5.3H5.9z" fill="#ffce31">
</path>
<g fill="#231f20">
<path d="M27.8 23.6l2.8 18.5c.3 1.8 2.6 1.8 2.9 0l2.7-18.5c.5-7.2-8.9-7.2-8.4 0">

After

Width:  |  Height:  |  Size: 661 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.1" d="M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" fill="#323232"/>
<path d="M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="#323232" stroke-width="2"/>
<path d="M9 9L15 15" stroke="#323232" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M15 9L9 15" stroke="#323232" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 756 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.1" d="M3 12C3 4.5885 4.5885 3 12 3C19.4115 3 21 4.5885 21 12C21 19.4115 19.4115 21 12 21C4.5885 21 3 19.4115 3 12Z" fill="#323232"/>
<path d="M9 9L15 15" stroke="#323232" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M15 9L9 15" stroke="#323232" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3 12C3 4.5885 4.5885 3 12 3C19.4115 3 21 4.5885 21 12C21 19.4115 19.4115 21 12 21C4.5885 21 3 19.4115 3 12Z" stroke="#323232" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 746 B

53
00-templates/icons/x.svg Normal file
View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="800px"
height="800px"
viewBox="0 0 24 24"
fill="none"
version="1.1"
id="svg184"
sodipodi:docname="x.svg"
xml:space="preserve"
inkscape:version="1.2.2 (b0a84865, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs188" /><sodipodi:namedview
id="namedview186"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="1.18"
inkscape:cx="331.35593"
inkscape:cy="458.89831"
inkscape:window-width="1720"
inkscape:window-height="1359"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="svg184" /><g
style="fill:none"
id="g390"
transform="translate(-7.8305085,-27.152542)"><g
id="g495"
transform="matrix(1.1207627,0,0,1.1207627,-2.3947859,-4.6635387)"><path
d="m 16.830508,35.617373 6,6"
stroke="#323232"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
id="path376" /><path
d="m 22.830508,35.617373 -6,6"
stroke="#323232"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
id="path378" /></g></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

124
00-templates/items.typ Normal file
View File

@ -0,0 +1,124 @@
//
// Description: Creating nice looking item list with different icons
// Author : Silvan Zahno
//
#import "constants.typ": *
#let item-list(
content: none,
height: normal,
icon: icon-check-square,
) = {
if content != none {
v(-9pt)
table(
stroke: none,
columns: 2,
align: left+horizon,
column-gutter: -2pt,
image(icon, height:normal), content
)
v(-9pt)
}
}
#let item-checkbadge(
content: none,
height: normal,
) = {
item-list(
content: content,
height: height,
icon: icon-check-badge,
)
}
#let item-checkcircle(
content: none,
height: normal,
) = {
item-list(
content: content,
height: height,
icon: icon-check-circle,
)
}
#let item-checksquare(
content: none,
height: normal,
) = {
item-list(
content: content,
height: height,
icon: icon-check-square,
)
}
#let item-check(
content: none,
height: normal,
) = {
item-list(
content: content,
height: height,
icon: icon-check,
)
}
#let item-circle(
content: none,
height: normal,
) = {
item-list(
content: content,
height: height,
icon: icon-circle,
)
}
#let item-file(
content: none,
height: normal,
) = {
item-list(
content: content,
height: height,
icon: icon-file,
)
}
#let item-folder(
content: none,
height: normal,
) = {
item-list(
content: content,
height: height,
icon: icon-folder,
)
}
#let item-xcircle(
content: none,
height: normal,
) = {
item-list(
content: content,
height: height,
icon: icon-x-circle,
)
}
#let item-xsquare(
content: none,
height: normal,
) = {
item-list(
content: content,
height: height,
icon: icon-x-square,
)
}
#let item-x(
content: none,
height: normal,
) = {
item-list(
content: content,
height: height,
icon: icon-x,
)
}

View File

@ -0,0 +1,46 @@
//
// Description: Report info page for thesis template
// Author : Silvan Zahno
//
#import "../00-templates/helpers.typ": *
#let page-reportinfo(
author: (),
date: none,
signature: none,
) = {
heading(numbering:none, outlined: false)[Information about this report]
v(2em)
[*Contact Information*]
tablex(
columns: (auto, auto),
stroke: none,
align: left + top,
rowspanx(3)[Author:], [#author.name],
[#author.degree Student],
[#author.affiliation],
[Email:], [#link("mailto:author.email")[#author.email]],
)
v(5em)
[
*Declaration of honor*
I, undersigned, #author.name, hereby declare that the work submitted is the result of a personal work. I certify that I have not resorted to plagiarism or other forms of fraud. All sources of information used and the author quotes were clearly mentioned.
]
tablex(
stroke: none,
columns: (auto,auto),
align: left + horizon,
[Place, date:], [#author.place, #date],
[Signature:],
if signature != none {
[#line(start: (0cm,2cm),length:5cm) #v(-0.4cm) #pad(x: 2.5em, image(author.signature, width:3cm))]
} else {
[#line(start: (0cm,2cm),length:7cm)]
},
)
}

View File

@ -0,0 +1,61 @@
//
// Description: Title page for the thesis template
// Author : Silvan Zahno
//
#import "../00-templates/helpers.typ": *
#let page-title-thesis(
title: none,
subtitle: subtitle,
date: (),
school: (),
author: (),
professor: (),
icons: (
topleft: none,
topright: none,
bottomleft: none,
bottomright: none,
),
) = {
table(
stroke:none,
columns: (50%, 50%),
align: (x, y) => (left, right).at(x),
[#if icons.topleft != none {[#image(icons.topleft, width:6cm)]} else {[]}],
[#if icons.topright != none {[#image(icons.topright, width:4cm)]} else {[]}],
)
v(1fr)
v(1em)
align(center, [#text(size:larger, school.orientation)])
v(1em)
align(center, [#text(size:large, [Major #school.specialisation])])
v(2em)
v(1em)
align(center, [#text(size:large, [#author.name])])
v(2em)
titlebox(
title: title,
)
align(center, [#text(size:small, [#subtitle])])
[
#v(1fr)
_Submission date of the report_ \
#date.submission
]
table(
stroke:none,
columns: (50%, 50%),
align: (x, y) => (left+horizon, right+horizon).at(x),
[#if icons.bottomleft != none {[#image(icons.bottomleft, width:4cm)]} else {[]}],
[#if icons.bottomright != none {[#image(icons.bottomright, width:1.5cm)]} else {[]}],
)
}

399
00-templates/sections.typ Normal file
View File

@ -0,0 +1,399 @@
//
// Description: Some recurrent section elements mainly for exams
// Author : Silvan Zahno
//
#import "constants.typ": *
#import "boxes.typ": *
#import "tablex.typ": *
#let part(
title: [],
number: 1,
size: huge,
) = {
pagebreak()
v(1fr)
align(center, smallcaps(text(size, [Part #number])))
v(2em)
align(center, smallcaps(text(size, title)))
v(1fr)
pagebreak()
}
#let titlebox(
width: 100%,
radius: 4pt,
border: 1pt,
inset: 20pt,
outset: -10pt,
linecolor: box-border,
titlesize: huge,
subtitlesize: larger,
title: [],
subtitle: [],
) = {
if title != [] {
align(center,
rect(
stroke: (left:linecolor+border, top:linecolor+border, rest:linecolor+(border+1pt)),
radius: radius,
outset: (left:outset, right:outset),
inset: (left:inset*2, top:inset, right:inset*2, bottom:inset),
width: width)[
#align(center,
[
#if subtitle != [] {
[#text(titlesize, title) \ \ #text(subtitlesize, subtitle)]
} else {
text(titlesize, title)
}
]
)
]
)
}
}
#let exam_header(
nbrEx: 5+1,
pts: 10,
lang: "en" // "de" "fr"
) = {
if nbrEx == 0 {
tablex(
columns: (2cm, 90%),
align: center + top,
stroke: none,
(), (),
if lang == "en" or lang == "de" {[#text(large, "Name:")]} else {[#text(large, "Nom:")]
},
[#line(start: (0cm, 0.7cm), length:(100%), stroke:(dash:"loosely-dashed"))],
)
} else if nbrEx == 1 {
tablex(
columns: (2cm, 90%-1.3cm, 1.3cm),
align: center + top,
stroke: none,
[], [], if lang == "en" {[#v(-0.4cm)#text(small, "Grade")]} else {[#v(-0.4cm)#text(small, "Note")]},
if lang == "en" or lang == "de" {[#text(large, "Name:")]} else {[#text(large, "Nom:")]
},
[#line(start: (0cm, 0.7cm), length:(100%), stroke:(dash:"loosely-dashed"))],
[#v(-0.3cm)#rect(height:1cm, width:1.2cm, stroke:2pt)],
)
} else if nbrEx == 2 {
tablex(
columns: (2cm, 90%-2.3cm, 1cm, 1.3cm),
align: center + top,
stroke: none,
[], [], [#v(-0.4cm)#text(small, "1")], if lang == "en" {[#v(-0.4cm)#text(small, "Grade")]} else {[#v(-0.4cm)#text(small, "Note")]},
if lang == "en" or lang == "de" {[#text(large, "Name:")]} else {[#text(large, "Nom:")]
},
[#line(start: (0cm, 0.7cm), length:(100%), stroke:(dash:"loosely-dashed"))],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#rect(height:1cm, width:1.2cm, stroke:2pt)],
[], [], [#v(-0.2cm)#text(small, [(#pts)])], [],
)
} else if nbrEx == 3 {
tablex(
columns: (2cm, 90%-3.3cm, 1cm, 1cm, 1.3cm),
align: center + top,
stroke: none,
[], [], [#v(-0.4cm)#text(small, "1")], [#v(-0.4cm)#text(small, "2")], if lang == "en" {[#v(-0.4cm)#text(small, "Grade")]} else {[#v(-0.4cm)#text(small, "Note")]},
if lang == "en" or lang == "de" {[#text(large, "Name:")]} else {[#text(large, "Nom:")]
},
[#line(start: (0cm, 0.7cm), length:(100%), stroke:(dash:"loosely-dashed"))],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#rect(height:1cm, width:1.2cm, stroke:2pt)],
[], [], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [],
)
} else if nbrEx == 4 {
tablex(
columns: (2cm, 90%-4.3cm, 1cm, 1cm, 1cm, 1.3cm),
align: center + top,
stroke: none,
[], [], [#v(-0.4cm)#text(small, "1")], [#v(-0.4cm)#text(small, "2")], [#v(-0.4cm)#text(small, "3")], if lang == "en" {[#v(-0.4cm)#text(small, "Grade")]} else {[#v(-0.4cm)#text(small, "Note")]},
if lang == "en" or lang == "de" {[#text(large, "Name:")]} else {[#text(large, "Nom:")]
},
[#line(start: (0cm, 0.7cm), length:(100%), stroke:(dash:"loosely-dashed"))],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#rect(height:1cm, width:1.2cm, stroke:2pt)],
[], [], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [],
)
} else if nbrEx == 5 {
tablex(
columns: (2cm, 90%-5.3cm, 1cm, 1cm, 1cm, 1cm, 1.3cm),
align: center + top,
stroke: none,
[], [], [#v(-0.4cm)#text(small, "1")], [#v(-0.4cm)#text(small, "2")], [#v(-0.4cm)#text(small, "3")], [#v(-0.4cm)#text(small, "4")], if lang == "en" {[#v(-0.4cm)#text(small, "Grade")]} else {[#v(-0.4cm)#text(small, "Note")]},
if lang == "en" or lang == "de" {[#text(large, "Name:")]} else {[#text(large, "Nom:")]
},
[#line(start: (0cm, 0.7cm), length:(100%), stroke:(dash:"loosely-dashed"))],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#rect(height:1cm, width:1.2cm, stroke:2pt)],
[], [], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [],
)
} else if nbrEx == 6 {
tablex(
columns: (2cm, 90%-6.3cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1.3cm),
align: center + top,
stroke: none,
[], [], [#v(-0.4cm)#text(small, "1")], [#v(-0.4cm)#text(small, "2")], [#v(-0.4cm)#text(small, "3")], [#v(-0.4cm)#text(small, "4")], [#v(-0.4cm)#text(small, "5")], if lang == "en" {[#v(-0.4cm)#text(small, "Grade")]} else {[#v(-0.4cm)#text(small, "Note")]},
if lang == "en" or lang == "de" {[#text(large, "Name:")]} else {[#text(large, "Nom:")]
},
[#line(start: (0cm, 0.7cm), length:(100%), stroke:(dash:"loosely-dashed"))],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#rect(height:1cm, width:1.2cm, stroke:2pt)],
[], [], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [],
)
} else if nbrEx == 7 {
tablex(
columns: (2cm, 90%-7.3cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1.3cm),
align: center + top,
stroke: none,
[], [], [#v(-0.4cm)#text(small, "1")], [#v(-0.4cm)#text(small, "2")], [#v(-0.4cm)#text(small, "3")], [#v(-0.4cm)#text(small, "4")], [#v(-0.4cm)#text(small, "5")], [#v(-0.4cm)#text(small, "6")], if lang == "en" {[#v(-0.4cm)#text(small, "Grade")]} else {[#v(-0.4cm)#text(small, "Note")]},
if lang == "en" or lang == "de" {[#text(large, "Name:")]} else {[#text(large, "Nom:")]
},
[#line(start: (0cm, 0.7cm), length:(100%), stroke:(dash:"loosely-dashed"))],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#rect(height:1cm, width:1.2cm, stroke:2pt)],
[], [], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [],
)
} else if nbrEx == 8 {
tablex(
columns: (2cm, 90%-8.3cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1.3cm),
align: center + top,
stroke: none,
[], [], [#v(-0.4cm)#text(small, "1")], [#v(-0.4cm)#text(small, "2")], [#v(-0.4cm)#text(small, "3")], [#v(-0.4cm)#text(small, "4")], [#v(-0.4cm)#text(small, "5")], [#v(-0.4cm)#text(small, "6")], [#v(-0.4cm)#text(small, "7")], if lang == "en" {[#v(-0.4cm)#text(small, "Grade")]} else {[#v(-0.4cm)#text(small, "Note")]},
if lang == "en" or lang == "de" {[#text(large, "Name:")]} else {[#text(large, "Nom:")]
},
[#line(start: (0cm, 0.7cm), length:(100%), stroke:(dash:"loosely-dashed"))],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#rect(height:1cm, width:1.2cm, stroke:2pt)],
[], [], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [],
)
} else if nbrEx == 9 {
tablex(
columns: (2cm, 90%-9.3cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1.3cm),
align: center + top,
stroke: none,
[], [], [#v(-0.4cm)#text(small, "1")], [#v(-0.4cm)#text(small, "2")], [#v(-0.4cm)#text(small, "3")], [#v(-0.4cm)#text(small, "4")], [#v(-0.4cm)#text(small, "5")], [#v(-0.4cm)#text(small, "6")], [#v(-0.4cm)#text(small, "7")], [#v(-0.4cm)#text(small, "8")], if lang == "en" {[#v(-0.4cm)#text(small, "Grade")]} else {[#v(-0.4cm)#text(small, "Note")]},
if lang == "en" or lang == "de" {[#text(large, "Name:")]} else {[#text(large, "Nom:")]
},
[#line(start: (0cm, 0.7cm), length:(100%), stroke:(dash:"loosely-dashed"))],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#rect(height:1cm, width:1.2cm, stroke:2pt)],
[], [], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [],
)
} else if nbrEx == 10 {
tablex(
columns: (2cm, 90%-10.3cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1cm, 1.3cm),
align: center + top,
stroke: none,
[], [], [#v(-0.4cm)#text(small, "1")], [#v(-0.4cm)#text(small, "2")], [#v(-0.4cm)#text(small, "3")], [#v(-0.4cm)#text(small, "4")], [#v(-0.4cm)#text(small, "5")], [#v(-0.4cm)#text(small, "6")], [#v(-0.4cm)#text(small, "7")], [#v(-0.4cm)#text(small, "8")], [#v(-0.4cm)#text(small, "9")], if lang == "en" {[#v(-0.4cm)#text(small, "Grade")]} else {[#v(-0.4cm)#text(small, "Note")]},
if lang == "en" or lang == "de" {[#text(large, "Name:")]} else {[#text(large, "Nom:")]
},
[#line(start: (0cm, 0.7cm), length:(100%), stroke:(dash:"loosely-dashed"))],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#square(size:1cm, stroke:1pt)],
[#v(-0.3cm)#rect(height:1cm, width:1.2cm, stroke:2pt)],
[], [], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [#v(-0.2cm)#text(small, [(#pts)])], [],
)
}
/*if lang == "en" {
[#text(large, "Name:")]
} else if lang == "fr" {
[#text(large, "Nom:")]
} else if lang == "de" {
[#text(large, "Name:")]
}
line(start: (2cm, 0cm), length:(80%-nbrEx*5%), stroke:(dash:"loosely-dashed"))
if nbrEx != 0 {
let i = 0
while i <= nbrEx {
if i == nbrEx {
square(size:1.3cm, stroke:2pt)
} else {
square(size:1cm, stroke:1pt)
}
i = i + 1
}
}*/
}
#let exam_reminder_did(
lang: "en" // "de" "fr",
) = {
if lang == "en" {
infobox[
*Exam Reminder:* \
You can only use the following items:
- a laptop without internet connection
- a pocketcalculator
- all paper documents you want
It is forbidden to use generative AI.
\
*Good Luck!*
]
} else if lang == "fr" {
infobox[
*Rappel d'examen :* \
Vous ne pouvez utiliser que les éléments suivants :
- un ordinateur portable sans connexion internet
- une calculatrice de poche
- tous les documents papier que vous souhaitez
Il est interdit d'utiliser l'IA générative.
\
*Bonne chance!*
]
} else if lang == "de" {
infobox[
*Prüfungserinnerung:* \
Sie können nur die folgenden Gegenstände verwenden:
- ein Laptop ohne Internetanschluss
- einen Taschenrechner
- alle Papierdokumente
Es ist verboten, generative KI zu verwenden.
\
*Viel Glück!*
]
}
}
#let exam_reminder_car(
lang: "en" // "de" "fr",
) = {
if lang == "en" {
infobox[
*Exam Reminder:*
\ \
You can only use the following items:
- the two-page summary you created.
- a pocketcalculator
In addition, properly comment all high-level and assembler code to explain its purpose and how it fits into the program structure.
\ \
*Good Luck!*
]
} else if lang == "fr" {
infobox[
*Rappel d'examen :*
\ \
Vous ne pouvez utiliser que les éléments suivants :
- le résumé de deux pages que vous avez créé.
- une calculatrice de poche
Commenter également tout le code de haut niveau et le code assembleur de manière appropriée afin d'expliquer son but et son intégration dans la structure du programme.
\ \
*Bonne chance!*
]
} else if lang == "de" {
infobox[
*Prüfungserinnerung:*
\ \
Sie können nur die folgenden Elemente verwenden:
- die zweiseitige Zusammenfassung, die Sie erstellt haben.
- einen Taschenrechner
Kommentieren Sie ausserdem den gesamten High-Level- und Assembler-Code ordnungsgemäss aus, um seinen Zweck und seine Einbindung in die Programmstruktur zu erklären.
\ \
*Viel Glück!*
]
}
}
#let exam_reminder_syd(
lang: "en" // "de" "fr",
) = {
if lang == "en" {
infobox[
*Exam Reminder:*
\
You can only use the following items:
- your personal notes
- the couse slides
//- A one-page summary (front and back) prepared by you.
It is forbidden to use generative AI.
\
*Good Luck!*
]
} else if lang == "fr" {
infobox[
*Rappel d'examen :*
\
Vous ne pouvez utiliser que les éléments suivants :
- vos notes personnelles
- les diapositives du cours
Il est interdit d'utiliser l'IA générative.
\
*Bonne chance!*
]
} else if lang == "de" {
infobox[
*Prüfungserinnerung:*
\
Sie können nur die folgenden Elemente verwenden:
- Ihre persönlichen Notizen
- die Vorlesungsfolien
Es ist verboten, generative KI zu verwenden.
\
*Viel Glück!*
]
}
}
#let exercises_solution_hints(
lang: "en" // "de" "fr",
) = {
if lang == "en" {
infobox[
*Solution vs. Hints:*
\
While not every response provided herein constitutes a comprehensive solution, some serve as helpful hints intended to guide you toward discovering the solution independently. In certain instances, only a portion of the solution is presented.
]
} else if lang == "fr" {
infobox[
*Solution vs. Hints:*
\
Toutes les réponses fournies ici ne sont pas des solutions complètes. Certaines ne sont que des indices pour vous aider à trouver la solution vous-même. Dans d'autres cas, seule une partie de la solution est fournie.
]
} else if lang == "de" {
infobox[
*Lösung vs. Hinweise:*
\
Nicht alle hier gegebenen Antworten sind vollständige Lösungen. Einige dienen lediglich als Hinweise, um Ihnen bei der eigenständigen Lösungsfindung zu helfen. In anderen Fällen wird nur ein Teil der Lösung präsentiert.
]
}
}

File diff suppressed because it is too large Load Diff

2470
00-templates/tablex.typ Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,137 @@
//
// Description: HEVS Thesis Typst Template
// Author : Silvan Zahno
//
#import "helpers.typ": *
#import "page-title-thesis.typ": *
#import "page-reportinfo.typ": *
#let thesis(
title: none,
subtitle: none,
version: none,
author: (),
professor: (),
expert: (),
school: (),
date: (),
lang:"en",
tableof : (
toc: true,
tof: false,
tot: false,
tol: false,
toe: false,
),
icons: (
topleft: none,
topright: none,
bottomleft: none,
bottomright: none,
),
body) = {
// Set the document's basic properties.
set document(author: author.name, title: title)
set page(margin: (top:3.5cm, bottom:3.5cm, rest:3.5cm))
// header and footer
set page(
header: locate(loc => if loc.page() >=2 [
#set text(small)
#h(1fr) #smallcaps(title)
]),
footer: locate(loc => if loc.page() >=2 [
#set text(small)
#h(1fr) #counter(page).display("1 / 1", both: true)
]),
)
// font & language
set text(
font: (
"New CM Sans",
"New Computer Modern Sans",
"Linux Libertine",
"Fira Sans",
"New Computer Modern",
),
fallback: true,
lang:lang
)
// paragraph
show par: set block(spacing: 1em)
//set par(leading: 0.55em, first-line-indent: 1.8em, justify: true)
// heading
show heading: set block(above: 1.2em, below: 1.2em)
set heading(numbering: "1.1")
show heading.where(level: 1): (it) => {
set text(size: huge)
set block(above: 1.2em, below: 1.2em)
if it.numbering != none {
let num = numbering(it.numbering, ..counter(heading).at(it.location()))
let prefix = num + h(0.5em) + text(code-border)[|] + h(0.5em)
unshift_prefix(prefix, it.body)
} else {
it
}
}
show heading.where(level: 2): (it) => {
let num = numbering(it.numbering, ..counter(heading).at(it.location()))
unshift_prefix(num + h(0.8em), it.body)
}
//show heading.where(level: 1): set text(size:huge)
//show heading.where(level: 1): set pad(size:huge)
// link color
//show link: it => text(fill:blue, underline(it))
show link: it => text(fill:hei-blue, it)
// Math numbering
set math.equation(numbering: "(1)")
// code blocks
set raw(syntaxes:"syntax/VHDL.sublime-syntax")
show raw.where(block: false): set text(weight: "semibold")
//show raw.where(block: false): it => {
// highlight(
// fill:code-bg,
// top-edge: "ascender",
// bottom-edge: "bounds",
// extent:1pt, it)
//}
show raw.where(block: true): set text(size: tiny)
show raw.where(block: true): it => {
block(
fill: code-bg,
width:100%,
inset: 10pt,
radius: 4pt,
stroke: 0.1pt + code-border,
it,
)
}
// Title page
page-title-thesis(
title: title,
date: date,
school: school,
author: author,
icons: icons,
)
// Table of content
pagebreak()
toc(
lang: lang,
tableof: tableof,
)
// Main body
set par(justify: true)
body
}