Makes impress.js presentations from reStructuredText

## Hovercraft!

The merge of convenience and cool!

Hovercraft! is a tool to make impress.js presentations from reStructuredText. For a quick explanation, see the demo.

### Features

• Write your presentations in a text markup language. No slow, limiting GUI, no annoying HTML!
• Pan, rotate and zoom in 3D, with automatic repositioning of slides!
• A presenter console with notes and slide previews!
• The slide show generated is in HTML, so you only need a web browser to show it.
• Easy sharing, as it can be put up on a website for anyone to see!

Full documentation is available at readthedocs.org, and also in the documentation subdirectory.

### Installation

Hovercraft requires Python 3.4 or later, and can be installed like any Python package. The easiest way is to install pip, and then run:

\$ pip3 install hovercraft


Hovercraft is untested on Windows, but there is no reason it shouldn’t work, at least in theory.

### Contributors

Hovercraft! was written by Lennart Regebro <regebro@gmail.com>, and is licensed as CC-0, except for the following:

• reST.xsl is (c) Michael Alyn Miller <malyn@strangeGizmo.com> and published under a BSD-style license included in reST.xsl itself.
• impress.js is (c) Bartek Szopka (@bartaz) released under MIT and GPL licenses. See the impress.js page for more information.

Other contributors (see CHANGES.txt for details):

• Carl Meyer [carljm]
• Chris Withers [cjw296]
• Fahrzin Hemmati [fahhem]
• Christophe Labouisse [ggtools]
• Paul Schoenfelder [bitwalker]
• Bernhard Weitzhofer [b6d]
• Russ Ferriday [topiaruss]
• Henrik Blidh [hbldh]
• Ian Castleden [arabidopsis]
• Mario Bodemann [mariobodemann]
• Jürgen Hermann [jhermann]
• Frederik Möllers [frederikmoellers]
• David Baum [naraesk]

## Changes

### 2.4 (2017-07-18)

• Option to display slide numbers [frederikmoellers]
• #51: Positioning relative to other slide [naraesk]
• Removed the code that uses pkg_util to access included templates. We don’t support installing Hovercraft as a ZIP file anyway, so it only complicates things for no good reason.
• Support for .. header:: and .. footer:: that can be used for static content.
• Dropped support for Python 3.3 and 3.4, because I now use recursive glob.
• Templates can now have a resource-directories statements, to specify extra directories of resources. This can be used in templates for JS libraries, like MathJax.
• The MathJax argument can now be a local copy.
• Switched the default MathJax URL to https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1

### 2.3 (2017-04-12)

• Better implementation of #98
• Support for mathematical formulas with Mathjax [arabidopsis]
• Default template use UTF-8 [mariobodemann]
• Added support for Python 3.6

### 2.2 (2016-10-15)

• #98: Presentation not update when using gedit

### 2.1 (2016-02-27)

• #87: Support multiple :css: statements. [bitwalker]
• #86, #88: In-template resources failed for external templates.
• #89: The file monitoring could make the CPU go to 100%. [b6d]
• #81: positions.rst example was out of date.
• Dropped Python 3.2 support, because docutils doesn’t seem to work on Python 3.2 any longer. With docutils 0.9 it probably still works.
• Updated tests to work with newer Pygments.
• #96: Relative paths was not working.
• #91: When modifying included files the presentation was not updated.

### 2.0 (2015-06-14)

• Better support for :class:. [fahhem]
• Now supports data-perspective. [fahhem]
• Fixed typos in template.py. [fahhem, ggtools]

### 2.0b1 (2014-11-27)

• IMPORTANT! The positioning has been reimplemented. The most important change is that there is no longer any calculation of relative movement when you use absolute coordinates. Therefore, if you use absolute coordinates on some slides and then have no coordinates on other slides, your positioning may no longer be correct with version 2.0.
• IMPORTANT! Moved the “note” XML transformation into the templates, as this is an impress.js feature, and other libraries, such as Reveal.js, will render it differently. If you make your own templates, you need to update them accordingly!
• Relative coordinates (starting with r) are now supported for all positioning, attributes including rotation and scaling.
• Now includes a server-mode, that will serve the presentation via http and also re-generate the presentation if the source-files change.
• Images can now also have a :class: attribute.
• Added support for multiple levels of slides. This is to make it able to support for example Reveal.js through external templates.

### 1.1 (2013-03-15)

• ReST comments are no longer rendered to HTML. [carljm]
• Fixed a bug in the path handling for CSS resources. [carljm]
• Various fixes and improvements in ReST handling. [cjw296]

### 1.0 (2013-02-22)

• #1, #2: Add key-binding to pop up the help, a parameter and a presentation field setting to not show the help at load.
• Added documentation for #8: Naming steps.
• #7: You can now define CSS-files to be included with a :css:-field in the presentation.
• #3: You can now leave out the presenter notes from the output with the parameter -n or –skip-notes
• Added a “simple” template that has no presenter console.
• Updated to impress-console 1.1, fixing a Firefox bug.
• Finished documentation and examples.

### 1.0b2 (2013-02-13)

• #9: All positioning variables except data-x and data-y are now “sticky” so
they will keep their previous value if not defined.

### 1.0b1 (2013-02-07)

• Initial release.