revelation is a cli tool that makes your reveal.js presentations nice and easy using markdown and serving it locally.
- Local presentation server to run your presentations even with no connection.
- Boilerplate presentation creation with one command.
- Custom css theming support.
- Export to static html tool.
- Browser live reload of the presentation at markdown change.
You can install it from the PyPI:
$ pip install revelation
The first thing that you will do after installing revelation is to download and install reveal.js to render the presentations.
To do that just run the installreveal
command:
$ revelation installreveal
To start your presentation run:
$ revelation start PRESENTATION
The PRESENTATION
is the path to the markdown presentation file.
To create a new presentation run:
$ revelation mkpresentation NAME
That will create a new presentation folder with the NAME
passed.
To export the presentation as static HTML content use the command:
$ revelation mkstatic PRESENTATION
The PRESENTATION
is the path to the markdown presentation file.
Presentations can be exported to PDF via a special print stylesheet. This feature will be described using Google Chrome or Chromium, but I got the same results using Firefox.
- Run the presentation with revelation.
- Open your browser with the
print-pdf
as query string like :localhost:5000/?print-pdf
. - Open the in-browser print dialog (CTRL+P or CMD+P).
- Change the Destination setting to Save as PDF.
- Change the Layout to Landscape.
- Change the Margins to None.
- Enable the Background graphics option.
- Click Save.
Alternatively you can use the decktape project.
Share your presentation using Ngrok
You can easily share your presentation using Ngrok. Download it, and put the binary file at root. Then you can do :
$ ngrok http 5000
This assume 5000
is your localhost.
ngrok
will create a secure tunnel to your localhost :
ngrok by @inconshreveable (Ctrl+C to quit)
Tunnel Status online
Version 2.0.19/2.1.1
Web Interface http://127.0.0.1:4040
Forwarding http://323744c6.ngrok.io -> localhost:5000
Forwarding https://323744c6.ngrok.io -> localhost:5000
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
The base presentation file structure looks like this:
presentation/
|- media/
|- theme/
|- config.py
|- slides.md
This is your presentation file written using markdown with some especial tags described on markdown section and is placed on your presentation root folder.
Split your slides by setting up a slide separator and vertical slide separator into REVEAL_CONFIG. Default separator are ---
and ---~
.
By default, revelation looks for a folder called media inside your presentation root folder. All media placed inside it can be referenced on your presentation by the path /media
:
![Python Logo](media/python.png)
You can define a custom media path using the --media
option on revelation start
command.
You can create your custom theme file and place it inside a theme folder and reference it at the configuration file by the option --theme
.
The configuration file are placed on the presentation root folder and is responsible to customize your presentation.
This file is optional and can the values above can be changed:
REVEAL_META: python dictionary with metadata from the presentation
REVEAL_META = {
# Title of the slide
'title': 'The title',
# Author in the metadata of the slide
'author': 'Some Author',
# Description in the metadata of the slide
'description': 'Some description'
}
REVEAL_THEME: string with reveal theme of choice
# Themes
# beige, black, blood, league, moon, night, serif, simple, sky,
# solarized, white
REVEAL_THEME = 'black'
REVEAL_CONFIG: python dictionary with the reveal.js configuration attributes but using python types (e.g.: true is python boolean True)
REVEAL_CONFIG = {
# Slide separator
'slideSep': '---',
# Display controls in the bottom right corner
'controls': True,
# Display a presentation progress bar
'progress': True,
# Display the page number of the current slide
'slideNumber': False,
# Push each slide change to the browser history
'history': True,
# Enable keyboard shortcuts for navigation
'keyboard': True,
# Enable the slide overview mode
'overview': True,
# Vertical centering of slides
'center': True,
# Enables touch navigation on devices with touch input
'touch': True,
# Loop the presentation
'loop': False,
# Change the presentation direction to be RTL
'rtl': False,
# Turns fragments on and off globally
'fragments': True,
# Flags if the presentation is running in an embedded mode,
# i.e. contained within a limited portion of the screen
'embedded': False,
# Flags if we should show a help overlay when the questionmark
# key is pressed
'help': True,
# Flags if speaker notes should be visible to all viewers
'showNotes': False,
# Number of milliseconds between automatically proceeding to the
# next slide, disabled when set to 0, this value can be overwritten
# by using a data-autoslide attribute on your slides
'autoSlide': 0,
# Stop auto-sliding after user input
'autoSlideStoppable': True,
# Enable slide navigation via mouse wheel
'mouseWheel': False,
# Hides the address bar on mobile devices
'hideAddressBar': True,
# Opens links in an iframe preview overlay
'previewLinks': False,
# Transition style
# default/cube/page/concave/zoom/linear/fade/none
'transition': 'default',
# Transition speed
'transitionSpeed': 'default', # default/fast/slow
# Transition style for full page slide backgrounds
# default/none/slide/concave/convex/zoom
'backgroundTransition': 'default',
# Number of slides away from the current that are visible
'viewDistance': 3,
# Parallax background image
# e.g.:
# "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'"
'parallaxBackgroundImage': '',
# Parallax background size
'parallaxBackgroundSize': '', # CSS syntax, e.g. "2100px 900px"
# Amount to move parallax background (horizontal and vertical)
# on slide change
# Number, e.g. 100
'parallaxBackgroundHorizontal': '',
'parallaxBackgroundVertical': '',
}
The markdown used on the presentation files support most of the GitHub Markdown and adds some especial html comment tags to edit styles and control effects that are explained on the reveal.js markdown docs.
Important: You can use all html tags on the presentation files, but some block tags can present unexpected behavior.