inkslides
generates a PDF presentation out of an inkscape SVG
document. The order of slides and visibility of content is determined
by the layer structure of the SVG.
Clone the repository somewhere and type
> python setup.py install
This program has the following requirements:
- Linux (currently)
- inkscape
- Python >= 2.7
- python-lxml (or python2-lxml)
- Any one of: PyPDF2, ghostscript (comes with TeXLive), pdfunite
inkslides
decides, what to include in the presentation, by looking at the
layer structure of the SVG file. A layer is included if it is a sublayer of
any other layer. When it contains another level of layers, i.e., sublayers
of sublayers, these are included one by one while their siblings are still
visible. For example, consider this layer structure:
Polar bears
Why polar bears are cool
Argument 3
Argument 2
Argument 1
Weaknesses of polar bears
Title
Welcome
_import_layer
_import_layer1
This would result in a PDF with the following slides, where each line contains the visible layers on one page.
Title,Welcome
Polar bears,Weaknesses of polar bears
Polar bears,Why polar bears are cool,Argument 1
Polar bears,Why polar bears are cool,Argument 1,Argument 2
Polar bears,Why polar bears are cool,Argument 1,Argument 2,Argument 3
As you can see, the layers in the third level of the layer tree are treated as frames, where the previous slides stay visible. If there are no sublayers of sublayers, we end up with a simple slide without any frames. Note that layers without sublayers such as _import_layer will not be added. You can use them for imports (see below).
To reuse common layers you can, in any layer (except root
), import
other layers by defining a text element whose first line starts with #import#
.
The subsequent lines should contain the name of layers to be imported. For
example:
#import#
_import_layer
_import_layer1
would make the two layers _import_layer
and _import_layer1
visible,
regardless of where in the presentation we are right now.
Note that only layers without sublayers can be properly imported.
If any of the layers in an #import#
block is prefixed with a -
(minus) sign,
it won't be imported but rather deleted from the current layer list. This is
particularly useful for the #master#
block (see below).
inkslides
searches for a text element starting with #master#
. The syntax is
similar to the #import#
structure. All layers you list in the master block are
visible on every single slide of your presentation. You may disable them by an
#import#
directive with one of the master layers prefixed with a -
. Note,
that the master block can appear anywhere in your SVG file.
The #master#
command can hence be seen as an #import#
for all slides,
which only has to be specified once.
If multiple #master#
blocks are found globally, or multiple #import#
blocks
are present in one layer, the first one is chosen and the others are ignored.
> inkslides example.svg
If you pass the parameter -t, --temp
, then no temporary files are
kept by inkslides
. This slows down the compilation but may help during
development or debugging.
In addition, you can give the -w, --watch
parameter. If it is
present, the program keeps running and watches the input SVG file for
changes. If changes are detected, the presentation is automatically recompiled.
Try not to embed images but link them to reduce file sizes.
To compress the output PDF files, you may use ghostcript. For example:
> gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dDownsampleColorImages=true -dColorImageResolution=150 -dCompatibilityLevel=1.4 -sOutputFile=$output $input
The idea and many concepts of this script are taken from inkscapeslide.
- Johannes Graeter: added slide enumeration
- Johannes Graeter: added structuring by layers