Compare commits

...

3 Commits

Author SHA1 Message Date
Sven Vogel ba72a81c78 style: run typstyle
release / release (push) Failing after 1m57s Details
Gitea Action for checking typst compilation / run-ci-linux (push) Failing after 1m53s Details
2024-11-19 11:55:23 +01:00
Sven Vogel a796f5ecfb feat: allow empty company logo 2024-11-19 11:53:59 +01:00
Sven Vogel 9b90660353 feat: add support for multiple authors 2024-11-19 11:14:04 +01:00
6 changed files with 107 additions and 52 deletions

View File

@ -18,16 +18,28 @@
// Adds preleminarry note page and watermark
draft: true,
// information about author(s)
author: (
name: "Sven Vogel",
semester: 4,
university: (
program: "Informationtechnology",
course: "TINF19IT1",
faculty: "Technik",
university: "DHBW Mannheim",
company: "ABB AG",
supervisor: "Benny Goodman",
matriculation-number: 123456789),
name: "dualen Hochschule Baden-Württemberg",
campus: "Eppelheim"
),
authors: (
(
name: "Sven Vogel",
course: "TINF19IT1",
company: "ABB AG",
supervisor: "Benny Goodman",
matriculation-number: 123456789
),
(
name: "Kurt Jammer",
course: "TINF24AI2",
company: "Siemens",
supervisor: "Henry Badman",
matriculation-number: 478568763
),
),
// information about thesis
thesis: (
title: "Unofficial ABB/DHBW Typst template",
@ -47,7 +59,7 @@
header: (
content-padding: 1.5em,
underline-top-padding: 0pt,
logo-height: 3em,
logo-height: 5em,
logo-image: "res/ABB.svg"),
footer: (
content-padding: 1.5em),
@ -87,7 +99,9 @@
if key in update {
let update_val = update.at(key)
if type(val) == dictionary and type(update_val) == dictionary {
if type(val) == array {
// ignore checking arraay
} else if type(val) == dictionary and type(update_val) == dictionary {
base.insert(key, deep-insert-checked(val, update_val))
} else if val == none or type(val) == type(update_val) {
base.insert(key, update_val)

View File

@ -71,7 +71,7 @@
// set document properties
#set document(
author: config.author.name,
// author: config.author.name,
keywords: config.thesis.keywords,
title: config.thesis.title,
)

View File

@ -12,7 +12,6 @@
pagebreak(weak: true)
let thesis = config.thesis
let author = config.author
if text.lang == "de" [
#heading(level: 1, "Sperrvermerk")

View File

@ -12,7 +12,6 @@
pagebreak(weak: true)
let thesis = config.thesis
let author = config.author
if text.lang == "de" [
#heading("Selbständigkeitserklärung")

View File

@ -10,7 +10,25 @@
context [
#let thesis = config.thesis
#let author = config.author
// logo of ABB and DHBW
#v(-config.style.header.content-padding)
#grid(
// set width of columns
// we need two, so make both half the page width
columns: (50%, 50%),
// left align logo of ABB
if config.style.header.logo-image == none {
// error
} else if config.style.header.logo-image.len() > 0 {
align(left, image(config.style.header.logo-image, height: config.style.header.logo-height))
} else {
align(left, image("../res/DHBW.svg", height: config.style.header.logo-height))
},
// right align logo of DHBW
if config.style.header.logo-image.len() > 0 {
align(right, image("../res/DHBW.svg", height: config.style.header.logo-height))
})
#set align(center)
@ -31,13 +49,9 @@
// faculty
#pad()[
#if text.lang == "de" [
Praxisphase des #author.semester Semesters an der Fakultät für #author.faculty
#linebreak()
im Studiengang #author.program
aus dem Studiengang #config.university.program | #config.university.faculty
] else if text.lang == "en" [
Practical phase of the #author.semester semester at the Faculty of #author.faculty
#linebreak()
in the degree program #author.program
from the course of studies #config.university.program | #config.university.faculty
] else [
#context panic("no translation for language: ", text.lang)
]
@ -52,41 +66,82 @@
] else [
#context panic("no translation for language: ", text.lang)
]
#config.university.name
#linebreak()
#author.university
#config.university.campus
]
#pad(top: 1em)[
#let names = ()
#for author in config.authors {
names.push(author.name)
}
#if text.lang == "de" [
von
] else if text.lang == "en" [
by
] else [
#context panic("no translation for language: ", text.lang)
]
#set text(size: 16pt)
#grid(columns: 1, row-gutter: 1em, ..names)
]
#pad(top: 1em)[
#thesis.timeframe
]
#set align(bottom + left)
#if text.lang == "de" [
#table(
#grid(
columns: 2,
column-gutter: 1cm,
align: left,
row-gutter: 0.5cm,
align: top + left,
stroke: none,
[*Verfasser:*], author.name,
[*Bearbeitungszeitraum:*], thesis.timeframe,
[*Matrikelnummer, Kurs:*],
str(author.matriculation-number) + ", " + author.course,
[Matrikelnummer, Kurs:],
par(
leading: 0.5em,
for author in config.authors {
str(author.matriculation-number) + ", " + author.course
linebreak()
},
),
[*Ausbildungsbetrieb:*], author.company,
[*Betrieblicher Betreuer:*], author.supervisor,
[*Abgabedatum:*], thesis.submission-date,
[Betrieb, Betreuer:],
par(
leading: 0.5em,
for author in config.authors {
author.company + ", " + author.supervisor
linebreak()
},
),
)
] else if text.lang == "en" [
#table(
#grid(
columns: 2,
column-gutter: 1cm,
align: left,
row-gutter: 0.5cm,
align: top + left,
stroke: none,
[*Author:*], author.name,
[*Editing period:*], thesis.timeframe,
[*Matriculation number, course:*],
str(author.matriculation-number) + ", " + author.course,
[Student ID, Course:],
par(
leading: 0.5em,
for author in config.authors {
str(author.matriculation-number) + ", " + author.course
linebreak()
},
),
[*Training company:*], author.company,
[*Company supervisor:*], author.supervisor,
[*Submission date:*], thesis.submission-date,
[Company, Supervisor:],
par(
leading: 0.5em,
for author in config.authors {
author.company + ", " + author.supervisor
linebreak()
},
),
)
] else [
#context panic("no translation for language: ", text.lang)

View File

@ -294,19 +294,7 @@
let current-page = here().page()
if current-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
if style.header.logo-image == none {
[]
} else if style.header.logo-image.len() > 0 {
align(left, image(style.header.logo-image, height: style.header.logo-height))
},
// right align logo of DHBW
align(right, image("res/DHBW.svg", height: style.header.logo-height)))
// logo moved to content
} else if query(<end-of-content>)
.first()