I am a graduate student and recently I had to defend my master's thesis. For those unaware, a thesis defense is (in theory) a presentation about my thesis in front of a committee of professors who afterward decide whether I am worthy of graduating or not. In practice, most of the work was done by that point and I was basically a shoo-in. It was sort of high stakes, but not really.
I decided to make the slide deck for my defense in Emacs using the package org-present
. The reason I chose to do this was primarily for the memes. Most people would have used PowerPoint, LibreOffice, Beamer or another perfectly good tool that is less liable to break, but I just couldn't pass on an opportunity to fool around with Emacs.
A more serious reason that I decided to use org-present
for my thesis defense is because I saw it as an opportunity to do some "field testing" for the org-present
package. I wanted to see for myself whether org-present
was any good or not. So, not only was I giving a presentation about a research project, making my slide deck itself was also a research project.
Here is the configuration that I used.
(use-package visual-fill-column :ensure t :custom (visual-fill-column-width 110) (visual-fill-column-center-text t)) (defun nate/pretty-article-on () "Good for `org-mode' (sometimes), elfeed articles, walls-of-prose, etc." (interactive) (visual-line-mode 1) (visual-fill-column-mode 1) (display-line-numbers-mode 0) ;; Force window to update margins (set-window-buffer nil (current-buffer))) (defun nate/pretty-article-off () "Good for `org-mode' (sometimes), elfeed articles, walls-of-prose, etc." (interactive) (visual-fill-column-mode 0) (visual-line-mode 0) (display-line-numbers-mode 1) ;; Force window to update margins (set-window-buffer nil (current-buffer))) (use-package org-present :ensure t :init ;; Note: to exit org-present, use `org-present-quit' (C-c C-q) not ;; `org-present-end' (which goes to the last slide) ;; TODO: Add a check so that this only can be called in org mode (add-hook 'org-present-mode-hook (lambda () ;;(goto-char (point-min)) (org-present-big) (nate/pretty-article-on) ;; turn off tab bar mode and menu bar mode (tab-bar-mode 0) (menu-bar-mode 0) (org--latex-preview-region (point-min) (point-max)) (org-display-inline-images) (org-present-hide-cursor) (flyspell-mode 0) (flycheck-mode 0) )) (add-hook 'org-present-mode-quit-hook (lambda () (nate/pretty-article-off) (org-present-small) (tab-bar-mode 1) (menu-bar-mode 1) (org-remove-inline-images) (org-present-show-cursor) (org-clear-latex-preview (point-min) (point-max)) (flyspell-mode 1) (flyspell-buffer) (flycheck-mode 1) )))
As you can see, there is a lot of code here. Getting org-present to behave was far from a trivial task. To be honest, there is a risk involved in using this for a presentation because so much of it is customized. Again, the only way to gain confidence in something like this is through dog-fooding.
Notice that this configuration is tailored specifically for my personal Emacs set-up. For other configurations, it will likely need to be tweaked.