diff --git a/.Rbuildignore b/.Rbuildignore
index a278550..630c7af 100644
--- a/.Rbuildignore
+++ b/.Rbuildignore
@@ -2,3 +2,4 @@
 ^\.Rproj\.user$
 ^tests$
 ^docs$
+^.github$
diff --git a/DESCRIPTION b/DESCRIPTION
index 01e935e..955536c 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -50,5 +50,5 @@
     dplyr
 VignetteBuilder: knitr
 Encoding: UTF-8
-RoxygenNote: 6.0.1
+RoxygenNote: 6.1.0
 Roxygen: list(markdown = TRUE)
diff --git a/NAMESPACE b/NAMESPACE
index bdaf5ed..2894e97 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -35,6 +35,7 @@
 export(spec_tooltip)
 export(text_spec)
 export(usepackage_latex)
+export(xtable2kable)
 import(htmltools)
 importFrom(grDevices,col2rgb)
 importFrom(knitr,asis_output)
@@ -66,6 +67,7 @@
 importFrom(stringr,str_split)
 importFrom(stringr,str_sub)
 importFrom(stringr,str_trim)
+importFrom(utils,capture.output)
 importFrom(utils,head)
 importFrom(utils,read.csv)
 importFrom(viridisLite,viridis)
diff --git a/R/add_header_above.R b/R/add_header_above.R
index 4489c81..d02770f 100644
--- a/R/add_header_above.R
+++ b/R/add_header_above.R
@@ -14,9 +14,23 @@
 #' @param italic A T/F value to control whether the text should to be emphasized.
 #' @param monospace A T/F value to control whether the text of the selected column
 #' need to be monospaced (verbatim)
+#' @param underline A T/F value to control whether the text of the selected row
+#' need to be underlined
+#' @param strikeout A T/F value to control whether the text of the selected row
+#' need to be stricked out.
 #' @param align A character string for cell alignment. For HTML, possible values could
 #' be `l`, `c`, `r` plus `left`, `center`, `right`, `justify`, `initial` and `inherit`
 #' while for LaTeX, you can only choose from `l`, `c` & `r`.
+#' @param color A character string/vector for text color. Here please pay
+#' attention to the differences in color codes between HTML and LaTeX.
+#' @param background A character string/vector for background color. Here please
+#' pay attention to the differences in color codes between HTML and LaTeX. Also
+#' note that in HTML, background defined in cell_spec won't cover the whole
+#' cell.
+#' @param font_size A numeric input/vector for font size. For HTML, you can also use
+#' options including `xx-small`, `x-small`, `small`, `medium`, `large`,
+#' `x-large`, `xx-large`, `smaller`, `larger`, `initial` and `inherit`.
+#' @param angle 0-360, degree that the text will rotate.
 #' @param escape A T/F value showing whether special characters should be
 #' escaped.
 #' @param line A T/F value to control whether a line will appear underneath the
@@ -29,29 +43,37 @@
 #'
 #' @export
 add_header_above <- function(kable_input, header = NULL,
-                             bold = FALSE, italic = FALSE,
-                             monospace = FALSE, align = "c",
+                             bold = FALSE, italic = FALSE, monospace = FALSE,
+                             underline = FALSE, strikeout = FALSE,
+                             align = "c", color = NULL, background = NULL,
+                             font_size = NULL, angle = NULL,
                              escape = TRUE, line = TRUE) {
   kable_format <- attr(kable_input, "format")
   if (!kable_format %in% c("html", "latex")) {
     warning("Please specify format in kable. kableExtra can customize either ",
-         "HTML or LaTeX outputs. See https://haozhu233.github.io/kableExtra/ ",
-         "for details.")
+            "HTML or LaTeX outputs. See https://haozhu233.github.io/kableExtra/ ",
+            "for details.")
     return(kable_input)
   }
   if (kable_format == "html") {
     return(htmlTable_add_header_above(kable_input, header, bold, italic,
-                                      monospace, align, escape,line))
+                                      monospace, underline, strikeout,
+                                      align, color, background,
+                                      font_size, angle, escape, line))
   }
   if (kable_format == "latex") {
     return(pdfTable_add_header_above(kable_input, header, bold, italic,
-                                     monospace, align, escape,line))
+                                     monospace, underline, strikeout,
+                                     align, color, background,
+                                     font_size, angle, escape, line))
   }
 }
 
 # HTML
 htmlTable_add_header_above <- function(kable_input, header, bold, italic,
-                                       monospace, align, escape, line) {
+                                       monospace, underline, strikeout,
+                                       align, color, background,
+                                       font_size, angle, escape, line) {
   if (is.null(header)) return(kable_input)
   kable_attrs <- attributes(kable_input)
   kable_xml <- read_kable_as_xml(kable_input)
@@ -71,8 +93,10 @@
          "columns with the original kable output.")
   }
 
