A lightweight template for theses at DHBW Ravensburg. Although, it can be customized to allow for use at other universities. There are two thoughts behind the template:
- Providing everything you need for simple papers that do not require specific styling setups
- Being lightweight and easy to extend for papers that require more complex setups (for people who like extending their templates themselves)
Importing and using the template is pretty straight-forward, especially with previous Typst experience.
Note: The template doesn’t support multiple authors. If I find the time in the future (and someone requests it), I’ll add support for multiple authors.
Contents
Getting Started
The fastest way of just using the template is by initializing a new project with the default template configuration. You can do so by typing the following command in a terminal (don’t forget to navigate to the folder you want to be in first):
typst init "@preview/aero-dhbw:0.1.0" PROJECT-NAME
Replace PROJECT-NAME with the actual project name or something else if you structure your folders differently.
This default setup comes with an already setup acronym list, where you just have to put in your values and don’t have to worry about syntax. The most important arguments are already “written out” so-to-say, as well. The intended directory structure is also already present and some usage hints for some lesser components are also included.
Minimal Configuration
In case you want to do the template setup yourself, here is the minimal configuration needed for the template:
#import "@preview/aero-dhbw:0.1.0": aero-dhbw
#show: aero-dhbw.with(
author: "",
start-date: datetime(year: 2026, month: 1, day: 1),
end-date: datetime(year: 2026, month: 12, day: 31),
)
I would recommend filling in more options, otherwise your cover page won’t look very nice.
Configuration Options
| Name | Required | Default | Description |
|---|---|---|---|
| Project Metadata | |||
| title | ✗* | — | Specifies the title of the project. |
| project | ✗* | — | Specifies the official DHBW project identifier (e.g. T1000). |
| project-type | ✗* | — | Defines the type of project (e.g. seminar thesis or bachelor thesis). |
| author | ✓ | — | Specifies the full name of the author. |
| course | ✗* | — | Defines the name of the study course. |
| mat-number | ✗* | — | Specifies the DHBW matriculation number (6-digit student ID). |
| course-acronym | ✗* | — | Defines the abbreviated course name (3–4 letters followed by 2 numbers). |
| start-date | ✓ | — | Specifies the official start date of the project. |
| end-date | ✓ | — | Specifies the official end date of the project. |
| supervisor | ✗ | — | Specifies the company supervisor for the project. |
| university-supervisor | ✗ | — | Specifies the university professor supervising the project (mainly relevant for bachelor theses). |
| company | ✗* | — | Defines the name of the employer or partner company. |
| company-location | ✗* | — | Specifies the city where the company is located. |
| university | ✗* | — | Defines the name of the university. |
| Logos & Other Documents | |||
| university-logo | ✗ | — | Path to the image file of the university logo. |
| company-logo | ✗ | — | Path to the image file of the company logo. |
| confidentiality-notice | ✗ | — | Path to an image or PDF containing the confidentiality notice (mainly for company theses). |
| place-of-authorship | ✗* | — | Specifies the city where the project was completed (used in the declaration of authorship). |
| Content Files | |||
| path-to-abstract | ✗ | — | Path to the Typst file containing the abstract. |
| path-to-annex | ✗ | — | Path to the Typst file containing the annex. |
| Acronyms & AI Usage | |||
| acronym-list | ✗ | — | Dictionary defining acronyms used in the document. See example |
| used-ai | ✗ | — | Dictionary mapping AI model names to descriptions of their usage (required by DHBW guidelines). See example |
| Bibliography & Citations | |||
| bib | ✗ | — | Path to the bibliography file. |
| bib-style | ✗ | IEEE | Defines the bibliography style. |
| citation-style | ✗ | IEEE | Defines the citation style. |
| Language & Typography | |||
| font | ✗ | Libertinus Serif | Specifies the font used for the document. |
| text-lang | ✗ | — | Sets the document language (en or de). |
| Layout & Formatting | |||
| outline-style | ✗ | default | Defines the style used for generated outlines. |
| margins | ✗ | 2.5 cm | Sets the document margins (DHBW Ravensburg guideline). |
| leading-spaces | ✗ | 1.5 em | Defines line spacing (DHBW Ravensburg guideline). |
| text-size | ✗ | 12 pt | Sets the base text size (DHBW Ravensburg guideline). |
| par-spacing | ✗ | 2 em | Defines spacing between paragraphs. |
| figure-gap-above | ✗ | 1 em | Sets spacing between a figure and the preceding paragraph. |
| figure-gap-under | ✗ | 1 em | Sets spacing between a figure and the following paragraph. |
| table-caption-position | ✗ | bottom | Defines whether table captions appear above or below tables. |
| Referencing Behavior | |||
| heading-name-as-supplement | ✗ | false | If enabled, references chapters by their heading name instead of section number. See example |
Legend: ✓ required · ✗ optional · ✗* technically optional but strongly recommended
Examples
Below are some examples for configuration options that require some additional information.
heading-name-as-supplement
Controls how section references are rendered in the text.
When enabled, references use the heading name instead of the section number.
Example
= Overview of Cloud Architecture <intro>
As you can see in @intro
// If heading-name-as-supplement is set to false:
As you can see in Section 2.
// If heading-name-as-supplement is set to true:
As you can see in Overview of Cloud Architecture.
used-ai
Defines how artificial intelligence tools were used during the project.
This information is rendered as a table in the annex and is required by DHBW guidelines.
Example
#import "@preview/aero-dhbw:0.1.0": aero-dhbw
#let ai-dict = (
"NAME-OF-MODEL": [DESCRIPTION OF USE]
)
#show: aero-dhbw.with(
// other arguments...
used-ai: ai-dict
)
acronym-list
Defines acronyms used throughout the document.
It is recommended to use the shared glossary-list provided in acronyms.typ instead of defining a custom list.
(No code example required when using the shared glossary.)
Tips
Some tips on how to use this template optimally.
Use acronyms in your paper
- Define some acronyms in
acronyms.typto use them for your paper - Import glossy in your chapter files to make use of the defined acronyms with the following:
#import "@preview/glossy:0.9.0": *
- Now, you can use your acronyms by treating them like labels. Use
@to reference them in your text.
NOTE:
Be careful when using acronyms in titles.
Glossy will always display the first occurrence of an acronym in its long form + short form, e.g. “USA” will be displayed as United States of America (USA).
Subsequent usage will use the abbreviation.
Since titles are displayed in the outline for the first time, the outline will be the first occurrence of the abbreviation. This means, the long form of your acronym will only be displayed in the outline and never in your text. This is not desired for scientific papers because you want your first in-text occurrence, not the first occurrence altogether, to display the long form.
You can circumvent this behavior by using glossy’s builtin features.
When referencing an acronym in a title, e.g. “usa”, do the following: @usa:both.
By adding :both, it will display the long form + short form, but will not count it towards in-text occurrences.
Check out glossy for more infos on how to use it.
Define custom captions for outlines of figures/tables
- Decide what comes into the outlines for your figures by using the
pa-figurecommand. But first, you need to import it into your chapters:
#import "@preview/aero-dhbw:0.1.0": pa-figure
- Afterwards, use
pa-figureto differentiate between a long and a short caption:- long: This text will be displayed at the location of the figure
- short: This text will be displayed in the outline of the figure
#pa-figure(
image("some/image.png"),
caption: (
long: [This is a long caption that will show in the chapter],
short: [This is a short caption that will show in the outline]
),
supplement: [I can even put in different arguments for figure that will get parsed automatically!]
)
- Or, alternatively, just define one caption like you would usually and it will be used in both places
#pa-figure(
image("some/image.png"),
caption: [This caption will show up both in-text and in the outline.]
)