Skip to content

Latest commit

 

History

History
256 lines (180 loc) · 4.3 KB

demo.md

File metadata and controls

256 lines (180 loc) · 4.3 KB
title author
Introducing presenterm
Matias

Introduction slide

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
---

Headers

Using commonmark setext headers allows you to set titles for your slides (like seen above!):

Headers
---

Other headers

All other header types are simply treated as headers within your slide.

Subheaders

And more

Slide commands

Certain commands in the form of HTML comments can be used:

Ending slides

In order to end a single slide, use:

<!-- end_slide -->

Creating pauses

Slides can be paused by using the pause command:

<!-- pause -->

This allows you to:

  • Create suspense.
  • Have more interactive presentations.
  • Possibly more!

Code highlighting

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!

Dynamic code highlighting

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)
    }
}

Snippet execution

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));
    }
}

Images

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

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

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

Other elements supported are:

Tables

Name Taste
Potato Great
Carrot Yuck

Block quotes

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.

Thematic breaks

A horizontal line by using ---.