blob: a903d312c91d601061142bc9a97ee7b357bf69eb [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.
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200186}
187
Marc Kupietzb066e742026-08-23 09:57:06 +0300188}
189
190\subsection{Slide timing}{
191
192Speaker time can be planned per slide and per speaker by adding a comment
193with a speaker code and the expected duration (in \code{MM:SS}, \code{HH:MM:SS}, or
194plain seconds format) anywhere inside a slide:
195
196\if{html}{\out{<div class="sourceCode markdown">}}\preformatted{## My slide title
197
198Some content
199
200<!-- MK 00:30 -->
201}\if{html}{\out{</div>}}
202
203This means Marc Kupietz will need 30 seconds for that slide. For talks
204presented by a single speaker, the speaker code can be omitted:
Marc Kupietz6b65c032026-08-25 09:43:28 +0300205\verb{<!-- 00:30 -->}. Comments placed before the first heading are applied to
206the title slide.
Marc Kupietzb066e742026-08-23 09:57:06 +0300207
208Typically you start from a known total time budget and adjust the
209individual slides to it. You can set this budget yourself with the
210reveal.js \code{totalTime} option (in seconds):
211
212\if{html}{\out{<div class="sourceCode yaml">}}\preformatted{output:
213 revealjs.ids::revealjs_presentation:
214 reveal_options:
215 totalTime: 3600 # one hour
216}\if{html}{\out{</div>}}
217
218During rendering, comments are converted into \code{data-timing} attributes on
219the slides' \verb{<section>} elements (several speakers per slide are summed
220up), and the calculated grand total is passed to reveal.js as the
221\code{totalTime} config value. This activates the pacing timer in the
222\href{https://revealjs.com/speaker-view/}{speaker view}, which shows how you
223are doing relative to your plan. A summary of the total time per speaker
224is printed during rendering. If the document sets \code{totalTime} or
225\code{defaultTiming} itself (via \code{reveal_options}), those take precedence.
226
227The function \code{\link[=slide_timing]{slide_timing()}} computes these totals directly from an
228\code{.Rmd} source file without rendering it.
Marc Kupietz4fc867c2026-08-25 10:30:18 +0300229}
230
231\subsection{Overview slides}{
232
233Like in the original Google Docs slide workflow, a slide titled
234"Overview" or "Überblick" is automatically turned into a table of
235contents: its body content is replaced at presentation time with a
Marc Kupietz24057e52026-08-25 10:51:06 +0300236clickable list of all \verb{#} chapter headings. Adding
237\code{{data-overview-subheadings=true}} to the heading also includes the
238\verb{##} sub-headings below their chapters, laid out in two columns.
Marc Kupietz4eb03202026-08-25 10:58:10 +0300239References and appendix chapters (References/Literatur/
240Literaturverzeichnis/Appendix/Anhang) are left out, together with
241their sub-slides.
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200242\subsection{Search}{
243
244When 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
245matches will also be highlighted in overview mode (pressing ESC to see all
246slides in one scrollable view)
247}
248
249}
250
251\subsection{Menu}{
252
253A slideout menu plugin for Reveal.js to quickly jump to any slide by title.
254
Christophe Dervieux37782092023-03-24 17:36:16 +0100255Version is
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200256currently used and documentation for configurations can be found at
257\href{https://github.com/denehyg/reveal.js-menu/blob/2.1.0/README.md}{denehyg/reveal.js-menu}
258\subsection{Known limitations}{
259
260Some configurations cannot be modified in the current template:
261\itemize{
262\item \code{loadIcons: false} the fontawesome icons are loaded by \pkg{rmarkdown}
263when this plugin is used
264\item \code{custom: false}
265\item \code{themes: false}
266\item \code{transitions: false}
267}
268}
269
270}
271
272\subsection{Chalkboard}{
273
274A plugin adding a chalkboard and slide annotation
275
Christophe Dervieux37782092023-03-24 17:36:16 +0100276Version is
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200277currently used and documentation for configurations can be found at
Marc Kupietzf667b982026-08-08 17:16:28 +0200278\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 +0200279
280By default, chalkboard and annotations modes will be accessible using keyboard
281shortcuts, respectively, pressing B, or pressing C.
Christophe Dervieux37782092023-03-24 17:36:16 +0100282In addition, buttons on the bottom left can be added by using the following
283
284\if{html}{\out{<div class="sourceCode yaml">}}\preformatted{reveal_plugins:
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200285 - chalkboard
286reveal_options:
287 chalkboard:
288 toggleNotesButton: true
289 toggleChalkboardButton: true
290}\if{html}{\out{</div>}}
291}
Marc Kupietzad0f24b2026-08-23 10:09:05 +0300292
293\subsection{Bibliography and citations}{
294
295Documents with a \verb{bibliography:} in their YAML header are formatted with
296the bundled IDS citation style (\code{ids.csl}, based on the style developed
297for ICLC-10 2023 in Mannheim) by default. To use a different style,
298specify it as usual with \verb{csl:} in the YAML header.
299}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200300}
301
JJ Allaire2ec40242014-09-15 09:18:39 -0400302\examples{
303\dontrun{
304
305library(rmarkdown)
Marc Kupietz03dbc5d2026-08-21 15:44:25 +0200306library(revealjs.ids)
JJ Allaire2ec40242014-09-15 09:18:39 -0400307
308# simple invocation
309render("pres.Rmd", revealjs_presentation())
310
311# specify an option for incremental rendering
312render("pres.Rmd", revealjs_presentation(incremental = TRUE))
313}
JJ Allaired708ef02016-01-30 14:30:26 -0500314
JJ Allaire2ec40242014-09-15 09:18:39 -0400315}