# Slideoff
Slideoff is a presentation tool. You write some slides in markdown, choose
a style and it displays it in HTML5. With a browser in full-screen, you can
make amazing presentations!
## Demo
Click here for a [demonstration](http://slideoff-test.dsiw-it.de/).
## Requirements
* **Ruby 1.9.3** or higher
* **Sass** for themes with sass files
* **CoffeeScript** for themes with coffee files
* **pygments** for syntax highlighting
* **wget** for static site generation
* **python3** for serving static presentation
* **git** for installing themes and make your slides version controlled
* **scp** for uploading to remote host via secure copy
* **wkhtmltopdf** for generating PDF
* **Browser** for viewing your presentation
## Features
* Write your slides in the simplest markup language `markdown`
* Very portable presentation. You only need to upload your presentation to your web server via `scp` and open your URL.
* Change the theme via overriding CSS in `style.css` or create a new one.
* Install different themes
* Export to pdf via `slideoff pdf`
* Use the best features from web technologies. Be dynamic and interactive via Javascript, easy styling via CSS, ...
## First presentation
1. Install ruby and some dependencies from Requirements section
1. `gem install slideoff` Install Slideoff
1. `slideoff init mypres` Initialize presentation in `mypres/`
1. `$EDITOR presentation.json` and add your Flickr API key
1. `$EDITOR main/index.md` Edit your slides
1. `slideoff serve` Start server
1. Open
1. Use the arrow keys to navigate between slides
## Themes
Several themes are available: `modern`, `io2012`, `shower`, `3d_slideshow`, `reveal`,
`html5rocks`, `CSSS` and `memories`. To choose the theme for your
presentation, edit the `presentation.json` file and change the `"theme"`
element.
**Attention: Some of the following features are only implemented in `modern` theme.**
Override some theme styles by using `style.css` in the presentation directory. Another way is to clone the theme via
`slideoff install_theme ` and make changes there. Be sure to use the correct theme name in `presentation.json`.
Assets are looked up in this order:
1. `./`
1. `.config/slideoff/themes//`
1. `installation_dir/themes//`
1. `installation_dir/themes/common/`
## Markup for the slides
This slides are written in [Markdown](http://daringfireball.net/projects/markdown/syntax)
and `!SLIDE` is the indicator for a new slide.
Example:
!SLIDE
# Title of the first slide
## A subtitle
And some text...
!SLIDE
# Another slide
* a
* bullet
* list
!SLIDE
# Third slide
1. **bold**
2. _italics_
3. https://github.com/
Many more additional elements are added. See `main/index.md` after initialization to get an example.
## Syntax Highlighting
To highlight some code in your slides, you have to install
[pygments](http://pygments.org/). Then, surround your code with backticks
like this:
```ruby
class Foobar
def baz
puts "Foobar says baz"
end
end
```
Different syntax highlighting styles exist in modern theme: `colorful`, `github`, `solarized-light`, `solarized-dark`
##Flickr integration
To integrate this [Flickr photo (22565509)](https://secure.flickr.com/photos/scoobymoo/22565509) you have to write this:
```
!F[22565509]
```
Only the ID of the photo is relevant. All other information like image source, title, author or license are requested via the Flickr
API. So it's important to generate a Flickr API key to have access to the API. You can do it on
. You have to specify this key in your `presentation.json`.
##Boxes
```
!SLIDE
#Boxes
+++
+++Normal box
+++Content
+++shadow
+++Box with shadow
+++Content
+++box-alert
+++Alert box
+++Content
```
##Description list
```
!SLIDE
#Description list
Elephant
: big animal
House
: big garage
Car
: big bike with four wheels
Smartphone
: smart mobile phone with touch display
```
##Change colors
Highlighting text with red background:
```
==red==text==
```
Red text:
```
__red__text__
```
##Incremental view of slide
If you like to display some information incrementally, you can do it! If you specify an additional slide class `incr-list`
and all `li`-HTML-Elements will be displayed after some key strokes. For example:
```
!SLIDE incr-list
* First item will be displayed after first key stroke
* Second item will be displayed after second key stroke
* Third item will be displayed after third key stroke
```
If you like to add some opacity to visited elements, you can add `incr-list hover` to `!SLIDE`.
If you don't like to always increment list items, you can do it more precise. You only have to add `!PAUSE` to your slide. For example:
```
!SLIDE
This paragraph will be displayed first.
!PAUSE
+++box-red shadow
+++Box
+++This box is displayed after one next key stroke.
```
Try it in your example presentation after initialization.
You can add many states to one slide via the following snippet:
```
!SLIDE
...
!STEPS[n]
```
After each keystroke on right a class `step-i` is added to the `.slide` element while `i` is a number betweet 0 and
`n-1`. So you can change your styling for these different states. For example you can translate an element via CSS.
After these `n` keystrokes the next slide will be displayed.
## Issues or Suggestions
Found an issue or have a suggestion? Please report it on
[Github's issue tracker](http://github.com/DSIW/slideoff/issues).
## Credits
Bruno Michel is the guy who made [Slide'em up](https://github.com/nono/slide-em-up) and Scott Chacon is the guy who made
[ShowOff](https://github.com/schacon/showoff). Slideoff is based on Slide'em up and Showoff.
Themes were picked from the internet. Thanks to:
- Hakim El Hattab for 3d_slideshow and reveal
- Google for html5rocks
- Vadim Makeev for shower
- Lea Verou for CSSS (and its modified version, memories)
- Google for io2012
♡2014 by DSIW. Copying is an act of love. Please copy and share.
Released under the MIT license