#' Display the output of a summary function according to the output format #' #' This function is intended for use in a R markdown code chunk with the chunk #' option `results = "asis"`. #' #' @param object The object for which the summary is to be listed #' @param caption An optional caption #' @param label An optional label, ignored in html output #' @param clearpage Should a new page be started after the listing? Ignored in html output #' @export summary_listing <- function(object, caption = NULL, label = NULL, clearpage = TRUE) { if (knitr::is_latex_output()) { tex_listing(object = object, caption = caption, label = label, clearpage = clearpage) } if (knitr::is_html_output()) { html_listing(object = object, caption = caption) } } #' @rdname summary_listing #' @export tex_listing <- function(object, caption = NULL, label = NULL, clearpage = TRUE) { cat("\n") cat("\\begin{listing}", "\n") if (!is.null(caption)) { cat("\\caption{", caption, "}", "\n", sep = "") } if (!is.null(label)) { cat("\\caption{", label, "}", "\n", sep = "") } cat("\\begin{snugshade}", "\n") cat("\\scriptsize", "\n") cat("\\begin{verbatim}", "\n") cat(capture.output(suppressWarnings(summary(object))), sep = "\n") cat("\n") cat("\\end{verbatim}", "\n") cat("\\end{snugshade}", "\n") cat("\\end{listing}", "\n") if (clearpage) { cat("\\clearpage", "\n") } } #' @rdname summary_listing #' @export html_listing <- function(object, caption = NULL) { cat("\n") if (!is.null(caption)) { cat("<caption>", caption, "</caption>", "\n", sep = "") } cat("<pre><code>\n") cat(capture.output(suppressWarnings(summary(object))), sep = "\n") cat("\n") cat("</pre></code>\n") }