updated style
This commit is contained in:
parent
25692f0bde
commit
ca168bdd79
|
@ -0,0 +1,3 @@
|
|||
% Bibliography based on BibTeX
|
||||
% format: https://www.bibtex.com/g/bibtex-format/
|
||||
% possible entry types: https://www.bibtex.com/e/entry-types/
|
|
@ -0,0 +1,8 @@
|
|||
|
||||
language: de
|
||||
ligratures: true
|
||||
hyphenate: true
|
||||
paragraph-spacing: 1.5 # relative to line height
|
||||
line-spacing: 0.75 # relative to line height
|
||||
first-line-indent: 1 # in centimetres
|
||||
font-size: 12 # in point
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
glossary:
|
||||
|
||||
# Example:
|
||||
|
||||
# - short: PLC
|
||||
# long: Programmable Logic Controller
|
||||
# desc: Industrial computer for controlling automation devices
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,47 @@
|
|||
|
||||
#let TitleSize = 24pt
|
||||
#let SubtitleSize = 18pt
|
||||
#let LargetextSize = 14pt
|
||||
|
||||
// titles are bold and twice the size of normal text
|
||||
// also they are centered and not justified
|
||||
#let title(x) = {
|
||||
align(center, par(justify: false, text(weight: "regular", size: TitleSize)[#x]))
|
||||
}
|
||||
|
||||
// subtitles are 1.5x the size of normal text
|
||||
// also they are centered and not justified
|
||||
#let subtitle(x) = {
|
||||
par(justify: false, text(size: SubtitleSize)[#x])
|
||||
}
|
||||
|
||||
#let largetext(x) = {
|
||||
par(justify: false, text(size: LargetextSize)[#x])
|
||||
}
|
||||
|
||||
#let signature = {
|
||||
set align(bottom)
|
||||
|
||||
grid(
|
||||
// set width of columns
|
||||
// we need two, so make both half the page width
|
||||
columns: (50%, 50%),
|
||||
row-gutter: 0.75em,
|
||||
align(left, {line(length: 6cm)}),
|
||||
align(left, {line(length: 6cm)}),
|
||||
align(left, "Ort, Datum"),
|
||||
align(left, "Unterschrift")
|
||||
)
|
||||
}
|
||||
|
||||
#let to_em(x) = {
|
||||
x * 1em
|
||||
}
|
||||
|
||||
#let to_cm(x) = {
|
||||
x * 1cm
|
||||
}
|
||||
|
||||
#let to_pt(x) = {
|
||||
x * 1pt
|
||||
}
|
155
src/main.typ
155
src/main.typ
|
@ -1,73 +1,190 @@
|
|||
|
||||
// style text
|
||||
#set text(
|
||||
ligatures: true,
|
||||
size: 12pt // global font size
|
||||
)
|
||||
#import "prelude.typ" as prelude
|
||||
|
||||
// page geometry
|
||||
// set page geometry:
|
||||
// paper format of A4
|
||||
#set page(
|
||||
margin: (left: 3cm, right: 2cm, top: 2cm + 2em + 2em, bottom: 2cm),
|
||||
margin: (left: 3cm, right: 2cm, top: 2cm + 2em, bottom: 2cm),
|
||||
paper: "a4",
|
||||
)
|
||||
|
||||
#let info = yaml("info.yaml")
|
||||
// set global text parameter
|
||||
#set text(
|
||||
font: "Times New Roman",
|
||||
size: prelude.to_pt(prelude.format.font-size),
|
||||
ligatures: prelude.format.ligratures,
|
||||
hyphenate: prelude.format.hyphenate,
|
||||
alternates: prelude.format.ligratures,
|
||||
discretionary-ligatures: prelude.format.ligratures,
|
||||
lang: prelude.format.language
|
||||
)
|
||||
|
||||
// set the text properties of verbatim/raw text blocks
|
||||
#show raw: set text(
|
||||
font: "FiraCode Nerd Font",
|
||||
size: prelude.to_pt(prelude.format.font-size),
|
||||
ligatures: prelude.format.ligratures,
|
||||
hyphenate: prelude.format.hyphenate,
|
||||
alternates: prelude.format.ligratures,
|
||||
discretionary-ligatures: prelude.format.ligratures,
|
||||
lang: prelude.format.language
|
||||
)
|
||||
|
||||
// use block element as paragraph
|
||||
// set block settings for every paragraph
|
||||
#show par: set block(
|
||||
below: prelude.to_em(prelude.format.paragraph-spacing), // paragraph spacing
|
||||
)
|
||||
|
||||
// set global paragraph settings
|
||||
#set par(
|
||||
leading: prelude.to_em(prelude.format.line-spacing),
|
||||
justify: true,
|
||||
first-line-indent: prelude.to_cm(prelude.format.first-line-indent)
|
||||
)
|
||||
|
||||
// set PDF meta information
|
||||
#set document(
|
||||
author: info.autor,
|
||||
author: prelude.info.autor,
|
||||
date: datetime.today(),
|
||||
keywords: info.stichwörter
|
||||
keywords: prelude.info.stichwörter
|
||||
)
|
||||
|
||||
#set heading(numbering: none)
|
||||
#set page(numbering: "I.", footer: "")
|
||||
|
||||
#show heading.where(
|
||||
level: 1
|
||||
): it => block(width: 100%)[
|
||||
#set align(center)
|
||||
#set text(prelude.to_pt(prelude.format.font-size) * 2, weight: "regular")
|
||||
#it.body
|
||||
#v(0.5cm)
|
||||
]
|
||||
|
||||
#include "pages/titel.typ"
|
||||
#include "pages/selbständigkeitserklärung.typ"
|
||||
#include "pages/sperrvermerk.typ"
|
||||
#include "pages/gender-hinweis.typ"
|
||||
#include "pages/übersicht-arbeitspakete.typ"
|
||||
|
||||
#set page(
|
||||
binding: left,
|
||||
header-ascent: 2em,
|
||||
header-ascent: 1em,
|
||||
header: locate(loc => {
|
||||
smallcaps(prelude.info.titel)
|
||||
v(-2em)
|
||||
align(right, counter(page).display("I."))
|
||||
v(-0.75em)
|
||||
v(-1em)
|
||||
line(length: 100%)
|
||||
}),
|
||||
footer: ""
|
||||
)
|
||||
|
||||
// vorwort
|
||||
#show heading.where(
|
||||
level: 1
|
||||
): it => block(width: 100%)[
|
||||
#set align(left)
|
||||
#set text(prelude.to_pt(prelude.format.font-size) * 2, weight: "regular")
|
||||
#v(0.25cm)
|
||||
#it.body
|
||||
#v(0.5cm)
|
||||
]
|
||||
|
||||
#outline(title: "Inhaltsverzeichnis")
|
||||
#include "pages/gender-hinweis.typ"
|
||||
#include "pages/übersicht-arbeitspakete.typ"
|
||||
|
||||
#outline(title: "Inhaltsverzeichnis", indent: auto)
|
||||
|
||||
#pagebreak()
|
||||
|
||||
#outline(
|
||||
title: [Abbildungsverzeichnis],
|
||||
title: "Abbildungsverzeichnis",
|
||||
target: figure.where(kind: image),
|
||||
)
|
||||
|
||||
#pagebreak()
|
||||
|
||||
#outline(
|
||||
title: [Tabellensverzeichnis],
|
||||
title: "Tabellensverzeichnis",
|
||||
target: figure.where(kind: table),
|
||||
)
|
||||
|
||||
#pagebreak()
|
||||
|
||||
#outline(
|
||||
title: [Quelltextverzeichnis],
|
||||
title: "Quelltextverzeichnis",
|
||||
target: figure.where(kind: raw),
|
||||
)
|
||||
|
||||
#pagebreak()
|
||||
|
||||
// for creating glossary
|
||||
#import "@preview/glossarium:0.2.6": make-glossary, print-glossary, gls, glspl
|
||||
#show: make-glossary
|
||||
|
||||
= Glossar
|
||||
|
||||
// read all entries from config file
|
||||
#let glossary = yaml("../conf/glossary.yaml")
|
||||
// destination array
|
||||
#let glossary_entries = ()
|
||||
|
||||
// parse TOML entries into correct format
|
||||
#if glossary.glossary != none {
|
||||
for entry in glossary.glossary {
|
||||
let short = entry.at("short", default: none)
|
||||
let long = entry.at("long", default: none)
|
||||
let desc = entry.at("desc", default: none)
|
||||
|
||||
if short == none {
|
||||
panic("Key of glossary term must be specified")
|
||||
}
|
||||
|
||||
glossary_entries.push((key: short, short: short, long: long, desc: desc))
|
||||
}
|
||||
}
|
||||
|
||||
#print-glossary(glossary_entries)
|
||||
|
||||
#pagebreak()
|
||||
|
||||
// reset page counter
|
||||
#counter(page).update(0)
|
||||
|
||||
= Abteilung
|
||||
|
||||
#show heading.where(
|
||||
level: 1
|
||||
): it => block(width: 100%)[
|
||||
#set align(left)
|
||||
#set text(prelude.to_pt(prelude.format.font-size) * 2, weight: "regular")
|
||||
#v(0.25cm)
|
||||
#it.numbering
|
||||
#it.body
|
||||
#v(0.5cm)
|
||||
]
|
||||
|
||||
#set heading(numbering: "1.")
|
||||
#set page(
|
||||
binding: left,
|
||||
header-ascent: 1em,
|
||||
header: locate(loc => {
|
||||
align(right, counter(page).display("1."))
|
||||
v(-1em)
|
||||
line(length: 100%)
|
||||
}),
|
||||
footer: ""
|
||||
)
|
||||
|
||||
#set page(numbering: "1.")
|
||||
|
||||
= Kapitel
|
||||
#lorem(100)
|
||||
|
||||
#pagebreak()
|
||||
|
||||
#set heading(numbering: none)
|
||||
|
||||
#bibliography(
|
||||
style: "ieee",
|
||||
"../conf/bibliography.bib"
|
||||
)
|
|
@ -1,21 +1,13 @@
|
|||
|
||||
// load general information from YAML
|
||||
#let info = yaml("../info.yaml")
|
||||
|
||||
#v(8em)
|
||||
#import "../prelude.typ" as prelude
|
||||
|
||||
// title
|
||||
#text(size: 2em, weight: "semibold", align(center, "Gender-Hinweis"))
|
||||
= Gender-Hinweis
|
||||
|
||||
#v(3em)
|
||||
|
||||
#set par(justify: true)
|
||||
|
||||
#text(size: 1.25em)[
|
||||
Zur besseren Lesbarkeit wird in dieser Hausarbeit das gene-
|
||||
rische Maskulinum verwendet. Die in dieser Arbeit verwendeten
|
||||
Personenbezeichnungen beziehen sich - sofern nicht anders kennt-
|
||||
lich gemacht - auf alle Geschlechter.
|
||||
#prelude.largetext()[
|
||||
Zur besseren Lesbarkeit wird in dieser Arbeit das generische Maskulinum verwendet.
|
||||
Die in dieser Arbeit verwendeten
|
||||
Personenbezeichnungen beziehen sich - sofern nicht anders kenntlich gemacht - auf alle Geschlechter.
|
||||
]
|
||||
|
||||
#pagebreak()
|
||||
|
|
|
@ -1,46 +1,29 @@
|
|||
|
||||
// load general information from YAML
|
||||
#let info = yaml("../info.yaml")
|
||||
#import "../prelude.typ" as prelude
|
||||
|
||||
#set align(center)
|
||||
|
||||
// title
|
||||
#pad(top: 7em, text(size: 2em, weight: "semibold", "Selbständigkeitserklärung"))
|
||||
= Selbständigkeitserklärung
|
||||
|
||||
#pad(top: 7em, text(size: 1.25em)[
|
||||
#v(1cm)
|
||||
#prelude.largetext()[
|
||||
Ich versichere hiermit, dass ich meine #linebreak() Prüfung mit dem Thema
|
||||
])
|
||||
]
|
||||
|
||||
#pad(
|
||||
top: 4em,
|
||||
{
|
||||
text(size: 1.5em, weight: "semibold", info.titel)
|
||||
linebreak()
|
||||
text(size: 1.5em, info.untertitel)
|
||||
}
|
||||
)
|
||||
#v(1cm)
|
||||
#prelude.title(prelude.info.titel)
|
||||
|
||||
#pad(top: 6em, text(size: 1.5em)[
|
||||
// subtitle
|
||||
#prelude.subtitle(prelude.info.untertitel)
|
||||
|
||||
#v(1cm)
|
||||
#prelude.largetext()[
|
||||
selbständig verfasst und keine anderen als die angegebenen
|
||||
Quellen und Hilfsmittel benutzt habe. Ich versichere zudem, dass die
|
||||
eingereichte elektronische Fassung mit der gedruckten Fassung
|
||||
übereinstimmt.
|
||||
])
|
||||
]
|
||||
|
||||
#set align(bottom)
|
||||
|
||||
#pad(
|
||||
top: 3em,
|
||||
grid(
|
||||
// set width of columns
|
||||
// we need two, so make both half the page width
|
||||
columns: (50%, 50%),
|
||||
row-gutter: 0.75em,
|
||||
align(left, {line(length: 16em)}),
|
||||
align(left, {line(length: 16em)}),
|
||||
align(left, "Ort, Datum"),
|
||||
align(left, "Unterschrift")
|
||||
)
|
||||
)
|
||||
#prelude.signature
|
||||
|
||||
#pagebreak()
|
|
@ -1,34 +1,17 @@
|
|||
|
||||
// load general information from YAML
|
||||
#let info = yaml("../info.yaml")
|
||||
|
||||
#box(height: 7em)
|
||||
#import "../prelude.typ" as prelude
|
||||
|
||||
// title
|
||||
#text(size: 2em, weight: "semibold", align(center, "Sperrvermerk"))
|
||||
= Sperrvermerk
|
||||
|
||||
#box(height: 2em)
|
||||
#v(1cm)
|
||||
|
||||
#set par(justify: true)
|
||||
|
||||
#text(size: 1.25em)[
|
||||
#prelude.largetext()[
|
||||
Der Inhalt dieser Arbeit darf weder als Ganzes noch in
|
||||
Auszügen Personen außerhalb des Prüfungsprozesses
|
||||
und des Evaluationsverfahrens zugänglich gemacht werden,
|
||||
sofern keine anders lautende Genehmigung der Ausbildungsstätte vorliegt.
|
||||
]
|
||||
|
||||
#box(height: 7em)
|
||||
|
||||
#grid(
|
||||
// set width of columns
|
||||
// we need two, so make both half the page width
|
||||
columns: (50%, 50%),
|
||||
row-gutter: 0.75em,
|
||||
align(left, {line(length: 16em)}),
|
||||
align(left, {line(length: 16em)}),
|
||||
align(left, "Ort, Datum"),
|
||||
align(left, "Unterschrift")
|
||||
)
|
||||
#prelude.signature
|
||||
|
||||
#pagebreak()
|
||||
|
|
|
@ -1,49 +1,46 @@
|
|||
#import "../prelude.typ" as prelude
|
||||
|
||||
// load general information from YAML
|
||||
#let info = yaml("../info.yaml")
|
||||
#let LogoHeight = 1.5cm
|
||||
|
||||
#set align(center)
|
||||
|
||||
// logo of ABB and DHBW
|
||||
#pad(
|
||||
top: 3em,
|
||||
grid(
|
||||
#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/svg/ABB.svg", height: 35pt)),
|
||||
align(left, image("../../res/svg/ABB.svg", height: LogoHeight)),
|
||||
// right align logo of DHBW
|
||||
align(right, image("../../res/svg/DHBW.svg", height: 40pt))
|
||||
)
|
||||
align(right, image("../../res/svg/DHBW.svg", height: LogoHeight))
|
||||
)
|
||||
|
||||
// title
|
||||
#pad(top: 4em, text(size: 2em, weight: "semibold", info.titel))
|
||||
#v(2cm)
|
||||
#prelude.title(prelude.info.titel)
|
||||
|
||||
// subtitle
|
||||
#pad(top: 1em, text(size: 1.5em, info.untertitel))
|
||||
#prelude.subtitle(prelude.info.untertitel)
|
||||
|
||||
// subtitle
|
||||
#pad(top: 4em, text(size: 1.5em, weight: "bold", info.typ))
|
||||
// type of paper
|
||||
#v(1cm)
|
||||
#prelude.largetext(prelude.info.typ)
|
||||
|
||||
// number of semester
|
||||
#pad(top: 2em)[
|
||||
Praxisphase des #info.semester Studienjahrs
|
||||
]
|
||||
Praxisphase des #prelude.info.semester Studienjahrs
|
||||
|
||||
// fakulty
|
||||
#pad(top: 0.5em)[
|
||||
an der Fakultät für #info.fakultät
|
||||
#pad(top: 0.5cm)[
|
||||
an der Fakultät für #prelude.info.fakultät
|
||||
#linebreak()
|
||||
im Studiengang #info.studiengang
|
||||
im Studiengang #prelude.info.studiengang
|
||||
]
|
||||
|
||||
// university
|
||||
#pad(top: 1.5em)[
|
||||
#pad(top: 0.5cm)[
|
||||
an der
|
||||
#linebreak()
|
||||
#info.universität
|
||||
#prelude.info.universität
|
||||
]
|
||||
|
||||
#set align(bottom + left)
|
||||
|
@ -54,32 +51,32 @@
|
|||
stroke: none,
|
||||
|
||||
"Verfasser:",
|
||||
info.autor,
|
||||
prelude.info.autor,
|
||||
|
||||
"Bearbeitungszeitraum:",
|
||||
info.bearbeitungszeitraum,
|
||||
prelude.info.bearbeitungszeitraum,
|
||||
|
||||
"Matrikelnummer, Kurs:",
|
||||
str(info.matrikelnummer) + ", " + info.studiengang,
|
||||
str(prelude.info.matrikelnummer) + ", " + prelude.info.studiengang,
|
||||
|
||||
"Ausbildungsbetrieb:",
|
||||
info.betrieb,
|
||||
prelude.info.betrieb,
|
||||
|
||||
"Betr. Betreuer:",
|
||||
info.betreuer,
|
||||
"Betrieblicher Betreuer:",
|
||||
prelude.info.betreuer,
|
||||
|
||||
"Abgabedatum:",
|
||||
info.abgabe
|
||||
prelude.info.abgabe
|
||||
)
|
||||
|
||||
#pad(
|
||||
top: 3em,
|
||||
top: 1cm,
|
||||
grid(
|
||||
// set width of columns
|
||||
// we need two, so make both half the page width
|
||||
columns: (50%, 50%),
|
||||
align(left, "Unterschrift des betrieblichen Betreuers"),
|
||||
align(right, {line(length: 16em)})
|
||||
align(right, {line(length: 6cm)})
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
@ -1,22 +1,19 @@
|
|||
|
||||
#box(height: 7em)
|
||||
#import "../prelude.typ" as prelude
|
||||
|
||||
// title
|
||||
#text(size: 2em, weight: "semibold", align(center, "Übersicht Arbeitspakete"))
|
||||
= Übersicht Arbeitspakete
|
||||
|
||||
#box(height: 5em)
|
||||
|
||||
#let info = yaml("../info.yaml")
|
||||
Folgende Tabelle zeigt die Aktivtäten welche im Zeitraum vom #prelude.info.bearbeitungszeitraum abgehandelt wurden.
|
||||
|
||||
#figure(
|
||||
kind: table,
|
||||
caption: "Übersicht Arbeitspakete",
|
||||
table(
|
||||
columns: 3,
|
||||
align: right,
|
||||
inset: 1em,
|
||||
columns: (1fr, auto, auto),
|
||||
align: center,
|
||||
inset: 0.25cm,
|
||||
[*Thema*], [*Zeitraum*], [*Dauer (Wochen)*],
|
||||
..for packet in info.arbeits-pakete {
|
||||
..for packet in prelude.info.arbeits-pakete {
|
||||
|
||||
let start_split = packet.start.split(".")
|
||||
let start = datetime(day: int(start_split.at(0)), month: int(start_split.at(1)), year: int(start_split.at(2)))
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
// import extras
|
||||
#import "extra/util.typ": title, subtitle, largetext, signature, to_cm, to_pt, to_em
|
||||
|
||||
// import document information
|
||||
#let info = yaml("../info.yaml")
|
||||
|
||||
// general document information
|
||||
#let format = yaml("../conf/format.yaml")
|
Loading…
Reference in New Issue