Using Emacs as Presentation tool
Using Emacs as Presentation tool
Emacs is not just a editor, I found some hackers even use it to do presentations. So I collected some ways that emacs can become an presentation tool.Table of Contents
- 1 This article is not about…
- 2 epresent.el
- 3 Sacha Chua's source code.
- 4 Improved epresent.el
1 This article is not about…
First, I must make a clearly announcement about what this article is not about.
This article is not about how to make a pdf file style presentation using emacs as a editor,
and using anther tools like a pdf viewer to play this slides.
This article is about how to using emacs as an presentation style slides player.
This article is about how to using emacs as an presentation style slides player.
2 epresent.el
Epresent is an simple presentation mode for org-mode.
How to use it?
How to use it?
- load eprsent.el into emacs
- open a org file (present.org).
- M-x epresent-run
- press "t" to view the top level of presentation
- navigate the presentation with 'n', 'p', 't' and quit with 'q'.
3 Sacha Chua's source code.
Sacha Chua made an presentation for emacs conference 2013. You can get
her source code from this org style presentation file. And I extract the
mainly part as follows.
;;;;;;;;;;;;;; sacha's code (defvar sacha/org-show-presentation-file "~/Dropbox/Emacs Conference/public.org" "File containing the presentation.") (defvar sacha/org-show-slide-tag "slide" "Tag that marks slides.") (defvar sacha/org-show-slide-tag-regexp (concat ":" (regexp-quote sacha/org-show-slide-tag) ":")) (require 'eimp) ;; From org-pres--eimp-fit (defun sacha/org-show-eimp-fit () "Function used as a hook, fits the image found to the window." (when (eq major-mode 'image-mode) (eimp-fit-image-to-window nil))) (add-hook 'find-file-hook 'sacha/org-show-eimp-fit) (defun sacha/org-show-execute-slide () "Process slide at point. If it contains an Emacs Lisp source block, evaluate it. If it contains an image, view it and switch to that buffer. Else, focus on that buffer. Hide all drawers." (interactive) (find-file sacha/org-show-presentation-file) (org-narrow-to-subtree) (visual-line-mode) (let ((heading-text (nth 4 (org-heading-components)))) (cond ;; view images ((and (goto-char (point-min)) (re-search-forward "\\[\\[.*\\.\\(jpg\\|gif\\|png\\)" nil t)) (delete-other-windows) (let ((org-link-frame-setup '((file . find-file)))) (org-open-at-point)) (delete-other-windows) (goto-char (point-min))) ;; find and execute source code blocks ((and (goto-char (point-min)) (re-search-forward "#\\+begin_src" nil t)) (let ((info (org-babel-get-src-block-info))) (unwind-protect (eval (read (concat "(progn " (nth 1 info) ")")))))) (t (switch-to-buffer (current-buffer)) (text-scale-set 4) (org-show-subtree) (org-cycle-hide-drawers t) (org-display-inline-images) (delete-other-windows))) (set-frame-name heading-text))) (defun sacha/org-show-next-slide () "Show the next slide." (interactive) (find-file sacha/org-show-presentation-file) (widen) (goto-char (line-end-position)) (when (re-search-forward sacha/org-show-slide-tag-regexp nil t) (sacha/org-show-execute-slide))) (defun sacha/org-show-previous-slide () "Show the next slide." (interactive) (find-file sacha/org-show-presentation-file) (widen) (goto-char (line-beginning-position)) (when (re-search-backward sacha/org-show-slide-tag-regexp nil t) (sacha/org-show-execute-slide))) (global-set-key '[f5] 'sacha/org-show-previous-slide) (global-set-key '[f6] 'sacha/org-show-execute-slide) (global-set-key '[f7] 'sacha/org-show-next-slide)
4 Improved epresent.el
I studied both epresent.el and Sacha Chua's presentation for emacsconf-2013.
And I made some improvement to epresent.el according to Sacha's source code.
So I fork epresent.el to my github repository and here is the web link:
https://github.com/suzp1984/epresent
It make epresent to execute elisp source code according to the property name "EXECUTE".
It make epresent to execute elisp source code according to the property name "EXECUTE".
Comments
Post a Comment