Sections and Subsections
Structure
Like Beamer, Touying also has the concept of sections and subsections.
Generally, first-level, second-level, and third-level headings correspond to sections, subsections, and subsubsections, respectively, such as in the dewdrop theme.
#import "@preview/touying:0.5.5": *
#import themes.dewdrop: *
#show: dewdrop-theme.with(aspect-ratio: "16-9")
= Section
== Subsection
=== Title
Hello, Touying!
However, there are many times when we do not need subsections, so we also use first-level and second-level headings to correspond to sections and titles, respectively, such as in the university theme.
#import "@preview/touying:0.5.5": *
#import themes.university: *
#show: university-theme.with(aspect-ratio: "16-9")
= Section
== Title
Hello, Touying!
In fact, we can control this behavior through the slide-level
parameter of the config-common
function. slide-level
represents the complexity of the nesting structure, starting from 0. For example, #show: university-theme.with(config-common(slide-level: 2))
is equivalent to both section
and subsection
creating new slides; while #show: university-theme.with(config-common(slide-level: 3))
is equivalent to section
, subsection
, and subsubsection
all creating new slides.
Numbering
To add numbering to sections and subsections, we simply use
#set heading(numbering: "1.1")
#show heading.where(level: 1): set heading(numbering: "1.")
This sets the default numbering to 1.1
, and the section corresponds to the numbering 1.
.
Table of Contents
Displaying a table of contents in Touying is straightforward:
#import "@preview/touying:0.5.5": *
#import themes.simple: *
#import "@preview/numbly:0.1.0": numbly
#set heading(numbering: numbly("{1}.", default: "1.1"))
#show: simple-theme.with(aspect-ratio: "16-9")
= Section
== Subsection
#components.adaptive-columns(outline(indent: 1em))
The outline(indent: 1em)
is a native Typst function for the table of contents. The #components.adaptive-columns()
function ensures that the table of contents occupies only one page, adapting by setting #columns(1, body)
or #columns(2, body)
, and so on.
If you need a outline
function that can display the current progress, you might consider using #components.progressive-outline()
or #components.custom-progressive-outline()
, as seen in the dewdrop theme.