h

helios-polylux

@preview

Helios, a minimal theme for academic presentations with Polylux

v0.1.0
AGPL-3.0-or-later
Template

Package Information

Last Updated
Categories
presentation

Preview

Template preview

1. Get the package

Download the package using the TPIX CLI:

tpix get @preview/helios-polylux:0.1.0

2. Initialize from template

Create a new project from this template:

typst init @preview/helios-polylux:0.1.0

Version History

0.1.0
2cb2938ad80c...

Helios

Helios is a minimal theme for creating academic presentations with
Typst and
Polylux.

The Helios theme is inspired by the metropolis-polylux
theme
and the Metropolis
theme for Beamer
. Code for the
outline and focus functions was taken from the metropolis-polylux
theme.

Create a new presentation

Use the typst init functionality to create a new presentation based on
the Helios template:

typst init @preview/helios-polylux new-presentation

This will create a folder called new-presentation containing a
presentation.typ file that can be used a starting point for your
presentation.

Fonts

By default, the package uses IBM Plex fonts (Sans, Sans Condensed, Mono and Math),
which you can download here:

Feel free to use other typefaces as described in the Customization
section. Just keep in mind that the spacing and whitespace have been
determined based on the properties of the Plex fonts, which potentially
leads to subpar results (or requiring additional adjustments) for
alternative typefaces. For example, slides are by default set in a
condensed font (if available).

Setup

To use the default settings (e.g. orange accent colour), simply call

#show: setup

before your presentation content.

Customization

The setup function accepts the following arguments for customization:

  • text-font, math-font, code-font: Specify the fonts to be used.
    Defaults are, respectively, "IBM Plex Sans", "IBM Plex Math", "IBM Plex Mono".
  • colour-fg: The colour to be used in foreground elements (i.e. text).
    The default is rgb(21,20,26).
  • colour-bg: The colour to be used in background elements (i.e. slide
    background). The default is white.
  • colour-accent: Accent colour to be used for emphasis (i.e. text inside
    _ … _), by default rgb("#D45E00"). Also used by hypothesis blocks
    (see below).
  • text-size: Sets the text size for slide content. Other elements are
    adjusted accordingly. The default is 16pt. Any changes are likely to
    negatively affect spacing and whitespace without further adjustments.
  • section (boolean or string): Set to true (default) will include
    the current section title in the footer. Alternatively, provide a string
    to set the footer text directly.
  • number: Whether to number standard slides (defaults to true). Some
    slide types (i.e. focus slides, image slides, and section slides)
    are not numbered by default. Numbering can also be specified with the
    slide function for each slide individually.
  • lang: Provide a string with the ISO language code (e.g. "fr",
    "es", etc.) to set the language of the presentation. Defaults to "en".

To set up a presentation in French with a different accent colour, for
example, you can use following setup call:

#show: setup.with(colour-accent: rgb("#099D72"), lang: "fr")

Usage

As a Polylux template, you can take advantage of the functionality
explained in the corresponding documentation. The following sections focus on utilities provided by the Helios template specifically.

Colour emphasis and italics

As italic text is typically less readable in a presentation setting,
emphasis (delimited by _ … _) is generally provided by coloured text
(according to the accent colour). To explicitly produce italics, you can
pass content to the it[] function instead.

This will produce _text highlighted in the accent colour_.

This will produce #it[italic text instead].

Hypothesis blocks

The hypothesis function provides a shaded block with a title and
further content, set apart with a coloured border on the left side.
The accent and background colours can be further customized:

  • accent: Sets the colour of the left border. Default to the colour-accent
    argument provided in the setup function (and thus rgb("#D45E00") if not
    provided there).
  • fill: Background fill of the content block. Defaults to luma(245).

A standard hypothesis block can produced like this:

#hypothesis[
  H#sub[1] -- An interesting hypothesis
][
  #lorem(25)
]

Or with different accent colour and white background:

#hypothesis(accent: rgb("#099D72"), fill: white)[
  H#sub[1] -- An interesting hypothesis
][
  #lorem(25)
]

Inverted slides

Foreground and background colour of slides can be inverted by placing #show: invert-slide at the beginning of the slide content:

#slide[
  #show: invert-slide

  = Inverted content slide

  The foreground and background colours can generally be inverted with
  `#show: invert-slide`.

]

Focus slides

Focus slides use a larger font and different spacing to communicate
short key messages. This is set by placing #show: focus before the
slide content:

#slide[
  #show: invert-slide
  #show: focus

  *A particularly important aspect*

  Focus slides can be used to _emphasize_ a short but important message.
]

This functionality also works for inverted slides:

#slide[
  #show: invert-slide
  #show: focus
  *A particularly important aspect*

  Focus slides can be used to _emphasize_ a short but important message.
]

Image slides

The img-slide function can be used to produce fullscreen image slides,
optionally with inverted background and foreground colours. By default,
image slides do not include a footer. Text and other elements can be
placed on the slide as needed. The img-slide function accepts the
following arguments:

  • img: The image to be shown on the slide, as passed with the image
    function.
  • invert: Whether to invert background and foreground colours (see
    above). Defaults to false.
  • section: Whether to include the section in the footer (default
    false).
  • number: Whether to include the slide number in the footer (default
    false).
  • foreground: Any content to be placed in the foreground (i.e. "above" the
    image).
  • slide-fill: Changes the background colour of the slide. Useful to
    match the colour of an image that is smaller than the slide. Defaults to
    none (i.e. the background colour specified at setup).

A fullscreen image slide with a black background colour and with text
set in a colour that corresponds the slide background of a standard
slide can be produced like this:

#img-slide(
  image("img_helios_example.jpg"), 
  invert: true,
  slide-fill: black
)[
  #place(bottom+right, text(size: 0.5em)[Image: NASA/Goddard/SDO])
]

Sections and outline

A section slide can be produced with the make-section function. By
default, the section title (or a short version) will appear in the footer
of the following slides, and in the presentation outline. make-section
accepts the following arguments:

  • name: The title of the section
  • shortname: A short version of the section title to be used in
    footers and outlines.
  • caps: Whether the section slide should be set in all capitals
    (default true). This does not affect footers and outlines.

A simple section slide can be produced with:

#make-section[Introduction]

Short names are helpful for longer section titles:

#make-section[
  Helios, a minimal theme for academic presentation using Typst and Polylux
][
  Helios theme
]

The outline function can be used to produce an overview of all
sections:

#slide[
  = Overview

  #set text(size: 1.25em)

  #outline
]

The make-footer function can be called directly to customize the slide
footer. By default it will contain the (short version) of the section
and the slide number. The function accepts the following arguments:

  • section (boolean or string): Set to true (default) will include
    the (short) title of the current section title in the footer.
    Alternatively, you can set the footer text explicitly by providing a string.
  • number: Whether the slide number should be included in the footer
    (default true).

For example, to remove section title and page numbers you can use a show
rule:

#slide[
  #show: page.with(footer: make-footer(section: false, number: false))

  = Content slide
  
  #lorem(50)
]

Or you can provide alternative text in the footer:

#slide[
  #show: page.with(footer: make-footer(section: [Alternative footer text]))

  = Content slide
  
  #lorem(50)
]