diff --git a/R/collapse_rows.R b/R/collapse_rows.R
index 72ee31c..d260362 100644
--- a/R/collapse_rows.R
+++ b/R/collapse_rows.R
@@ -127,7 +127,7 @@
     }
     out <- sub(contents[i + 1], new_contents[i], out)
   }
-  out <- sub("\\\\addlinespace\n", "", out)
+  out <- gsub("\\\\addlinespace\n", "", out)
 
   out <- structure(out, format = "latex", class = "knitr_kable")
   table_info$collapse_rows <- TRUE
diff --git a/R/column_spec.R b/R/column_spec.R
index a177174..f936305 100644
--- a/R/column_spec.R
+++ b/R/column_spec.R
@@ -14,13 +14,16 @@
 #' need to be bolded.
 #' @param italic A T/F value to control whether the text of the selected column
 #' need to be emphasized.
+#' @param monospace A T/F value to control whether the text of the selected column
+#' need to be monospaced (verbatim)
 #'
 #' @examples x <- knitr::kable(head(mtcars), "html")
 #' column_spec(x, 1, width = "20em", bold = TRUE, italic = TRUE)
 #'
 #' @export
 column_spec <- function(kable_input, column,
-                        width = NULL, bold = FALSE, italic = FALSE) {
+                        width = NULL, bold = FALSE, italic = FALSE,
+                        monospace = FALSE) {
   if (!is.numeric(column)) {
     stop("column must be a numeric value")
   }
@@ -30,14 +33,14 @@
     return(kable_input)
   }
   if (kable_format == "html") {
-    return(column_spec_html(kable_input, column, width, bold, italic))
+    return(column_spec_html(kable_input, column, width, bold, italic, monospace))
   }
   if (kable_format == "latex") {
-    return(column_spec_latex(kable_input, column, width, bold, italic))
+    return(column_spec_latex(kable_input, column, width, bold, italic, monospace))
   }
 }
 
-column_spec_html <- function(kable_input, column, width, bold, italic) {
+column_spec_html <- function(kable_input, column, width, bold, italic, monospace) {
   kable_attrs <- attributes(kable_input)
   kable_xml <- read_xml(as.character(kable_input), options = "COMPACT")
   kable_tbody <- xml_tpart(kable_xml, "tbody")
@@ -72,6 +75,10 @@
       xml_attr(target_cell, "style") <- paste0(xml_attr(target_cell, "style"),
                                                "font-style: italic;")
     }
+    if (monospace) {
+      xml_attr(target_cell, "style") <- paste0(xml_attr(target_cell, "style"),
+                                               "font-family: monospace;")
+    }
   }
   out <- structure(as.character(kable_xml), format = "html",
                    class = "knitr_kable")
@@ -79,7 +86,7 @@
   return(out)
 }
 
-column_spec_latex <- function(kable_input, column, width, bold, italic) {
+column_spec_latex <- function(kable_input, column, width, bold, italic, monospace) {
   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,",
@@ -89,7 +96,7 @@
   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)
+    table_info$align_vector[column], width, bold, italic, monospace)
 
   kable_align_new <- paste(table_info$align_vector, collapse = align_collapse)
 
@@ -106,7 +113,7 @@
   return(out)
 }
 
