Add extra customization options to add_header_above
diff --git a/R/xtable2kable.R b/R/xtable2kable.R
new file mode 100644
index 0000000..862d7a1
--- /dev/null
+++ b/R/xtable2kable.R
@@ -0,0 +1,56 @@
+#' Convert xtable to a kable object
+#'
+#' @description This function allow users to turn an xtable object into a kable
+#' so they can use most of kableExtra's functions with their xtable code without
+#' making too many changes. Note that although I tested many cases and it seems
+#' to work, this function may not be functional in some other cases. I'm not
+#' a regular xtable user and can only provide very limited support for this
+#' function.
+#'
+#' You should use this table in the same way as `print.xtable`. All the options
+#' you provided to this function will be sent to `print.xtable`. Instead of
+#' printing out the result, this function will return the LaTeX or HTML as
+#' text and a kable object.
+#'
+#' @param x an xtable object
+#' @param ... options for print.xtable
+#'
+#' @examples
+#' \dontrun{
+#' library(xtable)
+#' xtable(mtcars) %>%
+#'   xtable2kable(booktabs = TRUE) %>%
+#'   kable_styling(latex_options = "striped")
+#' }
+#'
+#' @export
+xtable2kable <- function(x, ...) {
+  if (!class(x)[1] == "xtable") {
+    warning("x is not an xtable object.")
+    return(x)
+  }
+
+  out <- capture.output(print(x, ...))[-(1:2)]
+  out <- paste(out, collapse = "\n")
+
+  xtable_print_options <- list(...)
+  if ("type" %in% names(xtable_print_options) &&
+      xtable_print_options$type == "html") {
+    out <- structure(out, format = "html", class = "knitr_kable")
+    return(out)
+  }
+
+  out <- structure(out, format = "latex", class = "knitr_kable")
+
+  # Assign modefied meta to output
+  out_meta <- magic_mirror(out)
+
+  if ("table.placement" %in% names(xtable_print_options)) {
+    out_meta$valign <- paste0("[", xtable_print_options$table.placement, "]")
+  }
+  if ("tabular.environment" %in% names(xtable_print_options)) {
+    out_meta$tabular <- xtable_print_options$tabular.environment
+  }
+  attr(out, "kable_meta") <- out_meta
+  return(out)
+}