diff --git a/R/group_rows.R b/R/group_rows.R
index 6cc8ec5..31aa622 100644
--- a/R/group_rows.R
+++ b/R/group_rows.R
@@ -25,6 +25,11 @@
 #' parameter.
 #' @param colnum A numeric that determines how many columns the text should span.
 #' The default setting will have the text span the entire length.
+#' @param bold A T/F value to control whether the text should be bolded.
+#' @param italic A T/F value to control whether the text should to be emphasized.
+#' @param hline_after A replicate of `hline.after` in xtable. It
+#' addes a hline after ther row
+#' @param extra_latex_after Extra LaTeX text to be added after the row.
 #'
 #' @examples x <- knitr::kable(head(mtcars), "html")
 #' # Put Row 2 to Row 5 into a Group and label it as "Group A"
@@ -36,7 +41,11 @@
                        index = NULL,
                        label_row_css = "border-bottom: 1px solid;",
                        latex_gap_space = "0.3em",
-                       escape = TRUE, latex_align = "l", colnum = NULL) {
+                       escape = TRUE, latex_align = "l", colnum = NULL,
+                       bold = T,
+                       italic = F,
+                       hline_after = F,
+                       extra_latex_after = NULL) {
 
   kable_format <- attr(kable_input, "format")
   if (!kable_format %in% c("html", "latex")) {
@@ -54,7 +63,8 @@
     }
     if (kable_format == "latex") {
       return(group_rows_latex(kable_input, group_label, start_row, end_row,
-                              latex_gap_space, escape, latex_align, colnum))
+                              latex_gap_space, escape, latex_align, colnum,
+                              bold, italic, hline_after, extra_latex_after))
     }
   } else {
     index <- group_row_index_translator(index)
@@ -72,7 +82,8 @@
       for (i in 1:nrow(index)) {
         out <- group_rows_latex(out, index$header[i],
                                index$start[i], index$end[i],
-                               latex_gap_space, escape, latex_align, colnum)
+                               latex_gap_space, escape, latex_align, colnum,
+                               bold, italic, hline_after, extra_latex_after)
       }
     }
     return(out)
@@ -127,7 +138,9 @@
 }
 
 group_rows_latex <- function(kable_input, group_label, start_row, end_row,
-                             gap_space, escape, latex_align, colnum) {
+                             gap_space, escape, latex_align, colnum,
+                             bold = T, italic = F, hline_after = F,
+                             extra_latex_after = NULL) {
   table_info <- magic_mirror(kable_input)
   out <- enc2utf8(as.character(kable_input))
 
@@ -142,25 +155,33 @@
     group_label <- gsub("\\\\", "\\\\\\\\", group_label)
   }
 
+  if(bold){
+    group_label <- paste0("\\\\textbf{", group_label, "}")
+  }
+  if(italic) group_label <- paste0("\\\\textit{", group_label, "}")
   # Add group label
   rowtext <- table_info$contents[start_row + 1]
   if (table_info$booktabs) {
-    new_rowtext <- paste0(
+    pre_rowtext <- paste0(
       "\\\\addlinespace[", gap_space, "]\n",
       "\\\\multicolumn{", ifelse(is.null(colnum),
                                  table_info$ncol,
                                  colnum),
-      "}{", latex_align, "}{\\\\textbf{", group_label,
-      "}}\\\\\\\\\n",
-      rowtext
+      "}{", latex_align, "}{", group_label,
+      "}\\\\\\\\\n", ifelse(hline_after, "\\\\hline\n", '')
     )
   } else {
     rowtext <- paste0("\\\\hline\n", rowtext)
-    new_rowtext <- paste0(
-      "\\\\hline\n\\\\multicolumn{", table_info$ncol, "}{", latex_align,"}{\\\\textbf{",
-      group_label, "}}\\\\\\\\\n", rowtext
+    pre_rowtext <- paste0(
+      "\\\\hline\n\\\\multicolumn{", table_info$ncol, "}{", latex_align,"}{",
+      group_label, "}\\\\\\\\\n"
     )
   }
+  if(!is.null(extra_latex_after)){
+    pre_rowtext <- paste0(pre_rowtext,
+                      regex_escape(extra_latex_after, double_backslash = TRUE))
+  }
+  new_rowtext <- paste0(pre_rowtext, rowtext)
   out <- sub(rowtext, new_rowtext, out)
   out <- gsub("\\\\addlinespace\n", "", out)
   out <- structure(out, format = "latex", class = "knitr_kable")
diff --git a/tests/visual_tests/add_indent_and_group_rows_pdf.Rmd b/tests/visual_tests/add_indent_and_group_rows_pdf.Rmd
index b942a0a..5800e58 100644
--- a/tests/visual_tests/add_indent_and_group_rows_pdf.Rmd
+++ b/tests/visual_tests/add_indent_and_group_rows_pdf.Rmd
@@ -40,6 +40,7 @@
   kable_styling() %>%
   group_rows("Group 1", 4, 7) %>%
   group_rows("Group 2", 8, 10, latex_align='c') %>%
+  group_rows("Group 2", 13, 15, hline_after = T, bold = F, italic = T, extra_latex_after = '\\addlinespace[0.2em]\n') %>%
   group_rows("Group 2", 20, 22)
 
 aa <- mtcars
