Jorrit van der Heide17 downloadsPresent a note as slides, with its links turned into real citations and your speaker notes on your own screen.
Present a note as slides, with its links turned into real citations and your speaker notes on your own screen.
Works well with Due Credit, which exports a note to Word, PDF, Markdown or LaTeX with the same citations, and Paper Trail, which turns your Zotero library into a reading queue, with a note for each paper. See Works well with.
You wrote the talk in your vault, with your citations as links and your thoughts
next to them. Then the conference asks for slides, and all of it gets typed
again in another program, where [[marsh2024]] means nothing and the reference
list is something you do by hand on the last evening.
Take the Floor shows the note itself. A line of --- starts a new slide, your
%%comments%% are your speaker notes, and each citation shows its full reference
at the foot of the slide. You press Present, the slides fill the other screen,
and your notes stay on yours.
In Obsidian, go to Settings → Community plugins → Browse, search for "Take the Floor", and install and enable it. You can also find it on its page in the plugin directory.
Take the Floor needs Obsidian 1.13 or later, on desktop. Two things are optional:
.bib file from Zotero with
Better BibTeX's auto-export turned
on, so it stays up to date as you add papers. Without one, links show as plain
text.Write a talk. Any note works. Put a line of --- between slides, with a
blank line above it:
# Reading in public
A claim about reading [[marsh2024]]. %%Say hello first.%%
---
## The second slide
Words for the room. %%And something only you can see.%%
Look at it. Run Preview slides to see every slide in a tab, which updates when the note is saved.
Present it. Run Present. To have a button for it in the note's title bar,
give the note the property presentation: true.
With a second screen, the slides fill it and your notes open in a pane next to your note. With one screen, the slides stay in a window, so you can rehearse. Before a talk, try it once on the computer you'll use, so that pandoc is there when the room has no internet.
Take the Floor writes nothing in your vault. Presenting reads your note and shows it. The only file it writes for you is a PDF you ask for, in a place you pick outside the vault. Your speaker notes are taken out of the note before anything else happens, so they can't end up on a slide or in a PDF. Section 10 lists exactly what it reads and writes.
It only connects to the internet to download the built-in pandoc, when you have no
pandoc installed and say yes, and to show what a slide has from the web, like an image.
The programs it starts are an installed pandoc and, when you use the niri window
manager, niri, to put the slides on the other screen.
The health report in Obsidian's plugin directory warns about two things. Both are part of how it works:
niri. Take the Floor starts them directly, without
a shell in between, and starts nothing else.Every change is tested. Every release is built in public on GitHub, and you can check that the file you installed is the one GitHub built. Section 10.5 shows how.
If you want to work on the plugin:
%%comment%% on a slide is what you say over it.[[marsh2024]] shows as "(Marsh 2024)", in the citation style
you choose.| In your note | On the slides |
|---|---|
--- alone on a line, with a blank line above |
A new slide. |
%%comment%% |
Your speaker notes, in the pane. Never on a slide. |
<!-- comment --> |
Left out, and not in your notes either. |
[[marsh2024]] |
"(Marsh 2024)", and the full reference at the foot of the slide. |
[^1] footnotes |
At the foot of their slide, numbered from 1 on each. |
![[figure.png|300]] |
The image, 300 pixels wide. |
$E=mc^2$ and $$ math |
The math. |
| A callout | A quote, with its title in bold. |
*** |
A line on the slide. Only --- starts a new one. |
| Other embeds, such as a note or a PDF | Left out. |
| A Mermaid diagram | Its code, as written. |
Directly under a line of text, --- makes that line a heading, as it does in Obsidian, so
it needs the blank line. Indented, or in a ::: block, it stays a line on the slide. At
the very top of a note, it starts the note's properties.
A slide with too much on it is cut off at the bottom. The notes pane and the preview say which one it is.
| Key | |
|---|---|
| Page Down, Right, Down, Space | The next slide |
| Page Up, Left, Up | The previous slide |
| B, full stop | Hide the slides |
| F | Fill the screen, or stop |
| Esc | End the talk |
While the slides are hidden, the keyboard is yours for editing. Esc, Page Up, Page Down or the eye button bring the slides back on the same slide, so a clicker does too. Other keys go to whatever has the cursor, and a dialog you open keeps its keys.
Slides follow your theme. To change them, add a CSS snippet with these names:
| Name | What it is |
|---|---|
.take-the-floor-stage |
The slide's 1920 by 1080 pixel area, scaled to the screen |
.take-the-floor-stage .slide |
One slide |
.take-the-floor-stage .slide.references |
The closing slide |
.slide-foot |
The foot of a slide |
.slide-reference |
A reference there |
.slide-note |
A footnote there |
For example, to make your slides light on a dark theme, which is easier to read on many projectors, set your theme's colours for them:
.take-the-floor-stage {
background: white;
color: black;
--text-normal: black;
--text-muted: #444;
--link-color: #0645ad;
--link-external-color: #0645ad;
--code-background: #eee;
--h1-color: black;
--h2-color: black;
--h3-color: black;
--blockquote-color: #333;
--list-marker-color: #444;
}
A theme can have more colours of its own, so check a slide with everything on it in Preview slides. I tried this one on the Border theme, where inline code keeps its colour.
None of the commands come with a hotkey, so they won't clash with the ones you already use. You can set your own in Settings → Hotkeys.
Take the Floor: Present - Shows the open note as slides. It's also on the ribbon and on a
note's right-click menu.Take the Floor: Preview slides - Opens a tab with every slide of the open note.Take the Floor: Export slides to PDF - Makes a PDF, with a slide to a page. It's also on a
note's right-click menu.During a talk:
Take the Floor: Next slideTake the Floor: Previous slideTake the Floor: Hide or show the slidesTake the Floor: End presentationPandoc
| Setting | Default | |
|---|---|---|
| Pandoc | pandoc |
If you installed pandoc, this can usually stay pandoc. If Take the Floor doesn't find it, give its full path. Without pandoc installed, Take the Floor offers to download a copy that runs inside Obsidian. |
Citations
| Setting | Default | |
|---|---|---|
| Bibliography | None | The .bib file that Better BibTeX's auto-export keeps up to date. A link to one of its keys, like [[marsh2024]], shows as a citation on your slide, and any other link as its text. The file can be in your vault, or outside it with a path starting with / or ~. Leave it empty to present without citations. |
| Papers folder | Literature |
The folder with your paper notes. Before you present, Take the Floor lists every link to a paper note whose key isn't in your bibliography, because it would show as plain text. |
| Citation key property | citekey |
The property that holds a paper note's citation key. A link to a note with one cites that key, whatever the note is called. When Better BibTeX changes a key, your links keep working once the property has the new one. Paper Trail writes citekey. |
| Citation style | Chicago author-date | The name of a style Zotero has installed, such as apa or ieee, or the path to a .csl file. Leave it empty for Chicago author-date. |
I made these too. Each one does one thing and works on its own, but they fit together nicely.
Due Credit exports a note to Word, PDF, Markdown or LaTeX. It reads a note the same way Take the Floor does, with the same code. Its Insert citation writes the links that Take the Floor shows as citations.
Give both plugins the same Bibliography and Citation style. Your talk and your chapter then cite the same way, and your comments stay behind in both.
Paper Trail turns your Zotero library into
a reading queue, with a note for each paper. With Better BibTeX, those notes have the citekey
property, so a link to one of them cites that paper on your slide.
Loose Ends makes new notes from templates.
A template with presentation: true in its properties gives every new talk its Present button.
Take the Floor runs entirely on your computer, and doesn't send anything of yours anywhere. It connects to the internet for two things:
pandoc-3.13-wasm.zip from pandoc's release on GitHub. Before keeping it, Take the Floor checks
that the download is exactly the file it was tested with, by comparing its SHA-256 hash, a
fingerprint of the file's contents. in your note, the slideshow
window loads it from that site, as any web page would, and the same goes for a video, an embedded
page or a style in HTML you wrote in your note. That site can see your address. A talk's images
load when it starts, to measure the slides, and when you preview or export. Images in your vault
stay on your computer..bib file you set in Bibliography.~/Zotero/styles), or the .csl file you set.app.json.presentation: true.pandoc-3.13.wasm in your cache folder, when there's no pandoc installed.
Once a session, Take the Floor checks its hash to make sure the file hasn't changed. A file that
doesn't match is deleted, and downloaded again if you agree.Take the Floor writes nothing in your vault, apart from its settings.
pandoc-3.13.wasm in your user cache
folder, outside the vault. The 17 MB download unpacks to this 62 MB file. It goes in
~/.cache/obsidian-citation-core on Linux (or in $XDG_CACHE_HOME),
~/Library/Caches/obsidian-citation-core on macOS, and obsidian-citation-core\Cache in
%LOCALAPPDATA% on Windows. If you also use Due Credit or In the Open, they use the same file.
You can delete it. It's downloaded again, if you agree, the next time it's needed.data.json in the plugin folder.workspace.json, the slideshow and
the notes pane too. They close at the next start, and they hold no slides or notes.pandoc --version). An installed pandoc can read and write anything you can.niri msg, only when niri is running, to read the lists above, move the slideshow to the
other screen and give the focus back to Obsidian.Nothing else runs. While a talk runs, it also asks your system to keep the screen awake, and it stops asking when the talk ends.
Every change I push is built, checked with ESLint and the official Obsidian ESLint plugin, and tested with Vitest. Nix builds it a second time, on its own.
Releases are built by GitHub Actions from the tagged code, after the same
checks. A release only goes out when its tag matches the version in
manifest.json, and every action it uses is pinned to an exact version. Each
release comes with a signed attestation from GitHub, which records what it
was built from. To check that the main.js you installed is the one GitHub
built:
gh attestation verify main.js --repo jorritvanderheide/obsidian-take-the-floor
The citation tests run through a real pandoc, always the same version, in obsidian-citation-core, which holds the citation code. A release only uses a version of it that passed them, so a change in pandoc's output shows up as a failing test before it reaches you.
Have a look at the FAQ first. It covers the things people run into most, like a slideshow that stays on the wrong screen. If something still doesn't work, or you have an idea, please open an issue. Found a security problem? Please report it privately, the way the security policy explains.
The code lives on Codeberg, with a copy on GitHub.
Take the Floor is free. If it's useful to you and you'd like to give something back, you can do that on Liberapay:
Copyright © 2026 Jorrit van der Heide. Licensed under the EUPL-1.2.
Open Sans, from fonts/ in obsidian-citation-core, is under the
SIL Open Font License 1.1.