# Is there a nice solution to get a “presenter mode” for Latex presentations?

I really like the way Keynote and MS Office (and also OpenOffice & similar) support a presentation mode that displays the current slide, the next (and maybe previous) slide, the elapsed and current time, and also any notes attached to the slides on one screen and the presentation itself on the beamer/second screen.

It enables me to give good, professional presentations without having to know everything by heart (I suck at that).

I found a project which does something similar, but I am looking for alternatives, especially OS-independent would be great. Not having to create 3 different PDFs is a boon.

Any hints?

• Beamer can place nodes at the second screen if your PDF viewer and OS, I think, supports that. Displaying the time might be possible using a javascript powered text field. See Having a LaTeX PDF display the date the document was printed, not compiled to get you started. – Martin Scharrer Jun 28 '11 at 10:00
• There is no Windows alternative mentioned in the answers. Is there none? – BandGap Oct 11 '13 at 12:25
• @BandGap maybe freakazoid.teamblind.de/2011/03/30/… is what you're looking for? – John Feb 6 '14 at 21:13
• I think the best solution is a printout with notes and a watch. – Z.H. Jun 1 '15 at 1:55
• Thanks Z.H. - but that's not what I asked for. I have a specific style of presentation in mind, and messing around with a sheet of paper does not fit that. – brandstaetter Jun 1 '15 at 7:15

I think pympress comes somewhat close to what you want. As it is written in python, I'd assume that you can run it on any platform -- I know it works under Linux.

If you want to display notes, use the following to display them on the right:

\documentclass{beamer}
\usepackage{pgfpages}
\setbeamertemplate{note page}[plain]
\setbeameroption{show notes on second screen=right}

\begin{document}
\begin{frame}{test}
hello
\note{say "hello" now}
\end{frame}
\end{document}


and then pympress will render only the left or the right half of the pdf in the different windows.

• This is a maintained fork of the original: github.com/Cimbali/pympress – musically_ut Aug 29 '16 at 20:49
• I couldn't get this to work on MacOS. Couldn't successfully install the dependencies. – Luke Davis Feb 21 '18 at 8:41
• Nevermind; managed to get it to work by downloading dependencies with brew install pygobject3 --with-python3 gtk+3 (from this link), installing pympress with /usr/local/bin/pip3 install pympress, and setting the library path export LD_LIBRARY_PATH=/usr/local/lib. Trying to install everything with Anaconda did not work for me. IMO this is the best tool in this thread; thanks for the recommendation. – Luke Davis Mar 1 '18 at 16:54
• @LukeDavis May be install xcode tools using 'xcode-select --install' – Tejas Shetty Jan 30 '20 at 5:03

On the mac, you can go with osx-presentation. (full disclaimer: i am the author).

Workflow:

1. Prepare your beamer tex file.

2. Within a frame, add presentation notes using the package pdfcomment. For example, \marginnote{\pdfcomment[icon=note]{Your notes goes here.}}.

3. Compile the beamer tex file with pdfcomment package global option draft (\usepackage[draft]{pdfcomment}) to include the notes (pdf comments). If you want to have a version without notes, compile with pdfcomment global option final. Check the documentation of pdfcomment for more details, https://ctan.org/pkg/pdfcomment/.

4. Open the beamer pdf file with osx-presentation. Two windows will show up. One is for presentation view, and the other is for audience.

5. Drag the audience window to the screen that you want to show the slides. Maximize the audience window to full screen. Here, you need to have separate windows for your computer and the external screen. This can be set in the preference of your operating system.

6. Give the talk using the presentation view.

Screenshot:

Selected features:

• Synchronize your mouse cursor in the presentation view and audience view.

• You can draw with your mouse and erase with keyboard shortcut e.

Comparing to other solutions:

• Nicer presentation view comparing to splitshow and Skim.
• Easy to setup on MacOS comparing to pympress. .dmg Installer available. Less dependencies.
• No conversion from PDF to other format.

• Cannot use beamer built-in \note{} to keep note. Need to use pdfcomment.
• Notes are not well wrapped. You either need to use \textCF to change line or tweak the Python script for auto-wrapping the notes. For an attempt to tweak the Python script, check https://bitbucket.org/rndblnch/osx-presentation/pull-requests/8 .
• Hard to generate PDF with nicely formatted notes.
• Only works for MacOS.

from the website:

Présentation.app main feature is its presenter view on the main display that shows the current and next slides, and its main view on the secondary display (if present) that shows the current slide. It also has some more or less original features:

• a clock that displays the current time or a (countdown) timer;
• the content of PDF notes are displayed below the current slide;
• external links can be followed, and the main view then toggles to a full screen web view or a video view if the links leads to a video on the local file system;
• the app is in fact a python script that can be used from the command line.

