mirror of
https://github.com/mfontanini/presenterm.git
synced 2025-05-30 19:32:47 +00:00
257 lines
4.3 KiB
Markdown
257 lines
4.3 KiB
Markdown
---
|
|
title: Introducing presenterm
|
|
author: Matias
|
|
---
|
|
|
|
Introduction slide
|
|
---
|
|
|
|
An introduction slide can be defined by using a front matter at the beginning of the markdown file:
|
|
|
|
```yaml
|
|
---
|
|
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:
|
|
|
|
```yaml
|
|
---
|
|
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
|
|
---
|
|
```
|
|
|
|
<!-- end_slide -->
|
|
|
|
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
|
|
|
|
<!-- end_slide -->
|
|
|
|
Slide commands
|
|
---
|
|
|
|
Certain commands in the form of HTML comments can be used:
|
|
|
|
# Ending slides
|
|
|
|
In order to end a single slide, use:
|
|
|
|
```html
|
|
<!-- end_slide -->
|
|
```
|
|
|
|
# Creating pauses
|
|
|
|
Slides can be paused by using the `pause` command:
|
|
|
|
```html
|
|
<!-- pause -->
|
|
```
|
|
|
|
This allows you to:
|
|
|
|
<!-- pause -->
|
|
* Create suspense.
|
|
<!-- pause -->
|
|
* Have more interactive presentations.
|
|
<!-- pause -->
|
|
* Possibly more!
|
|
|
|
<!-- end_slide -->
|
|
|
|
Code highlighting
|
|
---
|
|
|
|
Code highlighting is enabled for code blocks that include the most commonly used programming languages:
|
|
|
|
```rust
|
|
// Rust
|
|
fn greet() -> &'static str {
|
|
"hi mom"
|
|
}
|
|
```
|
|
|
|
```python
|
|
# Python
|
|
def greet() -> str:
|
|
return "hi mom"
|
|
```
|
|
|
|
```cpp
|
|
// C++
|
|
string greet() {
|
|
return "hi mom";
|
|
}
|
|
```
|
|
|
|
And many more!
|
|
|
|
<!-- end_slide -->
|
|
|
|
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!
|
|
|
|
```rust {1-4|6-10|all} +line_numbers
|
|
#[derive(Clone, Debug)]
|
|
struct Person {
|
|
name: String,
|
|
}
|
|
|
|
impl Person {
|
|
fn say_hello(&self) {
|
|
println!("hello, I'm {}", self.name)
|
|
}
|
|
}
|
|
```
|
|
|
|
<!-- end_slide -->
|
|
|
|
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>`.
|
|
|
|
```rust +exec
|
|
# 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));
|
|
}
|
|
}
|
|
```
|
|
|
|
<!-- end_slide -->
|
|
|
|
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 ``.
|
|
* 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_
|
|
|
|
<!-- end_slide -->
|
|
|
|
Column layouts
|
|
---
|
|
|
|
<!-- column_layout: [2, 1] -->
|
|
|
|
<!-- column: 0 -->
|
|
|
|
Column layouts let you organize content into columns.
|
|
|
|
Here you can place code:
|
|
|
|
```rust
|
|
fn potato() -> u32 {
|
|
42
|
|
}
|
|
```
|
|
|
|
Plus pretty much anything else:
|
|
* Bullet points.
|
|
* Images.
|
|
* _more_!
|
|
|
|
<!-- column: 1 -->
|
|
|
|

|
|
|
|
_Picture by Alexis Bailey / CC BY-NC 4.0_
|
|
|
|
<!-- reset_layout -->
|
|
|
|
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:
|
|
|
|
```python
|
|
print("Hello world!")
|
|
```
|
|
|
|
<!-- end_slide -->
|
|
|
|
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 [](https://example.com/)
|
|
|
|
<!-- end_slide -->
|
|
|
|
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 `---`.
|
|
|
|
---
|