przn
A terminal-based presentation tool written in Ruby. Renders Markdown slides with Kitty text sizing protocol support for beautifully scaled headings.
Installation
gem install przn
Usage
przn your_slides.md
PDF export
przn --export your_slides.md
przn --export pdf your_slides.md
przn --export pdf -o output.pdf your_slides.md
Requires a TrueType font (with glyf outlines) for proper rendering. Prawn does not support CFF-based fonts (most .otf files). Fonts are auto-detected in this order: NotoSansJP TTF, HackGen, Arial Unicode.
Key bindings
| Key | Action |
|---|---|
→ ↓ l j Space
|
Next slide |
← ↑ h k
|
Previous slide |
g |
First slide |
G |
Last slide |
q Ctrl-C
|
Quit |
Markdown format
przn's Markdown format is compatible with Rabbit's Markdown mode.
Slide splitting
Slides are separated by # (h1) headings.
# Slide 1
content
# Slide 2
more contentText formatting
*emphasis*
**bold**
~~strikethrough~~
`inline code`Lists
* item 1
* item 2
* nested item
- also works as bullets
1. ordered
2. listCode blocks
Fenced code blocks:
```ruby
puts "hello"
```Indented code blocks (4 spaces) with optional kramdown IAL:
def hello
puts "world"
end
{: lang="ruby"}Block quotes
> quoted text
> continues hereTables
| Header 1 | Header 2 |
|----------|----------|
| cell 1 | cell 2 |Definition lists
term
: definitionText sizing
Uses Rabbit-compatible {::tag} notation. Supported size names: xx-small, x-small, small, large, x-large, xx-large, xxx-large, xxxx-large, and numeric 1-7.
{::tag name="x-large"}Big text{:/tag}
{::tag name="7"}Maximum size{:/tag}On Kitty-compatible terminals, sized text is rendered using the OSC 66 text sizing protocol. On other terminals, the markup is silently ignored.
Alignment
{:.center}
centered text
{:.right}
right-aligned textComments
{::comment}
This text is hidden from the presentation.
{:/comment}Notes
Visible text {::note}(speaker note){:/note}License
The gem is available as open source under the terms of the MIT License.