Adding group_rows HTML part; Finished group_rows
diff --git a/R/group_rows.R b/R/group_rows.R
index 9827811..3a179b0 100644
--- a/R/group_rows.R
+++ b/R/group_rows.R
@@ -1,25 +1,30 @@
 #' Put a few rows of a table into one category
 #'
 #' @export
-group_rows <- function(kable_input, group_label, start_row, end_row) {
+group_rows <- function(kable_input, group_label, start_row, end_row,
+                       label_row_css = "border-bottom: 1px solid;",
+                       latex_gap_space = "0.5em") {
+  if (!is.numeric(c(start_row, end_row))) {
+    stop("Start_row and end_row must be numeric position of rows (excluding",
+         "header rows and other group-title rows). ")
+  }
   kable_format <- attr(kable_input, "format")
   if (!kable_format %in% c("html", "latex")) {
     message("Currently generic markdown table using pandoc is not supported.")
     return(kable_input)
   }
   if (kable_format == "html") {
-    return(group_rows_html(kable_input, group_label, start_row, end_row))
+    return(group_rows_html(kable_input, group_label, start_row, end_row,
+                           label_row_css))
   }
   if (kable_format == "latex") {
-    return(group_rows_latex(kable_input, group_label, start_row, end_row))
+    return(group_rows_latex(kable_input, group_label, start_row, end_row,
+                            latex_gap_space))
   }
 }
 
-group_rows_html <- function(kable_input, group_label, start_row, end_row) {
-  if (!is.numeric(c(start_row, end_row))) {
-    stop("Start_row and end_row must be numeric position of rows (excluding",
-         "header rows and other group-title rows). ")
-  }
+group_rows_html <- function(kable_input, group_label, start_row, end_row,
+                            label_row_css) {
   kable_attrs <- attributes(kable_input)
   kable_xml <- read_xml(as.character(kable_input), options = "COMPACT")
   kable_tbody <- xml_tpart(kable_xml, "tbody")
@@ -35,8 +40,9 @@
   starting_node <- xml_child(kable_tbody, group_seq[1])
   kable_ncol <- length(xml_children(starting_node))
   group_header_row_text <- paste0(
-    '<tr groupLength="', length(group_seq), '"><td colspan="',
-    kable_ncol, '"><strong>', group_label, "</strong></td></tr>"
+    '<tr groupLength="', length(group_seq), '"><td colspan="', kable_ncol,
+    '" style="', label_row_css, '"><strong>', group_label,
+    "</strong></td></tr>"
   )
   group_header_row <- read_xml(group_header_row_text, options = "COMPACT")
   xml_add_sibling(starting_node, group_header_row, .where = "before")
@@ -49,3 +55,35 @@
   out <- add_indent(out, positions = seq(start_row, end_row))
   return(out)
 }
+
+group_rows_latex <- function(kable_input, group_label, start_row, end_row, gap_space) {
+  table_info <- magic_mirror(kable_input)
+  out <- kable_input
+
+  # Add group label
+  rowtext <- table_info$contents[start_row + 1]
+  if (table_info$booktabs) {
+    new_rowtext <- paste0(
+      "\\\\addlinespace[", gap_space, "]\n",
+      "\\\\multicolumn{", table_info$ncol, "}{l}{\\\\textbf{", group_label,
+      "}}\\\\\\\\\n",
+      rowtext
+    )
+    # last_row <- paste0(table_info$contents[end_row + 1], "\\\\\\\\")
+    # out <- sub(
+    #   last_row,
+    #   paste0(last_row, "\n\\\\addlinespace[", gap_space, "]"),
+    #   out
+    # )
+  } else {
+    rowtext <- paste0("\\\\hline\n", rowtext)
+    new_rowtext <- paste0(
+      "\\\\hline\n\\\\multicolumn{", table_info$ncol, "}{l}{\\\\textbf{",
+      group_label, "}}\\\\\\\\\n", rowtext
+    )
+  }
+  out <- sub(rowtext, new_rowtext, out)
+  if (table_info$booktabs)
+  out <- add_indent(out, seq(start_row, end_row))
+  return(out)
+}