Demo tex file:

\documentclass[12pt, t]{beamer}

% draft will print out comment
% final will hide all comment
\usepackage[draft]{pdfcomment}
\newcommand{\pdfnote}[1]{\marginnote{\pdfcomment[icon=note]{#1}}}

\usetheme{default}
\title{Demo of osx-presentation}
\date{\today}

\begin{document}

\maketitle

\begin{frame}{Demo of notes}
This is the content of slide.
\pdfnote{My presentation notes. }
\end{frame}

\begin{frame}{Another slide to show the next slide feature}
\end{frame}

\end{document}

• Can you please improve your answer by showing how it works? – ienissei Nov 30 '14 at 12:48
• Looks like exactly what I was looking for. Will give it a try at my next lectures... – hoeni Aug 28 '16 at 12:53
• @hoeni How did this work out for you? – Joost May 2 '17 at 14:30
• Présentation.app is by far the best tool I've seen for this. I'm using it in all my lectures now. – hoeni May 3 '17 at 8:50
• Amazing. I've been looking for something like this for so long. Thank you so much @rndblnch, works great. Just to let you know, I presented my thesis with présentation. Totally recommended. – Jorge V Sep 30 '17 at 22:42

Another Mac-specific (well, not really OS-independent) solution is implemented by the Skim PDF viewer, which provides an option to display a second PDF file inside another Window page-synchronously with the first one. This comes quite handy to show beamer notes on a second screen (regardless of its dimensions and layout).

One prerequisite for this to work is, however, that your notes.pdf actually has the same number of pages than slides.pdf. With beamer this can be somewhat tricky to achieve, as beamer ships out a notes page only for slides that actually do have notes and only once for frames that use allowframebreaks. I had asked about a solution to this problem in this question, the answer given by Ulrich Schwarz solves it nicely.

• +1 for Skim. And here is my solution to solve the problem of having the same number of pages for slides and notes: generate the main pdf without notes (for presentation) and another pdf with notes for local reference :) – pddthinh Jun 14 at 14:21

As mentionned in elsewhere, I believe that the pdfpc solution is much better than pympress, mainly because it can display notes, but also video and much more. It seems to be better maintained as well.

However, it is a fork of the project mentionned in the original question (pdf-presenter-console, now mostly dead) which means it is pretty Linux-specific (it depends on GTK) for now, although it could probably be ported to Mac and Windows eventually. To be fair, pympress is also linux-specific.

• pympress too can display notes (both beamer page and pdf annotations), videos, and much more. :) – Cimbali Dec 5 '19 at 12:45

If you like the presenter display in Keynote, you can use the free tool PDF to Keynote to convert your PDF slides to Keynote format, and then use Keynote to give the presentation.

For Linux I found dspdfviewer to be useful.

This is a simple viewer for latex-beamer presentations that are built with the show notes on second screen option of latex-beamer.

It will take your PDF file, split it in a left and right half and render the two halves individually to the screens.

• Welcome to TeX.SX! You may have a look on our starter guide. – Peter Jansson May 25 '13 at 18:20
• Since impressive stopped working correctly for me, this is the best solution available, even better than impressive. – YuppieNetworking Nov 22 '13 at 14:57
• It is in the package repository, for example on Debian or Ubuntu, dspdfviewer can be installed with sudo apt-get install dspdfviewer . – Paul Rougieux Feb 8 '17 at 16:15

Impressive gives you at least the elapsed time, and a progress bar which indicates how much time you have left. These are also visible to the audience.

You might want to try out SlidePilot for macOS.

The application aims to combine two worlds, presenting LaTex Beamer PDFs (and its notes) but with the presenter experience of Keynote.

Some Key Features:

• Dual Screen presentation
• Presenter Display showing the current, next and notes slide (created with Beamer \note)
• Stopwatch or Timer and a Clock to keep track of reading time
• Go-To-Browser for slides
• Broadcast Cursor to presentation screen
• Cover presentation screen
• Pre-Rendering and Caching

With a lot of features still to come.

Example for a .tex file with notes, that you can use with SlidePilot.

\documentclass{beamer}
\usepackage{pgfpages}
\setbeameroption{show notes on second screen}

\begin{document}

\frame{
\frametitle{Demo Slide}
Content of the demo slide.
}
\note{
\begin{itemize}
\item These are some
\item items in a list
\item full of notes
\end{itemize}
}

\end{document}


(Disclaimer: I am the developer)

• This is by far the best and easiest to use. Thanks :) – root Apr 4 at 3:13

Benjamin Keller also presented a nice approach here. It has a presenter view showing

• main slide
• notes
• preview of next slide
• structure tree of slides
• several counters and timers.

