No description
  • Typst 92.1%
  • Shell 4.2%
  • Just 3.2%
  • TeX 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Loïc Guibert 54bf2ffcf2 Merge branch 'develop' into 'main'
Adapted Github CI for Gitlab

See merge request loic.guibert/typst-presentation-template!5
2026-09-06 18:40:40 +00:00
.claude Added default value for logo-dark variant 2026-09-04 16:14:45 +02:00
gallery A few adaptation for changing the theme name 2026-09-06 19:29:17 +02:00
scripts fixing the font issue in CIs 2026-09-06 20:25:29 +02:00
src Improved the sourced image 2026-09-06 16:37:16 +02:00
template Fixing gitlab CIs 2026-09-06 20:10:51 +02:00
tests Changed from github to gitlab CIs 2026-09-06 19:53:50 +02:00
.gitignore docs: dedicated speaker-notes gallery deck with pdfpc artifacts 2026-06-22 03:40:34 +02:00
.gitlab-ci.yml fixing the font issue in CIs 2026-09-06 20:25:29 +02:00
CHANGELOG.md A few adaptation for changing the theme name 2026-09-06 19:29:17 +02:00
hes-bypst.typ A few adaptation for changing the theme name 2026-09-06 19:29:17 +02:00
justfile fixing the font issue in CIs 2026-09-06 20:25:29 +02:00
LICENSE Try using tyler 2026-04-07 16:26:52 +02:00
logo-dark.png Added dark theme 2026-09-04 16:09:00 +02:00
logo.png Made a few changes 2026-09-03 12:29:35 +02:00
README.md A few adaptation for changing the theme name 2026-09-06 19:29:17 +02:00
thumbnail.png A few adaptation for changing the theme name 2026-09-06 19:29:17 +02:00
typst.toml Changed from github to gitlab CIs 2026-09-06 19:53:50 +02:00

bypst: HES-BIPS Presentation Template

A 16:9 presentation template originally made for BIPS using Typst and Touying, adpated for use in the HES context. Based on the institutional style from bips-beamer.

Quick Start

#import "/hes-bypst:0.5.0": *
#show: bips-theme

#title-slide(
  title: "Your Presentation Title",
  author: "Your Name",
  institute: hes-en, // or bips-de
  date: datetime.today().display(),
  // logo: image("path/to/logo.png")
)

#bips-slide(title: "Introduction")[
  - Bullet points
  - *Bold* and _italic_ in BIPS blue
  - Math: $s^2 = 1/(n-1) sum_(i=1)^n (x_i - overline(x))^2$

  #pause

  - Revealed on click
]

#thanks-slide(
  contact-author: "Your Name",
  email: "your.email@hes-so.ch",
  qr-url: "https://link-to-slides.example.com",
)

Installation

The theme is available from the Typst package registry, just import it like any other package:

#import "@preview/bypst:0.4.0": *

Please note that the official BIPS logo is not bundled with the package to avoid licensing concerns. See below on how to include your local copy of the logo in the slides.

Local development

To work on the theme itself, clone and install locally:

git clone https://gitlab.forge.hefr.ch/loic.guibert/typst-presentation-template.git
cd typst-presentation-template
just install

Then use the local import instead:

#import "@local/hes-bypst:0.5.0": *

Slide Types

Function Purpose
#title-slide() Opening slide with author, institute, date
#bips-slide() Content slide with optional title/subtitle (preset over base-slide)
#section-slide() Section divider
#thanks-slide() Closing slide with contact info and optional QR code
#bibliography-slide[] References
#empty-slide[] Minimal slide without branding (preset over base-slide)
#base-slide() Flexible base slide with all chrome toggles; use when bips-slide/empty-slide presets don't cover your layout

Content slide options

#bips-slide(
  title: "Slide Title",
  subtitle: "Optional Subtitle",
  content-align: center + horizon, // center content vertically and horizontally
  text-size: 16pt,                 // override text size for this slide
)[
  Content here
]

content-align accepts any Typst alignment: center, horizon, center + horizon, etc.

Multi-author title slides

#title-slide(
  title: "Collaborative Research",
  authors: (
    "Jane Doe" + inst(1,2),
    "John Smith" + inst(1),
  ),
  institutes: (
    "hes-en",
    "University of Bremen",
  ),
)

Section slides

#section-slide("Results")
#section-slide("Methods", show-logo: false)

Layout Helpers

// Two columns (equal by default)
#two-columns[Left][Right]
#two-columns(columns: (2fr, 1fr), gutter: 2em)[Wide][Narrow]

// Three columns
#three-columns[A][B][C]

Sourcing & Citations

Slide-Level APA Citations

Cite references from a .bib file directly on the slide where they are mentioned. The #scite("key") function acts as a silent marker (producing no inline text) and automatically renders full APA 7th edition references at the bottom of the slide. The presenter's name is automatically recognized and rendered in bold.

#show: bips-theme.with(
  bib: read("references.bib"),
  config-info(author: "Jane Doe"),
)

#bips-slide(title: "Research Findings")[
  An intervention showed significant effects. #scite("doe2023")
  This was replicated in larger cohorts. #scite("smith2022")
]

Image Source Attribution

Display an image with a clickable source link and/or caption beneath it using #sourced-image():

#sourced-image(
  image("diagram.png", width: 80%),
  source: "https://example.com/diagram",
  caption: "Architecture Overview",
)

Utilities

Color helpers

#blue[text]  #orange[text]  #green[text]  #gray[text]  #logo-blue[text]

Callout boxes

