diff --git a/R/kable_styling.R b/R/kable_styling.R
index b7a343b..10cbba7 100644
--- a/R/kable_styling.R
+++ b/R/kable_styling.R
@@ -35,19 +35,18 @@
 #' a `LaTeX` table, if `float_*` is selected, `LaTeX` package `wrapfig` will be
 #' imported.
 #' @param font_size A numeric input for table font size
-#' @param row_label_position A character string determining the justification of the row
-#' labels in a table.  Possible values inclued `l` for left, `c` for center, and `r` for
-#' right.  The default value is `l` for left justifcation.
-#' @param ... extra options for HTML or LaTeX. See `details`.
-#'
-#' @details For LaTeX, extra options includes:
-#' - `repeat_header_method` can either be `append`(default) or `replace`
-#' - `repeat_header_text` is just a text string you want to append on or
-#' replace the caption.
-#' - `stripe_color` allows users to pick a different color for their strip lines.
-#' - `latex_table_env` character string to define customized table environment
-#' such as tabu or tabularx.You shouldn't expect all features could be
-#' supported in self-defined environments.
+#' @param row_label_position A character string determining the justification
+#' of the row labels in a table.  Possible values inclued `l` for left, `c` for
+#' center, and `r` for right.  The default value is `l` for left justifcation.
+#' @param repeat_header_method LaTeX option, can either be `append`(default) or
+#' `replace`
+#' @param repeat_header_text LaTeX option. A text string you want to append on
+#' or replace the caption.
+#' @param stripe_color LaTeX option allowing users to pick a different color
+#' for their strip lines. This option is not available in HTML
+#' @param latex_table_env LaTeX option. A character string to define customized
+#' table environment such as tabu or tabularx.You shouldn't expect all features
+#' could be supported in self-defined environments.
 #'
 #' @details  For LaTeX, if you use other than English environment
 #' - all tables are converted to 'UTF-8'. If you use, for example, Hungarian
@@ -68,7 +67,11 @@
                           position = "center",
                           font_size = NULL,
                           row_label_position = "l",
-                          ...) {
+                          repeat_header_text = "\\textit{(continued)}",
+                          repeat_header_method = c("append", "replace"),
+                          repeat_header_continued = FALSE,
+                          stripe_color = "gray!6",
+                          latex_table_env = NULL) {
 
   if (length(bootstrap_options) == 1 && bootstrap_options == "basic") {
     bootstrap_options <- getOption("kable_styling_bootstrap_options", "basic")
@@ -97,14 +100,11 @@
     if (is.null(full_width)) {
       full_width <- getOption("kable_styling_full_width", T)
     }
-    if(!missing(row_label_position)) {
-      warning("'row_label_position' is not active for HTML tables yet and parameter will not be used.")
-    }
     return(htmlTable_styling(kable_input,
                              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)) {
@@ -116,7 +116,11 @@
                             position = position,
                             font_size = font_size,
                             row_label_position = row_label_position,
-                            ...))
+                            repeat_header_text = repeat_header_text,
+                            repeat_header_method = repeat_header_method,
+                            repeat_header_continued = repeat_header_continued,
+                            stripe_color = stripe_color,
+                            latex_table_env = latex_table_env))
   }
 }
 
@@ -193,15 +197,14 @@
 pdfTable_styling <- function(kable_input,
                              latex_options = "basic",
                              full_width = F,
-                             position = c("center", "left", "right",
-                                          "float_left", "float_right"),
-                             font_size = NULL,
-                             repeat_header_text = "\\textit{(continued)}",
-                             repeat_header_method = c("append", "replace"),
-                             repeat_header_continued = FALSE,
-                             stripe_color = "gray!6",
-                             latex_table_env = NULL,
-                             row_label_position) {
+                             position,
+                             font_size,
+                             row_label_position,
+                             repeat_header_text,
+                             repeat_header_method,
+                             repeat_header_continued,
+                             stripe_color,
+                             latex_table_env) {
 
   latex_options <- match.arg(
     latex_options,
@@ -267,7 +270,7 @@
   attr(out, "kable_meta") <- table_info
 
   if (row_label_position != "l") {
-    if(table_info$tabular=="longtable") {
+    if (table_info$tabular == "longtable") {
       out <- sub("\\\\begin\\{longtable\\}\\{l",
                  paste0("\\\\begin\\{longtable\\}\\{",
                         row_label_position),
