blob: fe4fb7e5f3764db49589c2131d2facb3379f10f5 [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 Kupietz9fdf0f72026-08-28 07:04:25 +030072\item{theme}{Visual theme. The dedicated IDS corporate design theme
73("ids") is the default and the only supported theme.}
JJ Allaire2ec40242014-09-15 09:18:39 -040074
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020075\item{transition}{Slide transition (
76"convex", "fade", "slide", "concave", "zoom", or "none"
77)}
junkkad4b3a162015-03-16 07:49:11 +010078
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020079\item{background_transition}{Slide background-transition (
80"convex", "fade", "slide", "concave", "zoom", or "none"
81)}
JJ Allaire2ec40242014-09-15 09:18:39 -040082
JJ Allaire35c0b492017-02-10 09:30:24 -050083\item{reveal_options}{Additional options to specify for reveal.js (see
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020084\url{https://revealjs.com/config/} for details). Options for plugins can also
85be 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 -050086
JJ Allaire35c0b492017-02-10 09:30:24 -050087\item{reveal_plugins}{Reveal plugins to include. Available plugins include
Marc Kupietz03dbc5d2026-08-21 15:44:25 +020088"notes", "search", "zoom", "chalkboard", and "menu". Defaults to
89\code{c("notes", "search", "menu", "zoom")}; pass \code{NULL} to render without
90any plugins. Note that \code{self_contained} must be set to \code{FALSE} in order
91to use Reveal plugins.}
JJ Allaire82a8dee2016-07-12 10:25:36 -040092
Christophe Dervieux37782092023-03-24 17:36:16 +010093\item{highlight}{Syntax highlighting style passed to Pandoc.
94
95 Supported built-in styles include "default", "tango", "pygments", "kate",
96 "monochrome", "espresso", "zenburn", "haddock", and "breezedark".
97
98 Two custom styles are also included, "arrow", an accessible color scheme,
99 and "rstudio", which mimics the default IDE theme. Alternatively, supply a
100 path to a \samp{.theme} file to use
101 \href{https://pandoc.org/MANUAL.html#syntax-highlighting}{a custom Pandoc
102 style}. Note that custom theme requires Pandoc 2.0+.
103
104 Pass \code{NULL} to prevent syntax highlighting.}
JJ Allaire2ec40242014-09-15 09:18:39 -0400105
Atsushi Yasumoto7053f452020-02-15 00:08:46 +0900106\item{mathjax}{Include mathjax. The "default" option uses an https URL from a
107MathJax CDN. The "local" option uses a local version of MathJax (which is
108copied into the output directory). You can pass an alternate URL or pass
109\code{NULL} to exclude MathJax entirely.}
JJ Allaire2ec40242014-09-15 09:18:39 -0400110
JJ Allaire4c178052016-01-30 19:35:39 -0500111\item{template}{Pandoc template to use for rendering. Pass "default" to use
112the rmarkdown package default template; pass \code{NULL} to use pandoc's
113built-in template; pass a path to use a custom template that you've
114created. Note that if you don't use the "default" template then some
115features of \code{revealjs_presentation} won't be available (see the
116Templates section below for more details).}
JJ Allaire2ec40242014-09-15 09:18:39 -0400117
Christophe Dervieux21239cf2021-09-15 15:34:01 +0200118\item{css}{CSS and/or Sass files to include. Files with an extension of .sass
119or .scss are compiled to CSS via \code{sass::sass()}. Also, if \code{theme} is a
120\code{\link[bslib:bs_theme]{bslib::bs_theme()}} object, Sass code may reference the relevant Bootstrap
121Sass variables, functions, mixins, etc.}
JJ Allairefad55232015-10-19 07:47:26 -0400122
JJ Allaire2ec40242014-09-15 09:18:39 -0400123\item{includes}{Named list of additional content to include within the
Atsushi Yasumoto7053f452020-02-15 00:08:46 +0900124document (typically created using the \code{\link[rmarkdown]{includes}} function).}
JJ Allaire2ec40242014-09-15 09:18:39 -0400125
126\item{keep_md}{Keep the markdown file generated by knitting.}
127
128\item{lib_dir}{Directory to copy dependent HTML libraries (e.g. jquery,
JJ Allaire091cb122016-02-09 13:04:23 -0500129bootstrap, etc.) into. By default this will be the name of the document with
Marc Kupietzf667b982026-08-08 17:16:28 +0200130\verb{_files} appended to it.}
JJ Allaire2ec40242014-09-15 09:18:39 -0400131
132\item{pandoc_args}{Additional command line options to pass to pandoc}
JJ Allaire8d1c2f42016-01-30 14:56:45 -0500133
JJ Allaire35c0b492017-02-10 09:30:24 -0500134\item{extra_dependencies}{Additional function arguments to pass to the base R
135Markdown HTML output formatter \code{\link[rmarkdown:html_document_base]{rmarkdown::html_document_base()}}.}
JJ Allaire375805c2016-11-15 08:56:43 -0500136
Atsushi Yasumoto7053f452020-02-15 00:08:46 +0900137\item{md_extensions}{Markdown extensions to be added or removed from the
Christophe Dervieux37782092023-03-24 17:36:16 +0100138default definition of R Markdown. See the \code{\link[rmarkdown]{rmarkdown_format}} for
Atsushi Yasumoto7053f452020-02-15 00:08:46 +0900139additional details.}
140
JJ Allaire8d1c2f42016-01-30 14:56:45 -0500141\item{...}{Ignored}
JJ Allaire2ec40242014-09-15 09:18:39 -0400142}
143\value{
christophe dervieuxd26add32021-09-23 16:55:00 +0200144R Markdown output format to pass to \code{\link[rmarkdown:render]{rmarkdown::render()}}
JJ Allaire2ec40242014-09-15 09:18:39 -0400145}
146\description{
147Format for converting from R Markdown to a reveal.js presentation.
148}
149\details{
JJ Allaire4c178052016-01-30 19:35:39 -0500150In reveal.js presentations you can use level 1 or level 2 headers for slides.
151If you use a mix of level 1 and level 2 headers then a two-dimensional layout
152will be produced, with level 1 headers building horizontally and level 2
153headers building vertically.
JJ Allaire2ec40242014-09-15 09:18:39 -0400154
JJ Allaire4c178052016-01-30 19:35:39 -0500155For additional documentation on using revealjs presentations see
christophe dervieuxd26add32021-09-23 16:55:00 +0200156\url{https://github.com/rstudio/revealjs}
JJ Allaire2ec40242014-09-15 09:18:39 -0400157}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200158\section{About plugins}{
Marc Kupietzb9a8cba2026-08-28 06:51:28 +0300159The plugins \code{notes}, \code{search}, \code{menu} and \code{zoom} are activated by default;
160only \code{chalkboard} is opt-in. Setting \code{reveal_plugins} replaces the default
161set -- pass \code{NULL} to render without any plugins.
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200162\subsection{Built-in plugins with reveal.js}{
163\subsection{Zoom}{
164
Marc Kupietzb9a8cba2026-08-28 06:51:28 +0300165Activated by default: ALT + Click can be used to zoom on a slide.
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200166}
167
168\subsection{Notes}{
169
Marc Kupietzb9a8cba2026-08-28 06:51:28 +0300170Activated by default: shows a \href{https://revealjs.com/speaker-view/}{speaker view} in a separated
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200171window. This speaker view contains a timer, current slide, next slide, and
172speaker notes. It also duplicate the window to have presentation mode
173synchronized with main presentation.
174
Christophe Dervieux37782092023-03-24 17:36:16 +0100175Use
176
177\if{html}{\out{<div class="sourceCode markdown">}}\preformatted{::: notes
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200178Content of speaker notes
179:::
180}\if{html}{\out{</div>}}
181
Marc Kupietz6b65c032026-08-25 09:43:28 +0300182to create notes only viewable in presentation mode. Notes placed before
183the first heading are attached to the title slide.
184
185On mobile browsers (touch devices), a button next to the fullscreen
186toggle overlays the current slide with its speaker notes (plus the slide
187title and, if present, the planned time from a timing comment), which is
188useful for practicing a talk on a phone or tablet. It follows along as
189you change slides and only appears if the deck contains notes at all.
Marc Kupietzeaaa2b42026-08-26 09:41:27 +0300190
Marc Kupietz010db0b2026-08-26 09:56:45 +0300191Pressing \code{r} -- or, on touch devices, tapping the list button next to
192the speaker notes button -- toggles a transcript view: a single
193scrollable page containing every slide's content and speaker notes.
194Text-to-speech ("read aloud") browser extensions cannot walk a
195reveal.js deck, since hidden slides are not part of the visible page
196text -- the transcript gives them something they can read from start
197to finish.
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200198}
199
Marc Kupietzb066e742026-08-23 09:57:06 +0300200}
201
202\subsection{Slide timing}{
203
204Speaker time can be planned per slide and per speaker by adding a comment
205with a speaker code and the expected duration (in \code{MM:SS}, \code{HH:MM:SS}, or
206plain seconds format) anywhere inside a slide:
207
208\if{html}{\out{<div class="sourceCode markdown">}}\preformatted{## My slide title
209
210Some content
211
212<!-- MK 00:30 -->
213}\if{html}{\out{</div>}}
214
215This means Marc Kupietz will need 30 seconds for that slide. For talks
216presented by a single speaker, the speaker code can be omitted:
Marc Kupietz6b65c032026-08-25 09:43:28 +0300217\verb{<!-- 00:30 -->}. Comments placed before the first heading are applied to
218the title slide.
Marc Kupietzb066e742026-08-23 09:57:06 +0300219
220Typically you start from a known total time budget and adjust the
221individual slides to it. You can set this budget yourself with the
222reveal.js \code{totalTime} option (in seconds):
223
224\if{html}{\out{<div class="sourceCode yaml">}}\preformatted{output:
225 revealjs.ids::revealjs_presentation:
226 reveal_options:
227 totalTime: 3600 # one hour
228}\if{html}{\out{</div>}}
229
230During rendering, comments are converted into \code{data-timing} attributes on
231the slides' \verb{<section>} elements (several speakers per slide are summed
232up), and the calculated grand total is passed to reveal.js as the
233\code{totalTime} config value. This activates the pacing timer in the
234\href{https://revealjs.com/speaker-view/}{speaker view}, which shows how you
235are doing relative to your plan. A summary of the total time per speaker
236is printed during rendering. If the document sets \code{totalTime} or
237\code{defaultTiming} itself (via \code{reveal_options}), those take precedence.
238
239The function \code{\link[=slide_timing]{slide_timing()}} computes these totals directly from an
240\code{.Rmd} source file without rendering it.
Marc Kupietz4fc867c2026-08-25 10:30:18 +0300241}
242
243\subsection{Overview slides}{
244
245Like in the original Google Docs slide workflow, a slide titled
246"Overview" or "Überblick" is automatically turned into a table of
247contents: its body content is replaced at presentation time with a
Marc Kupietz24057e52026-08-25 10:51:06 +0300248clickable list of all \verb{#} chapter headings. Adding
249\code{{data-overview-subheadings=true}} to the heading also includes the
250\verb{##} sub-headings below their chapters, laid out in two columns.
Marc Kupietz4eb03202026-08-25 10:58:10 +0300251References and appendix chapters (References/Literatur/
252Literaturverzeichnis/Appendix/Anhang) are left out, together with
253their sub-slides.
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200254\subsection{Search}{
255
Marc Kupietzb9a8cba2026-08-28 06:51:28 +0300256Activated by default: pressing \code{CTRL + SHIFT + F} shows a search box.
257It will search in the whole presentation, and highlight matched words. The
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200258matches will also be highlighted in overview mode (pressing ESC to see all
259slides in one scrollable view)
260}
261
262}
263
264\subsection{Menu}{
265
Marc Kupietzb9a8cba2026-08-28 06:51:28 +0300266Activated by default: a slideout menu plugin for Reveal.js to quickly jump
267to any slide by title.
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200268
Christophe Dervieux37782092023-03-24 17:36:16 +0100269Version is
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200270currently used and documentation for configurations can be found at
271\href{https://github.com/denehyg/reveal.js-menu/blob/2.1.0/README.md}{denehyg/reveal.js-menu}
272\subsection{Known limitations}{
273
274Some configurations cannot be modified in the current template:
275\itemize{
276\item \code{loadIcons: false} the fontawesome icons are loaded by \pkg{rmarkdown}
277when this plugin is used
278\item \code{custom: false}
279\item \code{themes: false}
280\item \code{transitions: false}
281}
282}
283
284}
285
286\subsection{Chalkboard}{
287
Marc Kupietzb9a8cba2026-08-28 06:51:28 +0300288An opt-in plugin adding a chalkboard and slide annotation
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200289
Christophe Dervieux37782092023-03-24 17:36:16 +0100290Version is
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200291currently used and documentation for configurations can be found at
Marc Kupietzf667b982026-08-08 17:16:28 +0200292\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 +0200293
294By default, chalkboard and annotations modes will be accessible using keyboard
295shortcuts, respectively, pressing B, or pressing C.
Christophe Dervieux37782092023-03-24 17:36:16 +0100296In addition, buttons on the bottom left can be added by using the following
297
298\if{html}{\out{<div class="sourceCode yaml">}}\preformatted{reveal_plugins:
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200299 - chalkboard
300reveal_options:
301 chalkboard:
302 toggleNotesButton: true
303 toggleChalkboardButton: true
304}\if{html}{\out{</div>}}
305}
Marc Kupietzad0f24b2026-08-23 10:09:05 +0300306
307\subsection{Bibliography and citations}{
308
309Documents with a \verb{bibliography:} in their YAML header are formatted with
310the bundled IDS citation style (\code{ids.csl}, based on the style developed
311for ICLC-10 2023 in Mannheim) by default. To use a different style,
312specify it as usual with \verb{csl:} in the YAML header.
313}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200314}
315
JJ Allaire2ec40242014-09-15 09:18:39 -0400316\examples{
317\dontrun{
318
319library(rmarkdown)
Marc Kupietz03dbc5d2026-08-21 15:44:25 +0200320library(revealjs.ids)
JJ Allaire2ec40242014-09-15 09:18:39 -0400321
322# simple invocation
323render("pres.Rmd", revealjs_presentation())
324
325# specify an option for incremental rendering
326render("pres.Rmd", revealjs_presentation(incremental = TRUE))
327}
JJ Allaired708ef02016-01-30 14:30:26 -0500328
JJ Allaire2ec40242014-09-15 09:18:39 -0400329}