Project

przn

0.0
No release in over 3 years
A terminal-based presentation tool that renders Markdown slides with Kitty text sizing protocol support for beautifully scaled headers
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 0
 Project Readme

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 content

Text formatting

*emphasis*
**bold**
~~strikethrough~~
`inline code`

Lists

* item 1
* item 2
  * nested item

- also works as bullets

1. ordered
2. list

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

Tables

| Header 1 | Header 2 |
|----------|----------|
| cell 1   | cell 2   |

Definition lists

term
:   definition

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

Comments

{::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.