Guide for creating presentation slides using the Touying GTEC-Simple theme in Typst. Use when working with Typst presentations, creating slides, or when the user mentions Touying, GTEC-Simple theme, or presentation slides.
A Typst Touying theme designed for the GTEC group at the University of A Coruña, based on the Metropolis theme with custom enhancements.
Every presentation starts with theme initialization:
#import "@local/touying-gtec-simple:0.0.1": *
#show: gtec-simple-theme.with(
aspect-ratio: "16-9",
ty.config-info(
title: [Your Presentation Title],
author: [Your Name],
date: datetime.today(),
),
)
#title-slide(
header: [Your Degree \ Your Subject],
footer: auto, // auto (university logo), none, or custom content
)
// Your slides here
Local package:
#import "@local/touying-gtec-simple:0.0.1": *
Local import:
#import "path/to/touying-gtec-simple/src/lib.typ": *
#title-slide(
header: [Degree in Computer Science \ Data Structures Course]
)
Use level 2 headings (==):
== My Slide Title
Content with:
- Bullet points
- *Bold text*
- _Italic text_
- #highlight[highlighted text]
Use level 1 headings (=):
= Section Title
== First Slide in Section
Content here...
Basic:
#outline-slide()
Customized:
#outline-slide(
title: [Contents],
outline-args: (depth: 1), // Only level 1 headings
column: 2 // Two-column layout
)
With side image:
#outline-image-slide(
title: [Contents],
image: image("path/to/image.png", height: 100%, fit: "cover"),
side: left, // left, right, top, or bottom
image-width: 35%,
outline-args: (depth: 1)
)
Large centered text for emphasis:
#focus-slide[
Important Announcement!
This grabs attention.
]
Full-height image on one side:
#side-image-slide(
image: image("path/to/image.png", height: 100%, fit: "cover"),
title: [My Title],
subtitle: [Optional subtitle],
side: left, // left, right, top, or bottom
image-width: 35%,
)[
Your content here
]
Multi-column content:
#side-image-slide(
composer: (1fr, 1fr, 1fr),
image: image("image.png", height: 100%, fit: "cover"),
)[
*First Column*
Content here
][
*Second Column*
More content
][
*Third Column*
Even more content
]
Note: Image persists across multiple pages with #pause or overflow.
Colored panel with optional decorative edge:
#side-shape-slide(
shape-body: shape-title([Main Title], subtitle: [Subtitle Text]),
shape-fill: rgb("#d4c5b0"),
side: left,
shape-width: 35%,
edge: "wave", // "wave", "zigzag", "round", or none
)[
Content on the other side
]
The shape-body parameter accepts any Typst content.
Using shape-title() helper:
shape-body: shape-title(
[Main Title],
subtitle: [Subtitle],
spacing: 2em,
align: left + horizon,
inset: (x: 1.5em, y: 2em),
)
Custom content:
// Just text
shape-body: [Any content here]
// An image
shape-body: image("logo.png", width: 80%)
// A styled block
shape-body: block(
inset: 2em,
align(center + horizon)[
#text(size: 2em, weight: "bold")[Custom Content]
#v(1em)
#image("icon.png", width: 50%)
]
)
#side-shape-slide(
shape-body: shape-title([Title]),
shape-fill: rgb("#326e76"),
shape-stroke: 3pt + black,
config: ty.config-page(fill: aqua),
edge: "wave",
)[
Content here
]
Add subtitles using #slide():
#slide(
subtitle: [Additional Context],
)[
== My Slide Title
Content here
]
#slide(
align: left + top,
)[
== Title
Content aligned to top-left
]
Slides after appendix show only current page numbers:
#show: ty.appendix
= Appendix
== Extra Information
This slide shows only its page number, not the total count.
See example.md for a full presentation example.