Writing Presentations in Org-mode Markup
For two years now, I am almost exclusively using the toolchain of org-mode+emacs+beamer+pdflatex to prepare my presentations for conferences and lectures. In this post, I want to share the basic setup to quickly reproduce for others. Disclaimer: If you have never used Emacs, then this method might not be very interesting for you.
Install
Install the org-mode for Emacs using ELPA. Make sure the mode is loaded when opening an .org file. Currently, I am using Emacs 24.5.1 (Org mode 8.2.7b).
Minimal Example
Create a test.org file in Emacs:
#+startup: beamer
#+LaTeX_CLASS: beamer
#+LaTeX_CLASS_OPTIONS: [presentation, aspectratio=54]
#+LANGUAGE: en
#+OPTIONS: H:2 num:t toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t
#+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+LATEX_HEADER: \input{../misc/SUTD-light}
#+latex_header: \AtBeginSection[]{\begin{frame}\frametitle{}\LARGE\insertsectionhead\vspace{0.1cm}\hrule\end{frame}}
#+TITLE: L1 - Introduction
#+AUTHOR: Nils Ole Tippenhauer
#+DATE: 50.020 Security/Spring term/2016
* This is a Section Title
** My first org-mode slide
- You can have bullet lists
- And sub-lists
- You can *highlight* words
- You can /emphasize/ words
I assume that you have the SUTD-light beamer theme installed in ../misc/, but you can also comment out that LATEX_HEADER line to get the default beamer style. Now, you should be able to compile this to slides by using “C-C C-e l O” Emacs magic. The output can be seen here: org-mode test
Images
To include a centered image into the slide, I normally use the following code, which should be self-explanatory
#+begin_center
#+ATTR_LATEX: :width \linewidth
#+RESULTS:
file:figs/greatFigure.png
#+end_center
Animations, Only
This is where things become a bit messy, but still easy enough. I normally use the “<2->” style animations to put additional bullet points or answers to questions on a slide. The additional text will be invisible at the beginning, but still influence the layout. The “only” style animations do not consider the later content in the first layout, so it is not as useful for text. I use it exclusively to do “manual” animations of figures. For that, I draw each animation step separately (in Inkscape), and exchange the images on each slide.
I use separate blocks for each. In my theme, the standard block actually has same colors as background, so it is invisible. You generate block code by starting a new heading (without title) with ***, and then using C-C C-B b. I then manually add the BEAMER_act line into the block header.
Uncover example:
- This will be displayed first
*** :B_block:
:PROPERTIES:
:BEAMER_env: block
:BEAMER_act: <2->
:END:
- Then this will appear on the second animation slide
Beamer-style “only” is also possible, by using a block like this:
- This will be displayed first
*** :B_block:
:PROPERTIES:
:BEAMER_env: onlyenv
:BEAMER_ACT: <2>
:END:
- Then this will appear on the second animation slide
To export the onlyenv, you need to add the following to your .emacs:
;; only env for org-mode beamer
(add-to-list 'org-beamer-environments-extra
'("onlyenv" "O" "\\begin{onlyenv}%a" "\\end{onlyenv}"))