#callout(type: "note")[Information]
#callout(type: "tip")[Helpful hint]
#callout(type: "warning")[Caution]
#callout(type: "important")[Critical]
#callout(type: "tip", title: "Custom Title")[With a title]

Compact list spacing

For dense layouts (e.g. multi-column slides), use #compact to tighten list spacing:

#compact[
  - Item A
  - Item B
  - Item C
]

Adjustable: #compact(spacing: 0.2em, leading: 0.2em)[...]

For lighter adjustments, #set list(spacing: 0.4em) works as a local override.

Vertical and horizontal fill

For when you want to fill space until the lower or rightmost end of the current slide (or slide column, grid cell, etc.).

#vfill  // shorthand for v(1fr)
#hfill  // shorthand for h(1fr)

Institutional names

#hes-en
#hes-fr

Animations

The theme re-exports Touying's animation functions:

#pause                              // reveal on click
#uncover(2)[On second click]        // show on specific subslide
#only(1)[First click only]          // only on specific subslide
#alternatives[Version A][Version B] // swap content

#pause works inside #two-columns and #three-columns; reveals follow document flow order across cells. #uncover() and #only() are useful for index-driven reveals without consuming a pause step.

Handout mode

Handout mode collapses every pause step to a single page per slide, producing one page per logical slide. Enable it from the command line without editing the source:

typst compile --input handout=true slides.typ

Or set it on the theme directly with bips-theme.with(handout: true).

Global Customization

Dark theme variant

Activate the dark theme variant to give splash and transition slides (title-slide, section-slide, thanks-slide) a solid brand accent background with white text, while keeping content slides on a clean white background:

#show: bips-theme.with(
  variant: "dark",
  // logo-dark: image("logo-white.png"), // defaults to bundled logo-dark.png; set to none to hide
  // accent-color: rgb(23, 99, 170),    // optional override for the accent color
)

The theme ships with a placeholder logo. Replace it with your own:

#show: bips-theme.with(
  logo: image("icosys-logo.png"),
)

Set logo: none to hide the logo entirely.

The actual BIPS logo (icosys-logo.png) is available in the GitHub repository but is not included in the Typst package due to unclear redistribution licensing. Download it and place it next to your .typ file, then use logo: image("icosys-logo.png").

Fonts and sizes

#show: bips-theme.with(
  aspect-ratio: "16-9",       // default
  // Font families (string or array with fallbacks)
  font: "Fira Sans",
  code-font: "Fira Mono",
  math-font: "New Computer Modern Math",
  // Font sizes
  base-size: 20pt,            // scales headings, small/tiny proportionally
  slide-title-size: 28pt,     // explicit pt overrides take precedence
  slide-subtitle-size: 22pt,
  heading-1-size: 22pt,
  heading-2-size: 20pt,
  heading-3-size: 18pt,
  page-number-size: 16pt,
  code-block-scale: 0.9,
  code-inline-scale: 1,
)

Text size utilities

#huge[Largest text for emphasis]
#large[Larger text for subheadings]
#small[Smaller text for captions or notes]
#tiny[Even smaller text for fine print]

Examples

The gallery/ directory contains example presentations:

  • basic.typ — starter template
  • complete.typ — comprehensive feature showcase
  • bibliography.typ — citations and references
  • aspect-ratio.typ — 4:3 format
  • lecture-demo.typ — realistic 100-slide scale test
  • speaker-notes.typ — presenter notes (pdfpc export and inline preview)

Development

just install    # install package locally
just all        # compile all gallery demos
just test       # run test suite
just clean      # remove generated PDFs

After editing theme files, run just install before compiling.

Project Structure

bypst.typ        # package entrypoint (re-exports src/theme.typ)
src/
  theme.typ      # orchestrator (imports all submodules)
  config.typ     # branding constants (colors, fonts, sizes)
  helpers.typ    # internal plumbing (title area, page number, background)
  slides.typ     # slide types
  extras.typ     # public layout/color utilities
  components.typ # visual components (sourced-image, cards, squares)
  citations.typ  # BibTeX parser, APA 7 formatter, slide citation system
logo.png         # bundled placeholder logo (override via bips-theme(logo: ...))
icosys-logo.png    # the real BIPS logo (not shipped in the package)
typst.toml       # package metadata
template/        # Typst Universe templates
gallery/         # example presentations
tests/           # test suite

Fonts

The theme uses Fira Sans for body text and Fira Mono for code, with automatic fallbacks if they are not installed:

Role Preferred Fallback
Body text Fira Sans Noto Sans
Code Fira Mono DejaVu Sans Mono (Typst built-in)
Math New Computer Modern Math (Typst built-in)

For the best results, install the Fira fonts. Override with the font:, code-font:, and math-font: parameters on bips-theme().

Requirements

  • Typst >= 0.13.0
  • Dependencies: touying 0.7.4, codetastic 0.2.2 (resolved automatically)

License

The theme code itself is licensed under the MIT license.
The BIPS logo is owned by BIPS itself (Leibniz Institute for Prevention Research and Epidemiology - BIPS GmbH).

The BIPS presentation theme zoo for "I don't want to use PowerPoint" folks:

Markup format Intermediate format Output format Based on Repo / Package Status
LaTeX --- PDF bips-beamer Stable
RMarkdown LaTeX PDF bips-beamer bipsdown Stable
RMarkdown xaringan HTML bipsdown Experimental
Quarto LaTeX PDF bips-beamer bips-quarto Stable
Quarto reveal.js HTML bips-quarto Experimental
typst --- PDF bips-typst / bypst Stable