gibz-script

@preview

Template and components (tasks, hints, supplementary, code box) with DE/EN i18n and a clean flat API to be used at GIBZ for creating teaching materials.

v0.2.0
MIT-0
Template
gibz-script preview

GIBZ Template Package

A template package providing reusable components for teaching and learning material at GIBZ.
It comes with a configurable document setup (gibz-script) and a collection of styled components such as tasks, hints, supplementary material, and more.


Features

  • 📄 Configurable document layout with title page, table of contents, and headers/footers.
  • 📝 Compact sheet layout (gibz-sheet) for exercise sheets and handouts — same styling, no title page or table of contents.
  • 🎨 Consistent styling through a base_box and icon_box system.
  • ✏️ Task component with badges for time, social form, results recording, and evaluation.
  • 💡 Hint, ❓ Question, 🎬 Video, 📖 Supplementary Material boxes.
  • 🔳 Black code box for highlighting code snippets.
  • 🌍 Built-in i18n (currently German and English).
  • 🧩 Exposed via a flat prefixed API (gibz-task, gibz-hint, …) and an optional GIBZ namespace.

Quick Start

Create a new project from this template in the Typst CLI:

typst init @preview/gibz-script:0.2.0

Or in the Typst web app:
New → From Template → GIBZ.


Usage

#import "@preview/gibz-script:0.2.0": *

#show: gibz-script.with(
  moduleNumber: 114,
  moduleTitle: "Codierungs-, Kompressions- und Verschlüsselungsverfahren einsetzen",
  documentTitle: "Skript",
  language: "de",
)

#gibz-hint("Dieses Skript wurde mit Typst geschrieben :-)")
#gibz-supplementary([Cheat Sheet])

Or use the namespaced API

#import "@preview/gibz-script:0.2.0": GIBZ

#show: GIBZ.script.with(
  moduleNumber: 114,
  moduleTitle: "Codierungs-, Kompressions- und Verschlüsselungsverfahren einsetzen",
  documentTitle: "Skript",
  language: "de",
)

#GIBZ.hint("Dieses Skript wurde mit Typst geschrieben :-)")
#GIBZ.supplementary([Cheat Sheet])

Short documents (gibz-sheet)

For exercise sheets, handouts, or anything too short to need a title page and table of contents, use gibz-sheet instead of gibz-script. It shares the exact same typography, page header/footer, and components — it just starts directly with the content on page 1 with a compact inline title, and section headings no longer force a page break between them.

#import "@preview/gibz-script:0.2.0": *

#show: gibz-sheet.with(
  moduleNumber: 114,
  moduleTitle: "Codierungs-, Kompressions- und Verschlüsselungsverfahren einsetzen",
  documentTitle: "Übungsblatt 3",
  language: "de",
)

= Aufgabe 1

#gibz-task("Kleine Aufgabe", minutes: 10, social: 1)[
  Schreibe eine Funktion, die zwei Zahlen addiert.
]

Or via the namespaced API: #show: GIBZ.sheet.with(...).


API Reference

Configuration

  • gibz-script(moduleNumber, moduleTitle, documentTitle, language, doc)
    Wraps your document with title page, table of contents, headers/footers, and base styles.
  • gibz-sheet(moduleNumber, moduleTitle, documentTitle, language, doc)
    Same styling as gibz-script, but without the title page or table of contents — content starts immediately on page 1. Intended for short documents like exercise sheets.

Components

  • gibz-task(...) – exercise/task box with time, social form, recording, evaluation.
  • gibz-hint(content) – hint box with 💡 icon.
  • gibz-question(question, task: none) – question box with ❓ icon, optional task description.
  • gibz-video(url, title, description: none) – video reference with 🎬 icon.
  • gibz-supplementary(body, title: none) – supplementary material box with 📖 icon.
  • gibz-warning(content) – warning box.
  • gibz-black-code-box(body, codly-opts: (:), box-opts: (:)) – code box with dark background.
  • gibz-ipa-criterion(...) – IPA grading criterion box.

Utilities

  • gibz-base-box(body, style: (:)) – low-level styled container.
  • gibz-icon-box(icon, content, style: (:)) – container with icon + content layout.
  • gibz-icon-moodle, gibz-icon-script, gibz-icon-exercise – bundled icons.
  • gibz-colors.blue – standard accent color.
  • gibz-t(key, lang: none) – translation lookup (DE/EN).

Fonts

Body text uses Libertinus Serif, which ships with the Typst compiler itself and needs no setup.

Headings, table headers, and page furniture use a sans-serif with an automatic fallback chain, in order: Inter → Helvetica Neue → Helvetica → Arial → Liberation Sans → DejaVu Sans → Noto Sans. Whichever of these is installed first wins — nothing needs to be configured.

Recommended: install Inter system-wide for the best result — packages can't bundle font files, so grab it yourself and point your tool at it (e.g. --font-path <path-to-inter> on the CLI, or the tinymist.fontPaths setting in VS Code). Without Inter installed or configured, headings automatically fall back to the next available sans-serif on your system — still a clean sans/serif contrast with the body text, just a different typeface.


Localization

The package supports German (de) and English (en) for static labels (e.g., Exercise, Supplementary Material, Table of Contents).
The language is set via gibz-script(language: "de" | "en").


License

This package is licensed under the MIT-0 License, allowing reuse with minimal restrictions.


Contributing

Issues and pull requests are welcome!
The source is maintained on GitLab, with mirrored contributions published to Typst Universe.

Version History

0.2.0
f1d726fdc226...
0.1.0
263500e15607...