diff --git a/R/kableExtra-package.R b/R/kableExtra-package.R
index 79f77e5..72978fb 100644
--- a/R/kableExtra-package.R
+++ b/R/kableExtra-package.R
@@ -10,6 +10,7 @@
 #' @importFrom rmarkdown latex_dependency
 #' @importFrom magrittr %>%
 #' @importFrom utils read.csv
+#' @importFrom readr read_lines
 #' @name kableExtra-package
 #' @aliases kableExtra
 #' @docType package
diff --git a/R/kable_styling.R b/R/kable_styling.R
index 74f11e1..e68f01a 100644
--- a/R/kable_styling.R
+++ b/R/kable_styling.R
@@ -33,6 +33,7 @@
 #' a `LaTeX` table, if `float_*` is selected, `LaTeX` package `wrapfig` will be
 #' imported.
 #' @param font_size A numeric input for table font size
+#' @param ... extra options for HTML or LaTeX
 #'
 #' @examples x_html <- knitr::kable(head(mtcars), "html")
 #' kable_styling(x_html, "striped", position = "left", font_size = 7)
@@ -46,7 +47,8 @@
                           latex_options = "basic",
                           full_width = NULL,
                           position = "center",
-                          font_size = NULL) {
+                          font_size = NULL,
+                          ...) {
 
   if (length(bootstrap_options) == 1 && bootstrap_options == "basic") {
     bootstrap_options <- getOption("kable_styling_bootstrap_options", "basic")
@@ -77,7 +79,7 @@
                              bootstrap_options = bootstrap_options,
                              full_width = full_width,
                              position = position,
-                             font_size = font_size))
+                             font_size = font_size, ...))
   }
   if (kable_format == "latex") {
     if (is.null(full_width)) {
@@ -87,7 +89,7 @@
                             latex_options = latex_options,
                             full_width = full_width,
                             position = position,
-                            font_size = font_size))
+                            font_size = font_size, ...))
   }
 }
 
@@ -166,7 +168,8 @@
                              full_width = F,
                              position = c("center", "left", "right",
                                           "float_left", "float_right"),
-                             font_size = NULL) {
+                             font_size = NULL,
+                             repeat_header_text = "\\ldots continued") {
 
   latex_options <- match.arg(
     latex_options,
@@ -192,7 +195,7 @@
   }
 
   if ("repeat_header" %in% latex_options & table_info$tabular == "longtable") {
-    out <- styling_latex_repeat_header(out, table_info)
+    out <- styling_latex_repeat_header(out, table_info, repeat_header_text)
   }
 
   if (full_width) {
@@ -236,10 +239,29 @@
   sub(table_info$end_tabular, paste0(table_info$end_tabular, "\\}"), x)
 }
 
-styling_latex_repeat_header <- function(x, table_info) {
-  row_one <- table_info$contents[2]
-  new_row_one <- paste0("\\\\endhead\n", row_one)
-  return(sub(row_one, new_row_one, x))
+styling_latex_repeat_header <- function(x, table_info, repeat_header_text) {
+  x <- read_lines(x)
+  if (table_info$booktabs) {
+    header_rows_start <- which(x == "\\toprule")[1]
+    header_rows_end <- which(x == "\\midrule")[1]
+  } else {
+    header_rows_start <- which(x == "\\hline")[1]
+    header_rows_end <- which(x == "\\hline")[2]
+  }
+  continue_line <- paste0(
+    "\\multicolumn{", table_info$ncol, "}{@{}l}{", repeat_header_text,
+    "}\\\\"
+  )
+  x <- c(
+    x[1:header_rows_end],
+    "\\endfirsthead",
+    continue_line,
+    x[header_rows_start:header_rows_end],
+    "\\endhead",
+    x[(header_rows_end + 1):length(x)]
+  )
+  x <- paste0(x, collapse = "\n")
+  return(x)
 }
 
 styling_latex_full_width <- function(x, table_info) {
