blob: 0e93d1a9dccb83db96abf9e246b5377a74844f92 [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
Marc Kupietz010db0b2026-08-26 09:56:45 +0300187Pressing \code{r} -- or, on touch devices, tapping the list button next to
188the speaker notes button -- toggles a transcript view: a single
189scrollable page containing every slide's content and speaker notes.
190Text-to-speech ("read aloud") browser extensions cannot walk a
191reveal.js deck, since hidden slides are not part of the visible page
192text -- the transcript gives them something they can read from start
193to finish.
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200194}
195
Marc Kupietzb066e742026-08-23 09:57:06 +0300196}
197
198\subsection{Slide timing}{
199
200Speaker time can be planned per slide and per speaker by adding a comment
201with a speaker code and the expected duration (in \code{MM:SS}, \code{HH:MM:SS}, or
202plain seconds format) anywhere inside a slide:
203
204\if{html}{\out{<div class="sourceCode markdown">}}\preformatted{## My slide title
205
206Some content
207
208<!-- MK 00:30 -->
209}\if{html}{\out{</div>}}
210
211This means Marc Kupietz will need 30 seconds for that slide. For talks
212presented by a single speaker, the speaker code can be omitted:
Marc Kupietz6b65c032026-08-25 09:43:28 +0300213\verb{<!-- 00:30 -->}. Comments placed before the first heading are applied to
214the title slide.
Marc Kupietzb066e742026-08-23 09:57:06 +0300215
216Typically you start from a known total time budget and adjust the
217individual slides to it. You can set this budget yourself with the
218reveal.js \code{totalTime} option (in seconds):
219
220\if{html}{\out{<div class="sourceCode yaml">}}\preformatted{output:
221 revealjs.ids::revealjs_presentation:
222 reveal_options:
223 totalTime: 3600 # one hour
224}\if{html}{\out{</div>}}
225
226During rendering, comments are converted into \code{data-timing} attributes on
227the slides' \verb{<section>} elements (several speakers per slide are summed
228up), and the calculated grand total is passed to reveal.js as the
229\code{totalTime} config value. This activates the pacing timer in the
230\href{https://revealjs.com/speaker-view/}{speaker view}, which shows how you
231are doing relative to your plan. A summary of the total time per speaker
232is printed during rendering. If the document sets \code{totalTime} or
233\code{defaultTiming} itself (via \code{reveal_options}), those take precedence.
234
235The function \code{\link[=slide_timing]{slide_timing()}} computes these totals directly from an
236\code{.Rmd} source file without rendering it.
Marc Kupietz4fc867c2026-08-25 10:30:18 +0300237}
238
239\subsection{Overview slides}{
240
241Like in the original Google Docs slide workflow, a slide titled
242"Overview" or "Überblick" is automatically turned into a table of
243contents: its body content is replaced at presentation time with a
Marc Kupietz24057e52026-08-25 10:51:06 +0300244clickable list of all \verb{#} chapter headings. Adding
245\code{{data-overview-subheadings=true}} to the heading also includes the
246\verb{##} sub-headings below their chapters, laid out in two columns.
Marc Kupietz4eb03202026-08-25 10:58:10 +0300247References and appendix chapters (References/Literatur/
248Literaturverzeichnis/Appendix/Anhang) are left out, together with
249their sub-slides.
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200250\subsection{Search}{
251
252When 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
253matches will also be highlighted in overview mode (pressing ESC to see all
254slides in one scrollable view)
255}
256
257}
258
259\subsection{Menu}{
260
261A slideout menu plugin for Reveal.js to quickly jump to any slide by title.
262
Christophe Dervieux37782092023-03-24 17:36:16 +0100263Version is
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200264currently used and documentation for configurations can be found at
265\href{https://github.com/denehyg/reveal.js-menu/blob/2.1.0/README.md}{denehyg/reveal.js-menu}
266\subsection{Known limitations}{
267
268Some configurations cannot be modified in the current template:
269\itemize{
270\item \code{loadIcons: false} the fontawesome icons are loaded by \pkg{rmarkdown}
271when this plugin is used
272\item \code{custom: false}
273\item \code{themes: false}
274\item \code{transitions: false}
275}
276}
277
278}
279
280\subsection{Chalkboard}{
281
282A plugin adding a chalkboard and slide annotation
283
Christophe Dervieux37782092023-03-24 17:36:16 +0100284Version is
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200285currently used and documentation for configurations can be found at
Marc Kupietzf667b982026-08-08 17:16:28 +0200286\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 +0200287
288By default, chalkboard and annotations modes will be accessible using keyboard
289shortcuts, respectively, pressing B, or pressing C.
Christophe Dervieux37782092023-03-24 17:36:16 +0100290In addition, buttons on the bottom left can be added by using the following
291
292\if{html}{\out{<div class="sourceCode yaml">}}\preformatted{reveal_plugins:
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200293 - chalkboard
294reveal_options:
295 chalkboard:
296 toggleNotesButton: true
297 toggleChalkboardButton: true
298}\if{html}{\out{</div>}}
299}
Marc Kupietzad0f24b2026-08-23 10:09:05 +0300300
301\subsection{Bibliography and citations}{
302
303Documents with a \verb{bibliography:} in their YAML header are formatted with
304the bundled IDS citation style (\code{ids.csl}, based on the style developed
305for ICLC-10 2023 in Mannheim) by default. To use a different style,
306specify it as usual with \verb{csl:} in the YAML header.
307}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200308}
309
JJ Allaire2ec40242014-09-15 09:18:39 -0400310\examples{
311\dontrun{
312
313library(rmarkdown)
Marc Kupietz03dbc5d2026-08-21 15:44:25 +0200314library(revealjs.ids)
JJ Allaire2ec40242014-09-15 09:18:39 -0400315
316# simple invocation
317render("pres.Rmd", revealjs_presentation())
318
319# specify an option for incremental rendering
320render("pres.Rmd", revealjs_presentation(incremental = TRUE))
321}
JJ Allaired708ef02016-01-30 14:30:26 -0500322
JJ Allaire2ec40242014-09-15 09:18:39 -0400323}