diff --git a/NAMESPACE b/NAMESPACE
index 961edc0..905a515 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -3,7 +3,6 @@
 export("%>%")
 export(add_footnote)
 export(add_header_above)
-export(add_header_left)
 export(add_indent)
 export(collapse_rows)
 export(column_spec)
diff --git a/R/collapse_rows.R b/R/collapse_rows.R
index bf0e036..72ee31c 100644
--- a/R/collapse_rows.R
+++ b/R/collapse_rows.R
@@ -90,10 +90,6 @@
   if (is.null(columns)) {
     columns <- seq(1, table_info$ncol)
   }
-  if (!table_info$booktabs) {
-    warning("add_header_left only supports LaTeX table with booktabs. Please",
-            " use kable(..., booktabs = T) in your kable function.")
-  }
   out <- as.character(kable_input)
   contents <- table_info$contents
   kable_dt <- kable_dt_latex(contents)
@@ -112,10 +108,26 @@
       )
     }
   }
+
+  midrule_matrix <- collapse_row_matrix(kable_dt, seq(1, table_info$ncol),
+                                        html = F)
+  midrule_matrix[setdiff(seq(1, table_info$ncol), columns)] <- 1
+
+  ex_bottom <- length(contents) - 1
+  contents[2:ex_bottom] <- paste0(contents[2:ex_bottom], "\\\\\\\\")
+  if (!table_info$booktabs) {
+    contents[2:ex_bottom] <- paste0(contents[2:ex_bottom], "\n\\\\hline")
+  }
   for (i in seq(1:nrow(collapse_matrix))) {
     new_contents[i] <- paste0(new_kable_dt[i, ], collapse = " & ")
+    if (i != nrow(collapse_matrix)) {
+      row_midrule <- midline_groups(which(as.numeric(midrule_matrix[i, ]) > 0),
+                                    table_info$booktabs)
+      new_contents[i] <- paste0(new_contents[i], "\\\\\\\\\n", row_midrule)
+    }
     out <- sub(contents[i + 1], new_contents[i], out)
   }
+  out <- sub("\\\\addlinespace\n", "", out)
 
   out <- structure(out, format = "latex", class = "knitr_kable")
   table_info$collapse_rows <- TRUE
@@ -142,3 +154,17 @@
   )
   return(out)
 }
+
+midline_groups <- function(x, booktabs = T) {
+  diffs <- c(1, diff(x))
+  start_indexes <- c(1, which(diffs > 1))
+  end_indexes <- c(start_indexes-1, length(x))
+  ranges <- paste0(x[start_indexes], "-", x[end_indexes])
+  if (booktabs) {
+    out <- paste0("\\\\cmidrule{", ranges, "}")
+  } else {
+    out <- paste0("\\\\cline{", ranges, "}")
+  }
+  out <- paste0(out, collapse = "\n")
+  return(out)
+}
diff --git a/docs/awesome_table_in_pdf.Rmd b/docs/awesome_table_in_pdf.Rmd
index f75b87c..6ba45ac 100644
--- a/docs/awesome_table_in_pdf.Rmd
+++ b/docs/awesome_table_in_pdf.Rmd
@@ -266,3 +266,9 @@
   collapse_rows(columns = 1:2)
 ```
 
+```{r}
+kable(collapse_rows_dt, "latex", align = "c") %>%
+  column_spec(1, bold=T) %>%
+  collapse_rows()
+```
+
diff --git a/docs/awesome_table_in_pdf.pdf b/docs/awesome_table_in_pdf.pdf
index c8c4ded..97fdb0a 100644
--- a/docs/awesome_table_in_pdf.pdf
+++ b/docs/awesome_table_in_pdf.pdf
Binary files differ
diff --git a/man/add_header_left.Rd b/man/add_header_left.Rd
index 79847f8..43094a6 100644
--- a/man/add_header_left.Rd
+++ b/man/add_header_left.Rd
@@ -42,5 +42,4 @@
 \examples{
 x <- knitr::kable(head(mtcars), "html")
 add_header_left(x, c("A" = 2, "B" = 2, "C" = 2))
-
 }
diff --git a/tests/visual_tests/collapse_rows_html.Rmd b/tests/visual_tests/collapse_rows_html.Rmd
index 3f50879..6f26229 100644
--- a/tests/visual_tests/collapse_rows_html.Rmd
+++ b/tests/visual_tests/collapse_rows_html.Rmd
@@ -8,7 +8,7 @@
 library(kableExtra)
 set.seed(100)
 collapse_rows_dt <- data.frame(C1 = c(rep("a", 10), rep("b", 5)),
-                 C2 = c(rep("c", 7), rep("d", 3), rep("c", 2), rep("d", 3)),
+                 C2 = c(rep("c", 7), rep("d", 4), rep("c", 2), rep("d", 2)),
                  C3 = 1:15,
                  C4 = sample(c(0,1), 15, replace = TRUE))
 kable(collapse_rows_dt, "html", align = "c") %>%
diff --git a/tests/visual_tests/collapse_rows_pdf.Rmd b/tests/visual_tests/collapse_rows_pdf.Rmd
index a2f1138..deb4f39 100644
--- a/tests/visual_tests/collapse_rows_pdf.Rmd
+++ b/tests/visual_tests/collapse_rows_pdf.Rmd
@@ -1,17 +1,18 @@
 ---
 title: "Untitled"
-output: pdf_document
+output: 
+  pdf_document:
+    keep_tex: true
 ---
 
 ```{r}
 library(knitr)
 library(kableExtra)
 collapse_rows_dt <- data.frame(C1 = c(rep("aaaaaa aaaaaa", 10), rep("bbbbb bbbbbb", 5)),
-                 C2 = c(rep("c", 7), rep("d", 3), rep("c", 2), rep("d", 3)),
+                 C2 = c(rep("c", 7), rep("d", 4), rep("c", 2), rep("d", 2)),
                  C3 = 1:15,
                  C4 = sample(c(0,1), 15, replace = TRUE))
 kable(collapse_rows_dt, "latex", align = "c", booktabs = T) %>%
-  kable_styling() %>%
-  column_spec(1, bold=T, width = "2em") %>%
-  collapse_rows(1)
+  column_spec(1, bold = T, width = "5em") %>%
+  collapse_rows(1:2)
 ```
