diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/LICENSE b/packages/preview/minimal-thesis-luebeck/0.8.0/LICENSE new file mode 100644 index 0000000000..26c6c53f80 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Falko Hemstra + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/README.md b/packages/preview/minimal-thesis-luebeck/0.8.0/README.md new file mode 100644 index 0000000000..3aabcfabdd --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/README.md @@ -0,0 +1,44 @@ +# minimal thesis template + +This repo contains a minimalistic template for writing a thesis. +The main objective of the template is to produce a nice document with as little code as possible. No nonsense, no extras. + +While this is **not** an official template for the "Universität zu Lübeck", it is loosely inspired by its official LaTeX template by Till Tantau. +The official LaTeX template is a lot prettier. +However, it is also more code. + +To be clear: Using this template does not guarantee any compliance with university standards. +Consult your advisor for tips and rules on writing a thesis. + +## Installation + +### Typst web application + +Just select this template by its name and version and start writing! + +### Typst CLI (local) + +In your CLI, navigate to your empty project directory and use `typst init @preview/minimal-thesis-luebeck:0.8.0`. +I recommend using VS Code and the [tinymist extension](https://github.com/Myriad-Dreamin/tinymist) for working with a local installation. + +## Usage + +When installed, this template provides you with a `thesis.typ` file. +This is where you write your thesis. + +Note that by default this template is configured to write thesis using english language in a german environment. However, you can exchange all strings in the template to match your preferred languages. + +_Hint_: You can take a look at `tutorial.typ` if you are new to Typst. + +## Template Contents +- **thesis.typ**: The central document that finally produces your PDF document. Initially, this includes `tutorial.typ` to give some examples. Just remove the tutorial when you start working. +- **thesis.bib**: The bibliography. Put your references here. +- **texts**: Contains texts that are separate from your main thesis such as the abstract. If you like, you can also put chapters of your thesis here. Personally however, I like having everything in one place. +- **images**: Contains all images. You should replace the example images with your own. Also, you might need to adjust some sizes afterwards (`config/titlepage.typ`). + +## Credits + +This template is inspired by this one: [thesis-template-typst +](https://github.com/ls1intum/thesis-template-typst?tab=MIT-1-ov-file#readme) + +The example image of a cat was generated using OpenAI's DALL-E. diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/release.md b/packages/preview/minimal-thesis-luebeck/0.8.0/release.md new file mode 100644 index 0000000000..14512d6f86 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/release.md @@ -0,0 +1,3 @@ +1. Increment version in `typst.toml` +2. Change `include` in `thesis.typ` to use new version +3. Update version in `README.md` \ No newline at end of file diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/styles/abstract.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/styles/abstract.typ new file mode 100644 index 0000000000..f3320787a6 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/styles/abstract.typ @@ -0,0 +1,14 @@ +#let abstract( + title: "Abstract", + dark-color: black, + body +) = { + set par( + leading: 1em, + justify: true + ) + + heading(title, outlined: false, level: 2) + + body +} diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/styles/acknowledgement.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/styles/acknowledgement.typ new file mode 100644 index 0000000000..0ddaa73108 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/styles/acknowledgement.typ @@ -0,0 +1,26 @@ +#let acknowledgement( + dark-color: black, + body +) = { + set page( + margin: (left: 30mm, right: 30mm, top: 40mm, bottom: 40mm), + number-align: center, + ) + + set par( + leading: 1em, + justify: true + ) + + // --- Acknowledgements --- + context { + let lang = text.lang + if lang == "de" { + heading("Danksagung", outlined: false, level: 2) + } else { + heading("Acknowledgements", outlined: false, level: 2) + } + } + + body +} \ No newline at end of file diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/styles/disclaimer.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/styles/disclaimer.typ new file mode 100644 index 0000000000..ba7e7ccf9c --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/styles/disclaimer.typ @@ -0,0 +1,20 @@ +#let disclaimer( + author, + body +) = { + set page( + margin: (left: 30mm, right: 30mm, top: 40mm, bottom: 40mm), + numbering: "i", + number-align: center, + ) + + // --- Disclaimer --- + v(65%) + + body + + parbreak() + v(10%) + line(length: 35%) + emph(author) +} diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/styles/titlepage.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/styles/titlepage.typ new file mode 100644 index 0000000000..9092d21ce4 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/styles/titlepage.typ @@ -0,0 +1,76 @@ +#let titlepage( + top-left-img: none, + top-right-img: none, + title-english: none, + title-german: none, + degree: none, + institute: none, + program: none, + university: none, + company: none, + author: none, + supervisor: none, + advisor: none, + place: none, + submission-date: none, + slogan-img: none, + dark-color: black, + light-color: gray, + sans-font: none +) = { + set page( + margin: (left: 20mm, right: 20mm, top: 20mm, bottom: 30mm), + footer: none + ) + set text( + font: sans-font, + size: 11pt + ) + set par(leading: 0.5em) + + // --- Title Page --- + grid( + columns: (4cm, 4cm), + gutter: 1fr, + top-left-img, + top-right-img + ) + v(10mm) + + context { + let lang = text.lang + if lang == "de" { + align(left, text(16pt, strong(title-german), fill: dark-color)) + align(left, text(16pt, title-english, fill: dark-color)) + align(left, text(weight: "bold", degree + "arbeit")) + } else { + align(left, text(16pt, strong(title-english), fill: dark-color)) + align(left, text(16pt, title-german, fill: dark-color)) + align(left, text(weight: "bold", degree + "’s Thesis")) + } + + } + + align(left, "verfasst am\n" + strong(institute)) + + align(left, "im Rahmen des Studiengangs\n" + strong(program) + "\nder " + university) + + if company != none { + align(left, "im Rahmen einer Tätigkeit bei der Firma\n" + strong(company)) + } + + align(left, "vorgelegt von\n" + strong(author)) + + align(left, "ausgegeben und betreut von\n" + strong(supervisor)) + + align(left, "mit Unterstützung von\n" + strong(advisor)) + + align(bottom, + grid( + columns: (5cm, 3.5cm), + gutter: 1fr, + place + ", den " + submission-date.display("[day].[month].[year]"), + slogan-img + ) + ) +} \ No newline at end of file diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/styles/toc.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/styles/toc.typ new file mode 100644 index 0000000000..cb97efee86 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/styles/toc.typ @@ -0,0 +1,32 @@ +// --- Table of Contents --- +#let toc( + body-font: "", + sans-font: "", + dark-color: black +) = { + // Make chapters bold but only in the TOC + show outline.entry.where( + level: 1 + ): it => { + v(12pt, weak: true) + strong(text(it, font: sans-font, fill: dark-color)) + } + + context { + let lang = text.lang + let title_str = "" + if lang == "de" { + title_str = "Inhaltsverzeichnis" + } else { + title_str = "Contents" + } + // Set the title of the TOC + outline( + title: { + text(font: sans-font, title_str, size: 15pt) + }, + indent: 2em + ) + } + +} diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/images/slogan.png b/packages/preview/minimal-thesis-luebeck/0.8.0/template/images/slogan.png new file mode 100644 index 0000000000..3391c715fb Binary files /dev/null and b/packages/preview/minimal-thesis-luebeck/0.8.0/template/images/slogan.png differ diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/images/top-left.png b/packages/preview/minimal-thesis-luebeck/0.8.0/template/images/top-left.png new file mode 100644 index 0000000000..841e72c4e1 Binary files /dev/null and b/packages/preview/minimal-thesis-luebeck/0.8.0/template/images/top-left.png differ diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/images/top-right.png b/packages/preview/minimal-thesis-luebeck/0.8.0/template/images/top-right.png new file mode 100644 index 0000000000..ecdb0548d8 Binary files /dev/null and b/packages/preview/minimal-thesis-luebeck/0.8.0/template/images/top-right.png differ diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/abbreviations.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/abbreviations.typ new file mode 100644 index 0000000000..87da24447f --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/abbreviations.typ @@ -0,0 +1,21 @@ +#import "@preview/abbr:0.2.3" + +#abbr.make( + ("PDE", "Partial Differential Equation"), + ("BC", "Boundary Condition"), + ("DOF", "Degree of Freedom", "Degrees of Freedom"), +) +#abbr.config(space-char: sym.space.nobreak) + +#context { + let lang = text.lang + let abbr-title = "" + if lang == "de" { + abbr-title = "Abkürzungsverzeichnis" + } else { + abbr-title = "List of Abbreviations" + } + abbr.list( + title: text(abbr-title, size: 15pt) + ) +} diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/abstract-de.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/abstract-de.typ new file mode 100644 index 0000000000..0978d23f05 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/abstract-de.typ @@ -0,0 +1 @@ +Schreibe deine Zusammenfassung hier. #lorem(80) \ No newline at end of file diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/abstract-en.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/abstract-en.typ new file mode 100644 index 0000000000..baa0ee73d8 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/abstract-en.typ @@ -0,0 +1 @@ +Write your abstract here. #lorem(80) \ No newline at end of file diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/acknowledgement.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/acknowledgement.typ new file mode 100644 index 0000000000..03b3ba4e06 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/acknowledgement.typ @@ -0,0 +1,2 @@ +Write your acknowledgement here or leave it out if you do not want one. +#lorem(50) \ No newline at end of file diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/appendix.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/appendix.typ new file mode 100644 index 0000000000..1f9072ebf7 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/appendix.typ @@ -0,0 +1,5 @@ +If you need one, write your appendix here. +#lorem(100) + +== Appendix sections +In the appendix, use sections instead of chapters since the appendix is a chapter itself. \ No newline at end of file diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/confidentiality-notice.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/confidentiality-notice.typ new file mode 100644 index 0000000000..534a040261 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/confidentiality-notice.typ @@ -0,0 +1 @@ +Die vorliegende Arbeit beinhaltet interne vertrauliche Informationen der Firma XY. Die Weitergabe oder Veröffentlichung des Inhaltes der Arbeit ob gesamt oder in Teilen ist untersagt. Es dürfen keinerlei Kopien oder Abschriften - auch in digitaler Form - gefertigt werden. Ausnahmen bedürfen der schriftlichen Genehmigung der Firma XY. diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/tutorial.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/tutorial.typ new file mode 100644 index 0000000000..dde5cbe4de --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/texts/tutorial.typ @@ -0,0 +1,109 @@ +#import "@preview/abbr:0.2.3" + +#set heading(numbering: "1.1") + += Example Section +This section contains some example content to show you how to use Typst to write your thesis. + +Also, Typst is well-documented. Visit the documentation online: #link("https://typst.app/docs/reference/model/link/") + +== Bold and Italic font +In Typst, you can write text in *bold* or _italic_ font by using simple Markdown symbols. + +== Line breaks and page breaks +By leaving a line blank in your `.typ`-file, you can create a new *paragraph*. This should be the default way of structuring your text. In LaTeX, this would be `\par`. + +You can also create a simple line break by adding a backslash `\` at the end of a line.\ +However, since line breaks should be consistent throughout the document, breaking using `\` is usually not recommended. + +To insert a pagebreak use `#pagebreak()`. + +== Figures +Figures are referenced like this: @fig:findus shows a funny cat. + +#figure( + image("../images/top-right.png", width: 30%), + caption: "This is the figure caption." +) + +Unlike LaTeX, Typst does not have floating figures. Instead, figures are placed where they are defined. + +Also, Typst currently cannot embed PDF-files. However, you can still use SVG. + +== Citations and references +Citations are referenced like this: `@alley1996craft` is a great book about writing scientific reports (proper citations sadly do not work in this tutorial).\ +Note that the bibliography tag stems from the `thesis.bib` file.\ +Also, sections can be referenced like this: @sec:figures and @sec:tutorial + +== Equations +Equations are written like this: +$sum_i^infinity (f^(\(n\))(a))/(n!) (x-a)^n$.\ +Note that adding a space around the equation places it in the center of the page: +$ sum_i^infinity (f^(\(n\))(a))/(n!) (x-a)^n $ + +Equations can be aligned using `&` for alignment and `\` for line breaks: +$ sum_i^infinity (f^(\(n\))(a))/(n!) (x-a)^n &= f(a) + + (f'(a))/(1!) (x-a) + + (f''(a))/(2!) (x-a)^2 + + ...\ + &= ... +$ + +== Math Symbols +In Typst, math symbols are written differently than in LaTeX. For instance, many symbols are written using their names rather than special characters. Here are some examples: + +- Greek letters: $alpha$, $beta$, $gamma$, $delta$, $epsilon$ +- Operators: $sum$, $product$ +- Relations: $<$, $>$, $!=$, $approx$ +- Functions: $sin$, $cos$, $tan$, $log$, $exp$ + +== Abbreviations +Typst supports abbreviations like this: #abbr.pla[PDE] are important in mathematics. To use the singular, use `abbr.a` (auto) and for plural `abbr.pla`.\ +Note that a list of all abbreviations shall be written in `texts/abbreviations.typ`. + +== Enumerations and bullet points +Enumerations are written like this: ++ First item + + First subitem + + Second subitem ++ Second item ++ Third item + +You can also have numbers in subitems: +#set enum(full: true) ++ First item + + First subitem + + Second subitem ++ Second item + +Bullet points are written like this: +- First item +- Second item +- Third item + +== Tables +Tables in Typst are written like this: +#figure( + table( + columns: 2, + [*Header 1*], [*Header 2*], + [Row 1, Cell 1], [Row 1, Cell 2], + [Row 2, Cell 1], [Row 2, Cell 2], + [Row 3, Cell 1], [Row 3, Cell 2], + ), + caption: "This is the table caption." +) + +You can reference @tab:example-table as usual. + +== Symbols +There is a wide catalog of symbols available in Typst. For example, #sym.arrow.r gives an arrow. +Use the smart suggestions of your editor to find more symbols like #sym.alpha. + +== Code +Source code can be typeset like this: +```python +def main(): + print("Hello Typst!") +``` +However, this is not well-suited for large pieces of code. diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/thesis.bib b/packages/preview/minimal-thesis-luebeck/0.8.0/template/thesis.bib new file mode 100644 index 0000000000..6046bed6d3 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/thesis.bib @@ -0,0 +1,6 @@ +@book{alley1996craft, + title={The Craft of Scientific Writing}, + author={Alley, Michael}, + year={1996}, + publisher={Springer} +} \ No newline at end of file diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/template/thesis.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/thesis.typ new file mode 100644 index 0000000000..5cbb0a9ff7 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/template/thesis.typ @@ -0,0 +1,44 @@ +#import "@preview/minimal-thesis-luebeck:0.8.0": * +#import "@preview/abbr:0.2.3" + +// True for print version +#let is-print = false + +#show: thesis.with( + title-english: "Towards Smart Inventions and their Novelty", + title-german: "Über schlaue Erfindungen und deren Neuartigkeit", + language: "en", // use "de" for german documents + author: "Findus", + degree: "Master", // or "Bachelor" + submission-date: datetime.today(), // or use: datetime(day: 1, month: 1, year: 2025) + institute: "Institut für schlaue Erfindungen", + program: "Tüfteln und Basteln", + company: "Pettersson's Patentideen", + university: "Universität Småland", + supervisor: "Pettersson", + advisor: "Gustravsson", + place: "Lübeck", + top-left-img: image("images/top-left.png"), + top-right-img: image("images/top-right.png"), + slogan-img: image("images/slogan.png"), + acknowledgement-text: include "texts/acknowledgement.typ", + appendix: include "texts/appendix.typ", + abstract-en: include "texts/abstract-en.typ", + abstract-de: include "texts/abstract-de.typ", + confidentiality-notice: include "texts/confidentiality-notice.typ", + abbreviations: include "texts/abbreviations.typ", + bib-file: bibliography("thesis.bib"), + dark-color: rgb(0,39,102), + light-color: rgb(0,145,247), + is-print: is-print, + make-list-of-figures: false, + make-list-of-tables: false +) + += Fist Chapter +#TODO[ + Write your thesis here! Just start typing (and citing: @alley1996craft). +] + +// You can remove this when you are done looking at the examples. +#include "texts/tutorial.typ" diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/thesis-template.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/thesis-template.typ new file mode 100644 index 0000000000..c8af72ce19 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/thesis-template.typ @@ -0,0 +1,288 @@ +#import "@preview/abbr:0.2.3": +#import "@preview/hydra:0.6.2": hydra +#import "utils/todo.typ": TODO +#import "utils/print-page-break.typ": print-page-break +#import "styles/acknowledgement.typ": * +#import "styles/abstract.typ": * +#import "styles/toc.typ": * +#import "styles/disclaimer.typ": * +#import "styles/titlepage.typ": * + +#let thesis( + title-english: none, + title-german: none, + language: "en", + author: none, + degree: none, + submission-date: datetime.today(), + institute: none, + program: none, + company: none, + university: none, + supervisor: none, + advisor: none, + place: none, + top-left-img: none, + top-right-img: none, + slogan-img: none, + acknowledgement-text: none, + appendix: none, + abstract-en: none, + abstract-de: none, + confidentiality-notice: none, + abbreviations: none, + bib-file: none, + body-font: "Libertinus Serif", + sans-font: "Source Sans Pro", + dark-color: black, + light-color: gray, + is-print: false, + make-list-of-figures: false, + make-list-of-tables: false, + body +) = { + set document(title: title-english, author: author) + + // ############################################# + // ################# Settings ################## + // ############################################# + set page(numbering: "i") + set text( + font: body-font, + size: 11pt, + lang: language + ) + // Heading style + show heading: set block(below: 0.85em, above: 1.75em) + show heading: set text(font: sans-font, fill: dark-color) + // Counters for chapters + show heading.where(level: 1): it => { + counter(math.equation).update(0) + counter(figure.where(kind: image)).update(0) + counter(figure.where(kind: table)).update(0) + counter(figure.where(kind: raw)).update(0) + it + } + // Heading outline and numbers + show heading.where(level: 1): set text(size: 22pt) + show heading.where(level: 2): set text(size: 15pt) + show heading.where(level: 3): set text(size: 13pt) + show heading.where(level: 4): set heading(outlined: false, numbering: none) + show heading.where(level: 5): set heading(outlined: false, numbering: none) + show heading.where(level: 6): set heading(outlined: false, numbering: none) + // Reference first-level headings as "chapters" + show ref: it => { + let el = it.element + if el != none and el.func() == heading and el.level == 1 { + if language == "de" { + [Kapitel ] + } else { + [Chapter ] + } + numbering( + el.numbering, + ..counter(heading).at(el.location()) + ) + } else { + it + } + } + // Math + show math.equation: set text(weight: 400) + set math.equation(numbering: num => + numbering("(1.1)", counter(heading).get().first(), num) + ) + // Set figure numbering and caption style + let custom_numbering(.., num) = { + numbering("1.1", counter(heading).get().first(), num) + } + set figure(numbering: num => + custom_numbering(num) + ) + // This is required for subfigures using the subpar package + show figure.caption: cap => context { + let cap-number = context cap.counter.display(cap.numbering) + v(.2cm) + align(center, + box( + align(left)[ + #text(weight: "bold", cap.supplement + " " + cap-number + cap.separator)~#text(style: "italic", cap.body) + ] + ) + ) + v(.2cm) + } + // Set Table captions to the top + show figure.where( + kind: table + ): set figure.caption(position: top) + // Paragraphs + set par(leading: 1em) + // Figures + show figure: set text(size: 11pt) + // Links + show link: underline + // ############################################# + // ############## End of Settings ############## + // ############################################# + + // --- Title --- + titlepage( + top-left-img: top-left-img, + top-right-img: top-right-img, + title-english: title-english, + title-german: title-german, + degree: degree, + institute: institute, + program: program, + university: university, + company: company, + author: author, + supervisor: supervisor, + advisor: advisor, + place: place, + submission-date: submission-date, + slogan-img: slogan-img, + dark-color: dark-color, + light-color: light-color, + sans-font: sans-font + ) + // leave the backside blank and start with page iii + print-page-break(print: is-print, to: "odd") + + // --- Disclaimer --- + set page( + margin: (left: 30mm, right: 30mm, top: 40mm, bottom: 40mm), + numbering: "i", + number-align: center, + ) + disclaimer(author, [ + Eidesstattliche Erklärung + + Ich erkläre hiermit an Eides statt, dass ich diese Arbeit selbständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe. + ]) + print-page-break(print: is-print, to: "odd") + + // --- Confidentiality notice --- + if confidentiality-notice != none { + heading("Sperrvermerk", outlined: false, level: 2) + confidentiality-notice + print-page-break(print: is-print, to: "odd") + } + + // --- Acknowledgement --- + if acknowledgement-text != none { + acknowledgement(dark-color: dark-color, acknowledgement-text) + print-page-break(print: is-print, to: "odd") + } + + // --- Abstract --- + context { + let lang = text.lang + if lang == "de" { + v(0.5fr) // these insert fractions of vertical space + abstract(title: "Zusammenfassung", dark-color: dark-color, abstract-de) + v(1fr) + print-page-break(print: is-print, to: "odd") + v(0.5fr) + abstract(title: "Abstract", dark-color: dark-color, abstract-en) + v(1fr) + } else { + v(0.5fr) + abstract(title: "Abstract", dark-color: dark-color, abstract-en) + v(1fr) + print-page-break(print: is-print, to: "odd") + v(0.5fr) + abstract(title: "Zusammenfassung", dark-color: dark-color, abstract-de) + v(1fr) + } + } + print-page-break(print: is-print, to: "odd") + + // --- Table of contents --- + toc(body-font: body-font, sans-font: sans-font, dark-color: dark-color) + pagebreak() + + // Turn off heading numbers and outline for now + set heading(numbering: none, bookmarked: true, outlined: false) + // --- List of figures --- + if make-list-of-figures { + context { + let lang = text.lang + let fig-title = "" + if lang == "de" { + fig-title = "Abbildungsverzeichnis" + } else { + fig-title = "List of Figures" + } + outline( + title: text(fig-title, size: 15pt), + target: figure.where(kind: image), + ) + } + pagebreak() + } + + // --- List of tables --- + if make-list-of-tables { + context { + let lang = text.lang + let fig-title = "" + if lang == "de" { + fig-title = "Tabellenverzeichnis" + } else { + fig-title = "List of Tables" + } + outline( + title: text(fig-title, size: 15pt), + target: figure.where(kind: table), + ) + } + pagebreak() + } + + // --- List of abbreviations --- + if abbreviations != none { + abbreviations + print-page-break(print: is-print, to: "odd") + } + + // --- Main body --- + set par(justify: true, first-line-indent: 2em) + set page( + numbering: "1", + ) + // start showing chapter in header + set page(header: context { + align(center, emph(hydra(1, skip-starting: false))) + }) + // start at page 1 again + counter(page).update(1) + set heading(numbering: "1.1", bookmarked: true, outlined: true) + + body + + // --- Bibliography --- + pagebreak() + if bib-file != none { + bib-file + } + + if appendix != none { + // --- Appendix --- + pagebreak() + // Set numbering for mathematical equations + let math-numbering(.., last) = "(A." + str(last) + ")" + set math.equation(numbering: math-numbering) + // Print the title + counter(heading).update(0) + set heading(numbering: "A.1.1") + heading("Appendix") + // Update numbering for appendix headings + // Update figure numbering for appendix figures + let fig-numbering(.., last) = "A." + str(last) + set figure(numbering: fig-numbering) + + appendix + } +} diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/thumbnail.png b/packages/preview/minimal-thesis-luebeck/0.8.0/thumbnail.png new file mode 100644 index 0000000000..a1737d37a6 Binary files /dev/null and b/packages/preview/minimal-thesis-luebeck/0.8.0/thumbnail.png differ diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/typst.toml b/packages/preview/minimal-thesis-luebeck/0.8.0/typst.toml new file mode 100644 index 0000000000..5b392ad755 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/typst.toml @@ -0,0 +1,14 @@ +[package] +name = "minimal-thesis-luebeck" +version = "0.8.0" +entrypoint = "thesis-template.typ" +authors = ["Falko Schick"] +license = "MIT" +description = "A minimalistic template for writing a thesis." +categories = ["thesis"] +repository = "https://github.com/fhemstra/minimal-thesis-luebeck" + +[template] +path = "template" +entrypoint = "thesis.typ" +thumbnail = "thumbnail.png" \ No newline at end of file diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/utils/print-page-break.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/utils/print-page-break.typ new file mode 100644 index 0000000000..2ce583c267 --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/utils/print-page-break.typ @@ -0,0 +1,8 @@ +#let print-page-break(print: bool, to: "even") = { + set page(footer: none, header: none) + if print { + pagebreak(to: to) + } else { + pagebreak() + } +} \ No newline at end of file diff --git a/packages/preview/minimal-thesis-luebeck/0.8.0/utils/todo.typ b/packages/preview/minimal-thesis-luebeck/0.8.0/utils/todo.typ new file mode 100644 index 0000000000..27193cac4c --- /dev/null +++ b/packages/preview/minimal-thesis-luebeck/0.8.0/utils/todo.typ @@ -0,0 +1,12 @@ +#let TODO(body, color: yellow, width: 100%, breakable: true) = { + block( + width: width, + radius: 3pt, + stroke: 0.5pt, + fill: color, + inset: 10pt, + breakable: breakable, + )[ + #body + ] +} \ No newline at end of file