diff --git a/R/column_spec.R b/R/column_spec.R
index e13e685..1e2f13a 100644
--- a/R/column_spec.R
+++ b/R/column_spec.R
@@ -71,7 +71,7 @@
     target_cell <- xml_child(xml_child(kable_tbody, i), all_contents_array[i])
     if (!is.null(width)) {
       xml_attr(target_cell, "style") <- paste0(xml_attr(target_cell, "style"),
-                                              "width: ", width, "; ")
+                                               "width: ", width, "; ")
     }
     if (bold) {
       xml_attr(target_cell, "style") <- paste0(xml_attr(target_cell, "style"),
@@ -100,17 +100,23 @@
   return(out)
 }
 
-column_spec_latex <- function(kable_input, column, width, bold, italic, monospace) {
+column_spec_latex <- function(kable_input, column, width,
+                              bold, italic, monospace,
+                              color, background) {
   table_info <- magic_mirror(kable_input)
   if (!is.null(table_info$collapse_rows)) {
     message("Usually it is recommended to use column_spec before collapse_rows,",
             " especially in LaTeX, to get a desired result. ")
   }
+  if (!is.null(background)) {
+    warning("Column background color for LaTeX has not yet been implemented.")
+  }
   align_collapse <- ifelse(table_info$booktabs, "", "\\|")
   kable_align_old <- paste(table_info$align_vector, collapse = align_collapse)
 
   table_info$align_vector[column] <- latex_column_align_builder(
-    table_info$align_vector[column], width, bold, italic, monospace)
+    table_info$align_vector[column], width, bold, italic, monospace,
+    color, background)
 
   kable_align_new <- paste(table_info$align_vector, collapse = align_collapse)
 
@@ -127,7 +133,8 @@
   return(out)
 }
 
-latex_column_align_builder <- function(x, width, bold, italic, monospace) {
+latex_column_align_builder <- function(x, width, bold, italic, monospace,
+                                       color, background) {
   extra_align <- ""
   if (!is.null(width)) {
     extra_align <- switch(x,
@@ -137,15 +144,17 @@
     x <- paste0("p\\{", width, "\\}")
   }
 
-  if (bold | italic | monospace | extra_align != "") {
-    latex_array_options <- c("\\\\bfseries", "\\\\em", "\\\\ttfamily")[
-      c(bold, italic, monospace)]
-    latex_array_options <- c(latex_array_options, extra_align)
-    latex_array_options <- paste0(
-      "\\>\\{", paste(latex_array_options, collapse = ""), "\\}"
-    )
-    x <- paste0(latex_array_options, x)
+  if (!is.null(color)) {
+    color <- sprintf("\\\\color{%s}", color)
   }
 
+  latex_array_options <- c("\\\\bfseries", "\\\\em", "\\\\ttfamily")[
+    c(bold, italic, monospace)]
+  latex_array_options <- c(latex_array_options, extra_align, color)
+  latex_array_options <- paste0(
+    "\\>\\{", paste(latex_array_options, collapse = ""), "\\}"
+  )
+  x <- paste0(latex_array_options, x)
+
   return(x)
 }
diff --git a/R/row_spec.R b/R/row_spec.R
index 6615365..060c27f 100644
--- a/R/row_spec.R
+++ b/R/row_spec.R
@@ -82,7 +82,8 @@
   return(out)
 }
 
-row_spec_latex <- function(kable_input, row, bold, italic, monospace) {
+row_spec_latex <- function(kable_input, row, bold, italic, monospace,
+                           color, background) {
   table_info <- magic_mirror(kable_input)
   target_row <- table_info$contents[row + 1]
   new_row <- latex_row_cells(target_row)
@@ -101,8 +102,18 @@
       paste0("\\\\ttfamily{", x, "}")
     })
   }
+
+  if (!is.null(color)) {
+    new_row <- lapply(new_row, function(x) {
+      paste0("\\\\textcolor{", color, "}{", x, "}")
+    })
+  }
   new_row <- paste(unlist(new_row), collapse = " & ")
 
+  if (!is.null(background)) {
+    new_row <- paste0("\\\\rowcolor{", background, "}  ", new_row)
+  }
+
   out <- sub(target_row, new_row, as.character(kable_input), perl = T)
   out <- structure(out, format = "latex", class = "knitr_kable")
   attr(out, "kable_meta") <- table_info
diff --git a/tests/visual_tests/column_row_spec_pdf.Rmd b/tests/visual_tests/column_row_spec_pdf.Rmd
index 686cf8c..b727f0f 100644
--- a/tests/visual_tests/column_row_spec_pdf.Rmd
+++ b/tests/visual_tests/column_row_spec_pdf.Rmd
@@ -42,7 +42,7 @@
 kable(dt, "latex", booktabs = T, align = "r") %>%
   column_spec(2, "3cm", bold = T) %>%
   column_spec(3, monospace = T)%>%
-  column_spec(4, "3cm", italic = T)  %>%
-  row_spec(3, monospace = T)
+  column_spec(4, "3cm", italic = T, color = "red")  %>%
+  row_spec(3, monospace = T, color = "yellow", background = "black")
 ```
 
