1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232
|
---
title: Introducing _presenterm_
author: Matias
---
Customizability
---
_presenterm_ allows configuring almost anything about your presentation:
* The colors used.
* Layouts.
* Footers, including images in the footer.
<!-- pause -->
This is an example on how to configure a footer:
```yaml
footer:
style: template
left:
image: doge.png
center: '<span class="noice">Colored</span> _footer_'
right: "{current_slide} / {total_slides}"
height: 5
palette:
classes:
noice:
foreground: red
```
<!-- end_slide -->
Headers
---
Markdown headers can be used to set slide titles like:
```markdown
Headers
-------
```
# Headers
Each header type can be styled differently.
## Subheaders
### And more
<!-- end_slide -->
Code highlighting
---
Highlight code in 50+ programming languages:
```rust
// Rust
fn greet() -> &'static str {
"hi mom"
}
```
```python
# Python
def greet() -> str:
return "hi mom"
```
<!-- pause -->
-------
Code snippets can have different styles including no background:
```cpp +no_background +line_numbers
// C++
string greet() {
return "hi mom";
}
```
<!-- end_slide -->
Dynamic code highlighting
---
Dynamically highlight different subsets of lines:
```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 on demand:
* For 20+ languages, including compiled ones.
* Display their output in real time.
* Comment out unimportant lines to hide them.
```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
---
Images and animated gifs are supported in terminals such as:
* kitty
* iterm2
* wezterm
* ghostty
* Any sixel enabled terminal
<!-- column_layout: [1, 3, 1] -->
<!-- column: 1 -->

_Picture by Alexis Bailey / CC BY-NC 4.0_
<!-- end_slide -->
Column layouts
---
<!-- column_layout: [7, 3] -->
<!-- column: 0 -->
Use column layouts to structure your presentation:
* Define the number of columns.
* Adjust column widths as needed.
* Write content into every column.
```rust
fn potato() -> u32 {
42
}
```
<!-- column: 1 -->

<!-- reset_layout -->
---
Layouts can be reset at any time.
```python
print("Hello world!")
```
<!-- end_slide -->
Text formatting
---
Text formatting works including:
* **Bold text**.
* _Italics_.
* **_Bold and italic_**.
* ~Strikethrough~.
* `Inline code`.
* Links [](https://example.com/)
* <span style="color: red">Colored</span> text.
* <span style="color: blue; background-color: black">Background color</span> can be changed too.
<!-- end_slide -->
More markdown
---
Other markdown elements supported are:
# 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.
# Alerts
> [!caution]
> Github style alerts
# Tables
| Name | Taste |
| ------ | ------ |
| Potato | Great |
| Carrot | Yuck |
<!-- end_slide -->
<!-- jump_to_middle -->
The end
---
|