.. footer:: @opdavies

Building and presenting slide decks with rst2pdf
################################################

|

.. class:: titleslideinfo

Oliver Davies (@opdavies)

.. raw:: pdf

    TextAnnotation "Gave my first talk in 2012."
    TextAnnotation "A talk about a tool (rst2pdf) that I've been using for the last couple of talks."

.. page:: standardPage

What have I used before?
========================

* **UI based:** Keynote, Google Slides, slides.com
* **HTML/JavaScript:** reveal.js
* **Markdown:** Deckset, Marp, reveal-md

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

.. raw:: pdf

    TextAnnotation "Use the tools you're familiar with."
    TextAnnotation "Similar to Markdown."
    TextAnnotation "Primarily used for technical documentation within the Python community."
    TextAnnotation "Now maintained by PHPers Rob Allen and Lorna Jane Mitchell."
    TextAnnotation "Breaks at titles automatically, or you can add manual page breaks."

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

.. page:: imagePage

.. image:: images/editing.png
    :width: 23cm

.. page:: standardPage

Useful reStructuredText
=======================

.. code-block:: rst
    :include: code/useful-rst-1.txt
    :linenos:

Useful reStructuredText
=======================

.. code-block:: rst
    :include: code/useful-rst-2.txt
    :linenos:

Page Templates
==============

main.style:

.. code-block:: yaml 
    :include: code/page-templates-style.txt

slides.rst:

.. code-block:: rst
    :include: code/page-templates-rst.txt

Keeping things organised
========================

Split slides into different sections:

.. code-block:: rst
   :include: code/includes-sections.txt

|

Including code snippets from separate files:

.. code-block:: rst
    :include: code/includes-code.txt

.. raw:: pdf

    TextAnnotation "Includes!"

Styling
=======

.. code-block:: yaml
    :include: code/styling.txt
    :linenos:

Building
========

.. code-block::
    :include: code/building.txt

Watching
========

Re-compiling when something changes.

|

.. code-block:: bash
  :include: code/watching.txt

Presenting
==========

``pdfpc`` - PDF presenter console

|

.. code-block::

    pdfpc slides.pdf

.. page:: imagePage

.. image:: images/pdfpc-1.png
    :width: 23cm

.. page::

.. image:: images/pdfpc-2.png
    :width: 23cm

.. page:: standardPage

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