Slide 1

Slide 1 text

Building and presenting slide decks with rst2pdf Oliver Davies (@opdavies)

Slide 2

Slide 2 text

What have I used before? • UI based: Keynote, Google Slides, slides.com • HTML/JavaScript: reveal.js • Markdown: Deckset, Marp, reveal-md @opdavies

Slide 3

Slide 3 text

What is rst2pdf? • "Use a text editor. Make a PDF." • reStructuredText to PDF • Each slide is a page • Page templates for layouts • Not just for slide decks • Table of contents, page numbers, headers, footers @opdavies

Slide 4

Slide 4 text

Advantages • Easy to start a new presentation, or update an existing one • Version controllable • Portable • Content is searchable • Easy to re-use content and/or styling • Slides uploaded to SpeakerDeck straight away @opdavies

Slide 5

Slide 5 text

@opdavies

Slide 6

Slide 6 text

Useful reStructuredText 1 Building and presenting slide decks with rst2pdf 2 ################################################ 3 4 .. class:: titleslideinfo 5 6 Oliver Davies (@opdavies) 7 8 9 What is rst2pdf? 10 ================ 11 12 * "Use a text editor. Make a PDF." 13 * reStructuredText to PDF 14 * Each slide is a page @opdavies

Slide 7

Slide 7 text

Useful reStructuredText 1 .. image:: images/editing.png 2 :width: 20cm 3 4 5 .. code-block:: php 6 :startinline: true 7 :linenos: 8 9 echo 'Hello world!'; 10 11 12 .. raw:: pdf 13 14 TextAnnotation "This is a speaker note." @opdavies

Slide 8

Slide 8 text

Page Templates main.style: pageTemplates: standardPage: frames: [] [3%, 3%, 92%, 92%] showFooter: true showHeader: false slides.rst: .. raw:: pdf PageBreak standardPage @opdavies

Slide 9

Slide 9 text

Keeping things organised Split slides into different sections: .. include:: sections/intro.rst Including code snippets from separate files: .. code-block:: javascript :include: code/additional-config-options.txt :hl_lines: 2 3 4 :linenos: @opdavies

Slide 10

Slide 10 text

Styling 1 linkColor: #24608a 2 3 styles: 4 normal: 5 fontSize: 24 6 leading: 32 7 textColor: #383745 8 9 bodytext: 10 alignment: TA_LEFT 11 12 heading: 13 fontSize: 20 14 spaceAfter: 16 @opdavies

Slide 11

Slide 11 text

15 textColor: #24608a 16 17 title: 18 fontSize: 300% 19 parent: heading 20 textColor: white 21 22 bullet-list: 23 commands: [] 24 [LEFTPADDING, [0, 0], [1, -1], 10] 25 [RIGHTPADDING, [0, 0], [1, -1], 0] 26 [VALIGN, [0, 0], [-1, -1], TOP] 27 colWidths: ["20", null] 28 textColor: #aaaaaa @opdavies

Slide 12

Slide 12 text

Building rst2pdf slides.rst rst2pdf slides.rst --break-level 1 --stylesheets main rst2pdf slides.rst \ --output slides.pdf \ --stylesheets main \ --break-level 1 \ --fit-background-mode scale \ --extension-module preprocess @opdavies

Slide 13

Slide 13 text

Watching Re-compiling when something changes. nodemon --ext rst,style,txt --exec " rst2pdf slides.rst \ --output slides.pdf \ --stylesheets main \ --break-level 1 \ --fit-background-mode scale \ --extension-module preprocess " @opdavies

Slide 14

Slide 14 text

Presenting pdfpc - PDF presenter console pdfpc slides.pdf @opdavies

Slide 15

Slide 15 text

@opdavies

Slide 16

Slide 16 text

@opdavies

Slide 17

Slide 17 text

Thanks! References: • https://rst2pdf.org • https://github.com/rst2pdf/rst2pdf • https://github.com/opdavies/talks • https://oliverdavies.link/lorna-rst2pdf-talk Me: • https://www.oliverdavies.uk @opdavies