new df_print option: theme-styled data frame tables by default (kable)

Change-Id: I827aa1c5f372ee78944a8bd32f51caea1731e87f
diff --git a/NEWS.md b/NEWS.md
index 134bf68..a5593f8 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,7 @@
 # revealjs.ids (development version)
 
+- New `df_print` option (default `"kable"`): data frames are now printed as theme-styled HTML tables by default, so raw results on slides look reasonable without extra code. Use `df_print: default` for plain text output (or `tibble` / `paged` as in `rmarkdown::html_document`); `"kable"` prints all rows, so show only `head(x)` on slides with many-rowed results.
+
 - New transcript view, toggled with `r` (or, on touch devices, with a list button next to the speaker notes button): a single scrollable page containing every slide's content and speaker notes. Text-to-speech ("read aloud") browser extensions cannot walk a reveal.js deck (hidden slides are not part of the visible page text), but they can read the transcript from start to finish -- e.g. to have the whole talk including notes read aloud while practicing.
 
 - Slides titled "Overview" or "Überblick" are now automatically turned into a table of contents (ported from the old Google Docs slide workflow): their body content is replaced at presentation time with a clickable list of all `#` chapter headings. Adding `{data-overview-subheadings=true}` to the heading also includes the `##` sub-headings, laid out in two columns. References and appendix chapters (References/Literatur/Literaturverzeichnis/Appendix/Anhang) are excluded, together with their sub-slides.
diff --git a/R/revealjs_presentation.R b/R/revealjs_presentation.R
index ec8a814..68d0733 100644
--- a/R/revealjs_presentation.R
+++ b/R/revealjs_presentation.R
@@ -186,6 +186,13 @@
 #'   `c("notes", "search", "menu", "zoom")`; pass `NULL` to render without
 #'   any plugins. Note that `self_contained` must be set to `FALSE` in order
 #'   to use Reveal plugins.
+#' @param df_print Method used to print data frames in the document. The
+#'   default, `"kable"`, renders data frames as plain HTML tables styled by
+#'   the presentation theme, so that results look reasonable on slides without
+#'   any extra code. Since `"kable"` prints all rows, consider showing only
+#'   `head(x)` on slides with many-rowed results. Other supported methods are
+#'   `"default"` (plain text output), `"tibble"`, and `"paged"` (an
+#'   interactive paged table, see [rmarkdown::html_document()]).
 #' @param template Pandoc template to use for rendering. Pass "default" to use
 #'   the rmarkdown package default template; pass `NULL` to use pandoc's
 #'   built-in template; pass a path to use a custom template that you've
@@ -228,6 +235,7 @@
                                   reveal_options = NULL,
                                   reveal_plugins = c("notes", "search", "menu", "zoom"),
                                   highlight = "default",
+                                  df_print = "kable",
                                   mathjax = "default",
                                   template = "default",
                                   css = NULL,
@@ -457,6 +465,7 @@
     ),
     keep_md = keep_md,
     clean_supporting = self_contained,
+    df_print = df_print,
     pre_processor = pre_processor,
     post_processor = post_processor,
     base_format = html_document_base(
diff --git a/man/revealjs_presentation.Rd b/man/revealjs_presentation.Rd
index fe4fb7e..7f48a89 100644
--- a/man/revealjs_presentation.Rd
+++ b/man/revealjs_presentation.Rd
@@ -21,6 +21,7 @@
   reveal_options = NULL,
   reveal_plugins = c("notes", "search", "menu", "zoom"),
   highlight = "default",
+  df_print = "kable",
   mathjax = "default",
   template = "default",
   css = NULL,
@@ -103,6 +104,14 @@
 
   Pass \code{NULL} to prevent syntax highlighting.}
 
+\item{df_print}{Method used to print data frames in the document. The
+default, \code{"kable"}, renders data frames as plain HTML tables styled by
+the presentation theme, so that results look reasonable on slides without
+any extra code. Since \code{"kable"} prints all rows, consider showing only
+\code{head(x)} on slides with many-rowed results. Other supported methods are
+\code{"default"} (plain text output), \code{"tibble"}, and \code{"paged"} (an
+interactive paged table, see \code{\link[rmarkdown:html_document]{rmarkdown::html_document()}}).}
+
 \item{mathjax}{Include mathjax. The "default" option uses an https URL from a
 MathJax CDN. The "local" option uses a local version of MathJax (which is
 copied into the output directory). You can pass an alternate URL or pass