-  new_header_row <- htmlTable_new_header_generator(header, bold, italic,
-                                                   monospace,align, line)
+  new_header_row <- htmlTable_new_header_generator(
+    header, bold, italic, monospace, underline, strikeout, align, line,
+    color, background, font_size, angle
+  )
   xml_add_child(kable_xml_thead, new_header_row, .where = 0)
   out <- as_kable_xml(kable_xml)
   if (is.null(kable_attrs$header_above)) {
@@ -100,8 +124,10 @@
   return(data.frame(header = names(header), colspan = header, row.names = NULL))
 }
 
-htmlTable_new_header_generator <- function(header_df, bold, italic,
-                                           monospace, align, line) {
+htmlTable_new_header_generator <- function(header_df, bold, italic, monospace,
+                                           underline, strikeout, align, line,
+                                           color, background, font_size,
+                                           angle) {
   if (align %in% c("l", "c", "r")) {
     align <- switch(align, r = "right", c = "center", l = "left")
   }
@@ -109,21 +135,52 @@
     paste0("text-align: ", align, "; "),
     ifelse(bold, "font-weight: bold; ", ""),
     ifelse(italic, "font-style: italic; ", ""),
-    ifelse(monospace, "font-family: monospace; ", "")
+    ifelse(monospace, "font-family: monospace; ", ""),
+    ifelse(underline, "text-decoration: underline; ", ""),
+    ifelse(strikeout, "text-decoration: line-through; ", "")
   )
-  header_items <- apply(header_df, 1, function(x) {
-    if (trimws(x[1]) == "") {
-      paste0('<th style="border-bottom:hidden" colspan="', x[2], '"></th>')
-    } else {
-      paste0('<th style="border-bottom:hidden; ',
-             'padding-bottom:0; padding-left:3px;padding-right:3px;',
-             row_style,
-             '" colspan="',
-             x[2], '"><div style="',
-             ifelse(line,'border-bottom: 1px solid #ddd; padding-bottom: 5px;">','">'),
-             x[1], '</div></th>')
-    }
-  })
+  if (!is.null(color)) {
+    row_style <- paste0(row_style, "color: ", html_color(color), ";")
+  }
+  if (!is.null(background)) {
+    row_style <- paste0(
+      row_style,
+      "padding-right: 4px; padding-left: 4px; ",
+      "background-color: ", html_color(background), ";"
+    )
+  }
+  if (!is.null(font_size)) {
+    if (is.numeric(font_size)) font_size <- paste0(font_size, "px")
+    row_style <- paste0(row_style, "font-size: ", font_size, ";")
+  }
+  if (!is.null(angle)) {
+    angle <- paste0("-webkit-transform: rotate(", angle,
+                    "deg); -moz-transform: rotate(", angle,
+                    "deg); -ms-transform: rotate(", angle,
+                    "deg); -o-transform: rotate(", angle,
+                    "deg); transform: rotate(", angle,
+                    "deg); display: inline-block; ")
+    header_df$header <- ifelse(
+      trimws(header_df$header) == "",
+      header_df$header,
+      paste0('<span style="', angle, '">', header_df$header, '</span>')
+    )
+  }
+
+  line <- ifelse(ez_rep(line, nrow(header_df)),
+                 "border-bottom: 1px solid #ddd; padding-bottom: 5px; ", "")
+
+  header_items <- ifelse(
+    trimws(header_df$header) == "",
+    paste0('<th style="border-bottom:hidden" colspan="', header_df$colspan,
+           '"></th>'),
+    paste0(
+      '<th style="border-bottom:hidden; ',
+      'padding-bottom:0; padding-left:3px;padding-right:3px;',
+      row_style, '" colspan="',
+      header_df$colspan, '"><div style="', line, '">', header_df$header,
+      '</div></th>')
+  )
   header_text <- paste(c("<tr>", header_items, "</tr>"), collapse = "")
   header_xml <- read_xml(header_text, options = c("COMPACT"))
   return(header_xml)
@@ -131,7 +188,9 @@
 
 # Add an extra header row above the current header in a LaTeX table ------
 pdfTable_add_header_above <- function(kable_input, header, bold, italic,
-                                      monospace, align, escape, line) {
+                                      monospace, underline, strikeout,
+                                      align, color, background,
+                                      font_size, angle, escape, line) {
   table_info <- magic_mirror(kable_input)
   header <- standardize_header_input(header)
 
@@ -143,8 +202,9 @@
 
   hline_type <- switch(table_info$booktabs + 1, "\\\\hline", "\\\\toprule")
   new_header_split <- pdfTable_new_header_generator(
-    header, table_info$booktabs, bold, italic, monospace, align)
-  if(line){
+    header, table_info$booktabs, bold, italic, monospace, underline, strikeout,
+    align, color, background, font_size, angle)
+  if (line) {
     new_header <- paste0(new_header_split[1], "\n", new_header_split[2])
   } else {
     new_header <- new_header_split[1]
@@ -165,24 +225,60 @@
   return(out)
 }
 
+ez_rep <- function(x, n) {
+  if (is.null(x)) return(NULL)
+  if (length(x) == 1) return(rep(x, n))
+  return(x)
+}
+
 pdfTable_new_header_generator <- function(header_df, booktabs = FALSE,
-                                          bold, italic, monospace, align) {
-  if (booktabs) {
-    header_df$align <- align
-  } else {
-    header_df$align <- paste0("|", align, "|")
-    header_df$align[1] <- paste0(align, "|")
-    header_df$align[nrow(header_df)] <- paste0("|", align)
+                                          bold, italic, monospace,
+                                          underline, strikeout, align,
+                                          color, background, font_size, angle) {
+  n <- nrow(header_df)
+  bold <- ez_rep(bold, n)
+  italic <- ez_rep(italic, n)
+  monospace <- ez_rep(monospace, n)
+  underline <- ez_rep(underline, n)
+  strikeout <- ez_rep(strikeout, n)
+  align <- ez_rep(align, n)
+  color <- ez_rep(color, n)
+  background <- ez_rep(background, n)
+  font_size <- ez_rep(font_size, n)
+  angle <- ez_rep(angle, n)
+  if (!booktabs) {
+    align <- paste0("|", align, "|")
+    align[1] <- paste0(align[1], "|")
+    align[nrow(header_df)] <- paste0("|", align[nrow(header_df)])
   }
-  header_items <- apply(header_df, 1, function(x) {
-    # if(x[2] == 1) return(x[1])
-    paste0('\\\\multicolumn{', x[2], '}{', x[3], '}{',
-           ifelse(bold, "\\\\bfseries ", ""),
-           ifelse(italic, "\\\\em ", ""),
-           ifelse(monospace, "\\\\ttfamily ", ""),
-           x[1],
-           "}")
-  })
+  header <- header_df$header
+  colspan <- header_df$colspan
+
+  header <- ifelse(bold, paste0('\\\\textbf\\{', header, '\\}'), header)
+  header <- ifelse(italic, paste0('\\\\em\\{', header, '\\}'), header)
+  header <- ifelse(monospace, paste0('\\\\ttfamily\\{', header, '\\}'), header)
+  header <- ifelse(underline, paste0('\\\\underline\\{', header, '\\}'), header)
+  header <- ifelse(strikeout, paste0('\\\\sout\\{', header, '\\}'), header)
+  if (!is.null(color)) {
+    color <- latex_color(color)
+    header <- paste0("\\\\textcolor", color, "\\{", header, "\\}")
+  }
+  if (!is.null(background)) {
+    background <- latex_color(background)
+    header <- paste0("\\\\cellcolor", background, "\\{", header, "\\}")
+  }
+  if (!is.null(font_size)) {
+    header <- paste0("\\\\bgroup\\\\fontsize\\{", font_size, "\\}\\{",
+                     as.numeric(font_size) + 2,
+                     "\\}\\\\selectfont ", header, "\\\\egroup\\{\\}")
+  }
+  if (!is.null(angle)) {
+    header <- paste0("\\\\rotatebox\\{", angle, "\\}\\{", header, "\\}")
+  }
+  header_items <- paste0(
+    '\\\\multicolumn\\{', colspan, '\\}\\{', align, '\\}\\{', header, '\\}'
+  )
+
   header_text <- paste(paste(header_items, collapse = " & "), "\\\\\\\\")
   cline <- cline_gen(header_df, booktabs)
   return(c(header_text, cline))
diff --git a/R/kableExtra-package.R b/R/kableExtra-package.R
index beeaecc..8c254d9 100644
--- a/R/kableExtra-package.R
+++ b/R/kableExtra-package.R
@@ -65,7 +65,7 @@
 #' @importFrom rmarkdown latex_dependency html_dependency_bootstrap
 #' html_dependency_jquery pandoc_self_contained_html
 #' @importFrom magrittr %>%
-#' @importFrom utils read.csv head
+#' @importFrom utils read.csv head capture.output
 #' @importFrom readr read_lines read_file
 #' @importFrom scales rescale
 #' @importFrom viridisLite viridis
diff --git a/R/kable_styling.R b/R/kable_styling.R
index 4c2b5e7..b7a343b 100644
--- a/R/kable_styling.R
+++ b/R/kable_styling.R
@@ -298,15 +298,15 @@
 
   x <- read_lines(x)
   if (table_info$booktabs) {
-    header_rows_start <- which(x == "\\toprule")[1]
+    header_rows_start <- which(trimws(x) == "\\toprule")[1]
     if (is.null(table_info$colnames)) {
       header_rows_end <- header_rows_start
     } else {
-      header_rows_end <- which(x == "\\midrule")[1]
+      header_rows_end <- which(trimws(x) == "\\midrule")[1]
     }
   } else {
-    header_rows_start <- which(x == "\\hline")[1]
-    header_rows_end <- which(x == "\\hline")[2]
+    header_rows_start <- which(trimws(x) == "\\hline")[1]
+    header_rows_end <- which(trimws(x) == "\\hline")[2]
   }
 
   x <- c(
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)
+}
diff --git a/man/add_header_above.Rd b/man/add_header_above.Rd
index 0c54c36..452479b 100644
--- a/man/add_header_above.Rd
+++ b/man/add_header_above.Rd
@@ -4,8 +4,10 @@
 \alias{add_header_above}
 \title{Add a header row on top of current header}
 \usage{
-add_header_above(kable_input, header = NULL, bold = FALSE, italic = FALSE,
-  monospace = FALSE, align = "c", escape = TRUE, line = TRUE)
+add_header_above(kable_input, header = NULL, bold = FALSE,
+  italic = FALSE, monospace = FALSE, underline = FALSE,
+  strikeout = FALSE, align = "c", color = NULL, background = NULL,
+  font_size = NULL, angle = NULL, escape = TRUE, line = TRUE)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
@@ -23,10 +25,30 @@
 \item{monospace}{A T/F value to control whether the text of the selected column
 need to be monospaced (verbatim)}
 
+\item{underline}{A T/F value to control whether the text of the selected row
+need to be underlined}
+
+\item{strikeout}{A T/F value to control whether the text of the selected row
+need to be stricked out.}
+
 \item{align}{A character string for cell alignment. For HTML, possible values could
 be \code{l}, \code{c}, \code{r} plus \code{left}, \code{center}, \code{right}, \code{justify}, \code{initial} and \code{inherit}
 while for LaTeX, you can only choose from \code{l}, \code{c} & \code{r}.}
 
+\item{color}{A character string/vector for text color. Here please pay
+attention to the differences in color codes between HTML and LaTeX.}
+
+\item{background}{A character string/vector for background color. Here please
+pay attention to the differences in color codes between HTML and LaTeX. Also
+note that in HTML, background defined in cell_spec won't cover the whole
+cell.}
+
+\item{font_size}{A numeric input/vector for font size. For HTML, you can also use
+options including \code{xx-small}, \code{x-small}, \code{small}, \code{medium}, \code{large},
+\code{x-large}, \code{xx-large}, \code{smaller}, \code{larger}, \code{initial} and \code{inherit}.}
+
+\item{angle}{0-360, degree that the text will rotate.}
+
 \item{escape}{A T/F value showing whether special characters should be
 escaped.}
 
diff --git a/man/cell_spec.Rd b/man/cell_spec.Rd
index 1138e21..f8d09af 100644
--- a/man/cell_spec.Rd
+++ b/man/cell_spec.Rd
@@ -6,16 +6,18 @@
 \title{Specify Cell/Text format}
 \usage{
 cell_spec(x, format, bold = FALSE, italic = FALSE, monospace = FALSE,
-  underline = FALSE, strikeout = FALSE, color = NULL, background = NULL,
-  align = NULL, font_size = NULL, angle = NULL, tooltip = NULL,
-  popover = NULL, link = NULL, extra_css = NULL, escape = TRUE,
-  background_as_tile = TRUE, latex_background_in_cell = TRUE)
+  underline = FALSE, strikeout = FALSE, color = NULL,
+  background = NULL, align = NULL, font_size = NULL, angle = NULL,
+  tooltip = NULL, popover = NULL, link = NULL, extra_css = NULL,
+  escape = TRUE, background_as_tile = TRUE,
+  latex_background_in_cell = TRUE)
 
 text_spec(x, format, bold = FALSE, italic = FALSE, monospace = FALSE,
-  underline = FALSE, strikeout = FALSE, color = NULL, background = NULL,
-  align = NULL, font_size = NULL, angle = NULL, tooltip = NULL,
-  popover = NULL, link = NULL, extra_css = NULL, escape = TRUE,
-  background_as_tile = TRUE, latex_background_in_cell = FALSE)
+  underline = FALSE, strikeout = FALSE, color = NULL,
+  background = NULL, align = NULL, font_size = NULL, angle = NULL,
+  tooltip = NULL, popover = NULL, link = NULL, extra_css = NULL,
+  escape = TRUE, background_as_tile = TRUE,
+  latex_background_in_cell = FALSE)
 }
 \arguments{
 \item{x}{Things to be formated. It could be a vector of numbers or strings.}
diff --git a/man/footnote.Rd b/man/footnote.Rd
index cabcb12..0f9e9aa 100644
--- a/man/footnote.Rd
+++ b/man/footnote.Rd
@@ -7,8 +7,9 @@
 footnote(kable_input, general = NULL, number = NULL, alphabet = NULL,
   symbol = NULL, footnote_order = c("general", "number", "alphabet",
   "symbol"), footnote_as_chunk = FALSE, escape = TRUE,
-  threeparttable = FALSE, general_title = "Note: ", number_title = "",
-  alphabet_title = "", symbol_title = "", title_format = "italic")
+  threeparttable = FALSE, general_title = "Note: ",
+  number_title = "", alphabet_title = "", symbol_title = "",
+  title_format = "italic")
 }
 \arguments{
 \item{kable_input}{HTML or LaTeX table generated by \code{knitr::kable}}
diff --git a/man/group_rows.Rd b/man/group_rows.Rd
index a9ada7e..3bf01cd 100644
--- a/man/group_rows.Rd
+++ b/man/group_rows.Rd
@@ -6,10 +6,10 @@
 \usage{
 group_rows(kable_input, group_label = NULL, start_row = NULL,
   end_row = NULL, index = NULL,
-  label_row_css = "border-bottom: 1px solid;", latex_gap_space = "0.3em",
-  escape = TRUE, latex_align = "l", colnum = NULL, bold = T,
-  italic = F, hline_before = F, hline_after = F,
-  extra_latex_after = NULL)
+  label_row_css = "border-bottom: 1px solid;",
+  latex_gap_space = "0.3em", escape = TRUE, latex_align = "l",
+  colnum = NULL, bold = T, italic = F, hline_before = F,
+  hline_after = F, extra_latex_after = NULL)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
diff --git a/man/reexports.Rd b/man/reexports.Rd
index 1473b2c..87b7db4 100644
--- a/man/reexports.Rd
+++ b/man/reexports.Rd
@@ -4,7 +4,6 @@
 \name{reexports}
 \alias{reexports}
 \alias{\%>\%}
-\alias{reexports}
 \alias{kable}
 \title{Objects exported from other packages}
 \keyword{internal}
diff --git a/man/row_spec.Rd b/man/row_spec.Rd
index f803a7b..c65aede 100644
--- a/man/row_spec.Rd
+++ b/man/row_spec.Rd
@@ -5,9 +5,10 @@
 \title{Specify the look of the selected row}
 \usage{
 row_spec(kable_input, row, bold = FALSE, italic = FALSE,
-  monospace = FALSE, underline = FALSE, strikeout = FALSE, color = NULL,
-  background = NULL, align = NULL, font_size = NULL, angle = NULL,
-  extra_css = NULL, hline_after = FALSE, extra_latex_after = NULL)
+  monospace = FALSE, underline = FALSE, strikeout = FALSE,
+  color = NULL, background = NULL, align = NULL, font_size = NULL,
+  angle = NULL, extra_css = NULL, hline_after = FALSE,
+  extra_latex_after = NULL)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
diff --git a/man/xtable2kable.Rd b/man/xtable2kable.Rd
new file mode 100644
index 0000000..faf3281
--- /dev/null
+++ b/man/xtable2kable.Rd
@@ -0,0 +1,35 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/xtable2kable.R
+\name{xtable2kable}
+\alias{xtable2kable}
+\title{Convert xtable to a kable object}
+\usage{
+xtable2kable(x, ...)
+}
+\arguments{
+\item{x}{an xtable object}
+
+\item{...}{options for print.xtable}
+}
+\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 \code{print.xtable}. All the options
+you provided to this function will be sent to \code{print.xtable}. Instead of
+printing out the result, this function will return the LaTeX or HTML as
+text and a kable object.
+}
+\examples{
+\dontrun{
+library(xtable)
+xtable(mtcars) \%>\%
+  xtable2kable(booktabs = TRUE) \%>\%
+  kable_styling(latex_options = "striped")
+}
+
+}
diff --git a/tests/visual_tests/add_header_above_html.Rmd b/tests/visual_tests/add_header_above_html.Rmd
index cbe5e71..3f81265 100644
--- a/tests/visual_tests/add_header_above_html.Rmd
+++ b/tests/visual_tests/add_header_above_html.Rmd
@@ -16,7 +16,8 @@
   kable_styling(bootstrap_options = c("striped", "condensed"), 
                 latex_options = c("striped", "hold_position"),
                 full_width = F) %>%
-  add_header_above(c(" ", "Group 1" = 2, "Group 2[note]" = 2), italic = T) %>%
+  add_header_above(c(" ", "Group 1" = 2, "Group 2[note]" = 2), strikeout = T,
+                   italic = c(T, T, F), color = c("red", "yellow", "blue"), background = "gray", angle = 90) %>%
   add_footnote(c("table footnote"))
 ```
 
diff --git a/tests/visual_tests/add_header_above_pdf.Rmd b/tests/visual_tests/add_header_above_pdf.Rmd
index dc6cfa8..4eba3f4 100644
--- a/tests/visual_tests/add_header_above_pdf.Rmd
+++ b/tests/visual_tests/add_header_above_pdf.Rmd
@@ -16,8 +16,9 @@
 
 kable(dt, format = "latex", booktabs = T, caption = "Demo Table") %>%
   kable_styling() %>%
-  add_header_above(c(" ", "Group_1" = 2, "Group 2[note]" = 2), bold = T, italic = T) %>%
-  add_footnote(c("table footnote")) 
+  add_header_above(c(" ", "Group_1" = 2, "Group 2[note]" = 2), bold = T, italic = c(T, T, F), underline = c(F, T, F), strikeout = c(F, T, F), color = c('red', 'yellow', 'blue'),
+                   background = c('black', "brown", "yellow"), angle = c(0, 90, 0),
+                   font_size = c(7, 15, 10))
 ```
 
 ```{r}
