Are you busy clicking away at a slide deck for your next presentation? Want to try something a little different?
Non-nerdy folks following this blog, you’ll probably want to tune out now. Or not! I tried to write this for a wide audience, so come on down the rabbit hole if you dare.
Slides are for your Audience
Sometimes I give talks, and I like having a slide deck for these talks. It’s a useful and familiar idiom for most audiences, and it serves as a kind of roadmap as I walk through live demonstrations and deliver a message.
OpenOffice.org Impress, Powerpoint, or Google Docs all help you create a presentation. Sometimes these tools are fine, but sometimes they get in the way. Here’s an example.
I keep notes in plain text files. My notes look something like this:
making bread is fun smells great when baking yeast does the tricky work for you
Indented lines are subtopics of lines with less indenting. Hierarchical. Not fancy.
If I wanted to make this into a presentation, I could cut and paste it into some presentation-building software. Then format it. Then choose a nice background, save it, create PDFs, etc. But if I add to my notes, I have to also change the presentation. And I don’t want to open up Impress and start having to click fifty buttons and be compelled to pick a fancy background and diamond-swipe slide transition. Why can’t I just say “notes, become a presentation!”
For help, let’s turn to markup. When I say markup, I mean annotations to text that provide meaning. HTML is a kind of markup, for instance, but it doesn’t look great for a slideshow without a ton of work.
I dig markup. It’s generally readable. It encourages focusing on content/meaning over presentation/look & feel. It leverages powerful tools with consistent, deterministic results. Since markup is plain text, it can be usefully tracked/shared in version control.
There are lots of extensible, feature-rich markups, but I only considered lightweight markups to help with creating my presentation.
Then came the breakthrough: my notes are already markup!
Content is King
Sure, my presentation should look nice. But the important part about my presentation is the content. Trying to put aside text size and spacing, graphics, animations, backgrounds, and bullet-point styles can be difficult while creating a presentation using tools like Impress. Markup can help isolate you from these details while still allowing customization of presentation.
There are several tool that generate presentations from markup, such as S5, Beamer, and MagicPoint. S5 looks cool, and I like that it does everything in a Web browser. But I don’t like authoring HTML so much. I’ve used Beamer, but I don’t like writing LaTeX either. MagicPoint looks cool too, but I didn’t know about it until, well, just now.
I decided to write my own. I designed a very lightweight markup for generating input for Beamer. Then I let Beamer/LaTeX take care of the grunt work of pretty-printing the content, putting images in the correct place, and creating presentation slides and presenter notes.
Here’s how it works
Create a plain text file:
Save it as “food.txt”. Indent lines 2 and 3 with a tab. It’s the same source code as above. Just make sure the whitespace at the start of the lines is a tab character.
Install prerequisites.
- otl2beamer
- LaTeX, Beamer (I did this with “sudo apt-get install latex-beamer” on Ubuntu)
Run “otl2beamer”, then “pdflatex”, like so:
otl2beamer.py food.txt > food.tex pdflatex food.tex
Among the generated files will be food.pdf, the presentation.
The indentation in the plain text file has meaning. Here’s the basic markup syntax:
- No indent? Slide title.
- Indented? Bullets.
- Doubly-indented? Sub-bullets.
It does more, too. If anyone’s interested, I’ll document the other features.
Why in Sam Hill would I do all that?
I wouldn’t recommend using a markup-based presentation tool for a single presentation, but if you give talks often and are looking for a good way to manage your content, give it a shot! The setup time is significant, but the ongoing time savings, focus on content, and process improvement might just be worth it.
Sundries, Parting Shots
These are odds and ends an editor would likely toss had I an editor and were this ever sent to print.
- first mention of otl2beamer
- otl2latex – I probably wouldn’t have written otl2beamer had I found otl2latex first
If you’re saying “who needs slides, anyway?” but still want to show the audience something, you could do what Damian did: present your talk in a text editor. He wrote a talk on Vim, presented in Vim. I couldn’t convince him to release his presentation source, but I imagine it was just a gigantic Vim script.
I’ve been dying to use AsciiDoc for something.
I’ve created a Makefile to simply use of otl2beamer, as well as some magic for the Vim text editor to run the Makefile (and process the result) within Vim. Lastly, here’s a more extensive example presentation.
Update (2010-10-09): Thanks to Brian for turning me on to txt2tags, a tool which converts minimal wiki-like text to an impressive array of output formats. Especially interesting is the use of TeXtallion for writing ebooks.
Or you could use http://orgmode.org/worg/org-faq.php#Export
The same way that slides are for your audience, having to focus on the output media of your structured content is for people who don’t use systems that are flexible enough to accommodate mixed end states :)
ps – RMS hates it when you include vi screenshots in your blog.
Troll much? :)
I don’t understand what you’re saying.
vimoutliner also exports to HTML too, it just doesn’t look pretty.