{"id":48582228,"url":"https://github.com/ll-nick/kinetic-kit","last_synced_at":"2026-04-08T17:30:42.421Z","repository":{"id":344909818,"uuid":"1179743128","full_name":"ll-nick/kinetic-kit","owner":"ll-nick","description":"Unofficial Typst template for KIT dissertations and theses ","archived":false,"fork":false,"pushed_at":"2026-03-26T15:53:28.000Z","size":3169,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T06:23:15.827Z","etag":null,"topics":["dissertation","thesis","typst","typst-template"],"latest_commit_sha":null,"homepage":"","language":"Typst","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ll-nick.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-12T10:35:51.000Z","updated_at":"2026-03-26T15:53:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ll-nick/kinetic-kit","commit_stats":null,"previous_names":["ll-nick/kit-thesis","ll-nick/kinetic-kit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ll-nick/kinetic-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ll-nick%2Fkinetic-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ll-nick%2Fkinetic-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ll-nick%2Fkinetic-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ll-nick%2Fkinetic-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ll-nick","download_url":"https://codeload.github.com/ll-nick/kinetic-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ll-nick%2Fkinetic-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31566640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dissertation","thesis","typst","typst-template"],"created_at":"2026-04-08T17:30:40.433Z","updated_at":"2026-04-08T17:30:42.409Z","avatar_url":"https://github.com/ll-nick.png","language":"Typst","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kinetic-kit\n\n[![CI](https://github.com/ll-nick/kinetic-kit/actions/workflows/ci.yml/badge.svg)](https://github.com/ll-nick/kinetic-kit/actions/workflows/ci.yml)\n[![License: MIT-0](https://img.shields.io/badge/license-MIT--0-blue.svg)](LICENSE)\n\nAn unofficial[^1] KIT dissertation and thesis[^2] template for [Typst](https://typst.app), designed to comply with the formatting requirements of [KIT Scientific Publishing (KSP)](https://www.bibliothek.kit.edu/ksp-toolbox.php).\n\n\u003e [!NOTE]\n\u003e This template is in early development and may contain incomplete features, bugs, or formatting issues.\n\u003e It doesn't have a stable API either.\n\u003e You should probably not use it until it has reached a more mature state.\n\nSee the build artifacts of the [latest CI run](https://github.com/ll-nick/kinetic-kit/actions/workflows/ci.yml) for example PDFs.\n\n\n## Getting Started\n\n### Prerequisites\n\n[mise](https://mise.jdx.dev) is recommended for managing tasks and tooling (including Typst itself).\n\nHowever, all tasks are plain shell scripts in `mise/tasks/` and can be run directly assuming Typst is installed and available in your `PATH`.\nThe template is developed with Typst `0.14.2`, but it may work with other versions as well.\n\n### Installation\n\nThe template is not currently published on the Typst Universe registry, so you need to install it as a local package to use it in your documents.\nIn the root of the repository, run either of the following:\n\n```bash\n# copy — changes require re-installation (recommended for stability)\nmise run install # or bash mise/tasks/install/_default\n\n# symlink — changes apply immediately (recommended during development)\nmise run install:editable # or bash mise/tasks/install/editable\n```\n\n#### Fonts\n\nThis template expects the [Libertinus font family](https://github.com/alerque/libertinus) to be installed on the system.\nFor convenience, this repository includes these fonts.\nInstall them using `mise run install:fonts` (or `bash mise/tasks/install/fonts`) if you don't have them yet.\n\n### Usage\n\nImport the `dissertation` or `thesis` component from the package in your Typst document and call `with(...)` to set parameters and content:\n\n```typst\n#import \"@local/kinetic-kit:0.1.0\": dissertation\n\n#show: dissertation.with(\n  author-firstname: \"Max\",\n  author-surname:   \"Mustermann\",\n  title:            [Title of the Dissertation],\n  lang:             \"de\",\n  abstract-de:      include \"content/abstract-de.typ\",\n  abstract-en:      include \"content/abstract-en.typ\",\n  bibliography:     bibliography(\"bib/references.bib\", title: none, style: \"ieee\"),\n)\n\n#include \"content/01-introduction.typ\"\n```\n\nSee the [`examples/`](examples/) directory for more complete examples.\n\n## API Reference\n\nFor complete and up-to-date documentation, refer to [`docs/api-reference.pdf`](docs/api-reference.pdf),\nwhich is auto-generated from the source code.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eParameters — \u003ccode\u003edissertation(...)\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `author-title` | `str \\| none` | `\"M.Sc.\"` | Academic title preceding the name; `none` to omit |\n| `author-firstname` | `str` | `\"Max\"` | |\n| `author-surname` | `str` | `\"Mustermann\"` | |\n| `author-male` | `bool` | `true` | Controls gendered German text on the title page |\n| `place-of-birth` | `str \\| none` | `none` | Place of birth (\"aus …\"); `none` = omit |\n| `title` | `content` | | Dissertation title |\n| `doc-degree` | `str` | `\"Doktors der Ingenieurwissenschaften (Dr.-Ing.)\"` | Degree in masculine form |\n| `doc-degree-f` | `str` | `\"Doktorin der Ingenieurwissenschaften (Dr.-Ing.)\"` | Degree in feminine form |\n| `department` | `str` | `\"KIT-Fakultät für Maschinenbau\"` | |\n| `university-genitive` | `str` | `\"des Karlsruher Instituts für Technologie (KIT)\"` | University name in genitive case |\n| `lang` | `\"de\" \\| \"en\"` | `\"de\"` | Document language |\n| `margin-preset` | `\"short\" \\| \"medium\" \\| \"long\"` | `\"short\"` | KSP margin profile (see [Margin Presets](#margin-presets)) |\n| `status-approved` | `bool` | `false` | `false` = eingereicht, `true` = angenommen |\n| `exam-date` | `str \\| none` | `none` | Date of oral examination; required when `status-approved: true` |\n| `main-advisor` | `str \\| none` | `none` | Hauptreferent |\n| `main-advisor-male` | `bool` | `true` | |\n| `co-advisor` | `str \\| none` | `none` | Korreferent |\n| `co-advisor-male` | `bool` | `true` | |\n| `abstract-en` | `content \\| none` | `none` | |\n| `abstract-de` | `content \\| none` | `none` | |\n| `acknowledgements` | `content \\| none` | `none` | |\n| `cv-name` | `str \\| none` | `none` | Show CV page with this name as heading; `none` = omit |\n| `cv-entries` | `array` | `()` | `(year, description)` tuples |\n| `notation` | `content \\| none` | `none` | Symbol/notation list |\n| `abbreviations` | `content \\| none` | `none` | Abbreviations / acronym list |\n| `binding-correction` | `length` | `0mm` | BCOR added to inside margin (8–10 mm for physically bound copies) |\n| `colored-links` | `bool` | `true` | KIT Blue hyperlinks (screen); `false` = black (print) |\n| `draft` | `bool` | `false` | Show \"ENTWURF\"/\"DRAFT\" watermark |\n| `draft-info` | `str \\| none` | `none` | Optional version string next to watermark (e.g. git SHA) |\n| `own-publications` | `content \\| none` | `none` | Back-matter publications list |\n| `own-patents` | `content \\| none` | `none` | Back-matter patents list |\n| `supervised-theses` | `content \\| none` | `none` | Back-matter supervised theses list |\n| `show-lof` | `bool` | `true` | List of figures |\n| `show-lot` | `bool` | `true` | List of tables |\n| `show-lol` | `bool` | `false` | List of listings |\n| `bibliography` | `content \\| none` | `none` | Pass `bibliography(\"refs.bib\", title: none, style: \"ieee\")`; template adds a translated heading |\n| `appendix` | `content \\| none` | `none` | Appendix chapters; template applies A, A.1, … numbering, placed after back-matter lists |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eParameters — \u003ccode\u003ethesis(...)\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `author-firstname` | `str` | `\"Max\"` | |\n| `author-surname` | `str` | `\"Mustermann\"` | |\n| `title` | `content` | | Thesis title |\n| `thesis-type` | `str` | `\"Masterarbeit\"` | e.g. `\"Bachelorarbeit\"`, `\"Diplomarbeit\"` |\n| `department` | `str` | `\"KIT-Fakultät für Maschinenbau\"` | |\n| `university-genitive` | `str` | `\"des Karlsruher Instituts für Technologie (KIT)\"` | University name in genitive case |\n| `examiner` | `str \\| none` | `none` | Erstprüfer |\n| `supervisor` | `str \\| none` | `none` | Betreuer |\n| `date-submitted` | `str \\| none` | `none` | |\n| `lang` | `\"de\" \\| \"en\"` | `\"de\"` | Document language |\n| `margin-preset` | `\"short\" \\| \"medium\" \\| \"long\"` | `\"short\"` | KSP margin profile (see [Margin Presets](#margin-presets)) |\n| `binding-correction` | `length` | `0mm` | BCOR added to inside margin (8–10 mm for physically bound copies) |\n| `colored-links` | `bool` | `true` | KIT Blue links (screen); `false` = black (print) |\n| `draft` | `bool` | `false` | Show \"ENTWURF\"/\"DRAFT\" watermark |\n| `draft-info` | `str \\| none` | `none` | Optional version string next to watermark |\n| `abstract-en` | `content \\| none` | `none` | |\n| `abstract-de` | `content \\| none` | `none` | |\n| `acknowledgements` | `content \\| none` | `none` | |\n| `abbreviations` | `content \\| none` | `none` | Abbreviations / acronym list |\n| `show-lof` | `bool` | `true` | List of figures |\n| `show-lot` | `bool` | `true` | List of tables |\n| `show-lol` | `bool` | `false` | List of listings |\n| `bibliography` | `content \\| none` | `none` | Pass `bibliography(\"refs.bib\", title: none, style: \"ieee\")`; template adds a translated heading |\n| `appendix` | `content \\| none` | `none` | Appendix chapters; template applies A, A.1, … numbering, placed after back-matter lists |\n\n\u003c/details\u003e\n\n## Margin Presets\n\nChoose based on the total page count of the finished document (KSP requirement):\n\n| Preset | Page count | Inner | Outer |\n|--------|-----------|-------|-------|\n| `\"short\"` | \u003c 200 | 20 mm | 15 mm |\n| `\"medium\"` | 200–399 | 23 mm | 15 mm |\n| `\"long\"` | ≥ 400 | 25 mm | 15 mm |\n\n## Cookbook\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCustom document composition\u003c/strong\u003e\u003c/summary\u003e\n\nIndividual building blocks are exported directly from the package, so you can compose a custom document without using the full `dissertation()` or `thesis()` orchestrator. Import only what you need. You are responsible for applying the setup wrappers in the correct order.\n\n```typst\n#import \"@local/kinetic-kit:0.1.0\": (\n  setup-page, setup-front-matter, setup-content,\n  print-dissertation-title, print-toc,\n)\n\n// 1. Apply base KIT formatting (page geometry, fonts, heading styles, …)\n#show: setup-page.with(\n  margin-preset: \"short\",\n  lang: \"de\",\n  colored-links: true,\n)\n\n// 2. Front matter — Roman numerals, no heading numbers\n#show: setup-front-matter\n\n#print-dissertation-title(\n  [Titel der Dissertation],\n  \"M.Sc.\", \"Vorname\", \"Nachname\", true,\n  \"Musterstadt\",\n  \"Doktor-Ingenieur\", \"Doktor-Ingenieurin\",\n  \"KIT-Fakultät für Maschinenbau\",\n  \"des Karlsruher Instituts für Technologie (KIT)\",\n  false, none, none, true, none, true,\n)\n\n= Abstract\nYour abstract here.\n\n#print-toc(lang: \"de\")\n\n// 3. Main content — Arabic numerals, numbered headings\n#show: setup-content\n\n= Introduction\nYour content here.\n\n= References\n#bibliography(\"refs.bib\", title: none, style: \"ieee\")\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDraft mode with git SHA watermark\u003c/strong\u003e\u003c/summary\u003e\n\nSet `draft: true` to show an \"ENTWURF\" (German) or \"DRAFT\" (English) watermark on every page. Pass `draft-info` for an additional version string:\n\n```typst\n#show: dissertation.with(\n  ...\n  draft:      true,\n  draft-info: sys.inputs.at(\"git-sha\", default: none),\n)\n```\n\nCompile with the SHA injected:\n\n```bash\ntypst compile --input git-sha=$(git rev-parse --short HEAD) main.typ\n```\n\nSet `draft: false` before submission.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eAutomatic abbreviation expansion (Glossarium)\u003c/strong\u003e\u003c/summary\u003e\n\nUse the [glossarium](https://typst.app/universe/package/glossarium) package for automatic first-use expansion.\n\n**Important:** `#show: make-glossary` must appear *before* `#show: dissertation.with(...)`. Forgetting this causes silent failure — abbreviations will not expand.\n\n```typst\n#import \"@local/kinetic-kit:0.1.0\": dissertation\n#import \"@preview/glossarium:0.5.10\": make-glossary, register-glossary, print-glossary, gls, glspl\n\n#let abbrevs = (\n  (key: \"ml\",  short: \"ML\",  long: \"Machine Learning\"),\n  (key: \"cnn\", short: \"CNN\", long: \"Convolutional Neural Network\"),\n)\n\n// Must come before #show: dissertation.with(...)\n#show: make-glossary\n#register-glossary(abbrevs)\n\n#show: dissertation.with(\n  ...\n  // The template adds the translated section heading automatically.\n  abbreviations: print-glossary(abbrevs),\n)\n\n// #gls(\"ml\") expands to \"Machine Learning (ML)\" on first use, \"ML\" thereafter.\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eSeparate bibliography sections (Alexandria)\u003c/strong\u003e\u003c/summary\u003e\n\nUse the [alexandria](https://typst.app/universe/package/alexandria) package for separate bibliography sections for own publications, patents, and supervised theses alongside the main bibliography.\n\n```typst\n#import \"@local/kinetic-kit:0.1.0\": dissertation\n#import \"@preview/alexandria:0.2.2\": alexandria, bibliographyx\n\n// Must come before #show: dissertation.with(...)\n#show: alexandria(prefix: \"p:\", read: path =\u003e read(path))\n\n#show: dissertation.with(\n  ...\n  own-publications: bibliographyx(\n    \"bib/own-publications.bib\",\n    title: none, style: \"ieee\", full: true,\n  ),\n  bibliography: bibliography(\"bib/references.bib\", title: none, style: \"ieee\"),\n)\n```\n\nIn-text citations to own publications use `@p:key` syntax.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMargin notes for drafts (Drafting)\u003c/strong\u003e\u003c/summary\u003e\n\nUse the [drafting](https://typst.app/universe/package/drafting) package to add margin notes during writing. Tie `is-draft` to both the watermark and note visibility so they are toggled in one place:\n\n```typst\n#import \"@local/kinetic-kit:0.1.0\": dissertation\n#import \"@preview/drafting:0.2.2\": set-margin-note-defaults, margin-note\n\n#let is-draft = true\n#set-margin-note-defaults(hidden: not is-draft)\n\n#show: dissertation.with(\n  ...\n  draft: is-draft,\n)\n\n// In your text:\n#margin-note[Revisit this paragraph.]\n```\n\nSet `is-draft = false` before final compilation to hide all margin notes and remove the watermark.\n\n\u003c/details\u003e\n\n## Contributing\n\n### Prerequisites\n\nThis project uses [mise](https://mise.jdx.dev) to manage both development tasks and tooling.\nWith it installed, you can run all tasks with `mise run \u003ctask\u003e` (e.g. `mise run build`).\n\n### Tasks\n\n| Task | Description |\n|------|-------------|\n| `mise run build` | Compile examples, API docs, template, and thumbnail |\n| `mise run build:examples` | Compile example documents only |\n| `mise run build:docs` | Compile API reference (`docs/api-reference.pdf`) |\n| `mise run build:template` | Compile the Typst Universe template (`template/`) |\n| `mise run build:thumbnail` | Compile the template thumbnail |\n| `mise run format` | Format all Typst files in-place |\n| `mise run format:check` | Check formatting without modifying files (used in CI) |\n| `mise run format:diff` | Show formatting diff for all Typst files |\n| `mise run install` | Install as local Typst package (copy) |\n| `mise run install:editable` | Install as local Typst package (symlink) |\n| `mise run install:fonts` | Install bundled Libertinus fonts to user font directory |\n| `mise run test` | Run tytanic test suite |\n\n### Tests\n\nTests live in `tests/` and are organized by template type and scenario (e.g. `tests/dissertation/approved/`, `tests/thesis/minimal/`). Each test compiles a `.typ` file targeting a specific layout scenario.\nAs of right now, these tests are pure compilation tests.\n\n```bash\nmise run test # run all tests\ntt run --font-path fonts tests/dissertation/appendix  # run a single test\n```\n\n## License\n\nTemplate code: MIT-0 (no attribution required). Bundled fonts (`fonts/`): SIL OFL 1.1.\n\n## Acknowledgements\n\nThis template has been implemented with AI assistance (Claude Code by Anthropic).\nThe basis for the template are the [KSP guidelines](https://www.bibliothek.kit.edu/downloads/KSP/KSP-Basic-Layout-Guidelines.pdf),\nthe [official KSP LaTeX template](https://gitlab.kit.edu/kit/ksp/ksp-vorlage-a5-de-diss),\nas well as [this great LaTeX template](https://gitlab.cc-asp.fraunhofer.de/kit-ksp/dissertation-template).\nSome inpiration was also drawn from the [TUM-tastic thesis template](https://github.com/santiagonar1/tum-tastic-thesis).\n\n\n[^1]: This is an unofficial community template, not affiliated with, endorsed by,\nor approved by KIT (Karlsruhe Institute of Technology) or KSP (KIT Scientific Publishing).\nThe template attempts to follow the [KSP Basic Layout Guidelines](https://www.bibliothek.kit.edu/downloads/KSP/KSP-Basic-Layout-Guidelines.pdf) but compliance is not guaranteed.\nAlways verify your final manuscript with KSP before submission.\n\n[^2]: This template was implemented to ~~procrastinate writing~~ write a dissertation. The thesis template is more of a byproduct and probably less polished.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fll-nick%2Fkinetic-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fll-nick%2Fkinetic-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fll-nick%2Fkinetic-kit/lists"}