|
| 1 | +# Grand Hagenberg Thesis Template |
| 2 | + |
| 3 | +Opinionated Typst template for bachelor and master theses (and related protocols) at FH Upper Austria, with a focus on Campus Hagenberg. |
| 4 | + |
| 5 | +The template is designed to work in two modes: |
| 6 | + |
| 7 | +- **Fast start via Typst package** for normal usage |
| 8 | +- **Full source customization** when you want to adapt sections/styles deeply |
| 9 | + |
| 10 | +## Intent |
| 11 | + |
| 12 | +Typst makes professional-quality publishing simple and accessible for everyone. I believe more people should benefit from its power and ease of use. |
| 13 | + |
| 14 | +I made this template because I couldn’t find a high-quality, flexible FH thesis template. My goal is to help anyone start their thesis with Typst quickly and easily, while also giving advanced users the freedom to customize the template however they need without unnecessary limitations. |
| 15 | + |
| 16 | +Concretely, this template provides a practical, production-ready thesis layout with: |
| 17 | + |
| 18 | +- pre-structured front matter and content flow |
| 19 | +- sensible defaults for typography and page layout |
| 20 | +- bilingual labels and declarations |
| 21 | +- an extensible API for section-level and document-level styling |
| 22 | + |
| 23 | +The package name is `@preview/grand-hagenberg-thesis`. |
| 24 | + |
| 25 | +## Quick Start |
| 26 | + |
| 27 | +### Option A: Use as a Typst package (recommended) |
| 28 | + |
| 29 | +In your Typst document: |
| 30 | + |
| 31 | +```typ |
| 32 | +#import "@preview/grand-hagenberg-thesis:0.1.0": full-thesis |
| 33 | +``` |
| 34 | + |
| 35 | +Then configure metadata and wrap your content with `#show: full-thesis.with(...)` (see `template/main.typ` for a complete example). |
| 36 | + |
| 37 | +You can get started even quicker by using the predefined template: |
| 38 | + |
| 39 | +```bash |
| 40 | +typst init @preview/grand-hagenberg-thesis |
| 41 | +``` |
| 42 | + |
| 43 | +### Option B: Clone and customize this repository |
| 44 | + |
| 45 | +```bash |
| 46 | +git clone https://github.com/timerertim/hagenberg-thesis-template.git |
| 47 | +cd hagenberg-thesis-template |
| 48 | +mise install |
| 49 | +``` |
| 50 | + |
| 51 | +Build the example template document: |
| 52 | + |
| 53 | +```bash |
| 54 | +cd template |
| 55 | +mise run export |
| 56 | +``` |
| 57 | + |
| 58 | +## Styling and Customization |
| 59 | + |
| 60 | +The core template entry point is `full-thesis` in `lib.typ` / `components/template.typ`. |
| 61 | + |
| 62 | +You can customize styling at multiple levels through function hooks, including: |
| 63 | + |
| 64 | +- `global-style` (fonts, page geometry, global defaults) |
| 65 | +- `document-style` (document-wide behavior outside title page) |
| 66 | +- `content-style` (main chapter content) |
| 67 | +- section-specific hooks like `abstract-style`, `outline-style`, `bibliography-style`, etc. |
| 68 | + |
| 69 | +Default style behavior lives in `components/styles.typ` (A4, Arial 11pt, page numbering and heading conventions, bibliography defaults, etc.). |
| 70 | + |
| 71 | +## Language Support |
| 72 | + |
| 73 | +The template currently supports **English (`en`)** and **German (`de`)** through `components/i8n.typ`. |
| 74 | + |
| 75 | +- Set document language with Typst text language, e.g.: |
| 76 | + - `#set text(lang: "en")` |
| 77 | + - `#set text(lang: "de")` |
| 78 | +- Localized section names and declaration page selection are handled automatically. |
| 79 | +- If a key is missing, localization falls back to English. |
| 80 | + |
| 81 | + |
| 82 | +## Setup with `mise.toml` |
| 83 | + |
| 84 | +The repository includes a template project `template/` with its own `mise.toml` that configures: |
| 85 | + |
| 86 | +- tool versions (`typst`, `typstyle`) |
| 87 | +- Typst environment paths (`TYPST_ROOT`, font path) |
| 88 | +- reusable tasks for formatting and exporting the document |
| 89 | + |
| 90 | +Useful tasks: |
| 91 | + |
| 92 | +- `mise run export` - export the main document to PDF |
| 93 | + |
| 94 | +## Repository Structure |
| 95 | + |
| 96 | +- `lib.typ` - public package entrypoint |
| 97 | +- `components/` - template API, sections, i18n, and style defaults |
| 98 | +- `template/` - runnable example thesis project |
| 99 | + |
| 100 | +## License |
| 101 | + |
| 102 | +This repository is released under **CC0-1.0** (public domain dedication). |
| 103 | +See `LICENSE` for the full legal text. |
| 104 | + |
| 105 | +## Contributing |
| 106 | + |
| 107 | +Issues and pull requests are very welcome. |
| 108 | + |
| 109 | +- Open an issue for bugs, feature requests, or campus-specific adjustments. |
| 110 | +- Open a PR for fixes, style improvements, localization updates, and docs improvements. |
| 111 | + |
| 112 | +Feedback from real thesis usage is especially valuable to keep the template robust and practical. |
0 commit comments