diff --git a/R/add_indent.R b/R/add_indent.R
index c0e1c1e..a8a455e 100644
--- a/R/add_indent.R
+++ b/R/add_indent.R
@@ -39,20 +39,14 @@
     table_info <- dup_fx_out[[2]]
   }
 
-  if (table_info$booktabs & is.null(table_info$colnames)) {
-    max_position <- table_info$nrow
-    position_offset <- 0
-  } else {
-    max_position <- table_info$nrow - 1
-    position_offset <- 1
-  }
+  max_position <- table_info$nrow - table_info$position_offset
 
   if (max(positions) > max_position) {
     stop("There aren't that many rows in the table. Check positions in ",
          "add_indent_latex.")
   }
 
-  for (i in positions + position_offset) {
+  for (i in positions + table_info$position_offset) {
     rowtext <- table_info$contents[i]
     out <- sub(rowtext, latex_indent_unit(rowtext), out, perl = TRUE)
     table_info$contents[i] <- latex_indent_unit(rowtext)
diff --git a/R/group_rows.R b/R/group_rows.R
index d3871f7..4352105 100644
--- a/R/group_rows.R
+++ b/R/group_rows.R
@@ -163,11 +163,7 @@
   if (italic) group_label <- paste0("\\\\textit{", group_label, "}")
   # Add group label
   if (table_info$booktabs) {
-    if (is.null(table_info$colnames)) {
-      rowtext <- table_info$contents[start_row]
-    } else {
-      rowtext <- table_info$contents[start_row + 1]
-    }
+    rowtext <- table_info$contents[start_row + table_info$position_offset]
     pre_rowtext <- paste0(
       "\\\\addlinespace[", gap_space, "]\n",
       ifelse(hline_before,"\\\\hline\n", ""),
diff --git a/R/kableExtra-package.R b/R/kableExtra-package.R
index 67d8558..7b4b72b 100644
--- a/R/kableExtra-package.R
+++ b/R/kableExtra-package.R
@@ -55,7 +55,6 @@
 #' vanilla rmarkdown. For customized rmarkdown templates, it is recommended to
 #' load related LaTeX packages manually.
 #'
-#' @importFrom stringi stri_replace_all_fixed
 #' @importFrom stringr str_count str_split str_match str_detect str_match_all
 #' str_extract str_replace_all str_trim str_extract_all str_sub str_replace
 #' @importFrom xml2 read_xml xml_attr xml_has_attr xml_attr<- read_html
diff --git a/R/kable_styling.R b/R/kable_styling.R
index c80b3d5..75dd545 100644
--- a/R/kable_styling.R
+++ b/R/kable_styling.R
@@ -281,13 +281,10 @@
 styling_latex_striped <- function(x, table_info, color) {
   # gray!6 is the same as shadecolor ({RGB}{248, 248, 248}) in pdf_document
   if (table_info$tabular == "longtable" & !is.na(table_info$caption)) {
-    if (table_info$booktabs & is.null(table_info$colnames)) {
-      row_color <- sprintf("\\rowcolors{1}{white}{%s}", color)
-    } else {
-      row_color <- sprintf("\\rowcolors{2}{white}{%s}", color)
-    }
+    row_color <- sprintf("\\rowcolors{%s}{white}{%s}",
+                         1 + table_info$position_offset, color)
   } else {
-    if (table_info$booktabs & is.null(table_info$colnames)) {
+    if (table_info$position_offset == 0) {
       row_color <- sprintf("\\rowcolors{1}{white}{%s}", color)
     } else {
       row_color <- sprintf("\\rowcolors{2}{%s}{white}", color)
diff --git a/R/magic_mirror.R b/R/magic_mirror.R
index 927aaec..5c2a942 100644
--- a/R/magic_mirror.R
+++ b/R/magic_mirror.R
@@ -90,14 +90,12 @@
   }
   kable_info$duplicated_rows <- (sum(duplicated(kable_info$contents)) != 0)
   # Column names
-  if (kable_info$booktabs) {
-    if (is.na(which(read_lines(kable_input) == "\\midrule")[1])) {
-      kable_info$colnames <- NULL
-    } else {
-      kable_info$colnames <- str_split(kable_info$contents[1], " \\& ")[[1]]
-    }
+  if (kable_info$booktabs & !grepl("\\\\midrule", kable_input)) {
+    kable_info$colnames <- NULL
+    kable_info$position_offset <- 0
   } else {
     kable_info$colnames <- str_split(kable_info$contents[1], " \\& ")[[1]]
+    kable_info$position_offset <- 1
   }
   # Row names
   kable_info$rownames <- str_extract(kable_info$contents, "^[^ &]*")
diff --git a/R/row_spec.R b/R/row_spec.R
index 76d7fbd..07962ed 100644
--- a/R/row_spec.R
+++ b/R/row_spec.R
@@ -187,7 +187,7 @@
     table_info <- dup_fx_out[[2]]
   }
 
-  row <- row + 1
+  row <- row + table_info$position_offset
   for (i in row) {
     target_row <- table_info$contents[i]
     new_row <- latex_new_row_builder(target_row, table_info,
