title | author |
---|---|
Introducing presenterm |
Matias |
An introduction slide can be defined by using a front matter at the beginning of the markdown file:
---
title: My presentation title
sub_title: An optional subtitle
author: Your name which will appear somewhere in the bottom
---
The slide's theme can also be configured in the front matter:
---
theme:
# Specify it by name for built-in themes
name: my-favorite-theme
# Otherwise specify the path for it
path: /home/myself/themes/epic.yaml
# Or override parts of the theme right here
override:
default:
colors:
foreground: white
---
Using commonmark setext headers allows you to set titles for your slides (like seen above!):
Headers
---
All other header types are simply treated as headers within your slide.
Certain commands in the form of HTML comments can be used:
In order to end a single slide, use:
<!-- end_slide -->
Slides can be paused by using the pause
command:
<!-- pause -->
This allows you to:
- Create suspense.
- Have more interactive presentations.
- Possibly more!
Code highlighting is enabled for code blocks that include the most commonly used programming languages:
// Rust
fn greet() -> &'static str {
"hi mom"
}
# Python
def greet() -> str:
return "hi mom"
// C++
string greet() {
return "hi mom";
}
And many more!
Select specific subsets of lines to be highlighted dynamically as you move to the next slide. Optionally enable line numbers to make it easier to specify which lines you're referring to!
#[derive(Clone, Debug)]
struct Person {
name: String,
}
impl Person {
fn say_hello(&self) {
println!("hello, I'm {}", self.name)
}
}
Code snippets can be executed:
- For various languages, including compiled ones.
- Their output is shown in real time.
- Unimportant lines can be hidden so they don't clutter what you're trying to convey.
- By default by pressing
<ctrl-e>
.
# use std::thread::sleep;
# use std::time::Duration;
fn main() {
let names = ["Alice", "Bob", "Eve", "Mallory", "Trent"];
for name in names {
println!("Hi {name}!");
sleep(Duration::from_millis(500));
}
}
Image rendering is supported as long as you're using iterm2, your terminal supports the kitty graphics protocol (such as the kitty terminal itself!), or the sixel format.
- Include images in your slides by using
![](path-to-image.extension)
. - Images will be rendered in their original size.
- If they're too big they will be scaled down to fit the screen.
Picture by Alexis Bailey / CC BY-NC 4.0
Column layouts let you organize content into columns.
Here you can place code:
fn potato() -> u32 {
42
}
Plus pretty much anything else:
- Bullet points.
- Images.
- more!
Picture by Alexis Bailey / CC BY-NC 4.0
Because we just reset the layout, this text is now below both of the columns. Code and any other element will now look like it usually does:
print("Hello world!")
Text formatting works as expected:
- This is bold text.
- This is italics.
- This is bold and this is bold and italic.
This is strikethrough text.- Inline code
is also supported
. - Links look like this
Other elements supported are:
Name | Taste |
---|---|
Potato | Great |
Carrot | Yuck |
Lorem ipsum dolor sit amet. Eos laudantium animi ut ipsam beataeet et exercitationem deleniti et quia maiores a cumque enim et aspernatur nesciunt sed adipisci quis.
A horizontal line by using ---
.