-latex_column_align_builder <- function(x, width, bold, italic) {
+latex_column_align_builder <- function(x, width, bold, italic, monospace) {
   extra_align <- ""
   if (!is.null(width)) {
     extra_align <- switch(x,
@@ -116,8 +123,9 @@
     x <- paste0("p\\{", width, "\\}")
   }
 
-  if (bold | italic | extra_align != "") {
-    latex_array_options <- c("\\\\bfseries", "\\\\em")[c(bold, italic)]
+  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 = ""), "\\}"
diff --git a/R/group_rows.R b/R/group_rows.R
index 7b2ad33..c38aaae 100644
--- a/R/group_rows.R
+++ b/R/group_rows.R
@@ -98,6 +98,7 @@
     )
   }
   out <- sub(rowtext, new_rowtext, out)
+  out <- gsub("\\\\addlinespace\n", "", out)
   table_info$group_rows_used <- TRUE
   attr(out, "kable_meta") <- table_info
   out <- add_indent(out, seq(start_row, end_row))
diff --git a/man/column_spec.Rd b/man/column_spec.Rd
index fdedeac..9b24b01 100644
--- a/man/column_spec.Rd
+++ b/man/column_spec.Rd
@@ -5,7 +5,7 @@
 \title{Specify the look of the selected column}
 \usage{
 column_spec(kable_input, column, width = NULL, bold = FALSE,
-  italic = FALSE)
+  italic = FALSE, monospace = FALSE)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
@@ -22,6 +22,9 @@
 
 \item{italic}{A T/F value to control whether the text of the selected column
 need to be emphasized.}
+
+\item{monospace}{A T/F value to control whether the text of the selected column
+need to be monospaced (verbatim)}
 }
 \description{
 This function allows users to select a column and then specify
diff --git a/tests/visual_tests/column_row_spec_html.Rmd b/tests/visual_tests/column_row_spec_html.Rmd
index 919e4e7..7bbe229 100644
--- a/tests/visual_tests/column_row_spec_html.Rmd
+++ b/tests/visual_tests/column_row_spec_html.Rmd
@@ -41,6 +41,7 @@
   kable_styling(full_width = F)   %>%
   row_spec(1, bold = T) %>%
   column_spec(2, "5cm", bold = T) %>%
+  column_spec(3, monospace = T) %>%
   column_spec(4, "3cm", italic = T)
 ```
 
@@ -55,17 +56,3 @@
   column_spec(7, bold = T) %>%
   row_spec(5, bold = T, italic = T)
 ```
-
-```{r}
-dt <- mtcars[1:5, 1:6]
-dt$wt <- paste(dt$wt, "%")
-dt$mpg <- paste(dt$mpg, "&")
-dt$cyl <- paste(dt$cyl, "$")
-
-kable(dt, "html") %>%
-  kable_styling(full_width = F) %>%
-  add_header_left(c("aaa" = 4, "bbb"), "A") %>%
-  add_header_left(c("cccasjof jsafjiosadjfxclxz cjoiwdjosfns daflasfj asiofjsdfio" = 2, "ddd" = 3), "B") %>%
-  column_spec(1, bold = T, width = "2cm") %>%
-  column_spec(2, italic = T)
-```
diff --git a/tests/visual_tests/column_row_spec_pdf.Rmd b/tests/visual_tests/column_row_spec_pdf.Rmd
index b639092..8ffe566 100644
--- a/tests/visual_tests/column_row_spec_pdf.Rmd
+++ b/tests/visual_tests/column_row_spec_pdf.Rmd
@@ -28,7 +28,7 @@
     "Vivamus venenatis egestas eros ut tempus. Vivamus id est nisi. "
   ),
   contents2 = c(
-    "Lorem ipsum dolor",
+    "Lorem {ipsum} dolor",
     "In eu urna ", 
     "Vivamus venenatis"
   ),
@@ -41,6 +41,7 @@
 
 kable(dt, "latex", booktabs = T, align = "r") %>%
   column_spec(2, "3cm", bold = T) %>%
-  column_spec(4, "3cm", italic = T)
+  column_spec(3, monospace = T)%>%
+  column_spec(4, "3cm", italic = T) 
 ```
 
diff --git a/tests/visual_tests/indent_and_row_group.Rmd b/tests/visual_tests/indent_and_row_group.Rmd
index 789fff8..b9e35bd 100644
--- a/tests/visual_tests/indent_and_row_group.Rmd
+++ b/tests/visual_tests/indent_and_row_group.Rmd
@@ -27,10 +27,6 @@
   mtcars$wt[i] <- paste0(mtcars$wt[i], " &")
   mtcars$mpg[i] <- paste0(mtcars$mpg[i], "%")
 }
-kable(head(mtcars, n = 20), "latex", caption = "test", booktabs = T) %>%
-  kable_styling() %>%
-  # group_rows("these rows", 4, 16) %>%
-  # group_rows("Those rows", 17,20) %>%
-  # add_header_above(c(" ", "aaa$" = 5, "bbb%" = 6)) %>%
-  add_header_left(c("jj", "aaa" = 5, "bbb" = 6)) 
+kable(head(iris, n = 20), "latex", caption = "test", booktabs = T,
+      align = c("ccccc"))
 ```