Links to the files can be found in the video description. Seems like it was developed on and for Linux. I do not know if other OS are supported as well.

• It looks really great! Imho, PDF + Javascript are cross-OS. Modifying the required settings might however be a bit more tedious on Windows. – ebosi May 12 '17 at 14:13

On a Mac you can use Splitshow.

A tool for the dual-head presentation of PDF slides on Mac OS X, most likely using a laptop and a projector. The project arose out of the need to correctly project slides created with LaTeX's beamer class.

This project has been imported from the original, discotinued Google Code project (http://splitshow.googlecode.com). The aim is to create an up-to-date version of the SplitShow program with the same features and to extend it later on.

On GNU/Linux, at least, Slider might be a good option. (I've no idea if it would work on e.g. a Mac.)

I use Windows with many animations in my PDFs, and only Adobe Acrobat (Reader) seems to be able to play them. I've been using AutoHotKey to remap my keyboard buttons to control my two Adobe windows simultaneously. It's a bit of a hack job, and there's no timer, but it works. I use the standard beamer notes pages, but you could be more fancy to show upcoming previews.

Here's my AHK script. It assumes that the focus is on the notes pdf window. [Up]/[Down] controls the notes (window mode on screen one), and [Left]/[Right] controls the presentation (full screen on screen two). [Space] advances both simultaneously by one page. It blocks [Space] in other programs whilst the script's running, but it prevents infinite loops. The script is easily changed to access all open PDFs at once (use 'Adobe' instead of 'Presentation_*.pdf'), but I find it to be more stable if each file is named explicitly.

Up::
IfWinActive, Presentation_Notes.pdf ;
{
Send {PgUp}
}
Else
{
IfWinActive, Presentation_Presentation ;
{
CoordMode, Mouse, Screen
WinGet, active_id, ID, A
WinGet, id, list, Presentation_Notes.pdf,, Program Manager
Loop, %id%
{
this_id := id%A_Index%
WinActivate, ahk_id %this_id%
Send {PgUp}
}
WinActivate, ahk_id %active_id%
}
Else
{
Send {Up}
}
}
return

Down::
IfWinActive, Presentation_Notes.pdf ;
{
Send {PgDn}
}
Else
{
IfWinActive, Presentation_Presentation.pdf ;
{
CoordMode, Mouse, Screen
WinGet, active_id, ID, A
WinGet, id, list, Presentation_Notes.pdf,, Program Manager
Loop, %id%
{
this_id := id%A_Index%
WinActivate, ahk_id %this_id%
Send {PgDn}
}
WinActivate, ahk_id %active_id%
}
Else
{
Send {Down}
}
}
return

Right::
SetTitleMatchMode, 2
IfWinActive, Presentation_Notes.pdf ;
{
CoordMode, Mouse, Screen
WinGet, active_id, ID, A
WinGet, id, list, Presentation_Presentation.pdf,, Program Manager
Loop, %id%
{
this_id := id%A_Index%
WinActivate, ahk_id %this_id%
Send {PgDn}
}
WinActivate, ahk_id %active_id%
}
Else
{
Send {Right}
}
return

Left::
SetTitleMatchMode, 2
IfWinActive, Presentation_Notes.pdf ;
{
CoordMode, Mouse, Screen
WinGet, active_id, ID, A
WinGet, id, list, Presentation_Presentation.pdf,, Program Manager
Loop, %id%
{
this_id := id%A_Index%
WinActivate, ahk_id %this_id%
Send {PgUp}
}
WinActivate, ahk_id %active_id%
}
Else
{
Send {Left}
}
return

Space::
SetTitleMatchMode, 2
IfWinActive, Presentation_Notes.pdf ;
{
CoordMode, Mouse, Screen
WinGet, active_id, ID, A
WinGet, id, list, Presentation_Presentation.pdf,, Program Manager
Loop, %id%
{
this_id := id%A_Index%
WinActivate, ahk_id %this_id%
Send {PgDn}
}
WinActivate, ahk_id %active_id%
Send {PgDn}
}
return


On GNU/Linux (KDE), also qpdfpresenterconsole available on SourceForge and GitHub (last update till this edit: 2012-03-24).

• no preview of next slide
• no possibility to open a Browser and than switch back to the presentation

• can handle notes of beamer
• has a critical time (last 2minutes has a red count down for example)

For OSX, look at osx-adobe-beamer. It wraps Adobe Reader so it shows the notes and slides on different pages.

It has the following features

• video/animation
• notes for current slide
• on notes, shows current slide
• timer (i.e., "15 minutes remaining")
• next slide

\usepackage[slides]{osx-adobe-beamer}
% or

python /path/to/present.py