blob: f0b82b4ff80fed1afb64f8586d6f0efcb711a00d [file] [log] [blame]
JJ Allaired708ef02016-01-30 14:30:26 -05001% Generated by roxygen2: do not edit by hand
junkkad4b3a162015-03-16 07:49:11 +01002% Please edit documentation in R/revealjs_presentation.R
JJ Allaire2ec40242014-09-15 09:18:39 -04003\name{revealjs_presentation}
4\alias{revealjs_presentation}
5\title{Convert to a reveal.js presentation}
6\usage{
Atsushi Yasumoto7053f452020-02-15 00:08:46 +09007revealjs_presentation(
8 incremental = FALSE,
9 center = FALSE,
10 slide_level = 2,
Christophe Dervieuxaa008e42021-09-23 16:52:37 +020011 toc = FALSE,
12 toc_depth = 3,
Atsushi Yasumoto7053f452020-02-15 00:08:46 +090013 fig_width = 8,
14 fig_height = 6,
15 fig_retina = if (!fig_caption) 2,
16 fig_caption = FALSE,
Marc Kupietzf667b982026-08-08 17:16:28 +020017 self_contained = FALSE,
18 theme = "ids",
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020019 transition = "convex",
20 background_transition = "fade",
Atsushi Yasumoto7053f452020-02-15 00:08:46 +090021 reveal_options = NULL,
Marc Kupietz03dbc5d2026-08-21 15:44:25 +020022 reveal_plugins = c("notes", "search", "menu", "zoom"),
Atsushi Yasumoto7053f452020-02-15 00:08:46 +090023 highlight = "default",
24 mathjax = "default",
25 template = "default",
26 css = NULL,
27 includes = NULL,
28 keep_md = FALSE,
29 lib_dir = NULL,
30 pandoc_args = NULL,
31 extra_dependencies = NULL,
32 md_extensions = NULL,
33 ...
34)
JJ Allaire2ec40242014-09-15 09:18:39 -040035}
36\arguments{
37\item{incremental}{\code{TRUE} to render slide bullets incrementally. Note
38that if you want to reverse the default incremental behavior for an
JJ Allaire29152752016-03-08 15:06:38 -050039individual bullet you can precede it with \code{>}. For example:
Christophe Dervieux37782092023-03-24 17:36:16 +010040\emph{\verb{> - Bullet Text}}. See more in
41\href{https://pandoc.org/MANUAL.html#incremental-lists}{Pandoc's Manual}}
JJ Allaire2ec40242014-09-15 09:18:39 -040042
43\item{center}{\code{TRUE} to vertically center content on slides}
44
JJ Allaire4c178052016-01-30 19:35:39 -050045\item{slide_level}{Level of heading to denote individual slides. If
46\code{slide_level} is 2 (the default), a two-dimensional layout will be
47produced, with level 1 headers building horizontally and level 2 headers
48building vertically. It is not recommended that you use deeper nesting of
49section levels with reveal.js.}
50
Christophe Dervieuxaa008e42021-09-23 16:52:37 +020051\item{toc}{\code{TRUE} to include a table of contents in the output (only
52level 1 headers will be included in the table of contents).}
53
54\item{toc_depth}{Depth of headers to include in table of contents}
55
JJ Allaire2ec40242014-09-15 09:18:39 -040056\item{fig_width}{Default width (in inches) for figures}
57
Atsushi Yasumoto7053f452020-02-15 00:08:46 +090058\item{fig_height}{Default height (in inches) for figures}
JJ Allaire2ec40242014-09-15 09:18:39 -040059
JJ Allaire82a8dee2016-07-12 10:25:36 -040060\item{fig_retina}{Scaling to perform for retina displays (defaults to 2, which
61currently works for all widely used retina displays). Set to \code{NULL} to
62prevent retina scaling. Note that this will always be \code{NULL} when
63\code{keep_md} is specified (this is because \code{fig_retina} relies on
64outputting HTML directly into the markdown document).}
JJ Allaire2ec40242014-09-15 09:18:39 -040065
66\item{fig_caption}{\code{TRUE} to render figures with captions}
67
Atsushi Yasumoto7053f452020-02-15 00:08:46 +090068\item{self_contained}{Whether to generate a full LaTeX document (\code{TRUE})
69or just the body of a LaTeX document (\code{FALSE}). Note the LaTeX
70document is an intermediate file unless \code{keep_tex = TRUE}.}
JJ Allaire2ec40242014-09-15 09:18:39 -040071
Marc Kupietzf667b982026-08-08 17:16:28 +020072\item{theme}{Visual theme ("ids", "simple", "dark", "black", "sky", "beige", "serif", "solarized", "blood", "moon", "night", "league", or "white")}
JJ Allaire2ec40242014-09-15 09:18:39 -040073
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020074\item{transition}{Slide transition (
75"convex", "fade", "slide", "concave", "zoom", or "none"
76)}
junkkad4b3a162015-03-16 07:49:11 +010077
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020078\item{background_transition}{Slide background-transition (
79"convex", "fade", "slide", "concave", "zoom", or "none"
80)}
JJ Allaire2ec40242014-09-15 09:18:39 -040081
JJ Allaire35c0b492017-02-10 09:30:24 -050082\item{reveal_options}{Additional options to specify for reveal.js (see
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020083\url{https://revealjs.com/config/} for details). Options for plugins can also
84be passed, using plugin name as first level key (e.g \code{list(slideNumber = FALSE, menu = list(number = TRUE))}).}
JJ Allaire37f45b72016-01-30 18:17:45 -050085
JJ Allaire35c0b492017-02-10 09:30:24 -050086\item{reveal_plugins}{Reveal plugins to include. Available plugins include
Marc Kupietz03dbc5d2026-08-21 15:44:25 +020087"notes", "search", "zoom", "chalkboard", and "menu". Defaults to
88\code{c("notes", "search", "menu", "zoom")}; pass \code{NULL} to render without
89any plugins. Note that \code{self_contained} must be set to \code{FALSE} in order
90to use Reveal plugins.}
JJ Allaire82a8dee2016-07-12 10:25:36 -040091
Christophe Dervieux37782092023-03-24 17:36:16 +010092\item{highlight}{Syntax highlighting style passed to Pandoc.
93
94 Supported built-in styles include "default", "tango", "pygments", "kate",
95 "monochrome", "espresso", "zenburn", "haddock", and "breezedark".
96
97 Two custom styles are also included, "arrow", an accessible color scheme,
98 and "rstudio", which mimics the default IDE theme. Alternatively, supply a
99 path to a \samp{.theme} file to use
100 \href{https://pandoc.org/MANUAL.html#syntax-highlighting}{a custom Pandoc
101 style}. Note that custom theme requires Pandoc 2.0+.
102
103 Pass \code{NULL} to prevent syntax highlighting.}
JJ Allaire2ec40242014-09-15 09:18:39 -0400104
Atsushi Yasumoto7053f452020-02-15 00:08:46 +0900105\item{mathjax}{Include mathjax. The "default" option uses an https URL from a
106MathJax CDN. The "local" option uses a local version of MathJax (which is
107copied into the output directory). You can pass an alternate URL or pass
108\code{NULL} to exclude MathJax entirely.}
JJ Allaire2ec40242014-09-15 09:18:39 -0400109
JJ Allaire4c178052016-01-30 19:35:39 -0500110\item{template}{Pandoc template to use for rendering. Pass "default" to use
111the rmarkdown package default template; pass \code{NULL} to use pandoc's
112built-in template; pass a path to use a custom template that you've
113created. Note that if you don't use the "default" template then some
114features of \code{revealjs_presentation} won't be available (see the
115Templates section below for more details).}
JJ Allaire2ec40242014-09-15 09:18:39 -0400116
Christophe Dervieux21239cf2021-09-15 15:34:01 +0200117\item{css}{CSS and/or Sass files to include. Files with an extension of .sass
118or .scss are compiled to CSS via \code{sass::sass()}. Also, if \code{theme} is a
119\code{\link[bslib:bs_theme]{bslib::bs_theme()}} object, Sass code may reference the relevant Bootstrap
120Sass variables, functions, mixins, etc.}
JJ Allairefad55232015-10-19 07:47:26 -0400121
JJ Allaire2ec40242014-09-15 09:18:39 -0400122\item{includes}{Named list of additional content to include within the
Atsushi Yasumoto7053f452020-02-15 00:08:46 +0900123document (typically created using the \code{\link[rmarkdown]{includes}} function).}
JJ Allaire2ec40242014-09-15 09:18:39 -0400124
125\item{keep_md}{Keep the markdown file generated by knitting.}
126
127\item{lib_dir}{Directory to copy dependent HTML libraries (e.g. jquery,
JJ Allaire091cb122016-02-09 13:04:23 -0500128bootstrap, etc.) into. By default this will be the name of the document with
Marc Kupietzf667b982026-08-08 17:16:28 +0200129\verb{_files} appended to it.}
JJ Allaire2ec40242014-09-15 09:18:39 -0400130
131\item{pandoc_args}{Additional command line options to pass to pandoc}
JJ Allaire8d1c2f42016-01-30 14:56:45 -0500132
JJ Allaire35c0b492017-02-10 09:30:24 -0500133\item{extra_dependencies}{Additional function arguments to pass to the base R
134Markdown HTML output formatter \code{\link[rmarkdown:html_document_base]{rmarkdown::html_document_base()}}.}
JJ Allaire375805c2016-11-15 08:56:43 -0500135
Atsushi Yasumoto7053f452020-02-15 00:08:46 +0900136\item{md_extensions}{Markdown extensions to be added or removed from the
Christophe Dervieux37782092023-03-24 17:36:16 +0100137default definition of R Markdown. See the \code{\link[rmarkdown]{rmarkdown_format}} for
Atsushi Yasumoto7053f452020-02-15 00:08:46 +0900138additional details.}
139
JJ Allaire8d1c2f42016-01-30 14:56:45 -0500140\item{...}{Ignored}
JJ Allaire2ec40242014-09-15 09:18:39 -0400141}
142\value{
christophe dervieuxd26add32021-09-23 16:55:00 +0200143R Markdown output format to pass to \code{\link[rmarkdown:render]{rmarkdown::render()}}
JJ Allaire2ec40242014-09-15 09:18:39 -0400144}
145\description{
146Format for converting from R Markdown to a reveal.js presentation.
147}
148\details{
JJ Allaire4c178052016-01-30 19:35:39 -0500149In reveal.js presentations you can use level 1 or level 2 headers for slides.
150If you use a mix of level 1 and level 2 headers then a two-dimensional layout
151will be produced, with level 1 headers building horizontally and level 2
152headers building vertically.
JJ Allaire2ec40242014-09-15 09:18:39 -0400153
JJ Allaire4c178052016-01-30 19:35:39 -0500154For additional documentation on using revealjs presentations see
christophe dervieuxd26add32021-09-23 16:55:00 +0200155\url{https://github.com/rstudio/revealjs}
JJ Allaire2ec40242014-09-15 09:18:39 -0400156}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200157\section{About plugins}{
158\subsection{Built-in plugins with reveal.js}{
159\subsection{Zoom}{
160
161When activated, ALT + Click can be used to zoom on a slide.
162}
163
164\subsection{Notes}{
165
166Show a \href{https://revealjs.com/speaker-view/}{speaker view} in a separated
167window. This speaker view contains a timer, current slide, next slide, and
168speaker notes. It also duplicate the window to have presentation mode
169synchronized with main presentation.
170
Christophe Dervieux37782092023-03-24 17:36:16 +0100171Use
172
173\if{html}{\out{<div class="sourceCode markdown">}}\preformatted{::: notes
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200174Content of speaker notes
175:::
176}\if{html}{\out{</div>}}
177
Marc Kupietz6b65c032026-08-25 09:43:28 +0300178to create notes only viewable in presentation mode. Notes placed before
179the first heading are attached to the title slide.
180
181On mobile browsers (touch devices), a button next to the fullscreen
182toggle overlays the current slide with its speaker notes (plus the slide
183title and, if present, the planned time from a timing comment), which is
184useful for practicing a talk on a phone or tablet. It follows along as
185you change slides and only appears if the deck contains notes at all.
Marc Kupietzeaaa2b42026-08-26 09:41:27 +0300186
187Pressing \code{r} toggles a transcript view: a single scrollable page
188containing every slide's content and speaker notes. Text-to-speech
189("read aloud") browser extensions cannot walk a reveal.js deck, since
190hidden slides are not part of the visible page text -- the transcript
191gives them something they can read from start to finish.
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200192}
193
Marc Kupietzb066e742026-08-23 09:57:06 +0300194}
195
196\subsection{Slide timing}{
197
198Speaker time can be planned per slide and per speaker by adding a comment
199with a speaker code and the expected duration (in \code{MM:SS}, \code{HH:MM:SS}, or
200plain seconds format) anywhere inside a slide:
201
202\if{html}{\out{<div class="sourceCode markdown">}}\preformatted{## My slide title
203
204Some content
205
206<!-- MK 00:30 -->
207}\if{html}{\out{</div>}}
208
209This means Marc Kupietz will need 30 seconds for that slide. For talks
210presented by a single speaker, the speaker code can be omitted:
Marc Kupietz6b65c032026-08-25 09:43:28 +0300211\verb{<!-- 00:30 -->}. Comments placed before the first heading are applied to
212the title slide.
Marc Kupietzb066e742026-08-23 09:57:06 +0300213
214Typically you start from a known total time budget and adjust the
215individual slides to it. You can set this budget yourself with the
216reveal.js \code{totalTime} option (in seconds):
217
218\if{html}{\out{<div class="sourceCode yaml">}}\preformatted{output:
219 revealjs.ids::revealjs_presentation:
220 reveal_options:
221 totalTime: 3600 # one hour
222}\if{html}{\out{</div>}}
223
224During rendering, comments are converted into \code{data-timing} attributes on
225the slides' \verb{<section>} elements (several speakers per slide are summed
226up), and the calculated grand total is passed to reveal.js as the
227\code{totalTime} config value. This activates the pacing timer in the
228\href{https://revealjs.com/speaker-view/}{speaker view}, which shows how you
229are doing relative to your plan. A summary of the total time per speaker
230is printed during rendering. If the document sets \code{totalTime} or
231\code{defaultTiming} itself (via \code{reveal_options}), those take precedence.
232
233The function \code{\link[=slide_timing]{slide_timing()}} computes these totals directly from an
234\code{.Rmd} source file without rendering it.
Marc Kupietz4fc867c2026-08-25 10:30:18 +0300235}
236
237\subsection{Overview slides}{
238
239Like in the original Google Docs slide workflow, a slide titled
240"Overview" or "Überblick" is automatically turned into a table of
241contents: its body content is replaced at presentation time with a
Marc Kupietz24057e52026-08-25 10:51:06 +0300242clickable list of all \verb{#} chapter headings. Adding
243\code{{data-overview-subheadings=true}} to the heading also includes the
244\verb{##} sub-headings below their chapters, laid out in two columns.
Marc Kupietz4eb03202026-08-25 10:58:10 +0300245References and appendix chapters (References/Literatur/
246Literaturverzeichnis/Appendix/Anhang) are left out, together with
247their sub-slides.
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200248\subsection{Search}{
249
250When opt-in, it is possible to show a search box when pressing \code{CTRL + SHIFT + F}. It will seach in the whole presentation, and highlight matched words. The
251matches will also be highlighted in overview mode (pressing ESC to see all
252slides in one scrollable view)
253}
254
255}
256
257\subsection{Menu}{
258
259A slideout menu plugin for Reveal.js to quickly jump to any slide by title.
260
Christophe Dervieux37782092023-03-24 17:36:16 +0100261Version is
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200262currently used and documentation for configurations can be found at
263\href{https://github.com/denehyg/reveal.js-menu/blob/2.1.0/README.md}{denehyg/reveal.js-menu}
264\subsection{Known limitations}{
265
266Some configurations cannot be modified in the current template:
267\itemize{
268\item \code{loadIcons: false} the fontawesome icons are loaded by \pkg{rmarkdown}
269when this plugin is used
270\item \code{custom: false}
271\item \code{themes: false}
272\item \code{transitions: false}
273}
274}
275
276}
277
278\subsection{Chalkboard}{
279
280A plugin adding a chalkboard and slide annotation
281
Christophe Dervieux37782092023-03-24 17:36:16 +0100282Version is
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200283currently used and documentation for configurations can be found at
Marc Kupietzf667b982026-08-08 17:16:28 +0200284\href{https://github.com/rajgoel/reveal.js-plugins/tree/4.2.5/4.1.5/chalkboard}{rajgoel/reveal.js-plugins}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200285
286By default, chalkboard and annotations modes will be accessible using keyboard
287shortcuts, respectively, pressing B, or pressing C.
Christophe Dervieux37782092023-03-24 17:36:16 +0100288In addition, buttons on the bottom left can be added by using the following
289
290\if{html}{\out{<div class="sourceCode yaml">}}\preformatted{reveal_plugins:
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200291 - chalkboard
292reveal_options:
293 chalkboard:
294 toggleNotesButton: true
295 toggleChalkboardButton: true
296}\if{html}{\out{</div>}}
297}
Marc Kupietzad0f24b2026-08-23 10:09:05 +0300298
299\subsection{Bibliography and citations}{
300
301Documents with a \verb{bibliography:} in their YAML header are formatted with
302the bundled IDS citation style (\code{ids.csl}, based on the style developed
303for ICLC-10 2023 in Mannheim) by default. To use a different style,
304specify it as usual with \verb{csl:} in the YAML header.
305}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200306}
307
JJ Allaire2ec40242014-09-15 09:18:39 -0400308\examples{
309\dontrun{
310
311library(rmarkdown)
Marc Kupietz03dbc5d2026-08-21 15:44:25 +0200312library(revealjs.ids)
JJ Allaire2ec40242014-09-15 09:18:39 -0400313
314# simple invocation
315render("pres.Rmd", revealjs_presentation())
316
317# specify an option for incremental rendering
318render("pres.Rmd", revealjs_presentation(incremental = TRUE))
319}
JJ Allaired708ef02016-01-30 14:30:26 -0500320
JJ Allaire2ec40242014-09-15 09:18:39 -0400321}