diff --git a/R/column_spec.R b/R/column_spec.R
index 0f36f65..bd9a425 100644
--- a/R/column_spec.R
+++ b/R/column_spec.R
@@ -516,8 +516,9 @@
     new_row[column] <- paste0("\\\\sout\\{", new_row[column], "\\}")
   }
   if (!is.null(color)) {
+    clean_columns <- unlist(lapply(new_row[column], clear_color_latex))
     new_row[column] <- paste0("\\\\textcolor", latex_color(color), "\\{",
-                              new_row[column], "\\}")
+                              clean_columns, "\\}")
   }
   # if (!is.null(font_size)) {
   #   new_row[column] <- paste0("\\\\begingroup\\\\fontsize\\{", font_size, "\\}\\{",
@@ -529,8 +530,9 @@
   #                             new_row[column], "\\}")
   # }
   if (!is.null(background)) {
+    clean_columns <- unlist(lapply(new_row[column], clear_color_latex, TRUE))
     new_row[column] <- paste0("\\\\cellcolor", latex_color(background), "\\{",
-                              new_row[column], "\\}")
+                              clean_columns, "\\}")
   }
 
   if (!is.null(link)) {
diff --git a/R/row_spec.R b/R/row_spec.R
index cc8978e..92d8150 100644
--- a/R/row_spec.R
+++ b/R/row_spec.R
@@ -249,9 +249,16 @@
   }
   if (!is.null(color)) {
     new_row <- lapply(new_row, function(x) {
+      x <- clear_color_latex(x)
       paste0("\\\\textcolor", latex_color(color), "\\{", x, "\\}")
     })
   }
+  if (!is.null(background)) {
+    new_row <- lapply(new_row, function(x) {
+      x <- clear_color_latex(x, background = TRUE)
+      paste0("\\\\cellcolor", latex_color(background), "\\{", x, "\\}")
+    })
+  }
   if (!is.null(font_size)) {
     new_row <- lapply(new_row, function(x) {
       paste0("\\\\begingroup\\\\fontsize\\{", font_size, "\\}\\{",
@@ -284,9 +291,9 @@
 
   new_row <- paste(unlist(new_row), collapse = " & ")
 
-  if (!is.null(background)) {
-    new_row <- paste0("\\\\rowcolor", latex_color(background), "  ", new_row)
-  }
+  # if (!is.null(background)) {
+  #   new_row <- paste0("\\\\rowcolor", latex_color(background), "  ", new_row)
+  # }
 
   if (!hline_after & is.null(extra_latex_after)) {
     return(new_row)
@@ -303,3 +310,5 @@
     return(c(new_row, latex_after))
   }
 }
+
+
diff --git a/R/util.R b/R/util.R
index 528e9bd..e623709 100644
--- a/R/util.R
+++ b/R/util.R
@@ -152,3 +152,17 @@
   x <- linebreak(x, align = latex_align, double_escape = TRUE)
 }
 
+clear_color_latex <- function(x, background = F) {
+  term <- if (background) "cellcolor" else "textcolor"
+  regex_1 <- sprintf(
+    "\\\\\\\\%s\\\\\\[HTML\\\\\\]\\\\\\{[a-zA-Z0-9]*\\\\\\}\\\\\\{", term
+  )
+  regex_2 <- sprintf(
+    "\\\\\\\\%s\\\\\\{[a-zA-Z0-9]*\\\\\\}\\\\\\{", term
+  )
+  origin_len <- nchar(x)
+  x <- stringr::str_remove(x, regex_1)
+  x <- stringr::str_remove(x, regex_2)
+  return(ifelse(nchar(x) != origin_len, stringr::str_remove(x, "\\\\\\}$"), x))
+}
+
diff --git a/R/zzz.R b/R/zzz.R
index 3fd88fb..36133e7 100644
--- a/R/zzz.R
+++ b/R/zzz.R
@@ -18,8 +18,8 @@
       # usepackage_latex("xcolor")
     }
   }
-  # auto_format <- getOption("kableExtra.auto_format", default = TRUE)
-  # if (auto_format) auto_set_format()
+  auto_format <- getOption("kableExtra.auto_format", default = TRUE)
+  if (auto_format) auto_set_format()
   if (!is.null(rmarkdown::metadata$output) &&
       rmarkdown::metadata$output %in% c(
         "ioslides_presentation", "slidy_presentation",
