Skip to content

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Latest commit

 

History

64 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

org-slideboard: present Org files as slides, in Emacs

org-slideboard shows an Org file as slides inside Emacs. It is made for files written for beamer export: beamer columns, equations, tables, macros and code blocks are shown much as they would be in the PDF, while the text stays live Org that can be edited, and code that can be run, during the presentation.

For a tour, open demo.org and run M-x org-slideboard-start-slideshow to see a presentation about org-slideboard, in which each slide uses the feature it describes. It also serves as a template for your own presentations.

Installation

org-slideboard is not yet on MELPA, so install it from this repository.

With Emacs 30 or later, use-package can fetch it directly:

(use-package org-slideboard
  :vc (:url "https://github.com/vikasrawal/org-slideboard")
  :commands org-slideboard-start-slideshow)

With Emacs 29, install it once with M-x package-vc-install RET https://github.com/vikasrawal/org-slideboard RET, then use (use-package org-slideboard :commands org-slideboard-start-slideshow). M-x package-vc-upgrade updates it.

With straight.el:

(use-package org-slideboard
  :straight (:host github :repo "vikasrawal/org-slideboard")
  :commands org-slideboard-start-slideshow)

Or clone the repository and add it to the load path:

(add-to-list 'load-path "/path/to/org-slideboard")
(require 'org-slideboard)

Once it is on MELPA, (use-package org-slideboard :ensure t) will be enough.

It needs Emacs 28.1 and Org 9.6 or later. org-modern, ESS and python-mode are used when installed, but are not required.

org-slideboard does not bind function keys, which Emacs reserves for users; see Changing the keys to add your own.

Overview

org-slideboard offers:

  • Beamer columns side by side: frames with :BMCOL: / :BEAMER_col: children are shown as a title strip above one window per column.
  • Images fitted to the column: plots are drawn by org-slideboard itself and scaled to the width and height of their window.
  • Text size under your control: all frames of all slides share one text size, which C-= and C-- change; C-c } and C-c { (or Emacs’s zoom keys) change a single frame. Titles keep their size.
  • Information strip: a line at the bottom (or top) of every slide with author, title, slide number, or whatever you choose.
  • Aligned tables: tables are aligned to what is displayed, including expanded macros, equation images and proportional fonts.
  • Reflowed paragraphs: hard-wrapped source lines are joined on screen, as LaTeX would do.
  • Clutter hidden: property drawers, #+NAME:, #+RESULTS:, #+ATTR_*: lines, non-exported source blocks and raw LaTeX lines are not shown.
  • Equations sized to the text: LaTeX math is previewed at the size of the text and follows it when the size changes, and beamer-only #+LATEX_HEADER: lines no longer leak into the equation images.
  • Macros expanded: {{{macro(...)}}} is shown as its expansion, and a macro can be given its own definition for the show.
  • Code and results: a slide can show only the results of a source block, or the results above its code (or beside it); C-c C-c updates the results, and editing the block shows it next to a running R or Python REPL.
  • Title page and section pages: generated (and animated) from #+TITLE, #+AUTHOR, #+DATE and from the headings above the slides.
  • Beautification during the presentation only: org-modern, variable-pitch text and hidden emphasis and macro markers are switched on for the presentation and turned off afterwards.
  • COMMENT headings skipped, as in beamer export.

Preparing a presentation

Slides

A slide is a heading with the :slide: tag. For a beamer file with #+OPTIONS: H:2, tag every level-2 heading:

* Section title
** Frame title                                                     :slide:

Add tags:nil to #+OPTIONS so the tag is not printed in the beamer output:

#+OPTIONS: toc:nil H:2 tags:nil

To tag all level-2 headings of a file at once, evaluate this in the file’s buffer:

(org-map-entries (lambda () (org-toggle-tag "slide" 'on)) "LEVEL=2")

Slides under a COMMENT heading (or with COMMENT in their own heading) are skipped, so the presentation has the same frames as the PDF. Un-commenting a heading brings its slide back, since it keeps its tag.

Columns

Columns are written exactly as for beamer: children of the slide heading with a BEAMER_col property (or the BMCOL tag).

** Title                                                           :slide:
*** Left                                                           :BMCOL:
:PROPERTIES:
:BEAMER_col: 0.5
:END:
[[file:image-8.png]]

*** Right                                                          :BMCOL:
:PROPERTIES:
:BEAMER_col: 0.45
:END:
+ First point
+ Second point

The column widths on screen are proportional to the BEAMER_col values. A column without a width gets an equal share. Text between the slide heading and the first column is shown in a full-width frame above the columns.

Title page

The title page is made from these keywords:

KeywordShown as
#+TITLE:title (bold)
#+SUBTITLE:subtitle
#+AUTHOR:author (italic)
#+DATE:date (italic)

LaTeX in these values is tidied up: \\ starts a new line, \today becomes today’s date, \and becomes a comma, and other commands are dropped while their text is kept. Empty keywords are left out. Without #+TITLE, the file name is used, as beamer does.

Section pages

A section page is shown before the first slide under each heading that sits above the slides, e.g. each level-1 heading when the slides are level-2 headings. A section whose slides are all commented out gets no page.

Running the presentation

Starting and stopping

CommandDoes
M-x org-slideboard-start-slideshowstart at the beginning (the title page)
M-x org-slideboard-open-slidestart at the slide containing point
M-x org-slideboard-stop-slideshowstop and restore the buffer

During the show, an org-slideboard menu in the menu bar has these commands and the others of the show.

Stopping removes the column windows and their buffers, un-hides everything, turns off the beautification modes that the presentation turned on, and widens the buffer.

Starting and stopping do not change the buffer: the tags of slide headings are hidden with overlays.

Keys

During a show, these keys work in the windows of the slides: the title strip, the frames, and the title and section pages.

KeyCommand
PgDnnext step, or the next slide
PgUpprevious step, or the previous slide
C-c C-fnext section
C-c C-bstart of this section, or the previous
C-c ;show the current slide again
C-=larger text in all frames of all slides
C--smaller text in all frames of all slides
C-c }larger text in the selected frame only
C-c {smaller text in the selected frame only
C-c >everything larger: text, titles, header
C-c <everything smaller
M-ESC ggo to slide number
M-ESC ttable of contents
M-ESC qstop the presentation
M-ESC psave the slides as a PDF
M-ESC 0text and frame sizes back to the start
M-ESC eall slides editable, or all read-only

They are not active in other buffers, such as a REPL, another file or the buffer where a code block is edited, so your own keys keep working there during the show. They avoid C-c plus a letter, which are yours. C-c ;, C-c { / C-c } and C-c < / C-c > are keys Org itself uses (commenting a heading, table formula tools, and the calendar); in slide windows the show’s keys take precedence, and everywhere else they keep their Org meaning. If you need those Org commands during a show, or any of these keys clash with your own, change them as described below.

On a slide with code and results (see Code and results), these work in the code window:

KeyCommand
C-c C-crun the code and show the new results
C-c 'edit the code next to a running REPL (or your own key for org-edit-special)

Changing the keys

The keys of the show are in org-slideboard-keys-mode-map, and those of the code window in org-slideboard-code-mode-map. To change, add or remove a key, set it in the map after org-slideboard is loaded:

(with-eval-after-load 'org-slideboard
  ;; your own keys for the text size, instead of C-= and C--
  (define-key org-slideboard-keys-mode-map (kbd "C-=") nil)
  (define-key org-slideboard-keys-mode-map (kbd "C--") nil)
  (define-key org-slideboard-keys-mode-map (kbd "<f9>") #'org-slideboard-increase-text-size)
  (define-key org-slideboard-keys-mode-map (kbd "S-<f9>") #'org-slideboard-decrease-text-size)
  ;; function keys
  (define-key org-slideboard-keys-mode-map [f6] #'org-slideboard-execute-slide)
  (define-key org-slideboard-keys-mode-map [f7] #'org-slideboard-next-slide)
  (define-key org-slideboard-keys-mode-map [f8] #'org-slideboard-previous-slide))

A key set to nil falls back to your own binding. With Emacs 29 or later, keymap-set does the same, e.g. (keymap-set org-slideboard-keys-mode-map "<f6>" #'org-slideboard-execute-slide). With use-package, use :bind with :map:

(use-package org-slideboard
  :bind (:map org-slideboard-keys-mode-map
         ("<f6>" . org-slideboard-execute-slide)
         ("C-c ;" . nil)))

Keys bound globally, e.g. (global-set-key (kbd "<f5>") #'org-slideboard-start-slideshow), also work in slide windows unless the show uses the same key.

Emacs’s own zoom keys (C-x C-=, C-x C--, C-x C-0, Ctrl+mouse wheel) change the size of the selected frame during a show, see Text size. To keep them as plain Emacs zoom, set org-slideboard-zoom-resizes-frame to nil.

Table of contents

M-ESC t lists all slides, including “Title page: …” and “Section: …” entries, as links. Clicking a link goes to that slide; q closes the list.

Saving the slides as a PDF

M-x org-slideboard-export-pdf (M-ESC p during the show) saves the presentation as a PDF, one page per slide, drawn exactly as it is shown: the columns, fonts, equations, and faded and highlighted steps. Title and section pages are included, without the animation, and a slide built up in steps gets a page for each step, as in a beamer PDF; with org-slideboard-export-steps set to last (or #+SLIDEBOARD: export-steps:last), it gets only its last step.

The pages are vector PDF, so the text stays sharp, and they have the size of the Emacs frame: make the frame the shape you want (e.g. full screen) first. The show is started if it is not running, and stopped again at the end; otherwise it comes back to the slide it was on.

This needs Emacs built with Cairo (CAIRO in system-configuration-features), and pdfunite (poppler), qpdf or Ghostscript to join the pages.

Editing during the show

The column windows show indirect buffers of the presentation file, narrowed to the column. Their text is the file’s text, so edits made during the show go straight into the file.

How slides are displayed

Layout

  • Each slide has a title strip at the top, with its heading, and below it one or more frames (windows, with mode lines hidden):
    • the body of a slide without columns;
    • text between the heading and the first beamer column or code block, in a full-width frame;
    • one frame per beamer column, and for code and results (see Code and results).
  • Title and section pages use a separate buffer, *org-slideboard-page*, with the text centred. If org-slideboard-animate-pages is on, the lines are animated in; any key press skips the animation.

Information strip

Every slide has a one-line strip at the bottom, like beamer’s footline, with the author on the left, the title in the middle and the slide number on the right. Title and section pages have none. What it shows is set by org-slideboard-footline, a list of up to three parts, shown left, centre and right:

(setq org-slideboard-footline '("%a" "%t" "%n / %N"))   ; the default

In each part these are replaced; any other text is shown as it is:

EscapeReplaced by
%ttitle (#+TITLE:)
%ssubtitle (#+SUBTITLE:)
%aauthor (#+AUTHOR:)
%ddate (#+DATE:)
%Sthe section heading above the slide
%hthe heading of the slide
%nnumber of the slide
%Nnumber of slides
%%a %

Some examples:

;; section on the left, date on the right, nothing in the middle
(setq org-slideboard-footline '("%S" "" "%d"))
;; any text
(setq org-slideboard-footline '("Workshop on food balance sheets, Rome" "" "%n / %N"))
;; a part can be a function, called at the slide heading
(setq org-slideboard-footline
      (list "%a" "%t" (lambda () (format-time-string "%H:%M"))))
;; at the top instead
(setq org-slideboard-footline-position 'top)
;; no strip
(setq org-slideboard-footline nil)

For one presentation:

#+SLIDEBOARD: footline:("%a" "%S" "%n / %N") footline-position:top
#+SLIDEBOARD: footline:nil

(In a file, the parts must be strings; functions can only be set in your configuration.) The title, author and date are tidied as on the title page: LaTeX line breaks and commands are removed and macros expanded. The strip uses the face org-slideboard-footline (grey, a little smaller than the text) and is not changed by the size keys.

Header

A heading tagged :header: is shown above the title of every slide. It is written like a slide: its beamer columns are the left, centre and right parts of the header, and they can have formatted text, macros and images. Tag it :noexport: as well, so the beamer export leaves it out.

* Header                                                    :header:noexport:
** Left                                                               :BMCOL:
:PROPERTIES:
:BEAMER_col: 0.3
:END:
[[file:logo.png]]
** Centre                                                             :BMCOL:
:PROPERTIES:
:BEAMER_col: 0.4
:END:
#+begin_center
*Food Balance Sheets*, {{{date}}}
#+end_center
** Right                                                              :BMCOL:
:PROPERTIES:
:BEAMER_col: 0.3
:END:
#+begin_flushright
/Rome, 2026/
#+end_flushright
  • The parts are laid out like beamer columns: each starts at the left of its share of the width (its BEAMER_col value), and its lines can be centred in it with #+begin_center or put flush right with #+begin_flushright, which beamer understands too. A part wider than its share pushes the next one to the right. A header without columns is one part, the whole width.
  • A percentage width on an image (#+ATTR_ORG: :width 20%) is a share of its part, and images are kept within their part.
  • A \vspace{0.5cm} line in a part adds blank space there, e.g. below the text to leave room above the slide title (see Vertical space); blank lines at the end of a part are dropped. Other raw LaTeX lines are left out of the header.
  • The header is as high as its content, up to org-slideboard-header-height (0.15) of the frame; images are scaled to fit. An #+ATTR_ORG: :height 40 line above an image in the header sets its size. Its text size is org-slideboard-header-text-scale (0).
  • Its look is the face org-slideboard-header, which is the default face of the header: a :background gives a band of colour across the slide. The beautify modes of the slides (e.g. variable-pitch-mode) apply to it too.
  • The header is shown on the slides and on the section pages. A slide, or a section with all its slides, with the property SLIDEBOARD_HEADER set to nil has no header. The title page has none.
  • The tag is org-slideboard-header-tag.

Images

Image links ([[file:plot.png]]) are drawn by org-slideboard with their own overlays. Each image is scaled down to at most org-slideboard-image-width-fraction of the window width and org-slideboard-image-height-fraction of its height.

An #+ATTR_ORG: line above an image sets its own size, with :width or :height in pixels or as a percentage of the window; the limits above still apply. It can come before or after other attribute lines such as #+ATTR_LATEX: or #+RESULTS:, so the beamer export keeps its own size:

#+ATTR_ORG: :width 60%
#+ATTR_LATEX: :width 0.5\textwidth
[[file:plot.png]]

Drawings made with el-easydraw ([[edraw:file=drawing.edraw.svg]] and [[edraw:data…]]= links) are shown the same way when el-easydraw is loaded: scaled to their window or column, and sized by #+ATTR_ORG: like other images. Clicking a drawing during the show still opens el-easydraw’s editor. Without el-easydraw, the links are shown as links.

This does not depend on org-image-actual-width or other inline image settings. An image file that has changed since it was last shown, e.g. a plot rewritten by a code block, is read again, so C-c ; (or C-c C-c in a code window) shows the new version rather than the one Emacs cached. When the presentation stops, the image previews are put back as they were: Org’s inline images (and el-easydraw’s drawings) are shown again if they were shown before the show, and not otherwise.

Text size

Each part of the show has its own text size: the frames of a slide (org-slideboard-text-scale, 2), the slide titles (org-slideboard-title-text-scale, 2), the header (org-slideboard-header-text-scale, 0) and the title and section pages (org-slideboard-page-text-scale, 5). Text is never shrunk to fit.

C-c > and C-c < change all of them together, one step at a time, so everything on the slides grows or shrinks and the titles keep their size relative to the text. The keys below change the frames only.

All frames of all slides start at org-slideboard-text-scale (2, in steps of text-scale-mode). There are two ways to change it during the show:

KeysChanges
C-= / C--all frames of all slides
C-c } / C-c {the selected frame of this slide only
Emacs zoom: C-x C-=, C-x C--, Ctrl+wheelthe selected frame of this slide only
C-x C-0the selected frame back to the common size
C-c > / C-c <everything: text, titles, header and pages
M-ESC 0everything back to how the show started (text and frame sizes)

A frame changed on its own keeps its size when you come back to the slide, and moves with C-= / C--: a frame one step larger stays one step larger than the others. Use it for a slide with more text than fits in one of its frames. M-ESC 0 undoes all of it at once: every frame of every slide goes back to the size the show started with. Stopping the show does the same, so the next show starts at the usual size again. To keep Emacs’s zoom keys as plain zoom, which is lost when the slide is shown again, set org-slideboard-zoom-resizes-frame to nil. All these keys can be changed, see Changing the keys.

To start every show at another size, set org-slideboard-text-scale, or #+SLIDEBOARD: text-scale:3 for one presentation (title-scale: for titles).

One slide (or all the slides of a section) can have its own sizes, e.g. smaller text for a slide with a wide table:

** Processed products                                          :slide:
:PROPERTIES:
:SLIDEBOARD_TEXT_SCALE: -1
:SLIDEBOARD_TITLE_SCALE: 1
:END:

SLIDEBOARD_TEXT_SCALE can also be set on a beamer column, for the text of that column only; the other columns keep the slide’s size.

The values are like those of text-scale: and title-scale:: steps of text-scale-mode (×1.2 each by default) from the size of Emacs’s default face, 0. Negative values make text smaller than that, e.g. -1 is about 0.83 and -2 about 0.69 times it; the usual slide text, 2, is about 1.44 times it. The keys above still work on such a slide: C-= / C-- and C-c > / C-c < move it by as many steps as the other slides, and C-c { / C-c } change its frames on top of that.

The size of equations relative to the text can be set the same way, for a slide, a section or a beamer column, with SLIDEBOARD_LATEX_SIZE. It replaces org-slideboard-latex-size (latex-size:, 0.8 by default) there, e.g. for a formula made of \text{...} that looks too large:

** Supply                                                      :slide:
:PROPERTIES:
:SLIDEBOARD_LATEX_SIZE: 0.6
:END:

Resizing frames

Code and results start with org-slideboard-src-code-width (0.5) of the space for the code, and beamer columns with their BEAMER_col widths. When that does not suit the content, change it during the show:

  • Drag with the mouse the line between two frames: the grey bar between code and results one above the other, or the divider between frames side by side (org-slideboard-divider-width, 6 pixels, only during the show).
  • Or use Emacs’s keys in a frame: C-x ^ makes it taller, C-x } and C-x { wider and narrower.

The slide is then shown again with the new sizes, so plots are scaled to their new window, and the slide keeps these sizes when you come back to it. This works for code and results, for code and results inside a column, and between beamer columns. M-ESC 0 puts all frames back to their usual sizes, as does stopping the show.

Equations

LaTeX math ($...$, \(...\), \[...\], $$...$$ and environments such as equation or align*) is previewed as images, as with C-c C-x C-l, and laid out for the slides:

  • Sized to the text: equations are shown at org-slideboard-latex-size (0.8) times the size of the text font. The 10pt LaTeX font is matched to the text font by measuring a preview image, so this works with any font, with variable-pitch-mode, and whatever :scale is set in org-format-latex-options. Use 1.0 for math as large as the text.
  • Follows the text: equations grow and shrink with the text when its size is changed with C-= / C--.
  • Sharp: the images are rendered at org-slideboard-latex-scale (4.0) and displayed smaller. With dvisvgm (SVG) they are sharp at any size; with dvipng a higher render scale gives sharper but slower images.
  • New latex preview: with the org-latex-preview library of Org’s development branch (Org 10), Org itself sizes the images to the text and makes them in the background. org-slideboard then uses it: equations are still shown at org-slideboard-latex-size, centred if asked and kept free of beamer settings, but org-slideboard-latex-scale is not used. Each equation is set up as soon as its image is ready.
  • Faster equations: with Org 10, only pdflatex can reuse a precompiled preamble, so it is much faster than xelatex. If your files need xelatex for export (e.g. fontspec), set org-slideboard-latex-compiler to "pdflatex" and leave the fontspec lines out of the slide previews with org-slideboard-latex-preview-drop-regexp.
  • Left aligned: display equations start at the left margin, like the text. Set org-slideboard-center-display-math to t to centre them in the window or column, as LaTeX does. Inline math always stays in the text.
  • Own lines: display equations inside a paragraph keep their own lines when the paragraph is rewrapped.
  • Never wider than the window: numbered environments such as equation are as wide as a LaTeX page, since the number is at the right margin, so they may be shrunk to fit. For big equations, use equation* or \[...\].
  • Named equations: an environment with a #+NAME: line is shown; the name line is hidden with the other clutter.
  • No beamer settings in the images: Org previews equations with the article class, but adds the file’s #+LATEX_HEADER: lines. Beamer commands there, such as \setbeamersize{description width=0.1cm}, are unknown to article, and LaTeX prints their arguments in every equation. During the show, lines matching org-slideboard-latex-preview-drop-regexp (\setbeamer..., \use...theme, \AtBegin..., \logo, \titlegraphic, \institute) are left out of the preview preamble. Other headers, such as \usepackage{amsmath} or \newcommand, are kept. Outside the show, C-c C-x C-l still uses the full preamble.

When the presentation stops, the equation images are removed, since they were made for the slides; press C-c C-x C-l to preview again. The images are cached (in ltximg/, see org-preview-latex-image-directory), so a slide is slow only the first time it is shown.

For example, for slightly larger, centred equations in one presentation:

#+SLIDEBOARD: latex-size:1.0 center-math:t

For one slide, section or beamer column, use the SLIDEBOARD_LATEX_SIZE property (see Text size).

Fonts in equations

The text of a slide is drawn by Emacs, in its own font (sans-serif with variable-pitch-mode, for instance), but an equation is an image made by LaTeX. Words in an equation, such as \text{Production} or \mathrm{d}x, are therefore in LaTeX’s document font: Computer Modern Roman, a serif font, unless the preamble sets another. The fontspec lines that set the font of a beamer export with xelatex are not read by pdflatex, and are usually left out of the previews (see org-slideboard-latex-preview-drop-regexp), so they do not help here.

For sans-serif words in equations, as in beamer, set the font in a #+LATEX_HEADER: line, which the previews use too and beamer export accepts:

#+LATEX_HEADER: \renewcommand{\familydefault}{\sfdefault}

This gives Computer Modern Sans. For a closer match to the slide font, load a pdflatex package for that font instead, e.g. \usepackage[sfdefault]{FiraSans} for Fira Sans, and make sure org-slideboard-latex-preview-drop-regexp does not leave the line out. Math letters such as x stay italic either way.

Macros

Org macros ({{{name(arguments)}}}) are shown on the slides as their expansion, with overlays, so the file is not changed. Many macros expand to LaTeX that means nothing on screen, so a macro can be given a separate definition for the show. The expansion is chosen in this order:

  1. A #+SLIDEBOARD_MACRO: line in the file, written like a #+MACRO: line. Beamer and other exporters ignore it. For example, to show only the text of a cell-colour macro:
    #+MACRO: cc @@latex:\cellcolor{$1}$2@@
    #+SLIDEBOARD_MACRO: cc $2
        
  2. An entry in org-slideboard-macro-templates, in the configuration. The template is a string like the above, or a function that gets the arguments and returns the text to show, which may have faces. For example, to show the text on a coloured background:
    (setq org-slideboard-macro-templates
          '(("cc" . (lambda (color text)
                      (propertize text 'face `(:background ,color))))))
        
  3. Org’s own expansion, as in export: the #+MACRO: definitions and the built-in macros ({{{title}}}, {{{author}}}, {{{date}}}, {{{time(%Y)}}}, {{{n}}}, {{{keyword(...)}}}, {{{property(...)}}} and so on). Export snippets for other back-ends, such as @@latex:...@@, are left out. The contents of @@slideboard:...@@ snippets are kept, so one #+MACRO: line can also carry its show version:
    #+MACRO: cc @@latex:\cellcolor{$1}$2@@@@slideboard:$2@@
        

A macro whose expansion is empty is left out of the slide, with the blanks after it. That is a macro for other back-ends only, e.g. #+MACRO: SC @@latex:\SetCell[r=$1,c=$2]{c}@@, so a table cell {{{SC(2,1)}}} Crops shows Crops; or one with an empty show definition, #+SLIDEBOARD_MACRO: SC. A macro that is not defined at all is left as it is, with its braces hidden (org-slideboard-hide-macro-markers).

Expansions are shown as Org text: *bold* and /italic/ in an expansion look as they do on the slide, and macros inside an expansion are expanded too. Macros in #+TITLE, #+AUTHOR etc. are expanded on the title page. #+MACRO: definitions that evaluate Lisp ((eval ...)) are not expanded, so starting a show never runs code from the file; use org-slideboard-macro-templates for those. Tables with macros stay aligned, see Tables.

To turn expansion off, set org-slideboard-expand-macros to nil (or #+SLIDEBOARD: macros:nil).

Tables

Org aligns a table by the characters in the file, but on a slide a cell can show something of another width: an expanded macro, an equation image ($\times$), or text in a proportional font. During the show, every Org table is aligned to what is actually displayed: the width of each cell is measured in the window, and the blanks around it are shown as space of the right width, so the | separators line up. Numbers, which Org aligns to the right, stay right-aligned, and horizontal rules are drawn to the column widths. This is redone whenever the text size changes.

Only the display changes; the file is not. To keep Org’s own layout, set org-slideboard-align-tables to nil (or #+SLIDEBOARD: align-tables:nil).

A row of column width and alignment cookies, such as | <l> | <r10> | (see Column Width and Alignment in the Org manual), is hidden on the slides, as export leaves it out, and does not count for the column widths. Org still aligns the cells as the cookies say. Like other clutter, it stays visible if org-slideboard-hide-clutter is nil.

Merged cells

Org tables cannot merge cells, so org-slideboard has its own markers: a cell that holds just << is part of the cell on its left, and one that holds just ^^ is part of the cell above. The text stays in the first cell.

| Production | <<    | Trade   |
|------------+-------+---------|
| Area       | Yield | Exports |
| Crops      | Wheat |      10 |
| ^^         | Rice  |      20 |

On the slide, Production is centred across two columns, the cell below Crops is blank, and a rule inside a merged cell is not drawn across it. To Org it is an ordinary table, so editing, TAB and formulas work as usual.

In LaTeX and beamer export, a cell merged across columns becomes \multicolumn{2}{c}{Production} (and the << cells are left out), and one merged across rows \multirow{2}{*}{Crops}, which needs \usepackage{multirow} (e.g. in a #+LATEX_HEADER: line). No other package is needed. Other back-ends leave the merged cells empty. The export changes only the copy that is exported, never the file; set org-slideboard-export-table-spans to nil to leave tables alone. The markers are set by org-slideboard-table-span-markers.

The text of a merged cell is centred; a cell merged across rows has its text in its top row.

Code and results

A slide with a source block can show only the block’s results, only its code, or both. This is set by org-slideboard-src-display:

ValueShows
exportswhat each block’s :exports says (the default): code, results, both or none
resultsonly the results of every block
boththe code and the results of every block

It can be set for the whole presentation, for one file or for one slide (or all slides of a section, since the property is inherited):

#+SLIDEBOARD: src:both

** Growth of the herd                                                 :slide:
:PROPERTIES:
:SLIDEBOARD_SRC: results
:END:

The drawer is hidden on the slide, and beamer export ignores both. Blocks with :exports none are always hidden. Code that is shown is no longer folded to its #+begin_src line.

Arranging code and results

With both, the first such block of a slide is shown like beamer columns: text before the block at the top, then the code and the results, with any text after them, in two windows. They are arranged by org-slideboard-src-split:

ValueCodeResults
lrleftright
rlrightleft
tbtopbottom
btbottomtop

The value names where the code goes and then where the results go, like rankdir in Graphviz (LR, TB). bt, the results above the code, is the default.

A number from 1 to 99 after the value is the results’ share, in percent, of the height (tb, bt) or of the width (lr, rl): tb60 puts the code at the top and gives the results at the bottom 60% of the height, and lr30 gives the results on the right 30% of the width. Without a number, the code gets org-slideboard-src-code-width (0.5).

It can be set for the whole presentation, for one file, and for one slide or section with the property SLIDEBOARD_SRC_SPLIT:

#+SLIDEBOARD: src-split:tb

** A long plot                                                        :slide:
:PROPERTIES:
:SLIDEBOARD_SRC_SPLIT: tb60
:END:

Without a share in the value, org-slideboard-src-code-width (0.5) is the code’s share of the width (side by side) or of the height (top to bottom). Plots in the results are scaled to their window. The code window shows the whole block, including its #+begin_src and #+end_src lines. When code and results are one above the other (tb, bt), a grey bar in the face org-slideboard-divider separates them; its :background sets the colour and its :height the thickness. Drag it to change their heights, see Resizing frames.

Code in a beamer column

When a beamer column holds a block to be shown with its results, that column is divided in two: its text before the block and the code in one window, and the results with any text after them in the other. The column heading can have its own SLIDEBOARD_SRC and SLIDEBOARD_SRC_SPLIT, e.g. to show the code of a block exported as results only, with the results below the code:

*** Model                                                              :BMCOL:
:PROPERTIES:
:BEAMER_col: 0.6
:SLIDEBOARD_SRC: both
:SLIDEBOARD_SRC_SPLIT: tb
:END:

SLIDEBOARD_SRC_SPLIT (and src-split:) only arrange code and results that are both shown; whether the code is shown at all is set by SLIDEBOARD_SRC (src:) or, by default, the block’s :exports.

Each column is divided on its own, so several columns can each show code and results. All windows of the slide get the same text size.

Running the code

In the code window, C-c C-c runs the block, as it would in Org, and shows the slide again with the new results, keeping point in the code. In a column’s code window, which also holds the text before the block, it runs the block even when point is in that text. The results are written to the file as usual. Running a block of the presentation any other way during the show also updates the slide.

Editing with a REPL

Opening the block for editing in the code window (C-c ', or whatever key runs org-edit-special) shows the editing buffer, e.g. ESS R mode, on the left and a running REPL on the right, where the code can be evaluated with the usual keys (C-RET, C-c C-c in ESS; C-c C-c in Python mode).

  • A block with a :session uses that session, in any language.
  • A block without one gets the REPL from org-slideboard-src-repl-functions: ESS R for R and run-python for python, started if not running. For ESS, the editing buffer is connected to that R process.

Closing the editor (C-c ' or C-c C-k) shows the slide again, with the edited code. The REPLs keep running after the show. To add a language, give a function that returns the REPL buffer, e.g. for Julia with the julia-repl package:

(add-to-list 'org-slideboard-src-repl-functions
             '("julia" . (lambda ()
                           (save-window-excursion (julia-repl))
                           (get-buffer "*julia*"))))

Paragraphs

Line breaks inside a paragraph are displayed as spaces, so hard-wrapped source text is rewrapped to the column width. The file is not changed.

Vertical space

A \vspace{1cm} line (on its own, or as #+BEAMER: \vspace{1cm} or #+LATEX: \vspace{1cm}) is shown as blank space of that height, so the same line adds space on the slide and in the beamer PDF:

First paragraph.

\vspace{1cm}

Second paragraph, 1cm lower.

The space takes the place of the blank lines around it, which in beamer only end the paragraphs. Lengths in cm, mm, in, pt, em, ex and \baselineskip are converted as on a beamer slide with 11pt text (a line is about 0.48cm), in lines of the slide’s text, so the space grows with the text size. A negative \vspace, often used to pull content up in beamer, is hidden. Plain blank lines also show as blank lines on a slide, but beamer ignores more than one.

Margins

By default the text runs from one edge of the frame to the other. org-slideboard-margins leaves blank space at the left and right of the slides: a fraction of the frame width for both sides, or a list (LEFT RIGHT) of two fractions. Only the outer edges get a margin, not the space between frames side by side. The title and the frames are indented, and images are scaled to fit inside the margins; the information strip and the title and section pages are not changed.

(setq org-slideboard-margins 0.08)          ; 8% on each side
(setq org-slideboard-margins '(0.1 0.05))   ; 10% left, 5% right

For one presentation, use #+SLIDEBOARD: margins:0.08. For one slide, or all the slides of a section, use the property SLIDEBOARD_MARGINS:

** A quote                                                         :slide:
:PROPERTIES:
:SLIDEBOARD_MARGINS: (0.2 0.2)
:END:

Step by step (beamer overlays)

A slide can be built up in steps, as with beamer overlays. The key for the next slide shows the next step of the slide first, and the key for the previous slide goes back a step; going back to a slide shows it at its last step, as a beamer PDF does. The same Org syntax is used, so the beamer export builds the slide up in the same way:

  • A list with an overlay: #+ATTR_BEAMER: :overlay <+-> before a list shows its items one at a time.
  • An item with its own step: an export snippet at the start of the item, e.g. - @@beamer:<3->@@ Comes at step 3 (or @@b:<3->@@). It overrides the list’s overlay.
  • A heading with a step: a heading inside the slide, such as a block or a column, with the property BEAMER_ACT, e.g. <2->.
  • A pause: #+BEAMER: \pause (or a \pause line) shows the rest of the slide at the next step.
** A slide in steps                                                 :slide:
#+ATTR_BEAMER: :overlay <+->
+ First
+ Second
+ @@beamer:<4->@@ Last
#+BEAMER: \pause
Comes after the second item.

Specifications such as <2>, <2->, <-3>, <2-3>, <1,3->, <+->, <invisible@2> and <alert@2> are understood; a \pause applies to the rest of the slide.

Faded and highlighted steps

By default, what is not shown yet takes no space: later text moves down as it appears. With beamer’s \setbeamercovered{transparent} it is drawn faded instead (face org-slideboard-covered), and alert@ highlights a part at the given steps (face org-slideboard-alert). Together they give a list in which every item is on the slide, the current one is highlighted, and the highlight moves with each step:

#+BEAMER: \setbeamercovered{transparent}
#+ATTR_BEAMER: :overlay <+| alert@+>
+ First
+ Second
+ Third

With <+| alert@+> the other items are all faded; with <+-| alert@+> the items already passed stay in full colour; with <alert@+> every item is in full colour and only the highlight moves. List bullets are faded and highlighted with their items.

Faded and hidden parts can be mixed on one slide, as in beamer: with only@ in the specification (or a heading with BEAMER_ENV onlyenv), a part is left out until its step even when the others are faded. The same goes for visible@ and invisible@.

#+BEAMER: \setbeamercovered{transparent}
+ @@beamer:<2->@@ Faded until step 2
+ @@beamer:<only@3->@@ Left out until step 3

The faded style is set by org-slideboard-covered (hidden or transparent). It is taken from the file: a #+BEAMER_HEADER: or #+LATEX_HEADER: line with \setbeamercovered{transparent} makes it transparent for the whole presentation. It can also be set with #+SLIDEBOARD: covered:transparent, and for one slide (or a section) with a #+BEAMER: \setbeamercovered{transparent} line in the slide or the property SLIDEBOARD_COVERED. Equations and images are pictures, so they are not faded.

Lists

Lists are laid out with overlays, so the file is not changed:

  • Bullets by depth: unordered items get the bullets in org-slideboard-list-bullets by nesting depth, whatever bullet character (+, -, *) is used in the file. The default '("●" "○" "■" "□") gives ● for items, ○ for sub-items, and so on, starting again from the first for deeper lists. Numbered items keep their numbers.
  • Indentation: sub-items are indented by org-slideboard-list-indent (4) spaces per level, in the text font, so the indentation scales with the text and is clear even in proportional text.
  • Wrapped lines: when an item wraps, the following lines start under the item’s text, not at the left margin (org-slideboard-hanging-indent).
Description lists (=- Term
text=) look as in beamer: no bullet, the term in bold (face org-slideboard-description-term) without the ::, and wrapped lines indented by org-slideboard-list-indent spaces.
  • Numbered items keep their numbers, also when they follow bulleted items in the same list.

The bullets use the face org-slideboard-bullet (the level-1 heading colour, bold, 1.3 times the text height). For example:

;; arrows and dashes
(setq org-slideboard-list-bullets '("➤" "–" "•"))

;; more indentation per level
(setq org-slideboard-list-indent 6)

;; bigger bullets (in use-package, :custom-face works in any load order)
(use-package org-slideboard
  :custom-face
  (org-slideboard-bullet ((t :inherit org-level-1 :weight bold :height 1.5))))

Hidden clutter

When org-slideboard-hide-clutter is non-nil, the following are hidden:

  • drawers: properties, logbook and any others (without Org’s “…” in their place)
  • #+NAME:, #+RESULTS:, #+CAPTION: and #+ATTR_*: lines
  • source blocks shown only as results (see Code and results), and blocks with :exports none; results, such as plots, stay visible
  • slideboard-elisp blocks
  • standalone raw LaTeX lines such as \vspace{-0.5cm} (but not the lines of equations, such as \begin{equation}), and #+BEAMER: and #+LATEX: lines; a positive \vspace is shown as space (see Vertical space)
  • blank lines left at the top of a column
  • the :slide: tag

LaTeX inside the text is hidden too, when it is marked as such:

  • export snippets for other back-ends, such as @@latex:\hfill@@, are hidden (whatever org-slideboard-hide-clutter says), and of a @@slideboard:...@@ snippet only the contents are shown. This is the Org way to write text for the PDF only, or for the slides only.
  • for LaTeX written directly in the text, #+SLIDEBOARD_HIDE: lines name strings to hide on the slides, and #+SLIDEBOARD_HIDE_REGEXP: lines Emacs regexps. If a regexp has a group, the group stays visible:
    #+SLIDEBOARD_HIDE: \mbox{}
    #+SLIDEBOARD_HIDE_REGEXP: \\mbox{\([^}]+\)}
        

    hides \mbox{}, and shows \mbox{some text} as some text. Code, verbatim text, example and source blocks, and equations are left alone.

Beautification

During the presentation, org-slideboard turns on the minor modes in org-slideboard-beautify-modes in the slide buffers, and hides emphasis and macro markers. They are turned off when the presentation stops, unless they were already on before. Normal editing is not affected.

The default, '(org-modern-mode variable-pitch-mode), gives:

  • styled headings, from org-modern
  • larger, coloured list bullets that change with depth: ● for items, ○ for sub-items, then ■ and □ (org-slideboard-list-bullets, face org-slideboard-bullet); see Lists
  • proportional text, from the built-in variable-pitch-mode
  • *bold* shown as bold without the asterisks (org-slideboard-hide-emphasis-markers)
  • macros that are not expanded (see Macros) shown without their braces, e.g. cc(red,text) (org-slideboard-hide-macro-markers, which turns on org-hide-macro-markers)

The bullets replace org-modern’s own (small) ones only during the show; org-modern is unchanged elsewhere.

Some modes are turned off during the presentation and back on when it stops: those in org-slideboard-disable-modes, by default org-indent-mode (from org-startup-indented), whose heading-level indentation and wrap prefixes spoil the list layout, and display-line-numbers-mode, since line numbers do not belong on slides.

org-modern’s tag labels are turned off during the show, since they would show part of the hidden :slide: tag.

Modes that are not installed are skipped silently. org-superstar and org-bullets are not needed with org-modern, which does the same and more. org-appear only helps while editing.

Turning parts of it off

Put any of these in the configuration (or evaluate with M-:), then start the presentation again:

;; plain org, no beautification at all
(setq org-slideboard-beautify-modes nil)

;; org-modern only, fixed-width text
(setq org-slideboard-beautify-modes '(org-modern-mode))

;; variable-width text only, no org-modern
(setq org-slideboard-beautify-modes '(variable-pitch-mode))

;; keep the bullets as they are (org-modern's own, if it is on)
(setq org-slideboard-list-bullets nil)

;; keep line numbers during the presentation (only turn off org-indent)
(setq org-slideboard-disable-modes '(org-indent-mode))

;; keep the *, /, = emphasis markers visible
(setq org-slideboard-hide-emphasis-markers nil)

;; keep the {{{ }}} around macros visible
(setq org-slideboard-hide-macro-markers nil)

Note: in variable-pitch text, code blocks can lose their alignment. Tables are re-aligned during the show (see Tables).

Changing faces on the slides

The slides use your Emacs faces: bold text, tables, links and so on look as they do when you edit. To show some of them differently during the show only, list them in org-slideboard-face-remaps, as a face and its new attributes (or another face to use instead):

;; bold text in orange and tables in pink, on the slides only
(setq org-slideboard-face-remaps
      '((bold :foreground "orange")
        (org-table :foreground "pink")))

or, with use-package:

(use-package org-slideboard
  :custom
  (org-slideboard-face-remaps '((bold :foreground "orange"))))

The faces are changed in the slides, title and section pages, and back when the show stops; other buffers are never changed. Faces that inherit from a remapped one change too: description terms (org-slideboard-description-term) inherit from bold, for example. org-slideboard’s own faces, such as org-slideboard-bullet, org-slideboard-header, org-slideboard-footline and org-slideboard-page-title, are only used in the show, so customise them directly (M-x customize-group RET org-slideboard).

Use this rather than a minor mode of your own in org-slideboard-beautify-modes that remaps faces: each slide is shown in a fresh copy of the buffer, where such a mode would be skipped.

Cursor

While a slide is shown, the cursor is hidden, so it does not blink at the audience. It comes back, as you have it, as soon as you move it, click or type, and is hidden again when you go to another slide. The text-size keys leave it as it is. #+SLIDEBOARD: hide-cursor:nil (or org-slideboard-hide-cursor) leaves the cursor alone during the show.

Read-only

During the show the presentation is read-only, so a stray key cannot change a slide; typing into a slide says so and reminds you of the key to edit it. To fix something on a slide, press C-x C-q in it and edit: the edits go into the file (save with C-x C-s as usual). The slide stays editable until you go to another slide, which is read-only again. Running code (C-c C-c) still writes its results, and a block edited with C-c ' can still be saved back. When the show stops, the buffer is read-only only if it was before the show.

To edit a lot during the show, turn this off with #+SLIDEBOARD: read-only:nil (or org-slideboard-read-only). Or, during the show, press M-ESC e: the slide on screen and all the slides after it are editable, just as with read-only:nil. Press it again to make them all read-only. This lasts until the show stops.

Theme

A presentation can have its own Emacs theme, e.g. a light one for a projector, while you keep your usual theme for everything else:

#+SLIDEBOARD: theme:modus-operandi

The themes in use are switched off when the show starts and back on when it stops. org-slideboard-theme sets one for every presentation. A theme is Lisp code, so Emacs asks before loading one that is not in custom-safe-themes (themes that come with Emacs are trusted); if you say no, the show goes on with your theme. A misspelt name is reported and ignored. The PDF of the show (M-ESC p) is made with the theme too, so a light theme gives light pages.

Per-file settings

Every setting below can be set globally (e.g. in your init file) and overridden for one presentation from inside its Org file, in two ways.

The #+SLIDEBOARD: keyword

Put one or more lines like this near the top of the file:

#+SLIDEBOARD: modern:nil variable-pitch:t bullets:("➤" "–") image-width:0.7
#+SLIDEBOARD: animate:nil text-scale:3

The syntax is that of #+OPTIONS: key:value pairs separated by spaces, with the values written as Lisp (t, nil, numbers, strings in double quotes, lists in parentheses). The keyword is read each time a show starts, so changes take effect at the next start. When the show stops, the previous values come back. Beamer and other exporters ignore the keyword.

KeySettingValue
modernadd or remove org-modern-mode in the beautify modest / nil
variable-pitchadd or remove variable-pitch-modet / nil
modesorg-slideboard-beautify-modeslist of ...-mode symbols
disableorg-slideboard-disable-modeslist of ...-mode symbols
emphasisorg-slideboard-hide-emphasis-markerst / nil
macro-markersorg-slideboard-hide-macro-markerst / nil
macrosorg-slideboard-expand-macrost / nil
align-tablesorg-slideboard-align-tablest / nil
srcorg-slideboard-src-displayexports / results / both
code-widthorg-slideboard-src-code-widthnumber
src-splitorg-slideboard-src-splitlr / rl / tb / bt, e.g. tb60
marginsorg-slideboard-marginsnumber, (LEFT RIGHT), or nil
coveredorg-slideboard-coveredhidden / transparent
bulletsorg-slideboard-list-bulletslist of strings, or nil
list-indentorg-slideboard-list-indentnumber
hangingorg-slideboard-hanging-indentt / nil
title-pageorg-slideboard-title-paget / nil
section-pagesorg-slideboard-section-pagest / nil
animateorg-slideboard-animate-pagest / nil
themeorg-slideboard-themetheme name, or nil
hide-cursororg-slideboard-hide-cursort / nil
read-onlyorg-slideboard-read-onlyt / nil
header-heightorg-slideboard-header-heightnumber
header-scaleorg-slideboard-header-text-scalenumber
export-stepsorg-slideboard-export-stepsall / last
page-scaleorg-slideboard-page-text-scalenumber
text-scaleorg-slideboard-text-scalenumber
title-scaleorg-slideboard-title-text-scalenumber
title-spaceorg-slideboard-title-spacenumber (fraction of the title height)
image-widthorg-slideboard-image-width-fractionnumber
image-heightorg-slideboard-image-height-fractionnumber
clutterorg-slideboard-hide-cluttert / nil
latex-sizeorg-slideboard-latex-sizenumber
latex-scaleorg-slideboard-latex-scalenumber
center-mathorg-slideboard-center-display-matht / nil
footlineorg-slideboard-footlinelist of up to three strings, or nil
footline-positionorg-slideboard-footline-positionbottom / top

Unknown keys and invalid values are skipped with a message in the echo area, and the show starts anyway. For safety, modes and disable only accept symbols whose names end in -mode.

File-local variables

The usual Emacs mechanism also works, with a block at the end of the file:

# Local Variables:
# org-slideboard-text-scale: 3
# org-slideboard-list-bullets: ("➤" "–")
# org-slideboard-section-pages: nil
# End:

These are read when the file is opened, so after changing the block, re-open the file (M-x revert-buffer). The simple settings (on/off flags, numbers and the bullet list) are marked safe, so Emacs does not ask about them. org-slideboard-beautify-modes and org-slideboard-disable-modes are not, since a file could use them to turn on any mode; Emacs asks before using them (answer ! to accept a value permanently).

Precedence

#+SLIDEBOARD: overrides a file-local variable, which overrides the global value. A size changed with C-= / C-- during the show changes the value that is in effect (the local one if there is one).

Settings

VariableDefaultMeaning
org-slideboard-text-scale2text size of the frames of all slides
org-slideboard-title-text-scale2text size of slide titles
org-slideboard-title-space0.25extra space below slide titles, as a fraction of their height
org-slideboard-zoom-resizes-frametEmacs’s zoom keys resize the selected frame for the show
org-slideboard-divider-width6width in pixels of the draggable line between frames side by side
org-slideboard-image-width-fraction0.8maximum image width, as a fraction of the window width
org-slideboard-image-height-fraction0.8maximum image height, as a fraction of the window height
org-slideboard-hide-clutterthide drawers, keywords, src blocks and raw LaTeX
org-slideboard-latex-size0.8size of equations relative to the text
org-slideboard-latex-scale4.0scale at which equation images are rendered
org-slideboard-center-display-mathnilcentre display equations
org-slideboard-latex-preview-drop-regexpbeamer commandspreamble lines left out of equation previews
org-slideboard-latex-compilernilcompiler for equation previews (nil: Org’s choice)
org-slideboard-beautify-modes'(org-modern-mode variable-pitch-mode)modes turned on during the presentation
org-slideboard-face-remapsnilfaces shown differently during the presentation
org-slideboard-disable-modes'(org-indent-mode display-line-numbers-mode)modes turned off during the presentation
org-slideboard-list-bullets'("●" "○" "■" "□")list bullets by nesting depth
org-slideboard-list-indent4indentation per list level, in spaces
org-slideboard-hanging-indenttindent sub-items and align wrapped lines of items
org-slideboard-hide-emphasis-markersthide emphasis markers during the presentation
org-slideboard-hide-macro-markersthide the {{{ }}} of macros during the presentation
org-slideboard-expand-macrostshow macros as their expansion
org-slideboard-macro-templatesnilmacro definitions for the show
org-slideboard-align-tablestalign tables to what is displayed
org-slideboard-src-displayexportsshow code, results or both, see Code and results
org-slideboard-src-code-width0.5share of the width (or height) for the code, with code and results
org-slideboard-src-splitbtwhere code and results go: lr, rl, tb or bt
org-slideboard-src-repl-functionsR and pythonREPLs for editing blocks during the show
org-slideboard-title-pagetshow a title page
org-slideboard-section-pagestshow section pages
org-slideboard-animate-pagestanimate the title and section pages
org-slideboard-themenilEmacs theme during the show (nil: keep the current one)
org-slideboard-hide-cursorthide the cursor until it is moved or used
org-slideboard-read-onlytthe presentation is read-only during the show
org-slideboard-page-text-scale5text scale of the title and section pages
org-slideboard-slide-tag“slide”tag that marks slides
org-slideboard-footline'("%a" "%t" "%n / %N")information strip on every slide, see Information strip
org-slideboard-footline-positionbottomwhere the information strip goes: bottom or top

The title and section pages use these faces, which can be customized with M-x customize-face:

FaceUsed for
org-slideboard-page-titletitle on the title page
org-slideboard-page-subtitlesubtitle
org-slideboard-page-infoauthor and date
org-slideboard-page-sectionheading on a section page
org-slideboard-bulletlist bullets during the presentation
org-slideboard-dividerbar between code and results, one above the other (drag it to resize)
org-slideboard-footlinethe information strip

Tips

  • Settings: all options are in the org-slideboard customization group (M-x customize-group RET org-slideboard). Re-loading the file does not reset an option that is already set; use customize-set-variable, Customize, or restart Emacs.
  • Changing slides during a show: after adding, removing or reordering slides, restart the presentation (or run org-slideboard-initialize) to rebuild the slide list.
  • Beamer export is unchanged: the :slide: tag is hidden by tags:nil, and BMCOL is handled by ox-beamer as before.

Credits

org-slideboard is based on org-show by John Kitchin, part of scimax, which in turn was based on Sacha Chua’s presentation code. Beamer columns, the title and section pages, equation, macro and table layout, and the code-and-results views were added by Vikas Rawal.

License

GPL-3.0 or later; see LICENSE.

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages