diff --git a/examples/glossary.typ b/examples/glossary.typ
new file mode 100644
index 0000000..e69de29
diff --git a/examples/glossary.yml b/examples/glossary.yml
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/examples/glossary.yml
@@ -0,0 +1 @@
+
diff --git a/examples/lipsum.typ b/examples/lipsum.typ
index 9b9a1d3..2c05960 100644
--- a/examples/lipsum.typ
+++ b/examples/lipsum.typ
@@ -1,17 +1,59 @@
#import "../src/template.typ": dhbw-template
-#show: dhbw-template
+#let config = (
+ author: (
+ name: "Sven Vogel",
+ semester: 4,
+ program: "Informationstechnik",
+ course: "TINF22IT2",
+ faculty: "Technik",
+ university: "DHBW Mannheim",
+ company: "ABB AG",
+ supervisor: "Florian Miedniak",
+ matriculation-number: 1191225),
+ thesis: (
+ title: "Konfiguration & Integration von PROFINET",
+ subtitle: "für die AC500 SPS",
+ submission-date: "20. März 2024",
+ timeframe: "1. Januar 2023 - 20. März 2024",
+ kind: "T2000",
+ summary: "",
+ abstract: "",
+ keywods: ( "IT", "PROFINET" ),
+ bibliography: bibliography("refs.yml"),
+ glossary: (
+ (
+ key: "oidc",
+ short: "OIDC",
+ long: "OpenID Connect",
+ desc: [OpenID is an open standard and decentralized authentication protocol promoted by the non-profit #link("https://en.wikipedia.org/wiki/OpenID#OpenID_Foundation")[OpenID Foundation].],
+ group: "Akronyme",
+ ),
+ (
+ key: "potato",
+ short: "potato",
+ // "plural" will be used when "short" should be pluralized
+ plural: "potatoes",
+ desc: [#lorem(10)],
+ group: "Begriffe"
+ ),
+ )
+))
+
+#show: doc => dhbw-template(config: config, doc: doc)
= Lorem Ipsum
#lorem(25)
+@oidc
#lorem(100)
== Lorem Ipsum 2
#lorem(200)
+@texbook
= Lorem Ipsum 3
@@ -31,9 +73,42 @@ $
"Hello", "World"),
caption: [ Some table ])
+#pagebreak()
+
#figure(
```rust
- fn main() -> {
+use std::env;
+use std::fs::OpenOptions;
+use std::io::Write;
- }
+fn main() {
+ // Get the file path from the environment variable
+ let file_path = match env::var("OUTPUT_FILE") {
+ Ok(path) => path,
+ Err(_) => {
+ eprintln!("Error: OUTPUT_FILE environment variable is not set");
+ return;
+ }
+ };
+
+ // Open the file in append mode, create it if it doesn't exist
+ let mut file = match OpenOptions::new()
+ .append(true)
+ .create(true)
+ .open(&file_path)
+ {
+ Ok(file) => file,
+ Err(e) => {
+ eprintln!("Error opening file {}: {}", file_path, e);
+ return;
+ }
+ };
+
+ // Write "Hello, World" to the file
+ if let Err(e) = writeln!(file, "Hello, World") {
+ eprintln!("Error writing to file: {}", e);
+ } else {
+ println!("Successfully appended 'Hello, World' to {}", file_path);
+ }
+}
```, caption: [Some code])
\ No newline at end of file
diff --git a/examples/refs.yml b/examples/refs.yml
new file mode 100644
index 0000000..11b1e86
--- /dev/null
+++ b/examples/refs.yml
@@ -0,0 +1,6 @@
+texbook:
+ type: book
+ title: The {TeX} Book
+ author: Knuth, Donald E.
+ date: 1986
+ publisher: Addison-Wesley Professional
diff --git a/src/pages/abstract.typ b/src/pages/abstract.typ
index 5efd003..68c991a 100644
--- a/src/pages/abstract.typ
+++ b/src/pages/abstract.typ
@@ -1,6 +1,8 @@
-#let new_abstract(thesis) = context [
+#let new_abstract(config) = context [
+ #let thesis = config.thesis
+
#pagebreak(weak: true)
#align(center + horizon)[
#if text.lang == "de" [
diff --git a/src/pages/confidentiality-statement.typ b/src/pages/confidentiality-statement.typ
index d52f32e..d4c2f11 100644
--- a/src/pages/confidentiality-statement.typ
+++ b/src/pages/confidentiality-statement.typ
@@ -1,7 +1,8 @@
-#let new_confidentiality_statement_page(
- thesis,
- author) = context [
+#let new_confidentiality_statement_page(config) = context [
+
+ #let thesis = config.thesis
+ #let author = config.author
#v(2em)
#if text.lang == "de" [
diff --git a/src/pages/declaration-of-authorship.typ b/src/pages/declaration-of-authorship.typ
index c9ba477..8b73a45 100644
--- a/src/pages/declaration-of-authorship.typ
+++ b/src/pages/declaration-of-authorship.typ
@@ -1,5 +1,8 @@
-#let new_declaration_of_authorship(thesis, author) = context [
+#let new_declaration_of_authorship(config) = context [
+
+ #let thesis = config.thesis
+ #let author = config.author
#v(2em)
#if text.lang == "de" [
diff --git a/src/pages/glossar.typ b/src/pages/glossar.typ
deleted file mode 100644
index a5765c7..0000000
--- a/src/pages/glossar.typ
+++ /dev/null
@@ -1,7 +0,0 @@
-
-#let new-glossar(glossary) = {
- import "@preview/glossarium:0.4.1": make-glossary, print-glossary, gls, glspl
- show: make-glossary
-
- print-glossary(glossary)
-}
diff --git a/src/pages/prerelease-note.typ b/src/pages/prerelease-note.typ
index 688a1b7..6a3dfee 100644
--- a/src/pages/prerelease-note.typ
+++ b/src/pages/prerelease-note.typ
@@ -1,5 +1,8 @@
-#let new_prerelease_note(thesis, author) = context [
+#let new_prerelease_note(config) = context [
+
+ #let thesis = config.thesis
+ #let author = config.author
#v(2em)
#if text.lang == "de" [
diff --git a/src/pages/titlepage.typ b/src/pages/titlepage.typ
index 8bb61eb..2561a31 100644
--- a/src/pages/titlepage.typ
+++ b/src/pages/titlepage.typ
@@ -1,22 +1,11 @@
-#let new_title_page(
- thesis,
- author) = context [
+#let new_title_page(config) = context [
- #let LogoHeight = 1.5cm
+ #let thesis = config.thesis
+ #let author = config.author
#set align(center)
- // logo of ABB and DHBW
- #grid(
- // set width of columns
- // we need two, so make both half the page width
- columns: (50%, 50%),
- // left align logo of ABB
- align(left, image("res/ABB.svg", height: LogoHeight)),
- // right align logo of DHBW
- align(right, image("res/DHBW.svg", height: LogoHeight)))
-
// title
#v(2cm)
#text(size: 2em, weight: "semibold", thesis.title)
@@ -130,5 +119,5 @@
)
)
- #counter(page).update(1)
+ #counter(page).update(0)
]
diff --git a/src/pages/res/ABB.svg b/src/res/ABB.svg
similarity index 100%
rename from src/pages/res/ABB.svg
rename to src/res/ABB.svg
diff --git a/src/pages/res/DHBW.svg b/src/res/DHBW.svg
similarity index 100%
rename from src/pages/res/DHBW.svg
rename to src/res/DHBW.svg
diff --git a/src/res/github.tmTheme b/src/res/github.tmTheme
new file mode 100644
index 0000000..6aa306d
--- /dev/null
+++ b/src/res/github.tmTheme
@@ -0,0 +1,1742 @@
+
+
+
+
+
+ name
+ GitHub
+ settings
+
+
+
+
+ settings
+
+
+ background
+ #ffffff
+ foreground
+ #323232
+ invisibles
+ #000000
+ caret
+ #323232
+
+
+ gutter
+ #ffffff
+ gutterForeground
+ #b3b3b3
+
+
+ guide
+ #e8e8e8
+ stackGuide
+ #e8e8e8
+ activeGuide
+ #b3b3b3
+
+
+ lineHighlight
+ #f5f5f5
+ findHighlight
+ #f8eec7
+ findHighlightForeground
+ #323232
+ selection
+ #f8eec7
+ selectionBorder
+ #ffffff
+
+
+ bracketsForeground
+ #63a35c
+ bracketsOptions
+ underline
+ bracketContentsForeground
+ #63a35c
+ bracketContentsOptions
+ underline
+
+
+ tagsForeground
+ #63a35c
+ tagsOptions
+ underline
+
+
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ foreground
+ #969896
+ fontStyle
+ italic
+
+
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #183691
+
+
+
+
+
+ name
+ RegExp Operator
+ scope
+ regexp-operator
+ settings
+
+ foreground
+ #a71d5d
+
+
+
+
+
+ name
+ RegExp Character Class
+ scope
+ string.regexp.characterclass punctuation.definition.string.begin, string.regexp.characterclass punctuation.definition.string.end
+ settings
+
+ foreground
+ #a71d5d
+
+
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #0086b3
+
+
+
+
+
+ name
+ Built-in Constant
+ scope
+ constant.language
+ settings
+
+ foreground
+ #0086b3
+
+
+
+
+
+ name
+ User-defined Constant
+ scope
+ constant.character, constant.other, variable.other.constant
+ settings
+
+ foreground
+ #0086b3
+
+
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ foreground
+ #323232
+
+
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #a71d5d
+ fontStyle
+ bold
+
+
+
+
+
+ name
+ Bitwise
+ scope
+ bitwise-operator
+ settings
+
+ foreground
+ #a71d5d
+ fontStyle
+ bold
+
+
+
+
+
+ name
+ Operator Accessor
+ scope
+ punctuation.accessor
+ settings
+
+ foreground
+ #a71d5d
+ fontStyle
+ bold
+
+
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ foreground
+ #a71d5d
+ fontStyle
+ bold
+
+
+
+
+
+ name
+ Storage Type
+ scope
+ storage.type
+ settings
+
+ foreground
+ #a71d5d
+ fontStyle
+ bold
+
+
+
+
+
+ name
+ Class Name
+ scope
+ entity.name.class
+ settings
+
+ foreground
+ #0086b3
+
+
+
+
+
+ name
+ Inherited Class
+ scope
+ entity.other.inherited-class
+ settings
+
+ foreground
+ #0086b3
+
+
+
+
+
+ name
+ Function Name
+ scope
+ entity.name.function
+ settings
+
+ foreground
+ #795da3
+ fontStyle
+ bold
+
+
+
+
+
+ name
+ Function Argument
+ scope
+ variable.parameter
+ settings
+
+ foreground
+ #323232
+
+
+
+
+
+ name
+ Tag Name
+ scope
+ entity.name.tag
+ settings
+
+ foreground
+ #63a35c
+
+
+
+
+
+ name
+ Tag Attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ foreground
+ #795da3
+
+
+
+
+
+ name
+ Library Function
+ scope
+ support.function
+ settings
+
+ foreground
+ #62a35c
+
+
+
+
+
+ name
+ Library Constant
+ scope
+ support.constant
+ settings
+
+ foreground
+ #0086b3
+
+
+
+
+
+ name
+ Library Class
+ scope
+ support.type, support.class
+ settings
+
+ foreground
+ #0086b3
+
+
+
+
+
+ name
+ Library Variable
+ scope
+ support.other.variable
+ settings
+
+ foreground
+ #323232
+
+
+
+
+
+ name
+ Invalid
+ scope
+ invalid, invalid.illegal, invalid.deprecated
+ settings
+
+ background
+ #f5f5f5
+ foreground
+ #b52a1d
+ fontStyle
+ bold
+
+
+
+
+
+
+
+
+ name
+ Find-in-files Filename
+ scope
+ entity.name.filename.find-in-files
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ bold
+
+
+
+ name
+ Find-in-files Line Numbers
+ scope
+ constant.numeric.line-number.find-in-files, constant.numeric.line-number.match.find-in-files
+ settings
+
+ foreground
+ #b3b3b3
+
+
+
+
+
+
+
+
+
+ name
+ Diff Header
+ scope
+ meta.diff.header
+ settings
+
+ foreground
+ #969896
+ background
+ #ffffff
+ fontStyle
+ italic
+
+
+
+
+ name
+ Diff Header
+ scope
+ meta.diff.header punctuation.definition.from-file.diff
+ settings
+
+ foreground
+ #bd2c00
+ background
+ #ffecec
+ fontStyle
+ italic bold
+
+
+
+
+ name
+ Diff Header
+ scope
+ meta.diff.header punctuation.definition.to-file.diff
+ settings
+
+ foreground
+ #55a532
+ background
+ #eaffea
+ fontStyle
+ italic bold
+
+
+
+
+ name
+ Diff Range
+ scope
+ meta.diff.range
+ settings
+
+ foreground
+ #969896
+ fontStyle
+ italic bold
+
+
+
+
+ name
+ Diff Deleted
+ scope
+ markup.deleted
+ settings
+
+ background
+ #ffecec
+
+
+
+
+ name
+ Diff Deleted Punctuation
+ scope
+ markup.deleted punctuation.definition.inserted
+ settings
+
+ foreground
+ #bd2c00
+ fontStyle
+ bold
+
+
+
+
+ name
+ Diff Inserted
+ scope
+ markup.inserted
+ settings
+
+ background
+ #eaffea
+
+
+
+
+ name
+ Diff Inserted Punctuation
+ scope
+ markup.inserted punctuation.definition.inserted
+ settings
+
+ foreground
+ #55a532
+ fontStyle
+ bold
+
+
+
+
+
+
+
+
+
+ name
+ GitGutter Deleted
+ scope
+ markup.deleted.git_gutter
+ settings
+
+ foreground
+ #bd2c00
+
+
+
+
+ name
+ GitGutter Inserted
+ scope
+ markup.inserted.git_gutter
+ settings
+
+ foreground
+ #55a532
+
+
+
+
+ name
+ GitGutter Modified
+ scope
+ markup.changed.git_gutter
+ settings
+
+ foreground
+ #0086B3
+
+
+
+
+ name
+ GitGutter Ignored
+ scope
+ markup.ignored.git_gutter
+ settings
+
+ foreground
+ #b3b3b3
+
+
+
+
+ name
+ GitGutter Untracked
+ scope
+ markup.untracked.git_gutter
+ settings
+
+ foreground
+ #b3b3b3
+
+
+
+
+
+
+
+
+
+ name
+ Entity Punctuation
+ scope
+ source.css punctuation.definition.entity
+ settings
+
+ foreground
+ #323232
+
+
+
+
+ name
+ Pseudo Selector
+ scope
+ source.css entity.other.attribute-name.pseudo-class, source.css entity.other.attribute-name.pseudo-element
+ settings
+
+ foreground
+ #a71d5d
+
+
+
+
+ name
+ Property Value
+ scope
+ source.css meta.value, source.css support.constant, source.css support.function
+ settings
+
+ foreground
+ #323232
+
+
+
+
+ name
+ Color
+ scope
+ source.css constant.other.color
+ settings
+
+ foreground
+ #ed6a43
+
+
+
+
+
+
+
+
+
+ name
+ Entity Punctuation
+ scope
+ source.scss punctuation.definition.entity
+ settings
+
+ foreground
+ #323232
+
+
+
+
+ name
+ Pseudo Selector
+ scope
+ source.scss entity.other.attribute-name.pseudo-class, source.scss entity.other.attribute-name.pseudo-element
+ settings
+
+ foreground
+ #a71d5d
+
+
+
+
+ name
+ Color
+ scope
+ source.scss support.constant.property-value, source.scss support.function
+ settings
+
+ foreground
+ #323232
+
+
+
+
+ name
+ Variable
+ scope
+ source.scss variable
+ settings
+
+ foreground
+ #a71d5d
+
+
+
+
+
+
+
+
+
+ name
+ this
+ scope
+ variable.language.this.js
+ settings
+
+ foreground
+ #ed6a43
+
+
+
+
+ name
+ Function
+ scope
+ source.js entity.name.function
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ Function Definition
+ scope
+ source.js meta.function entity.name.function, source.js entity.name.function meta.function
+ settings
+
+ foreground
+ #795da3
+ fontStyle
+ bold
+
+
+
+
+ name
+ New Function
+ scope
+ entity.name.type.new.js
+ settings
+
+ foreground
+ #795da3
+
+
+
+
+ name
+ Function Prototype
+ scope
+ variable.language.prototype.js
+ settings
+
+ foreground
+ #0086b3
+
+
+
+
+ name
+ Support Function
+ scope
+ source.js support.function
+ settings
+
+ foreground
+ #0086b3
+
+
+
+
+ name
+ Function Prototype
+ scope
+ support.type.object.console.js
+ settings
+
+ foreground
+ #795da3
+
+
+
+
+
+
+
+
+
+ name
+ JSON Property - 20 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 20 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 19 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 19 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 18 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 18 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 17 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 17 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 16 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 16 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 15 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 15 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 14 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 14 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 13 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 13 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 12 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 12 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 11 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 11 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 10 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 10 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 9 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 9 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 8 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 8 Deep
+ scope
+ meta meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 7 Deep
+ scope
+ meta meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 7 Deep
+ scope
+ meta meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 6 Deep
+ scope
+ meta meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 6 Deep
+ scope
+ meta meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 5 Deep
+ scope
+ meta meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 5 Deep
+ scope
+ meta meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 4 Deep
+ scope
+ meta meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 4 Deep
+ scope
+ meta meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 3 Deep
+ scope
+ meta meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 3 Deep
+ scope
+ meta meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 2 Deep
+ scope
+ meta meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 2 Deep
+ scope
+ meta meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property - 1 Deep
+ scope
+ meta meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value - 1 Deep
+ scope
+ meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+ name
+ JSON Property
+ scope
+ meta.structure.dictionary.json string.quoted.double.json
+ settings
+
+ foreground
+ #183691
+ fontStyle
+ bold
+
+
+
+ name
+ JSON Value
+ scope
+ meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ regular
+
+
+
+
+
+
+
+
+
+ name
+ Keyword
+ scope
+ source.python keyword
+ settings
+
+ fontStyle
+ bold
+
+
+
+
+ name
+ Storage
+ scope
+ source.python storage
+ settings
+
+ fontStyle
+ bold
+
+
+
+
+ name
+ Storage Type
+ scope
+ source.python storage.type
+ settings
+
+ fontStyle
+ bold
+
+
+
+
+ name
+ Function
+ scope
+ source.python entity.name.function
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ bold
+
+
+
+
+
+
+
+
+
+ name
+ Class
+ scope
+ source.php entity.name.type.class
+ settings
+
+ foreground
+ #323232
+ fontStyle
+ bold
+
+
+
+
+
+
+
+
+
+ name
+ Language Variable
+ scope
+ variable.language.ruby
+ settings
+
+ foreground
+ #ed6a43
+
+
+
+
+ name
+ Module Name
+ scope
+ entity.name.type.module.ruby
+ settings
+
+ foreground
+ #795da3
+ fontStyle
+ bold
+
+
+
+
+ name
+ Class Name
+ scope
+ entity.name.type.class.ruby
+ settings
+
+ foreground
+ #795da3
+ fontStyle
+ bold
+
+
+
+
+ name
+ Inherited Class
+ scope
+ entity.other.inherited-class.ruby
+ settings
+
+ foreground
+ #795da3
+ fontStyle
+ bold
+
+
+
+
+
+
+
+
+
+ name
+ Punctuation
+ scope
+ text.html.markdown punctuation.definition
+ settings
+
+ foreground
+ #a71d5d
+
+
+
+
+ name
+ Separator
+ scope
+ text.html.markdown meta.separator
+ settings
+
+ foreground
+ #b3b3b3
+
+
+
+
+ name
+ Heading
+ scope
+ text.html.markdown markup.heading
+ settings
+
+ fontStyle
+ bold
+
+
+
+
+ name
+ Code Block
+ scope
+ text.html.markdown markup.raw.block
+ settings
+
+ foreground
+ #323232
+
+
+
+
+ name
+ Inline Code
+ scope
+ text.html.markdown markup.raw.inline
+ settings
+
+ foreground
+ #323232
+
+
+
+
+ name
+ Link and Image
+ scope
+ text.html.markdown meta.link, text.html.markdown meta.image
+ settings
+
+ foreground
+ #4183c4
+
+
+
+ name
+ Link URL
+ scope
+ text.html.markdown markup.underline.link, text.html.markdown constant.other.reference
+ settings
+
+ fontStyle
+ italic
+
+
+
+
+ name
+ List
+ scope
+ text.html.markdown markup.list
+ settings
+
+ foreground
+ #ed6a43
+
+
+
+
+ name
+ Bold
+ scope
+ text.html.markdown markup.bold
+ settings
+
+ fontStyle
+ bold
+
+
+
+
+ name
+ Italic
+ scope
+ text.html.markdown markup.italic
+ settings
+
+ fontStyle
+ italic
+
+
+
+
+ name
+ Bold Italic
+ scope
+ text.html.markdown markup.bold markup.italic
+ settings
+
+ fontStyle
+ bold italic
+
+
+
+
+ name
+ Italic Bold
+ scope
+ text.html.markdown markup.italic markup.bold
+ settings
+
+ fontStyle
+ italic bold
+
+
+
+
+
\ No newline at end of file
diff --git a/src/style.typ b/src/style.typ
index a2d739a..59d7067 100644
--- a/src/style.typ
+++ b/src/style.typ
@@ -7,8 +7,14 @@
// Edited: 27.06.2024
// License: MIT
+#let HeaderPaddingBottom = 1.5em
+#let LogoHeight = 3em
+#let HeaderUnderlinePaddingTop = 0pt
+
// global style of document
-#let global_styled_doc(doc: content) = context [
+#let global_styled_doc(config: dictionary, body: content) = context [
+ #let thesis = config.thesis
+
// set page geometry
// paper format of A4
#set page(
@@ -31,7 +37,15 @@
#show heading.where(level: 2): it => v(1em) + it + v(0.5em)
#show heading.where(level: 3): it => v(0.5em) + it + v(0.25em)
- #set raw(tab-size: 4)
+ #set raw(tab-size: 4, theme: "res/github.tmTheme")
+ #show raw.where(block: true): code => {
+ show raw.line: line => {
+ text(fill: gray)[#line.number]
+ h(1em)
+ line.body
+ }
+ code
+ }
#set block(spacing: 2em)
#set par(
@@ -39,68 +53,88 @@
first-line-indent: 1em,
leading: 1em)
- #doc
-]
+ #show link: set text(fill: red.darken(15%))
-#let HeaderPaddingBottom = 1.5em
-#let LogoHeight = 3em
-#let HeaderUnderlinePaddingTop = 0pt
-
-#let prelude_styled(body: content, thesis) = context [
+ #set heading(numbering: none)
#set page(
header-ascent: HeaderUnderlinePaddingTop + HeaderPaddingBottom,
- numbering: "I",
- margin: (top: 2.5cm + LogoHeight + HeaderUnderlinePaddingTop + HeaderPaddingBottom),
- header: [
- #grid(
- columns: (1fr, auto),
- align: (horizon, bottom),
- context [ _ #thesis.title _ ],
- image("pages/res/DHBW.svg", height: LogoHeight)
- )
- #v(HeaderUnderlinePaddingTop - 1em)
- #line(length: 100%)
- ])
+ footer-descent: 1em,
+ margin: (top: 2.5cm + LogoHeight + HeaderUnderlinePaddingTop + HeaderPaddingBottom, bottom: 2.5cm + 1em),
+ numbering: (..nums) => {
+ let current-page = here().page()
+ if current-page == 1{
+ []
+ } else if query().first().location().page() <= current-page {
+ numbering("1 / 1", ..nums)
+ } else {
+ numbering("I", nums.pos().first())
+ }
+ },
+ header: context {
+ set align(left)
+ if here().page() == 1 {
+ // logo of ABB and DHBW
+ grid(
+ // set width of columns
+ // we need two, so make both half the page width
+ columns: (50%, 50%),
+ // left align logo of ABB
+ align(left, image("res/ABB.svg", height: LogoHeight)),
+ // right align logo of DHBW
+ align(right, image("res/DHBW.svg", height: LogoHeight)))
+
+ } else if query().first().location().page() <= here().page() {
+ let headers-before = query(selector(heading.where(numbering: "1.", level: 1)).before(here()))
+
+ let header-title = thesis.title
+
+ if headers-before.len() > 0 {
+ header-title = headers-before.last().body
+ } else {
+ let headers-after = query(selector(heading.where(numbering: "1.", level: 1)).after(here()))
+
+ if headers-after.len() > 0 {
+ header-title = headers-after.first().body
+ }
+ }
+
+ grid(
+ columns: (1fr, auto),
+ align: (horizon, bottom),
+ context [ _ #header-title _ ],
+ image("res/DHBW.svg", height: LogoHeight))
+
+ v(HeaderUnderlinePaddingTop - 1em)
+ line(length: 100%)
+ } else {
+ grid(
+ columns: (1fr, auto),
+ align: (horizon, bottom),
+ context [ _ #config.thesis.title _ ],
+ image("res/DHBW.svg", height: LogoHeight)
+ )
+ v(HeaderUnderlinePaddingTop - 1em)
+ line(length: 100%)
+ }
+ })
#body
]
-#let content_styled(body: content, thesis) = [
+#let prelude_styled(config: dictionary, body: content) = context [
+
+ #body
+]
+
+#let content_styled(config: dictionary, body: content) = [
// setup equate for sub equation labeling
#import "@preview/equate:0.2.0": equate
#show: equate.with(breakable: true, sub-numbering: true)
#set math.equation(numbering: "(1.1)")
#set heading(numbering: "1.")
- #page(
- header-ascent: HeaderUnderlinePaddingTop + HeaderPaddingBottom,
- numbering: "1/1",
- footer-descent: 1em,
- margin: (top: 2.5cm + LogoHeight + HeaderUnderlinePaddingTop + HeaderPaddingBottom, bottom: 2.5cm + 1em),
- header: context [
- #let headers-before = query(selector(heading.where(numbering: "1.", level: 1)).before(here()))
- #let header-title = thesis.title
+ #let thesis = config.thesis
- #if headers-before.len() > 0 {
- header-title = headers-before.last().body
- } else {
- let headers-after = query(selector(heading.where(numbering: "1.", level: 1)).after(here()))
-
- if headers-after.len() > 0 {
- header-title = headers-after.first().body
- }
- }
-
- #grid(
- columns: (1fr, auto),
- align: (horizon, bottom),
- context [ _ #header-title _ ],
- image("pages/res/DHBW.svg", height: LogoHeight)
- )
- #v(HeaderUnderlinePaddingTop - 1em)
- #line(length: 100%)
- ])[
- #body
- ]
+ #body
]
diff --git a/src/template.typ b/src/template.typ
index 463cd60..82a916f 100644
--- a/src/template.typ
+++ b/src/template.typ
@@ -8,12 +8,12 @@
// License: MIT
// start of template pages and styles
-#let dhbw-template(doc) = [
+#let dhbw-template(config: dictionary, doc: content) = [
#import "style.typ": global_styled_doc, prelude_styled, content_styled
// apply global style to every element in the argument content
- #global_styled_doc(doc: [
+ #global_styled_doc(config: config, body: [
#import "pages/titlepage.typ": new_title_page
#import "pages/declaration-of-authorship.typ": new_declaration_of_authorship
@@ -21,60 +21,47 @@
#import "pages/prerelease-note.typ": new_prerelease_note
#import "pages/outline.typ": new_outline
#import "pages/abstract.typ": new_abstract
- #import "pages/glossar.typ": new-glossar
#set text(lang: "de", region: "de")
- #let author = (
- name: "Sven Vogel",
- semester: 4,
- program: "Informationstechnik",
- course: "TINF22IT2",
- faculty: "Technik",
- university: "DHBW Mannheim",
- company: "ABB AG",
- supervisor: "Florian Miedniak",
- matriculation-number: 1191225
- )
-
- #let thesis = (
- title: "Konfiguration & Integration von PROFINET",
- subtitle: "für die AC500 SPS",
- submission-date: "20. März 2024",
- timeframe: "1. Januar 2023 - 20. März 2024",
- kind: "T2000",
- summary: "",
- abstract: "",
- )
-
- #let glossary = ()
-
// preppend title page
- #new_title_page(thesis, author)
+ #new_title_page(config)
- #prelude_styled(thesis, body: [
+ #prelude_styled(config: config, body: [
#pagebreak(weak: true)
- #new_declaration_of_authorship(thesis, author)
+ #new_declaration_of_authorship(config)
#pagebreak(weak: true)
- #new_confidentiality_statement_page(thesis, author)
+ #new_confidentiality_statement_page(config)
#pagebreak(weak: true)
- #new_prerelease_note(thesis, author)
+ #new_prerelease_note(config)
#pagebreak(weak: true)
#new_outline()
#pagebreak(weak: true)
- #new_abstract(thesis)
-
- #pagebreak(weak: true)
- #new-glossar(glossary)
+ #new_abstract(config)
])
- #content_styled(thesis, body: [
+ #import "@preview/glossarium:0.4.1": make-glossary, print-glossary, gls, glspl
+ #show: make-glossary
+
+ #pagebreak(weak: true)
+ #print-glossary(config.thesis.glossary)
+ #pagebreak(weak: true)
+
+ #metadata("prelude terminate")
+
+ #content_styled(config: config, body: [
// code of document follows here
#doc
+
+ #if config.thesis.bibliography != none {
+ pagebreak(weak: true)
+ set bibliography(style: "ieee")
+ config.thesis.bibliography
+ }
])
])
]
\ No newline at end of file