impress’s documentation!

This documentation is generated by python-impress. An open source software based on Sphinx and impress.js.

Use space/left/right keys to navigate.

By @gawel_


Install the stable version:

$ pip install impress

Install the latest:

$ pip install

Quick start

Write a index.rst file like this:

My fisrt slide

.. slide::
   :class: first

My second slide

.. slide::

Then run:

$ impress

Open html/index.html in your browser. That’s all.

Read the source of this page to see more examples.

Inserting python code

With Sphinx’s autodoc plugin:

class impress.directives.Slide(name, arguments, options, content, lineno, content_offset, block_text, state, state_machine)[source]

This directive allow to create some slides in rest documents

Or by inserting some code:

var foo = function() {

You can insert Images

It’s recommended to add images in a static folder but urls works too.

Hidden title

You may also want to hide title (required to create a step). And have fun with css3 and others impress.js attributes.

But before that you may want to read a few technicals notes

Impress directive

This directive allow to set some “global” options used for all slide found after it.

.. impress::
   :func: default
   :hide-title: false
   :data-scale: 2

Step / Slide directive

Per slide configuration. One of the step/slide directive must be added after a section title to create a slide.

.. step::
   :class: myclass
   :func: mymodule:myfunc
   :data-scale: 0
   :data-x: 0
   :data-y: 0
   :data-z: 0
   :data-rotate-x: 0
   :data-rotate-y: 0
   :data-rotate-z: 0

The slide directive use the same arguments. It just add a css class slide automaticaly.


Positioning can be done manualy with the data-* attributes but you can use the func attribute to auto positioning slides on the canvas.

Avalaible functions are stored in impress.funcs:

impress.funcs.default(slide, slides)[source]

Default positioning demo

impress.funcs.linear(slide, slides)[source]

Linear positioning demo

impress.funcs.square(slide, slides, amount=4)[source]

Square positioning demo

impress.funcs.spiral(slide, slides, r=1200)[source]

Spiral positionning demo

Use your own algorithm

This tools came with a set of function designed to position slides in the canvas but you can use your own.

You just need to create a function like this:

def awesome_positioning(slide, slides):
    if slide.index > 0:
        slide.x += 1000
        slide.y += 1000
        slide.rotate_y += 45

And use it in the func attribute of the impress, step or slide directives.

See also the function used for those slides:

mymodule.documentation(slide, slides)[source]

Overriding the defaults

There is two way:


This is a social project hosted on github.

If you want to contribute, feel free to fork!