Merge pull request #440 from jokorn/new_add_header_above

Allow standardized data frame as input to add_header_above
diff --git a/DESCRIPTION b/DESCRIPTION
index 3e41bd2..ba72bbf 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -56,5 +56,5 @@
     sparkline
 VignetteBuilder: knitr
 Encoding: UTF-8
-RoxygenNote: 6.1.1
+RoxygenNote: 7.1.1
 Roxygen: list(markdown = TRUE)
diff --git a/NAMESPACE b/NAMESPACE
index 1cf9581..7c27526 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -11,6 +11,8 @@
 export(cell_spec)
 export(collapse_rows)
 export(column_spec)
+export(dummy_html_tbl)
+export(dummy_latex_tbl)
 export(footnote)
 export(footnote_marker_alphabet)
 export(footnote_marker_number)
@@ -27,6 +29,7 @@
 export(linebreak)
 export(magic_mirror)
 export(pack_rows)
+export(remove_column)
 export(rmd_format)
 export(row_spec)
 export(save_kable)
@@ -92,6 +95,7 @@
 importFrom(xml2,xml_child)
 importFrom(xml2,xml_children)
 importFrom(xml2,xml_has_attr)
+importFrom(xml2,xml_length)
 importFrom(xml2,xml_name)
 importFrom(xml2,xml_remove)
 importFrom(xml2,xml_text)
diff --git a/R/add_indent.R b/R/add_indent.R
index 25448b5..a50547d 100644
--- a/R/add_indent.R
+++ b/R/add_indent.R
@@ -3,13 +3,16 @@
 #' @param kable_input Output of `knitr::kable()` with `format` specified
 #' @param positions A vector of numeric row numbers for the rows that need to
 #' be indented.
+#' @param level_of_indent a numeric value for the indent level. Default is 1.
 #'
 #' @examples x <- knitr::kable(head(mtcars), "html")
 #' # Add indentations to the 2nd & 4th row
-#' add_indent(x, c(2, 4))
+#' add_indent(x, c(2, 4), level_of_indent = 1)
 #'
 #' @export
-add_indent <- function(kable_input, positions) {
+add_indent <- function(kable_input, positions,
+                       level_of_indent = 1, all_cols = FALSE) {
+
   if (!is.numeric(positions)) {
     stop("Positions can only take numeric row numbers (excluding header rows).")
   }
@@ -21,17 +24,19 @@
     return(kable_input)
   }
   if (kable_format == "html") {
-    return(add_indent_html(kable_input, positions))
+    return(add_indent_html(kable_input, positions, level_of_indent, all_cols))
   }
   if (kable_format == "latex") {
-    return(add_indent_latex(kable_input, positions))
+    return(add_indent_latex(kable_input, positions, level_of_indent, all_cols))
   }
 }
 
 # Add indentation for LaTeX
-add_indent_latex <- function(kable_input, positions) {
+add_indent_latex <- function(kable_input, positions,
+                             level_of_indent = 1, all_cols = FALSE) {
   table_info <- magic_mirror(kable_input)
   out <- solve_enc(kable_input)
+  level_of_indent<-as.numeric(level_of_indent)
 
   if (table_info$duplicated_rows) {
     dup_fx_out <- fix_duplicated_rows_latex(out, table_info)
@@ -48,25 +53,39 @@
 
   for (i in positions + table_info$position_offset) {
     rowtext <- table_info$contents[i]
+    if (all_cols) {
+      new_rowtext <- latex_row_cells(rowtext)
+      new_rowtext <- lapply(new_rowtext, function(x) {
+        paste0("\\\\hspace\\{", level_of_indent ,"em\\}", x)
+      })
+      new_rowtext <- paste(unlist(new_rowtext), collapse = " & ")
+    } else {
+      new_rowtext <- latex_indent_unit(rowtext, level_of_indent)
+    }
     out <- sub(paste0(rowtext, "\\\\\\\\"),
-               paste0(latex_indent_unit(rowtext), "\\\\\\\\"),
+               paste0(new_rowtext, "\\\\\\\\"),
                out, perl = TRUE)
-    table_info$contents[i] <- latex_indent_unit(rowtext)
+    table_info$contents[i] <- new_rowtext
   }
   out <- structure(out, format = "latex", class = "knitr_kable")
   attr(out, "kable_meta") <- table_info
   return(out)
+
+
 }
 
-latex_indent_unit <- function(rowtext) {
-  paste0("\\\\hspace\\{1em\\}", rowtext)
+latex_indent_unit <- function(rowtext, level_of_indent) {
+  paste0("\\\\hspace\\{", level_of_indent ,"em\\}", rowtext)
 }
 
+
+
 # Add indentation for HTML
-add_indent_html <- function(kable_input, positions) {
+add_indent_html <- function(kable_input, positions,
+                            level_of_indent = 1, all_cols = FALSE) {
   kable_attrs <- attributes(kable_input)
 
-  kable_xml <- read_kable_as_xml(kable_input)
+  kable_xml <- kable_as_xml(kable_input)
   kable_tbody <- xml_tpart(kable_xml, "tbody")
 
   group_header_rows <- attr(kable_input, "group_header_rows")
@@ -76,20 +95,29 @@
   }
 
   for (i in positions) {
-    node_to_edit <- xml_child(xml_children(kable_tbody)[[i]], 1)
-    if (!xml_has_attr(node_to_edit, "indentlevel")) {
-      xml_attr(node_to_edit, "style") <- paste(
-        xml_attr(node_to_edit, "style"), "padding-left: 2em;"
-      )
-      xml_attr(node_to_edit, "indentlevel") <- 1
+    row_to_edit = xml_children(kable_tbody)[[i]]
+    if (all_cols) {
+      target_cols = 1:xml2::xml_length(row_to_edit)
     } else {
-      indentLevel <- as.numeric(xml_attr(node_to_edit, "indentlevel"))
-      xml_attr(node_to_edit, "style") <- sub(
-        paste0("padding-left: ", indentLevel * 2, "em;"),
-        paste0("padding-left: ", (indentLevel + 1) * 2, "em;"),
-        xml_attr(node_to_edit, "style")
-      )
-      xml_attr(node_to_edit, "indentlevel") <- indentLevel + 1
+      target_cols = 1
+    }
+
+    for (j in target_cols) {
+      node_to_edit <- xml_child(row_to_edit, j)
+      if (!xml_has_attr(node_to_edit, "indentlevel")) {
+        xml_attr(node_to_edit, "style") <- paste(
+          xml_attr(node_to_edit, "style"), "padding-left: ",paste0(level_of_indent*2,"em;")
+        )
+        xml_attr(node_to_edit, "indentlevel") <- 1
+      } else {
+        indentLevel <- as.numeric(xml_attr(node_to_edit, "indentlevel"))
+        xml_attr(node_to_edit, "style") <- sub(
+          paste0("padding-left: ", indentLevel * 2, "em;"),
+          paste0("padding-left: ", (indentLevel + 1) * 2, "em;"),
+          xml_attr(node_to_edit, "style")
+        )
+        xml_attr(node_to_edit, "indentlevel") <- indentLevel + 1
+      }
     }
   }
   out <- as_kable_xml(kable_xml)
diff --git a/R/collapse_rows.R b/R/collapse_rows.R
index 4ae0145..96769be 100644
--- a/R/collapse_rows.R
+++ b/R/collapse_rows.R
@@ -7,7 +7,7 @@
 #' specify column styles, you should use `column_spec` before `collapse_rows`.
 #'
 #' @param kable_input Output of `knitr::kable()` with `format` specified
-#' @param columns A numeric value or vector indicating in which column(s) rows 
+#' @param columns A numeric value or vector indicating in which column(s) rows
 #' need to be collapsed.
 #' @param valign Select from "top", "middle"(default), "bottom". The reason why
 #' "top" is not default is that the multirow package on CRAN win-builder is
@@ -35,7 +35,8 @@
                           row_group_label_position = c('identity', 'stack'),
                           custom_latex_hline = NULL,
                           row_group_label_fonts = NULL,
-                          headers_to_remove = NULL) {
+                          headers_to_remove = NULL,
+                          target = NULL) {
   kable_format <- attr(kable_input, "format")
   if (!kable_format %in% c("html", "latex")) {
     warning("Please specify format in kable. kableExtra can customize either ",
@@ -44,8 +45,13 @@
     return(kable_input)
   }
   valign <- match.arg(valign, c("middle", "top", "bottom"))
+  if (!is.null(target)) {
+    if (length(target) > 1 && is.integer(target)) {
+      stop("target can only be a length 1 integer")
+    }
+  }
   if (kable_format == "html") {
-    return(collapse_rows_html(kable_input, columns, valign))
+    return(collapse_rows_html(kable_input, columns, valign, target))
   }
   if (kable_format == "latex") {
     latex_hline <- match.arg(latex_hline, c("full", "major", "none", "custom"))
@@ -53,26 +59,30 @@
                                           c('identity', 'stack'))
     return(collapse_rows_latex(kable_input, columns, latex_hline, valign,
       row_group_label_position, row_group_label_fonts, custom_latex_hline,
-      headers_to_remove))
+      headers_to_remove, target))
   }
 }
 
-collapse_rows_html <- function(kable_input, columns, valign) {
+collapse_rows_html <- function(kable_input, columns, valign, target) {
   kable_attrs <- attributes(kable_input)
-  kable_xml <- read_kable_as_xml(kable_input)
+  kable_xml <- kable_as_xml(kable_input)
   kable_tbody <- xml_tpart(kable_xml, "tbody")
 
   kable_dt <- rvest::html_table(xml2::read_html(as.character(kable_input)))[[1]]
   if (is.null(columns)) {
     columns <- seq(1, ncol(kable_dt))
   }
+  if (!is.null(target)) {
+    if (!target %in% columns) {
+      stop("target has to be within the range of columns")
+    }
+  }
   if (!is.null(kable_attrs$header_above)) {
     kable_dt_col_names <- unlist(kable_dt[kable_attrs$header_above, ])
     kable_dt <- kable_dt[-(1:kable_attrs$header_above),]
     names(kable_dt) <- kable_dt_col_names
   }
-  kable_dt$row_id <- seq(nrow(kable_dt))
-  collapse_matrix <- collapse_row_matrix(kable_dt, columns)
+  collapse_matrix <- collapse_row_matrix(kable_dt, columns, target = target)
 
   for (i in 1:nrow(collapse_matrix)) {
     matrix_row <- collapse_matrix[i, ]
@@ -96,29 +106,47 @@
   }
 
   out <- as_kable_xml(kable_xml)
+  kable_attrs$collapse_matrix <- collapse_matrix
   attributes(out) <- kable_attrs
   if (!"kableExtra" %in% class(out)) class(out) <- c("kableExtra", class(out))
   return(out)
 }
 
-collapse_row_matrix <- function(kable_dt, columns, html = T)  {
+split_factor <- function(x) {
+  group_idx <- seq(1, length(x))
+  return(factor(unlist(lapply(group_idx, function(i) {rep(i, x[i])}))))
+}
+
+collapse_row_matrix <- function(kable_dt, columns, html = T, target = NULL)  {
   if (html) {
     column_block <- function(x) c(x, rep(0, x - 1))
   } else {
     column_block <- function(x) c(rep(0, x - 1), x)
   }
   mapping_matrix <- list()
-  for (i in columns) {
-    mapping_matrix[[paste0("x", i)]] <- unlist(lapply(
-      rle(kable_dt[, i])$lengths, column_block))
+  if (is.null(target)) {
+    for (i in columns) {
+      mapping_matrix[[paste0("x", i)]] <- unlist(lapply(
+        rle(kable_dt[, i])$lengths, column_block))
+    }
+  } else {
+    target_group = split_factor(rle(kable_dt[, target])$lengths)
+    for (i in columns) {
+      column_split = split(kable_dt[, i], target_group)
+      mapping_matrix[[paste0("x", i)]] <- unlist(lapply(
+        column_split, function(sp) {
+          lapply(rle(sp)$length, column_block)
+        }))
+    }
   }
+
   mapping_matrix <- data.frame(mapping_matrix)
   return(mapping_matrix)
 }
 
 collapse_rows_latex <- function(kable_input, columns, latex_hline, valign,
                                 row_group_label_position, row_group_label_fonts,
-                                custom_latex_hline, headers_to_remove) {
+                                custom_latex_hline, headers_to_remove, target) {
   table_info <- magic_mirror(kable_input)
   out <- solve_enc(kable_input)
 
@@ -136,8 +164,10 @@
   contents <- table_info$contents
   kable_dt <- kable_dt_latex(contents)
 
-  collapse_matrix_rev <- collapse_row_matrix(kable_dt, columns, html = TRUE)
-  collapse_matrix <- collapse_row_matrix(kable_dt, columns, html = FALSE)
+  collapse_matrix_rev <- collapse_row_matrix(kable_dt, columns, html = TRUE,
+                                             target)
+  collapse_matrix <- collapse_row_matrix(kable_dt, columns, html = FALSE,
+                                         target)
 
   new_kable_dt <- kable_dt
   for (j in seq_along(columns)) {
@@ -160,7 +190,7 @@
   }
 
   midrule_matrix <- collapse_row_matrix(kable_dt, seq(1, table_info$ncol),
-                                        html = F)
+                                        html = FALSE, target)
   midrule_matrix[setdiff(seq(1, table_info$ncol), columns)] <- 1
 
   ex_bottom <- length(contents) - 1
@@ -208,7 +238,7 @@
       )
       new_contents[i] <- paste0(new_contents[i], "\\\\\\\\\n", row_midrule)
     }
-    out <- sub(contents[i + 1], new_contents[i], out)
+    out <- sub(contents[i + 1], new_contents[i], out, perl=TRUE)
   }
   out <- gsub("\\\\addlinespace\n", "", out)
 
diff --git a/R/dummy_table.R b/R/dummy_table.R
new file mode 100644
index 0000000..4c0831d
--- /dev/null
+++ b/R/dummy_table.R
@@ -0,0 +1,15 @@
+#' Dummy html table for testing
+#' @description Create dummy table for testing in kE
+#' @export
+dummy_html_tbl <- function() {
+  return(kable_styling(kable(mtcars[1:5, 1:5], "html",
+                             align = c("l", "l", rep("r", 4)))))
+}
+
+#' Dummy latex table for testing
+#' @description Create dummy table for testing in kE
+#' @export
+dummy_latex_tbl <- function(booktabs = T) {
+  return(kable_styling(kable(mtcars[1:5, 1:5], "latex", booktabs = booktabs,
+                             align = c("l", "l", rep("r", 4)))))
+}
diff --git a/R/footnote.R b/R/footnote.R
index 01f0c57..59478c3 100644
--- a/R/footnote.R
+++ b/R/footnote.R
@@ -339,11 +339,11 @@
   }
   if (!ft_chunk) {
     footnote_text <- paste0(
-      '\\\\multicolumn{', ncol, '}{l}{', footnote_text, '}\\\\\\\\'
+      '\\\\multicolumn{', ncol, '}{l}{\\\\rule{0pt}{1em}', footnote_text, '}\\\\\\\\'
     )
   } else {
     footnote_text <- paste0(
-      '\\\\multicolumn{', ncol, '}{l}{',
+      '\\\\multicolumn{', ncol, '}{l}{\\\\rule{0pt}{1em}',
       paste0(footnote_text, collapse = " "),
       '}\\\\\\\\'
     )
diff --git a/R/group_rows.R b/R/group_rows.R
index 33a517c..09fad01 100644
--- a/R/group_rows.R
+++ b/R/group_rows.R
@@ -212,9 +212,17 @@
                       regex_escape(extra_latex_after, double_backslash = TRUE))
   }
   new_rowtext <- paste0(pre_rowtext, rowtext)
-  out <- sub(paste0(rowtext, "\\\\\\\\\n"),
-  	         paste0(new_rowtext, "\\\\\\\\\n"),
-  	         out)
+  if (start_row + 1 == table_info$nrow &
+      !is.null(table_info$repeat_header_latex)) {
+    out <- sub(paste0(rowtext, "\\\\\\\\\\*\n"),
+               paste0(new_rowtext, "\\\\\\\\\\*\n"),
+               out)
+  } else {
+    out <- sub(paste0(rowtext, "\\\\\\\\\n"),
+               paste0(new_rowtext, "\\\\\\\\\n"),
+               out)
+  }
+
   out <- gsub("\\\\addlinespace\n", "", out)
   out <- structure(out, format = "latex", class = "knitr_kable")
   table_info$group_rows_used <- TRUE
diff --git a/R/kableExtra-package.R b/R/kableExtra-package.R
index ea2a1da..c01f058 100644
--- a/R/kableExtra-package.R
+++ b/R/kableExtra-package.R
@@ -59,7 +59,7 @@
 #' 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
 #' xml_child xml_children xml_name xml_add_sibling xml_add_child xml_text
-#' xml_remove write_xml xml_text<-
+#' xml_remove write_xml xml_text<- xml_length
 #' @importFrom rvest html_table
 #' @importFrom knitr knit_meta_add include_graphics knit_print asis_output kable
 #' @importFrom rmarkdown latex_dependency html_dependency_bootstrap
diff --git a/R/kable_styling.R b/R/kable_styling.R
index 67e0234..7e4c5e7 100644
--- a/R/kable_styling.R
+++ b/R/kable_styling.R
@@ -317,6 +317,7 @@
   if ("repeat_header" %in% latex_options & table_info$tabular == "longtable") {
     out <- styling_latex_repeat_header(out, table_info, repeat_header_text,
                                        repeat_header_method, repeat_header_continued)
+    table_info$repeat_header_latex <- TRUE
   }
 
   if (full_width) {
diff --git a/R/print.R b/R/print.R
index 03e66ab..09e7cef 100644
--- a/R/print.R
+++ b/R/print.R
@@ -6,15 +6,14 @@
     html_dependency_kePrint()
   )
   html_kable <- htmltools::browsable(
-    htmltools::HTML(as.character(x))
+    htmltools::HTML(
+      as.character(x),
+      '<script type="text/x-mathjax-config">MathJax.Hub.Config({tex2jax: {inlineMath: [["$","$"], ["\\(","\\)"]]}})</script>;<script async src="https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>'
+      )
   )
   htmlDependencies(html_kable) <- dep
   class(html_kable) <- "shiny.tag.list"
   print(html_kable)
-  # if (interactive() & rstudioapi::isAvailable()) {
-  #   htmltools::html_print(html_result, viewer = rstudioapi::viewer)
-  # }
-  # print(html_result)
 }
 
 #' HTML dependency for js script to enable bootstrap tooltip and popup message
@@ -59,3 +58,5 @@
 
 
 
+
+
diff --git a/R/remove_column.R b/R/remove_column.R
new file mode 100644
index 0000000..3bff2f1
--- /dev/null
+++ b/R/remove_column.R
@@ -0,0 +1,96 @@
+#' Remove columns
+#'
+#' @param kable_input Output of [knitr::kable()] with format specified
+#' @param columns A numeric value or vector indicating in which column(s) rows
+#' need to be removed
+#'
+#' @export
+#'
+#' @examples
+#' remove_column(kable(mtcars), 1)
+remove_column <- function (kable_input, columns) {
+    if (is.null(columns)) return(kable_input)
+    kable_format <- attr(kable_input, "format")
+    if (!kable_format %in% c("html", "latex")) {
+        warning("Please specify format in kable. kableExtra can customize",
+                " either HTML or LaTeX outputs. See ",
+                "https://haozhu233.github.io/kableExtra/ for details.")
+        return(kable_input)
+    }
+
+    columns <- sort(unique(columns))
+    if (kable_format == "html") {
+        return(remove_column_html(kable_input, columns))
+    } else if (kable_format == "latex") {
+        stop("Removing columns was not implemented for latex kables yet")
+    }
+}
+
+remove_column_html <- function (kable_input, columns) {
+    kable_attrs <- attributes(kable_input)
+    kable_xml <- kable_as_xml(kable_input)
+    kable_tbody <- xml_tpart(kable_xml, "tbody")
+    kable_thead <- xml_tpart(kable_xml, "thead")
+
+    group_header_rows <- attr(kable_input, "group_header_rows")
+    all_contents_rows <- seq(1, length(xml_children(kable_tbody)))
+
+    if (!is.null(group_header_rows)) {
+        warning("It's recommended to use remove_column after add_header_above.",
+                "Right now some column span numbers might not be correct. ")
+        all_contents_rows <- all_contents_rows[!all_contents_rows %in%
+                                                   group_header_rows]
+    }
+
+    collapse_matrix <- attr(kable_input, "collapse_matrix")
+    collapse_columns <- NULL
+    if (!is.null(collapse_matrix)) {
+        collapse_columns <- sort(as.numeric(sub("x", "",
+                                                names(collapse_matrix))))
+        collapse_columns_origin <- collapse_columns
+    }
+
+    while (length(columns) > 0) {
+        xml2::xml_remove(xml2::xml_child(
+            xml2::xml_child(kable_thead, xml2::xml_length(kable_thead)),
+            columns[1]))
+        if (length(collapse_columns) != 0 && collapse_columns[1] <= columns[1]){
+            if (columns[1] %in% collapse_columns) {
+                column_span <- collapse_matrix[[paste0('x', columns[1])]]
+                non_skip_rows <- column_span != 0
+                collapse_columns <- collapse_columns[
+                    collapse_columns != columns[1]
+                    ] - 1
+            } else {
+                non_skip_rows <- rep(TRUE, length(all_contents_rows))
+            }
+            prior_col <- which(collapse_columns_origin < columns[1])
+            for (i in all_contents_rows[non_skip_rows]) {
+                if (length(prior_col) == 0) {
+                    pos_adj <- 0
+                } else {
+                    pos_adj <- sum(collapse_matrix[i, prior_col] == 0)
+                }
+                target_cell <- xml2::xml_child(
+                    xml2::xml_child(kable_tbody, i),
+                    columns[1] - pos_adj)
+                xml2::xml_remove(target_cell)
+            }
+        } else {
+            for (i in all_contents_rows) {
+                target_cell <- xml2::xml_child(
+                    xml2::xml_child(kable_tbody, i),
+                    columns[1])
+                xml2::xml_remove(target_cell)
+            }
+        }
+        # not very efficient but for finite task it's probably okay
+        columns <- (columns - 1)[-1]
+    }
+    out <- as_kable_xml(kable_xml)
+    attributes(out) <- kable_attrs
+    if (!"kableExtra" %in% class(out))
+        class(out) <- c("kableExtra", class(out))
+
+    return(out)
+}
diff --git a/R/row_spec.R b/R/row_spec.R
index ff95c0e..cc8978e 100644
--- a/R/row_spec.R
+++ b/R/row_spec.R
@@ -198,7 +198,9 @@
                                      underline, strikeout,
                                      color, background, align, font_size, angle,
                                      hline_after, extra_latex_after)
-    temp_sub <- ifelse(i == 1 & table_info$tabular == "longtable", gsub, sub)
+    temp_sub <- ifelse(i == 1 & (table_info$tabular == "longtable" |
+                                   !is.null(table_info$repeat_header_latex)),
+                       gsub, sub)
     if (length(new_row) == 1) {
       out <- temp_sub(target_row, new_row, out, perl = T)
       table_info$contents[i] <- new_row
diff --git a/R/save_kable.R b/R/save_kable.R
index 3c3a5fa..8238552 100644
--- a/R/save_kable.R
+++ b/R/save_kable.R
@@ -144,7 +144,7 @@
 
   owd <- setwd(dirname(temp_tex_file))
 
-  system(paste0("xelatex -interaction=batchmode ", temp_tex_file))
+  system(paste0('xelatex -interaction=batchmode "', temp_tex_file,'"'))
   if (!keep_tex) {
     temp_file_delete <- paste0(file_no_ext, c(".tex", ".aux", ".log"))
     unlink(temp_file_delete)
diff --git a/R/util.R b/R/util.R
index e01b4dc..df04344 100644
--- a/R/util.R
+++ b/R/util.R
@@ -117,20 +117,6 @@
 
 # Fix duplicated rows in LaTeX tables
 fix_duplicated_rows_latex <- function(kable_input, table_info) {
-  # dup_items <- table(table_info$contents)
-  # dup_items <- dup_items[dup_items != 1]
-  #
-  # for (di in seq(length(dup_items))) {
-  #   dup_row <- names(dup_items[di])
-  #   di_index <- which(table_info$contents == dup_row)
-  #   for (i in seq(dup_items[di])) {
-  #     new_row <- str_replace(
-  #       dup_row, "(?<=\\s)([\\S]+[\\s]*)$",
-  #       paste0("\\\\\\\\vphantom\\\\{", i, "\\\\} \\1"))
-  #     kable_input <- sub(dup_row, new_row, kable_input)
-  #     table_info$contents[di_index[i]] <- new_row
-  #   }
-  # }
   # Since sub/string_replace start from beginning, we count unique value from
   # behind.
   rev_contents <- rev(table_info$contents)
diff --git a/R/zzz.R b/R/zzz.R
index c12793b..36133e7 100644
--- a/R/zzz.R
+++ b/R/zzz.R
@@ -15,7 +15,7 @@
       usepackage_latex("threeparttablex")
       usepackage_latex("ulem", "normalem")
       usepackage_latex("makecell")
-      usepackage_latex("xcolor")
+      # usepackage_latex("xcolor")
     }
   }
   auto_format <- getOption("kableExtra.auto_format", default = TRUE)
diff --git a/README.md b/README.md
index 2ac66c2..b46a973 100644
--- a/README.md
+++ b/README.md
@@ -51,14 +51,14 @@
   kable_styling(bootstrap_options = "striped",
                 full_width = F) %>%
   add_header_above(c(" ", "Group 1" = 2, "Group 2[note]" = 2)) %>%
-  add_footnote(c("table footnote"))
+  footnote(c("table footnote"))
 
 # LaTeX Table
 kable(dt, format = "latex", booktabs = T, caption = "Demo Table") %>%
   kable_styling(latex_options = c("striped", "hold_position"),
                 full_width = F) %>%
   add_header_above(c(" ", "Group 1" = 2, "Group 2[note]" = 2)) %>%
-  add_footnote(c("table footnote"))
+  footnote(c("table footnote"))
 
 ```
 ### Results
diff --git a/docs/awesome_table_in_pdf.Rmd b/docs/awesome_table_in_pdf.Rmd
index 549667a..7806224 100644
--- a/docs/awesome_table_in_pdf.Rmd
+++ b/docs/awesome_table_in_pdf.Rmd
@@ -78,7 +78,7 @@
 If you are using a recent version of rmarkdown, you are recommended to load this package entirely via `library(kableExtra)` or `require(kableExtra)` because this package will load all necessary LaTeX packages, such as `booktabs` or `multirow`, for you automatically. Note that, if you are calling functions from `kableExtra` via `kableExtra::kable_styling()` or if you put `library(kableExtra)` in a separate R file that is **sourced** by the rmarkdown document, these packages won't be loaded. Furthermore, you can suppress this auto-loading behavior by setting a global option `kableExtra.latex.load_packages` to be `FALSE` before you load `kableExtra`.
 
 ```{r, eval = FALSE}
-# Not evaluated. Ilustration purpose
+# Not evaluated. Illustration purpose
 options(kableExtra.latex.load_packages = FALSE)
 library(kableExtra)
 ```
@@ -189,7 +189,7 @@
   kable_styling(position = "center")
 ```
 
-Becides these three common options, you can also wrap text around the table using the `float-left` or `float-right` options. Note that, like `striped`, this feature will load another non-default LaTeX package `wrapfig` which requires rmarkdown 1.4.0 +. If you rmarkdown version < 1.4.0, you need to load the package through a customed LaTeX template file. 
+Besides these three common options, you can also wrap text around the table using the `float-left` or `float-right` options. Note that, like `striped`, this feature will load another non-default LaTeX package `wrapfig` which requires rmarkdown 1.4.0 +. If you rmarkdown version < 1.4.0, you need to load the package through a customed LaTeX template file. 
 ```{r}
 kable(dt, "latex", booktabs = T) %>%
   kable_styling(position = "float_right")
@@ -363,12 +363,19 @@
 
 ## Row indentation
 Unlike `pack_rows()`, which will insert a labeling row, sometimes we want to list a few sub groups under a total one. In that case, `add_indent()` is probably more appropriate.  
-For advanced users, you can even define your own css for the group labeling.
+
 ```{r}
 kable(dt, "latex", booktabs = T) %>%
   add_indent(c(1, 3, 5))
 ```
 
+You can also specify the width of the indentation by the `level_of_indent` option. At the same time, if you want to indent every column, you can choose to turn on `all_cols`. Note that if a column is right aligned, you probably won't be able to see the effect. 
+
+```{r}
+kable(dt, "latex", booktabs = T, align = "l") %>%
+  add_indent(c(1, 3, 5), level_of_indent = 2, all_cols = T)
+```
+
 ## Group rows via multi-row cell
 Function `pack_rows` is great for showing simple structural information on rows but sometimes people may need to show structural information with multiple layers. When it happens, you may consider using `collapse_rows` instead, which will put repeating cells in columns into multi-row cells.  
 
diff --git a/docs/awesome_table_in_pdf.log b/docs/awesome_table_in_pdf.log
deleted file mode 100644
index 8aec9ad..0000000
--- a/docs/awesome_table_in_pdf.log
+++ /dev/null
@@ -1,1310 +0,0 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=pdflatex 2019.4.24)  30 APR 2019 09:58
-entering extended mode
- restricted \write18 enabled.
- %&-line parsing enabled.
-**awesome_table_in_pdf.tex
-(./awesome_table_in_pdf.tex
-LaTeX2e <2018-12-01>
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/base/article.cls
-Document Class: article 2018/09/03 v1.4i Standard LaTeX document class
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/base/size10.clo
-File: size10.clo 2018/09/03 v1.4i Standard LaTeX file (size option)
-)
-\c@part=\count80
-\c@section=\count81
-\c@subsection=\count82
-\c@subsubsection=\count83
-\c@paragraph=\count84
-\c@subparagraph=\count85
-\c@figure=\count86
-\c@table=\count87
-\abovecaptionskip=\skip41
-\belowcaptionskip=\skip42
-\bibindent=\dimen102
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/lm/lmodern.sty
-Package: lmodern 2009/10/30 v1.6 Latin Modern Fonts
-LaTeX Font Info:    Overwriting symbol font `operators' in version `normal'
-(Font)                  OT1/cmr/m/n --> OT1/lmr/m/n on input line 22.
-LaTeX Font Info:    Overwriting symbol font `letters' in version `normal'
-(Font)                  OML/cmm/m/it --> OML/lmm/m/it on input line 23.
-LaTeX Font Info:    Overwriting symbol font `symbols' in version `normal'
-(Font)                  OMS/cmsy/m/n --> OMS/lmsy/m/n on input line 24.
-LaTeX Font Info:    Overwriting symbol font `largesymbols' in version `normal'
-(Font)                  OMX/cmex/m/n --> OMX/lmex/m/n on input line 25.
-LaTeX Font Info:    Overwriting symbol font `operators' in version `bold'
-(Font)                  OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 26.
-LaTeX Font Info:    Overwriting symbol font `letters' in version `bold'
-(Font)                  OML/cmm/b/it --> OML/lmm/b/it on input line 27.
-LaTeX Font Info:    Overwriting symbol font `symbols' in version `bold'
-(Font)                  OMS/cmsy/b/n --> OMS/lmsy/b/n on input line 28.
-LaTeX Font Info:    Overwriting symbol font `largesymbols' in version `bold'
-(Font)                  OMX/cmex/m/n --> OMX/lmex/m/n on input line 29.
-LaTeX Font Info:    Overwriting math alphabet `\mathbf' in version `normal'
-(Font)                  OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 31.
-LaTeX Font Info:    Overwriting math alphabet `\mathsf' in version `normal'
-(Font)                  OT1/cmss/m/n --> OT1/lmss/m/n on input line 32.
-LaTeX Font Info:    Overwriting math alphabet `\mathit' in version `normal'
-(Font)                  OT1/cmr/m/it --> OT1/lmr/m/it on input line 33.
-LaTeX Font Info:    Overwriting math alphabet `\mathtt' in version `normal'
-(Font)                  OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 34.
-LaTeX Font Info:    Overwriting math alphabet `\mathbf' in version `bold'
-(Font)                  OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 35.
-LaTeX Font Info:    Overwriting math alphabet `\mathsf' in version `bold'
-(Font)                  OT1/cmss/bx/n --> OT1/lmss/bx/n on input line 36.
-LaTeX Font Info:    Overwriting math alphabet `\mathit' in version `bold'
-(Font)                  OT1/cmr/bx/it --> OT1/lmr/bx/it on input line 37.
-LaTeX Font Info:    Overwriting math alphabet `\mathtt' in version `bold'
-(Font)                  OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 38.
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/amssymb.sty
-Package: amssymb 2013/01/14 v3.01 AMS font symbols
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/amsfonts.sty
-Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
-\@emptytoks=\toks14
-\symAMSa=\mathgroup4
-\symAMSb=\mathgroup5
-LaTeX Font Info:    Overwriting math alphabet `\mathfrak' in version `bold'
-(Font)                  U/euf/m/n --> U/euf/b/n on input line 106.
-)) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsmath.sty
-Package: amsmath 2018/12/01 v2.17b AMS math features
-\@mathmargin=\skip43
-For additional information on amsmath, use the `?' option.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amstext.sty
-Package: amstext 2000/06/29 v2.01 AMS text
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsgen.sty
-File: amsgen.sty 1999/11/30 v2.0 generic functions
-\@emptytoks=\toks15
-\ex@=\dimen103
-)) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsbsy.sty
-Package: amsbsy 1999/11/29 v1.2d Bold Symbols
-\pmbraise@=\dimen104
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsopn.sty
-Package: amsopn 2016/03/08 v2.02 operator names
-)
-\inf@bad=\count88
-LaTeX Info: Redefining \frac on input line 223.
-\uproot@=\count89
-\leftroot@=\count90
-LaTeX Info: Redefining \overline on input line 385.
-\classnum@=\count91
-\DOTSCASE@=\count92
-LaTeX Info: Redefining \ldots on input line 482.
-LaTeX Info: Redefining \dots on input line 485.
-LaTeX Info: Redefining \cdots on input line 606.
-\Mathstrutbox@=\box27
-\strutbox@=\box28
-\big@size=\dimen105
-LaTeX Font Info:    Redeclaring font encoding OML on input line 729.
-LaTeX Font Info:    Redeclaring font encoding OMS on input line 730.
-\macc@depth=\count93
-\c@MaxMatrixCols=\count94
-\dotsspace@=\muskip10
-\c@parentequation=\count95
-\dspbrk@lvl=\count96
-\tag@help=\toks16
-\row@=\count97
-\column@=\count98
-\maxfields@=\count99
-\andhelp@=\toks17
-\eqnshift@=\dimen106
-\alignsep@=\dimen107
-\tagshift@=\dimen108
-\tagwidth@=\dimen109
-\totwidth@=\dimen110
-\lineht@=\dimen111
-\@envbody=\toks18
-\multlinegap=\skip44
-\multlinetaggap=\skip45
-\mathdisplay@stack=\toks19
-LaTeX Info: Redefining \[ on input line 2844.
-LaTeX Info: Redefining \] on input line 2845.
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/generic/ifxetex/ifxetex.sty
-Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/generic/oberdiek/ifluatex.sty
-Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO)
-Package ifluatex Info: LuaTeX not detected.
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/base/fixltx2e.sty
-Package: fixltx2e 2016/12/29 v2.1a fixes to LaTeX (obsolete)
-Applying: [2015/01/01] Old fixltx2e package on input line 46.
-
-Package fixltx2e Warning: fixltx2e is not required with releases after 2015
-(fixltx2e)                All fixes are now in the LaTeX kernel.
-(fixltx2e)                See the latexrelease package for details.
-
-Already applied: [0000/00/00] Old fixltx2e package on input line 53.
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/base/fontenc.sty
-Package: fontenc 2018/08/11 v2.0j Standard LaTeX package
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/base/t1enc.def
-File: t1enc.def 2018/08/11 v2.0j Standard LaTeX file
-LaTeX Font Info:    Redeclaring font encoding T1 on input line 48.
-)) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/base/inputenc.sty
-Package: inputenc 2018/08/11 v1.3c Input encoding file
-\inpenc@prehook=\toks20
-\inpenc@posthook=\toks21
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/upquote/upquote.sty
-Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba
-tim
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/base/textcomp.sty
-Package: textcomp 2018/08/11 v2.0j Standard LaTeX package
-Package textcomp Info: Sub-encoding information:
-(textcomp)               5 = only ISO-Adobe without \textcurrency
-(textcomp)               4 = 5 + \texteuro
-(textcomp)               3 = 4 + \textohm
-(textcomp)               2 = 3 + \textestimated + \textcurrency
-(textcomp)               1 = TS1 - \textcircled - \t
-(textcomp)               0 = TS1 (full)
-(textcomp)             Font families with sub-encoding setting implement
-(textcomp)             only a restricted character set as indicated.
-(textcomp)             Family '?' is the default used for unknown fonts.
-(textcomp)             See the documentation for details.
-Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 79.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/base/ts1enc.def
-File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file
-Now handling font encoding TS1 ...
-... processing UTF-8 mapping file for font encoding TS1
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/base/ts1enc.dfu
-File: ts1enc.dfu 2018/10/05 v1.2f UTF-8 support for inputenc
-   defining Unicode char U+00A2 (decimal 162)
-   defining Unicode char U+00A3 (decimal 163)
-   defining Unicode char U+00A4 (decimal 164)
-   defining Unicode char U+00A5 (decimal 165)
-   defining Unicode char U+00A6 (decimal 166)
-   defining Unicode char U+00A7 (decimal 167)
-   defining Unicode char U+00A8 (decimal 168)
-   defining Unicode char U+00A9 (decimal 169)
-   defining Unicode char U+00AA (decimal 170)
-   defining Unicode char U+00AC (decimal 172)
-   defining Unicode char U+00AE (decimal 174)
-   defining Unicode char U+00AF (decimal 175)
-   defining Unicode char U+00B0 (decimal 176)
-   defining Unicode char U+00B1 (decimal 177)
-   defining Unicode char U+00B2 (decimal 178)
-   defining Unicode char U+00B3 (decimal 179)
-   defining Unicode char U+00B4 (decimal 180)
-   defining Unicode char U+00B5 (decimal 181)
-   defining Unicode char U+00B6 (decimal 182)
-   defining Unicode char U+00B7 (decimal 183)
-   defining Unicode char U+00B9 (decimal 185)
-   defining Unicode char U+00BA (decimal 186)
-   defining Unicode char U+00BC (decimal 188)
-   defining Unicode char U+00BD (decimal 189)
-   defining Unicode char U+00BE (decimal 190)
-   defining Unicode char U+00D7 (decimal 215)
-   defining Unicode char U+00F7 (decimal 247)
-   defining Unicode char U+0192 (decimal 402)
-   defining Unicode char U+02C7 (decimal 711)
-   defining Unicode char U+02D8 (decimal 728)
-   defining Unicode char U+02DD (decimal 733)
-   defining Unicode char U+0E3F (decimal 3647)
-   defining Unicode char U+2016 (decimal 8214)
-   defining Unicode char U+2020 (decimal 8224)
-   defining Unicode char U+2021 (decimal 8225)
-   defining Unicode char U+2022 (decimal 8226)
-   defining Unicode char U+2030 (decimal 8240)
-   defining Unicode char U+2031 (decimal 8241)
-   defining Unicode char U+203B (decimal 8251)
-   defining Unicode char U+203D (decimal 8253)
-   defining Unicode char U+2044 (decimal 8260)
-   defining Unicode char U+204E (decimal 8270)
-   defining Unicode char U+2052 (decimal 8274)
-   defining Unicode char U+20A1 (decimal 8353)
-   defining Unicode char U+20A4 (decimal 8356)
-   defining Unicode char U+20A6 (decimal 8358)
-   defining Unicode char U+20A9 (decimal 8361)
-   defining Unicode char U+20AB (decimal 8363)
-   defining Unicode char U+20AC (decimal 8364)
-   defining Unicode char U+20B1 (decimal 8369)
-   defining Unicode char U+2103 (decimal 8451)
-   defining Unicode char U+2116 (decimal 8470)
-   defining Unicode char U+2117 (decimal 8471)
-   defining Unicode char U+211E (decimal 8478)
-   defining Unicode char U+2120 (decimal 8480)
-   defining Unicode char U+2122 (decimal 8482)
-   defining Unicode char U+2126 (decimal 8486)
-   defining Unicode char U+2127 (decimal 8487)
-   defining Unicode char U+212E (decimal 8494)
-   defining Unicode char U+2190 (decimal 8592)
-   defining Unicode char U+2191 (decimal 8593)
-   defining Unicode char U+2192 (decimal 8594)
-   defining Unicode char U+2193 (decimal 8595)
-   defining Unicode char U+2329 (decimal 9001)
-   defining Unicode char U+232A (decimal 9002)
-   defining Unicode char U+2422 (decimal 9250)
-   defining Unicode char U+25E6 (decimal 9702)
-   defining Unicode char U+25EF (decimal 9711)
-   defining Unicode char U+266A (decimal 9834)
-   defining Unicode char U+FEFF (decimal 65279)
-))
-LaTeX Info: Redefining \oldstylenums on input line 334.
-Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 349.
-Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 350.
-Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 351.
-Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 352.
-Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 353.
-Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 354.
-Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 355.
-Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 356.
-Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 357.
-Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 358.
-Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 359.
-Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 360.
-Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 361.
-Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 362.
-Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 363.
-Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 364.
-Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 365.
-Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 366.
-Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 367.
-Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 368.
-Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 369.
-Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 370.
-Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 371.
-Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 372.
-
-Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 373.
-Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 374.
-Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 375.
-Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 376.
-Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 377.
-Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 378.
-Package textcomp Info: Setting lmr sub-encoding to TS1/0 on input line 379.
-Package textcomp Info: Setting lmdh sub-encoding to TS1/0 on input line 380.
-Package textcomp Info: Setting lmss sub-encoding to TS1/0 on input line 381.
-Package textcomp Info: Setting lmssq sub-encoding to TS1/0 on input line 382.
-Package textcomp Info: Setting lmvtt sub-encoding to TS1/0 on input line 383.
-Package textcomp Info: Setting lmtt sub-encoding to TS1/0 on input line 384.
-Package textcomp Info: Setting qhv sub-encoding to TS1/0 on input line 385.
-Package textcomp Info: Setting qag sub-encoding to TS1/0 on input line 386.
-Package textcomp Info: Setting qbk sub-encoding to TS1/0 on input line 387.
-Package textcomp Info: Setting qcr sub-encoding to TS1/0 on input line 388.
-Package textcomp Info: Setting qcs sub-encoding to TS1/0 on input line 389.
-Package textcomp Info: Setting qpl sub-encoding to TS1/0 on input line 390.
-Package textcomp Info: Setting qtm sub-encoding to TS1/0 on input line 391.
-Package textcomp Info: Setting qzc sub-encoding to TS1/0 on input line 392.
-Package textcomp Info: Setting qhvc sub-encoding to TS1/0 on input line 393.
-Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 394.
-Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 395.
-Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 396.
-Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 397.
-Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 398.
-Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 399.
-Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 400.
-Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 401.
-Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 402.
-Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 403.
-Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 404.
-Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 405.
-Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 406.
-Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 407.
-Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 408.
-Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 409.
-)) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/geometry/geometry.sty
-Package: geometry 2018/04/16 v5.8 Page Geometry
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/graphics/keyval.sty
-Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
-\KV@toks@=\toks22
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/generic/oberdiek/ifpdf.sty
-Package: ifpdf 2018/09/07 v3.3 Provides the ifpdf switch
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/generic/oberdiek/ifvtex.sty
-Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO)
-Package ifvtex Info: VTeX not detected.
-)
-\Gm@cnth=\count100
-\Gm@cntv=\count101
-\c@Gm@tempcnt=\count102
-\Gm@bindingoffset=\dimen112
-\Gm@wd@mp=\dimen113
-\Gm@odd@mp=\dimen114
-\Gm@even@mp=\dimen115
-\Gm@layoutwidth=\dimen116
-\Gm@layoutheight=\dimen117
-\Gm@layouthoffset=\dimen118
-\Gm@layoutvoffset=\dimen119
-\Gm@dimlist=\toks23
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/hyperref/hyperref.sty
-Package: hyperref 2018/11/30 v6.88e Hypertext links for LaTeX
-
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.
-sty
-Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO)
-
-
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/generic/oberdiek/hobsub-generic.s
-ty
-Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO)
-Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO)
-Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)
-Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
-Package hobsub Info: Skipping package `ifluatex' (already loaded).
-Package hobsub Info: Skipping package `ifvtex' (already loaded).
-Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO)
-Package hobsub Info: Skipping package `ifpdf' (already loaded).
-Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
-Package etexcmds Info: Could not find \expanded.
-(etexcmds)             That can mean that you are not using pdfTeX 1.50 or
-(etexcmds)             that some package has redefined \expanded.
-(etexcmds)             In the latter case, load this package earlier.
-Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO)
-Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO)
-Package: pdftexcmds 2018/09/10 v0.29 Utility functions of pdfTeX for LuaTeX (HO
-)
-Package pdftexcmds Info: LuaTeX not detected.
-Package pdftexcmds Info: \pdf@primitive is available.
-Package pdftexcmds Info: \pdf@ifprimitive is available.
-Package pdftexcmds Info: \pdfdraftmode found.
-Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO)
-Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO
-)
-Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO)
-Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO)
-)
-Package hobsub Info: Skipping package `hobsub' (already loaded).
-Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO)
-Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO)
-Package: xcolor-patch 2016/05/16 xcolor patch
-Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO)
-Package atveryend Info: \enddocument detected (standard20110627).
-Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO)
-Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO)
-Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO)
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/oberdiek/auxhook.sty
-Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO)
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/oberdiek/kvoptions.sty
-Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
-)
-\@linkdim=\dimen120
-\Hy@linkcounter=\count103
-\Hy@pagecounter=\count104
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/hyperref/pd1enc.def
-File: pd1enc.def 2018/11/30 v6.88e Hyperref: PDFDocEncoding definition (HO)
-Now handling font encoding PD1 ...
-... no UTF-8 mapping file for font encoding PD1
-)
-\Hy@SavedSpaceFactor=\count105
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/latexconfig/hyperref.cfg
-File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
-)
-Package hyperref Info: Hyper figures OFF on input line 4519.
-Package hyperref Info: Link nesting OFF on input line 4524.
-Package hyperref Info: Hyper index ON on input line 4527.
-Package hyperref Info: Plain pages OFF on input line 4534.
-Package hyperref Info: Backreferencing OFF on input line 4539.
-Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
-Package hyperref Info: Bookmarks ON on input line 4772.
-\c@Hy@tempcnt=\count106
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/url/url.sty
-\Urlmuskip=\muskip11
-Package: url 2013/09/16  ver 3.4  Verb mode for urls, etc.
-)
-LaTeX Info: Redefining \url on input line 5125.
-\XeTeXLinkMargin=\dimen121
-\Fld@menulength=\count107
-\Field@Width=\dimen122
-\Fld@charsize=\dimen123
-Package hyperref Info: Hyper figures OFF on input line 6380.
-Package hyperref Info: Link nesting OFF on input line 6385.
-Package hyperref Info: Hyper index ON on input line 6388.
-Package hyperref Info: backreferencing OFF on input line 6395.
-Package hyperref Info: Link coloring OFF on input line 6400.
-Package hyperref Info: Link coloring with OCG OFF on input line 6405.
-Package hyperref Info: PDF/A mode OFF on input line 6410.
-LaTeX Info: Redefining \ref on input line 6450.
-LaTeX Info: Redefining \pageref on input line 6454.
-\Hy@abspage=\count108
-\c@Item=\count109
-\c@Hfootnote=\count110
-)
-Package hyperref Info: Driver (autodetected): hpdftex.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/hyperref/hpdftex.def
-File: hpdftex.def 2018/11/30 v6.88e Hyperref driver for pdfTeX
-\Fld@listcount=\count111
-\c@bookmark@seq@number=\count112
-
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
-Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO)
-Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
-82.
-)
-\Hy@SectionHShift=\skip46
-)
-Package hyperref Info: Option `unicode' set `true' on input line 30.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/hyperref/puenc.def
-File: puenc.def 2018/11/30 v6.88e Hyperref: PDF Unicode definition (HO)
-Now handling font encoding PU ...
-... no UTF-8 mapping file for font encoding PU
-)
-Package hyperref Info: Option `breaklinks' set `true' on input line 30.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/graphics/color.sty
-Package: color 2016/07/10 v1.1e Standard LaTeX Color (DPC)
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/graphics-cfg/color.cfg
-File: color.cfg 2016/01/02 v1.6 sample color configuration
-)
-Package color Info: Driver file: pdftex.def on input line 147.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/graphics-def/pdftex.def
-File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex
-)) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty
-Package: fancyvrb 2019/01/15
-Style option: `fancyvrb' v3.2a <2019/01/15> (tvz)
-\FV@CodeLineNo=\count113
-\FV@InFile=\read1
-\FV@TabBox=\box29
-\c@FancyVerbLine=\count114
-\FV@StepNumber=\count115
-\FV@OutFile=\write3
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/framed/framed.sty
-Package: framed 2011/10/22 v 0.96: framed or shaded text with page breaks
-\OuterFrameSep=\skip47
-\fb@frw=\dimen124
-\fb@frh=\dimen125
-\FrameRule=\dimen126
-\FrameSep=\dimen127
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/graphics/graphicx.sty
-Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR)
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/graphics/graphics.sty
-Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR)
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/graphics/trig.sty
-Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
-File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
-)
-Package graphics Info: Driver file: pdftex.def on input line 99.
-)
-\Gin@req@height=\dimen128
-\Gin@req@width=\dimen129
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/oberdiek/grffile.sty
-Package: grffile 2017/06/30 v1.18 Extended file name support for graphics (HO)
-Package grffile Info: Option `multidot' is set to `true'.
-Package grffile Info: Option `extendedchars' is set to `false'.
-Package grffile Info: Option `space' is set to `true'.
-Package grffile Info: \Gin@ii of package `graphicx' fixed on input line 494.
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/titling/titling.sty
-Package: titling 2009/09/04 v2.1d maketitle typesetting
-\thanksmarkwidth=\skip48
-\thanksmargin=\skip49
-\droptitle=\skip50
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/booktabs/booktabs.sty
-Package: booktabs 2016/04/27 v1.618033 publication quality tables
-\heavyrulewidth=\dimen130
-\lightrulewidth=\dimen131
-\cmidrulewidth=\dimen132
-\belowrulesep=\dimen133
-\belowbottomsep=\dimen134
-\aboverulesep=\dimen135
-\abovetopsep=\dimen136
-\cmidrulesep=\dimen137
-\cmidrulekern=\dimen138
-\defaultaddspace=\dimen139
-\@cmidla=\count116
-\@cmidlb=\count117
-\@aboverulesep=\dimen140
-\@belowrulesep=\dimen141
-\@thisruleclass=\count118
-\@lastruleclass=\count119
-\@thisrulewidth=\dimen142
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/tools/longtable.sty
-Package: longtable 2014/10/28 v4.11 Multi-page Table package (DPC)+ FMi change
-\LTleft=\skip51
-\LTright=\skip52
-\LTpre=\skip53
-\LTpost=\skip54
-\LTchunksize=\count120
-\LTcapwidth=\dimen143
-\LT@head=\box30
-\LT@firsthead=\box31
-\LT@foot=\box32
-\LT@lastfoot=\box33
-\LT@cols=\count121
-\LT@rows=\count122
-\c@LT@tables=\count123
-\c@LT@chunks=\count124
-\LT@p@ftn=\toks24
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/tools/array.sty
-Package: array 2018/12/30 v2.4k Tabular extension package (FMi)
-\col@sep=\dimen144
-\ar@mcellbox=\box34
-\extrarowheight=\dimen145
-\NC@list=\toks25
-\extratabsurround=\skip55
-\backup@length=\skip56
-\ar@cellbox=\box35
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/multirow/multirow.sty
-Package: multirow 2019/01/01 v2.4 Span multiple rows of a table
-\multirow@colwidth=\skip57
-\multirow@cntb=\count125
-\multirow@dima=\skip58
-\bigstrutjot=\dimen146
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/wrapfig/wrapfig.sty
-\wrapoverhang=\dimen147
-\WF@size=\dimen148
-\c@WF@wrappedlines=\count126
-\WF@box=\box36
-\WF@everypar=\toks26
-Package: wrapfig 2003/01/31  v 3.6
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/float/float.sty
-Package: float 2001/11/08 v1.3d Float enhancements (AL)
-\c@float@type=\count127
-\float@exts=\toks27
-\float@box=\box37
-\@float@everytoks=\toks28
-\@floatcapt=\box38
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/colortbl/colortbl.sty
-Package: colortbl 2018/12/12 v1.0d Color table columns (DPC)
-\everycr=\toks29
-\minrowclearance=\skip59
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/oberdiek/pdflscape.sty
-Package: pdflscape 2016/05/14 v0.11 Display of landscape pages in PDF (HO)
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/graphics/lscape.sty
-Package: lscape 2000/10/22 v3.01 Landscape Pages (DPC)
-)
-Package pdflscape Info: Auto-detected driver: pdftex on input line 81.
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/tabu/tabu.sty
-Package: tabu 2019/01/11 v2.9 - flexible LaTeX tabulars (FC+tabu-fixed)
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/varwidth/varwidth.sty
-Package: varwidth 2009/03/30 ver 0.92;  Variable-width minipages
-\@vwid@box=\box39
-\sift@deathcycles=\count128
-\@vwid@loff=\dimen149
-\@vwid@roff=\dimen150
-)
-\c@taburow=\count129
-\tabu@nbcols=\count130
-\tabu@cnt=\count131
-\tabu@Xcol=\count132
-\tabu@alloc=\count133
-\tabu@nested=\count134
-\tabu@target=\dimen151
-\tabu@spreadtarget=\dimen152
-\tabu@naturalX=\dimen153
-\tabucolX=\dimen154
-\tabu@Xsum=\dimen155
-\extrarowdepth=\dimen156
-\abovetabulinesep=\dimen157
-\belowtabulinesep=\dimen158
-\tabustrutrule=\dimen159
-\tabu@thebody=\toks30
-\tabu@footnotes=\toks31
-\tabu@box=\box40
-\tabu@arstrutbox=\box41
-\tabu@hleads=\box42
-\tabu@vleads=\box43
-\tabu@cellskip=\skip60
-)
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/threeparttable/threeparttab
-le.sty
-Package: threeparttable 2003/06/13  v 3.0
-\@tempboxb=\box44
-)
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/threeparttablex/threepartta
-blex.sty
-Package: threeparttablex 2013/07/23 v0.3 by daleif
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/environ/environ.sty
-Package: environ 2014/05/04 v0.3 A new way to define environments
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/trimspaces/trimspaces.sty
-Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list
-))
-\TPTL@width=\skip61
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/generic/ulem/ulem.sty
-\UL@box=\box45
-\UL@hyphenbox=\box46
-\UL@skip=\skip62
-\UL@hook=\toks32
-\UL@height=\dimen160
-\UL@pe=\count135
-\UL@pixel=\dimen161
-\ULC@box=\box47
-Package: ulem 2012/05/18
-\ULdepth=\dimen162
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/makecell/makecell.sty
-Package: makecell 2009/08/03 V0.1e Managing of Tab Column Heads and Cells
-\rotheadsize=\dimen163
-\c@nlinenum=\count136
-\TeXr@lab=\toks33
-) (/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/xcolor/xcolor.sty
-Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK)
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/graphics-cfg/color.cfg
-File: color.cfg 2016/01/02 v1.6 sample color configuration
-)
-Package xcolor Info: Driver file: pdftex.def on input line 225.
-LaTeX Info: Redefining \color on input line 709.
-Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348.
-Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352.
-Package xcolor Info: Model `RGB' extended on input line 1364.
-Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366.
-Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367.
-Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368.
-Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369.
-Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370.
-Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371.
-) (./awesome_table_in_pdf.aux)
-\openout1 = `awesome_table_in_pdf.aux'.
-
-LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 142.
-LaTeX Font Info:    ... okay on input line 142.
-LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 142.
-LaTeX Font Info:    ... okay on input line 142.
-LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 142.
-LaTeX Font Info:    ... okay on input line 142.
-LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 142.
-LaTeX Font Info:    ... okay on input line 142.
-LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 142.
-LaTeX Font Info:    ... okay on input line 142.
-LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 142.
-LaTeX Font Info:    ... okay on input line 142.
-LaTeX Font Info:    Checking defaults for TS1/cmr/m/n on input line 142.
-LaTeX Font Info:    Try loading font information for TS1+cmr on input line 142.
-
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/base/ts1cmr.fd
-File: ts1cmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
-)
-LaTeX Font Info:    ... okay on input line 142.
-LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 142.
-LaTeX Font Info:    ... okay on input line 142.
-LaTeX Font Info:    Checking defaults for PU/pdf/m/n on input line 142.
-LaTeX Font Info:    ... okay on input line 142.
-LaTeX Font Info:    Try loading font information for T1+lmr on input line 142.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/lm/t1lmr.fd
-File: t1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
-)
-*geometry* driver: auto-detecting
-*geometry* detected driver: pdftex
-*geometry* verbose mode - [ preamble ] result:
-* driver: pdftex
-* paper: <default>
-* layout: <same size as paper>
-* layoutoffset:(h,v)=(0.0pt,0.0pt)
-* modes: 
-* h-part:(L,W,R)=(72.26999pt, 469.75502pt, 72.26999pt)
-* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt)
-* \paperwidth=614.295pt
-* \paperheight=794.96999pt
-* \textwidth=469.75502pt
-* \textheight=650.43001pt
-* \oddsidemargin=0.0pt
-* \evensidemargin=0.0pt
-* \topmargin=-37.0pt
-* \headheight=12.0pt
-* \headsep=25.0pt
-* \topskip=10.0pt
-* \footskip=30.0pt
-* \marginparwidth=65.0pt
-* \marginparsep=11.0pt
-* \columnsep=10.0pt
-* \skip\footins=9.0pt plus 4.0pt minus 2.0pt
-* \hoffset=0.0pt
-* \voffset=0.0pt
-* \mag=1000
-* \@twocolumnfalse
-* \@twosidefalse
-* \@mparswitchfalse
-* \@reversemarginfalse
-* (1in=72.27pt=25.4mm, 1cm=28.453pt)
-
-\AtBeginShipoutBox=\box48
-Package hyperref Info: Link coloring OFF on input line 142.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/hyperref/nameref.sty
-Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section
-
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/generic/oberdiek/gettitlestring.s
-ty
-Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO)
-)
-\c@section@level=\count137
-)
-LaTeX Info: Redefining \ref on input line 142.
-LaTeX Info: Redefining \pageref on input line 142.
-LaTeX Info: Redefining \nameref on input line 142.
-(./awesome_table_in_pdf.out) (./awesome_table_in_pdf.out)
-\@outlinefile=\write4
-\openout4 = `awesome_table_in_pdf.out'.
-
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
-Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/oberdiek/grfext.sty
-Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO)
-)
-Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
-38.
-Package grfext Info: Graphics extension search list:
-(grfext)             [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE
-G,.JBIG2,.JB2,.eps]
-(grfext)             \AppendGraphicsExtensions on input line 456.
-
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cf
-g
-File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
-e
-)) (./awesome_table_in_pdf.toc
-LaTeX Font Info:    Try loading font information for OT1+lmr on input line 4.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/lm/ot1lmr.fd
-File: ot1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
-)
-LaTeX Font Info:    Try loading font information for OML+lmm on input line 4.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/lm/omllmm.fd
-File: omllmm.fd 2009/10/30 v1.6 Font defs for Latin Modern
-)
-LaTeX Font Info:    Try loading font information for OMS+lmsy on input line 4.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/lm/omslmsy.fd
-File: omslmsy.fd 2009/10/30 v1.6 Font defs for Latin Modern
-)
-LaTeX Font Info:    Try loading font information for OMX+lmex on input line 4.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/lm/omxlmex.fd
-File: omxlmex.fd 2009/10/30 v1.6 Font defs for Latin Modern
-)
-LaTeX Font Info:    External font `lmex10' loaded for size
-(Font)              <10> on input line 4.
-LaTeX Font Info:    External font `lmex10' loaded for size
-(Font)              <7> on input line 4.
-LaTeX Font Info:    External font `lmex10' loaded for size
-(Font)              <5> on input line 4.
-LaTeX Font Info:    Try loading font information for U+msa on input line 4.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/umsa.fd
-File: umsa.fd 2013/01/14 v3.01 AMS symbols A
-)
-LaTeX Font Info:    Try loading font information for U+msb on input line 4.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/umsb.fd
-File: umsb.fd 2013/01/14 v3.01 AMS symbols B
-) [1
-
-{/Users/haozhu/Library/TinyTeX/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
-LaTeX Font Info:    Try loading font information for T1+lmtt on input line 35.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/lm/t1lmtt.fd
-File: t1lmtt.fd 2009/10/30 v1.6 Font defs for Latin Modern
-))
-\tf@toc=\write5
-\openout5 = `awesome_table_in_pdf.toc'.
-
-[2]
-<kableExtra_sm.png, id=182, 61.6704pt x 71.0655pt>
-File: kableExtra_sm.png Graphic file (type png)
-<use kableExtra_sm.png>
-Package pdftex.def Info: kableExtra_sm.png  used on input line 161.
-(pdftex.def)             Requested size: 61.6721pt x 71.06747pt.
-
-Package xcolor Warning: Incompatible color definition on input line 176.
-
-LaTeX Font Info:    Font shape `T1/lmtt/bx/n' in size <10> not available
-(Font)              Font shape `T1/lmtt/b/n' tried instead on input line 178.
-
-Package xcolor Warning: Incompatible color definition on input line 184.
-
-
-Package xcolor Warning: Incompatible color definition on input line 184.
-
-
-Package xcolor Warning: Incompatible color definition on input line 192.
-
-
-Package xcolor Warning: Incompatible color definition on input line 198.
-
-
-Package xcolor Warning: Incompatible color definition on input line 198.
-
-
-Package xcolor Warning: Incompatible color definition on input line 233.
-
-[3
-
- <./kableExtra_sm.png>]
-LaTeX Font Info:    Try loading font information for TS1+lmtt on input line 237
-.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/lm/ts1lmtt.fd
-File: ts1lmtt.fd 2009/10/30 v1.6 Font defs for Latin Modern
-)
-
-Package xcolor Warning: Incompatible color definition on input line 240.
-
-
-Package xcolor Warning: Incompatible color definition on input line 240.
-
-
-Package xcolor Warning: Incompatible color definition on input line 259.
-
-
-Package xcolor Warning: Incompatible color definition on input line 265.
-
-
-Package xcolor Warning: Incompatible color definition on input line 265.
-
-
-Package xcolor Warning: Incompatible color definition on input line 303.
-
-
-Package xcolor Warning: Incompatible color definition on input line 309.
-
-
-Package xcolor Warning: Incompatible color definition on input line 309.
-
-
-Package xcolor Warning: Incompatible color definition on input line 327.
-
-[4]
-
-Package xcolor Warning: Incompatible color definition on input line 331.
-
-
-Package xcolor Warning: Incompatible color definition on input line 331.
-
-
-Package xcolor Warning: Incompatible color definition on input line 341.
-
-
-Package xcolor Warning: Incompatible color definition on input line 345.
-
-
-Package xcolor Warning: Incompatible color definition on input line 345.
-
-
-Package xcolor Warning: Incompatible color definition on input line 385.
-
-
-Package xcolor Warning: Incompatible color definition on input line 390.
-
-
-Package xcolor Warning: Incompatible color definition on input line 390.
-
-[5]
-
-Package xcolor Warning: Incompatible color definition on input line 413.
-
-
-Package xcolor Warning: Incompatible color definition on input line 418.
-
-
-Package xcolor Warning: Incompatible color definition on input line 418.
-
-
-Package xcolor Warning: Incompatible color definition on input line 448.
-
-
-Package xcolor Warning: Incompatible color definition on input line 453.
-
-
-Package xcolor Warning: Incompatible color definition on input line 453.
-
-[6pdfTeX warning (ext4): destination with the same identifier (name{table.1}) h
-as been already used, duplicate ignored
-
-\AtBegShi@Output ...ipout \box \AtBeginShipoutBox 
-                                                  \fi \fi 
-l.490 
-      ]
-
-Package xcolor Warning: Incompatible color definition on input line 491.
-
-
-Package xcolor Warning: Incompatible color definition on input line 496.
-
-
-Package xcolor Warning: Incompatible color definition on input line 496.
-
-
-Package xcolor Warning: Incompatible color definition on input line 514.
-
-
-Package xcolor Warning: Incompatible color definition on input line 519.
-
-
-Package xcolor Warning: Incompatible color definition on input line 519.
-
-
-Package xcolor Warning: Incompatible color definition on input line 552.
-
-
-Package xcolor Warning: Incompatible color definition on input line 560.
-
-
-Package xcolor Warning: Incompatible color definition on input line 560.
-
-[7] [8]
-
-Package xcolor Warning: Incompatible color definition on input line 668.
-
-
-Package xcolor Warning: Incompatible color definition on input line 674.
-
-
-Package xcolor Warning: Incompatible color definition on input line 674.
-
-
-Package xcolor Warning: Incompatible color definition on input line 702.
-
-[9]
-
-Package xcolor Warning: Incompatible color definition on input line 707.
-
-
-Package xcolor Warning: Incompatible color definition on input line 707.
-
-
-Package xcolor Warning: Incompatible color definition on input line 731.
-
-
-Package xcolor Warning: Incompatible color definition on input line 736.
-
-
-Package xcolor Warning: Incompatible color definition on input line 736.
-
-
-Package xcolor Warning: Incompatible color definition on input line 770.
-
-
-Package xcolor Warning: Incompatible color definition on input line 775.
-
-
-Package xcolor Warning: Incompatible color definition on input line 775.
-
-[10]
-
-Package xcolor Warning: Incompatible color definition on input line 807.
-
-
-Package xcolor Warning: Incompatible color definition on input line 823.
-
-
-Package xcolor Warning: Incompatible color definition on input line 823.
-
-
-Package xcolor Warning: Incompatible color definition on input line 847.
-
-
-Package xcolor Warning: Incompatible color definition on input line 855.
-
-
-Package xcolor Warning: Incompatible color definition on input line 855.
-
-[11]
-
-Package xcolor Warning: Incompatible color definition on input line 878.
-
-
-Package xcolor Warning: Incompatible color definition on input line 884.
-
-
-Package xcolor Warning: Incompatible color definition on input line 884.
-
-
-Package xcolor Warning: Incompatible color definition on input line 933.
-
-
-Package xcolor Warning: Incompatible color definition on input line 948.
-
-
-Package xcolor Warning: Incompatible color definition on input line 948.
-
-
-Package xcolor Warning: Incompatible color definition on input line 948.
-
-[12]
-
-Package xcolor Warning: Incompatible color definition on input line 948.
-
-
-Package xcolor Warning: Incompatible color definition on input line 948.
-
-
-Package xcolor Warning: Incompatible color definition on input line 979.
-
-
-Package xcolor Warning: Incompatible color definition on input line 992.
-
-
-Package xcolor Warning: Incompatible color definition on input line 992.
-
-[13]
-
-Package xcolor Warning: Incompatible color definition on input line 1037.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1051.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1051.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1071.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1077.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1077.
-
-[14]
-
-Package xcolor Warning: Incompatible color definition on input line 1100.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1108.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1108.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1144.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1151.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1151.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1183.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1188.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1188.
-
-[15]
-
-Package xcolor Warning: Incompatible color definition on input line 1211.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1218.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1218.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1235.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1243.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1243.
-
-[16pdfTeX warning (ext4): destination with the same identifier (name{table.3}) 
-has been already used, duplicate ignored
-
-\AtBegShi@Output ...ipout \box \AtBeginShipoutBox 
-                                                  \fi \fi 
-l.1255 ...Row indentation}\label{row-indentation}}
-                                                  ]
-
-Package xcolor Warning: Incompatible color definition on input line 1263.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1268.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1268.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1302.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1312.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1312.
-
-[17]
-
-Package xcolor Warning: Incompatible color definition on input line 1355.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1362.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1362.
-
-
-Overfull \hbox (7.49992pt too wide) in paragraph at lines 1387--1387
- []|[]| 
- []
-
-
-Overfull \hbox (7.49992pt too wide) in paragraph at lines 1393--1393
- []|[]| 
- []
-
-
-Overfull \hbox (7.49992pt too wide) in paragraph at lines 1399--1399
- []|[]| 
- []
-
-
-Overfull \hbox (7.49992pt too wide) in paragraph at lines 1405--1405
- []|[]| 
- []
-
-
-Package xcolor Warning: Incompatible color definition on input line 1413.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1429.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1429.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1429.
-
-[18]
-
-Package xcolor Warning: Incompatible color definition on input line 1429.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1429.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1485.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1498.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1498.
-
-[19]
-
-Package xcolor Warning: Incompatible color definition on input line 1568.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1578.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1578.
-
-LaTeX Font Info:    Try loading font information for TS1+lmr on input line 1603
-.
-(/Users/haozhu/Library/TinyTeX/texmf-dist/tex/latex/lm/ts1lmr.fd
-File: ts1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
-) [20]
-
-Package xcolor Warning: Incompatible color definition on input line 1615.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1627.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1627.
-
-
-Underfull \hbox (badness 1558) in paragraph at lines 1645--1659
-[]\T1/lmr/m/n/10 If you need to add foot-note marks in a ta-ble, you need to do
- it man-u-ally (no fancy) us-ing
- []
-
-
-Package xcolor Warning: Incompatible color definition on input line 1660.
-
-[21]
-
-Package xcolor Warning: Incompatible color definition on input line 1676.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1676.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1699.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1705.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1705.
-
-[22pdfTeX warning (ext4): destination with the same identifier (name{table.4}) 
-has been already used, duplicate ignored
-
-\AtBegShi@Output ...ipout \box \AtBeginShipoutBox 
-                                                  \fi \fi 
-l.1742 
-       ]
-
-Package xcolor Warning: Incompatible color definition on input line 1743.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1755.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1755.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1779.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1791.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1791.
-
-[23] [24
-
-pdfTeX warning (ext4): destination with the same identifier (name{table.5}) has
- been already used, duplicate ignored
-
-\AtBegShi@Output ...ipout \box \AtBeginShipoutBox 
-                                                  \fi \fi 
-l.1816 \end{landscape}
-                      ]
-
-Package xcolor Warning: Incompatible color definition on input line 1832.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1846.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1846.
-
-LaTeX Font Info:    Font shape `T1/lmtt/bx/n' in size <12> not available
-(Font)              Font shape `T1/lmtt/b/n' tried instead on input line 1858.
-
-Package xcolor Warning: Incompatible color definition on input line 1872.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1879.
-
-
-Package xcolor Warning: Incompatible color definition on input line 1879.
-
-Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1882.
-[25
-
-]
-Package atveryend Info: Empty hook `AfterLastShipout' on input line 1882.
-(./awesome_table_in_pdf.aux)
-Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1882.
-Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1882.
-
-Package rerunfilecheck Info: File `awesome_table_in_pdf.out' has not changed.
-(rerunfilecheck)             Checksum: 0BCCEFED370E8EF541DFF560DFD588EE;4697.
-Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 1882.
- ) 
-Here is how much of TeX's memory you used:
- 12819 strings out of 494562
- 181551 string characters out of 6174329
- 299725 words of memory out of 5000000
- 16150 multiletter control sequences out of 15000+600000
- 112830 words of font info for 69 fonts, out of 8000000 for 9000
- 14 hyphenation exceptions out of 8191
- 28i,15n,35p,2308b,430s stack positions out of 5000i,500n,10000p,200000b,80000s
-{/Users/haozhu/Library/TinyTeX/texmf-dist/fonts/enc/dvips/lm/lm-ts1.enc}{/Use
-rs/haozhu/Library/TinyTeX/texmf-dist/fonts/enc/dvips/lm/lm-ec.enc}</Users/haozh
-u/Library/TinyTeX/texmf-dist/fonts/type1/public/lm/lmbx10.pfb></Users/haozhu/Li
-brary/TinyTeX/texmf-dist/fonts/type1/public/lm/lmbx12.pfb></Users/haozhu/Librar
-y/TinyTeX/texmf-dist/fonts/type1/public/lm/lmbx8.pfb></Users/haozhu/Library/Tin
-yTeX/texmf-dist/fonts/type1/public/lm/lmbx9.pfb></Users/haozhu/Library/TinyTeX/
-texmf-dist/fonts/type1/public/lm/lmbxi10.pfb></Users/haozhu/Library/TinyTeX/tex
-mf-dist/fonts/type1/public/lm/lmr10.pfb></Users/haozhu/Library/TinyTeX/texmf-di
-st/fonts/type1/public/lm/lmr12.pfb></Users/haozhu/Library/TinyTeX/texmf-dist/fo
-nts/type1/public/lm/lmr17.pfb></Users/haozhu/Library/TinyTeX/texmf-dist/fonts/t
-ype1/public/lm/lmr5.pfb></Users/haozhu/Library/TinyTeX/texmf-dist/fonts/type1/p
-ublic/lm/lmr6.pfb></Users/haozhu/Library/TinyTeX/texmf-dist/fonts/type1/public/
-lm/lmr7.pfb></Users/haozhu/Library/TinyTeX/texmf-dist/fonts/type1/public/lm/lmr
-8.pfb></Users/haozhu/Library/TinyTeX/texmf-dist/fonts/type1/public/lm/lmr9.pfb>
-</Users/haozhu/Library/TinyTeX/texmf-dist/fonts/type1/public/lm/lmri10.pfb></Us
-ers/haozhu/Library/TinyTeX/texmf-dist/fonts/type1/public/lm/lmri12.pfb></Users/
-haozhu/Library/TinyTeX/texmf-dist/fonts/type1/public/lm/lmtk10.pfb></Users/haoz
-hu/Library/TinyTeX/texmf-dist/fonts/type1/public/lm/lmtt10.pfb></Users/haozhu/L
-ibrary/TinyTeX/texmf-dist/fonts/type1/public/lm/lmtti10.pfb>
-Output written on awesome_table_in_pdf.pdf (25 pages, 541195 bytes).
-PDF statistics:
- 438 PDF objects out of 1000 (max. 8388607)
- 387 compressed objects within 4 object streams
- 104 named destinations out of 1000 (max. 500000)
- 262 words of extra memory for PDF output out of 10000 (max. 10000000)
-
diff --git a/docs/awesome_table_in_pdf.pdf b/docs/awesome_table_in_pdf.pdf
index ceec97d..846ec7a 100644
--- a/docs/awesome_table_in_pdf.pdf
+++ b/docs/awesome_table_in_pdf.pdf
Binary files differ
diff --git a/docs/awesome_table_in_pdf.toc b/docs/awesome_table_in_pdf.toc
index 56e8517..b8b6038 100644
--- a/docs/awesome_table_in_pdf.toc
+++ b/docs/awesome_table_in_pdf.toc
@@ -1,36 +1,36 @@
-\contentsline {section}{Overview}{3}{section*.2}% 
-\contentsline {section}{Installation}{3}{section*.3}% 
-\contentsline {section}{Getting Started}{3}{section*.4}% 
-\contentsline {subsection}{LaTeX packages used in this package}{4}{section*.5}% 
-\contentsline {subsection}{Plain LaTeX}{4}{section*.6}% 
-\contentsline {subsection}{LaTeX table with booktabs}{5}{section*.7}% 
-\contentsline {section}{Table Styles}{5}{section*.8}% 
-\contentsline {subsection}{LaTeX options}{5}{section*.9}% 
-\contentsline {subsubsection}{Striped}{5}{section*.10}% 
-\contentsline {subsubsection}{Hold position}{6}{section*.11}% 
-\contentsline {subsubsection}{Scale down}{7}{section*.12}% 
-\contentsline {subsubsection}{Repeat header in longtable}{7}{section*.13}% 
-\contentsline {subsection}{Full width?}{9}{section*.14}% 
-\contentsline {subsection}{Position}{9}{section*.15}% 
-\contentsline {subsection}{Font Size}{10}{section*.16}% 
-\contentsline {section}{Column / Row Specification}{11}{section*.17}% 
-\contentsline {subsection}{Column spec}{11}{section*.18}% 
-\contentsline {subsection}{Row spec}{11}{section*.19}% 
-\contentsline {subsection}{Header Rows}{12}{section*.20}% 
-\contentsline {section}{Cell/Text Specification}{12}{section*.21}% 
-\contentsline {subsection}{Conditional logic}{12}{section*.22}% 
-\contentsline {subsection}{Visualize data with Viridis Color}{13}{section*.23}% 
-\contentsline {subsection}{Text Specification}{14}{section*.24}% 
-\contentsline {section}{Grouped Columns / Rows}{14}{section*.25}% 
-\contentsline {subsection}{Add header rows to group columns}{14}{section*.26}% 
-\contentsline {subsection}{Group rows via labeling}{15}{section*.27}% 
-\contentsline {subsection}{Row indentation}{17}{section*.28}% 
-\contentsline {subsection}{Group rows via multi-row cell}{17}{section*.29}% 
-\contentsline {section}{Table Footnote}{20}{section*.30}% 
-\contentsline {section}{LaTeX Only Features}{23}{section*.31}% 
-\contentsline {subsection}{Linebreak processor}{23}{section*.32}% 
-\contentsline {subsection}{Table on a Landscape Page}{23}{section*.33}% 
-\contentsline {subsection}{Use LaTeX table in HTML or Word}{25}{section*.34}% 
-\contentsline {section}{From other packages}{25}{section*.35}% 
-\contentsline {subsection}{\texttt {tables}}{25}{section*.36}% 
-\contentsline {subsection}{\texttt {xtable}}{25}{section*.37}% 
+\contentsline {section}{Overview}{2}{section*.2}%
+\contentsline {section}{Installation}{2}{section*.3}%
+\contentsline {section}{Getting Started}{2}{section*.4}%
+\contentsline {subsection}{LaTeX packages used in this package}{3}{section*.5}%
+\contentsline {subsection}{Plain LaTeX}{3}{section*.6}%
+\contentsline {subsection}{LaTeX table with booktabs}{4}{section*.7}%
+\contentsline {section}{Table Styles}{4}{section*.8}%
+\contentsline {subsection}{LaTeX options}{4}{section*.9}%
+\contentsline {subsubsection}{Striped}{4}{section*.10}%
+\contentsline {subsubsection}{Hold position}{5}{section*.11}%
+\contentsline {subsubsection}{Scale down}{5}{section*.12}%
+\contentsline {subsubsection}{Repeat header in longtable}{6}{section*.13}%
+\contentsline {subsection}{Full width?}{8}{section*.14}%
+\contentsline {subsection}{Position}{8}{section*.15}%
+\contentsline {subsection}{Font Size}{9}{section*.16}%
+\contentsline {section}{Column / Row Specification}{9}{section*.17}%
+\contentsline {subsection}{Column spec}{9}{section*.18}%
+\contentsline {subsection}{Row spec}{10}{section*.19}%
+\contentsline {subsection}{Header Rows}{10}{section*.20}%
+\contentsline {section}{Cell/Text Specification}{10}{section*.21}%
+\contentsline {subsection}{Conditional logic}{11}{section*.22}%
+\contentsline {subsection}{Visualize data with Viridis Color}{11}{section*.23}%
+\contentsline {subsection}{Text Specification}{12}{section*.24}%
+\contentsline {section}{Grouped Columns / Rows}{12}{section*.25}%
+\contentsline {subsection}{Add header rows to group columns}{12}{section*.26}%
+\contentsline {subsection}{Group rows via labeling}{13}{section*.27}%
+\contentsline {subsection}{Row indentation}{15}{section*.28}%
+\contentsline {subsection}{Group rows via multi-row cell}{15}{section*.29}%
+\contentsline {section}{Table Footnote}{18}{section*.30}%
+\contentsline {section}{LaTeX Only Features}{20}{section*.31}%
+\contentsline {subsection}{Linebreak processor}{20}{section*.32}%
+\contentsline {subsection}{Table on a Landscape Page}{21}{section*.33}%
+\contentsline {subsection}{Use LaTeX table in HTML or Word}{23}{section*.34}%
+\contentsline {section}{From other packages}{23}{section*.35}%
+\contentsline {subsection}{\texttt {tables}}{23}{section*.36}%
+\contentsline {subsection}{\texttt {xtable}}{23}{section*.37}%
diff --git a/inst/NEWS.md b/inst/NEWS.md
index 3244010..2a75d00 100644
--- a/inst/NEWS.md
+++ b/inst/NEWS.md
@@ -1,4 +1,33 @@
-kableExtra 1.1.0
+kableExtra 1.2.0
+--------------------------------------------------------------------------------
+
+* `add_indent` has a new option `level_of_indent` to control the width of the
+indentation. (thanks @samiaab1990 #479)
+
+* `add_indent` has a new option `all_cols` to control whether the indentation
+should be applied to the first column or all columns. Default is False. (#488)
+
+* Removed xcolor from latex dependency list
+
+* `collapse_rows` has a new option `target` to choose the target column in 
+`collapse_rows` (#484)
+
+* Fixed a bug with `group_rows` when used with `repeat_header` on the last row
+(#476)
+
+* Added mathjax to preview (#473)
+
+* Fixed a bug with `repeat_header` when the header row is customized (#480)
+
+* Fixed a bug with `collapse_rows` when text is too long. (#464)
+
+* Added a new function `remove_column` for html. The latex part hasn't been 
+implemented yet. (#490, thanks @DanChaltiel)
+
+
+
+kableExtra ]
+1.1.0
 --------------------------------------------------------------------------------
 
 # Major Changes
diff --git a/man/add_footnote.Rd b/man/add_footnote.Rd
index 79eff3b..525ce26 100644
--- a/man/add_footnote.Rd
+++ b/man/add_footnote.Rd
@@ -4,8 +4,13 @@
 \alias{add_footnote}
 \title{Add footnote}
 \usage{
-add_footnote(input, label = NULL, notation = "alphabet",
-  threeparttable = FALSE, escape = TRUE)
+add_footnote(
+  input,
+  label = NULL,
+  notation = "alphabet",
+  threeparttable = FALSE,
+  escape = TRUE
+)
 }
 \arguments{
 \item{input}{The direct output of your \code{kable} function or your last
diff --git a/man/add_header_above.Rd b/man/add_header_above.Rd
index 5174db8..2f0d133 100644
--- a/man/add_header_above.Rd
+++ b/man/add_header_above.Rd
@@ -4,11 +4,27 @@
 \alias{add_header_above}
 \title{Add a header row on top of current header}
 \usage{
-add_header_above(kable_input, header = NULL, bold = FALSE,
-  italic = FALSE, monospace = FALSE, underline = FALSE,
-  strikeout = FALSE, align = "c", color = NULL, background = NULL,
-  font_size = NULL, angle = NULL, escape = TRUE, line = TRUE,
-  line_sep = 3, extra_css = NULL, include_empty = FALSE)
+add_header_above(
+  kable_input,
+  header = NULL,
+  bold = FALSE,
+  italic = FALSE,
+  monospace = FALSE,
+  underline = FALSE,
+  strikeout = FALSE,
+  align = "c",
+  color = NULL,
+  background = NULL,
+  font_size = NULL,
+  angle = NULL,
+  escape = TRUE,
+  line = TRUE,
+  line_sep = 3,
+  extra_css = NULL,
+  include_empty = FALSE,
+  border_left = FALSE,
+  border_right = FALSE
+)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
@@ -16,7 +32,7 @@
 \item{header}{A (named) character vector with \code{colspan} as values. For
 example, \code{c(" " = 1, "title" = 2)} can be used to create a new header row
 for a 3-column table with "title" spanning across column 2 and 3. For
-convenience, when \code{colspan} equals to 1, users can drop the \code{ = 1} part.
+convenience, when \code{colspan} equals to 1, users can drop the \verb{ = 1} part.
 As a result, \code{c(" ", "title" = 2)} is the same as \code{c(" " = 1, "title" = 2)}.}
 
 \item{bold}{A T/F value to control whether the text should be bolded.}
@@ -64,6 +80,10 @@
 
 \item{include_empty}{Whether empty cells in HTML should also be styled.
 Default is FALSE.}
+
+\item{border_left}{T/F option for border on the left side in latex.}
+
+\item{border_right}{T/F option for border on the right side in latex.}
 }
 \description{
 Tables with multiple rows of header rows are extremely useful
diff --git a/man/add_indent.Rd b/man/add_indent.Rd
index 439fd29..7889802 100644
--- a/man/add_indent.Rd
+++ b/man/add_indent.Rd
@@ -4,13 +4,15 @@
 \alias{add_indent}
 \title{Add indentations to row headers}
 \usage{
-add_indent(kable_input, positions)
+add_indent(kable_input, positions, level_of_indent = 1, all_cols = FALSE)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
 
 \item{positions}{A vector of numeric row numbers for the rows that need to
 be indented.}
+
+\item{level_of_indent}{a numeric value for the indent level. Default is 1.}
 }
 \description{
 Add indentations to row headers
@@ -18,6 +20,6 @@
 \examples{
 x <- knitr::kable(head(mtcars), "html")
 # Add indentations to the 2nd & 4th row
-add_indent(x, c(2, 4))
+add_indent(x, c(2, 4), level_of_indent = 1)
 
 }
diff --git a/man/as_image.Rd b/man/as_image.Rd
index 1d1688a..1219ff8 100644
--- a/man/as_image.Rd
+++ b/man/as_image.Rd
@@ -25,3 +25,13 @@
 and then try to put it in an rmarkdown document using
 \code{knitr::include_graphics}.
 }
+\examples{
+\dontrun{
+library(kableExtra)
+
+kable(mtcars, "latex", booktabs = T) \%>\%
+kable_styling(latex_options = c("striped", "scale_down")) \%>\%
+row_spec(1, color = "red") \%>\%
+as_image()
+}
+}
diff --git a/man/cell_spec.Rd b/man/cell_spec.Rd
index f8d09af..61ff27c 100644
--- a/man/cell_spec.Rd
+++ b/man/cell_spec.Rd
@@ -5,19 +5,49 @@
 \alias{text_spec}
 \title{Specify Cell/Text format}
 \usage{
-cell_spec(x, format, bold = FALSE, italic = FALSE, monospace = FALSE,
-  underline = FALSE, strikeout = FALSE, color = NULL,
-  background = NULL, align = NULL, font_size = NULL, angle = NULL,
-  tooltip = NULL, popover = NULL, link = NULL, extra_css = NULL,
-  escape = TRUE, background_as_tile = TRUE,
-  latex_background_in_cell = TRUE)
+cell_spec(
+  x,
+  format,
+  bold = FALSE,
+  italic = FALSE,
+  monospace = FALSE,
+  underline = FALSE,
+  strikeout = FALSE,
+  color = NULL,
+  background = NULL,
+  align = NULL,
+  font_size = NULL,
+  angle = NULL,
+  tooltip = NULL,
+  popover = NULL,
+  link = NULL,
+  extra_css = NULL,
+  escape = TRUE,
+  background_as_tile = TRUE,
+  latex_background_in_cell = TRUE
+)
 
-text_spec(x, format, bold = FALSE, italic = FALSE, monospace = FALSE,
-  underline = FALSE, strikeout = FALSE, color = NULL,
-  background = NULL, align = NULL, font_size = NULL, angle = NULL,
-  tooltip = NULL, popover = NULL, link = NULL, extra_css = NULL,
-  escape = TRUE, background_as_tile = TRUE,
-  latex_background_in_cell = FALSE)
+text_spec(
+  x,
+  format,
+  bold = FALSE,
+  italic = FALSE,
+  monospace = FALSE,
+  underline = FALSE,
+  strikeout = FALSE,
+  color = NULL,
+  background = NULL,
+  align = NULL,
+  font_size = NULL,
+  angle = NULL,
+  tooltip = NULL,
+  popover = NULL,
+  link = NULL,
+  extra_css = NULL,
+  escape = TRUE,
+  background_as_tile = TRUE,
+  latex_background_in_cell = FALSE
+)
 }
 \arguments{
 \item{x}{Things to be formated. It could be a vector of numbers or strings.}
diff --git a/man/collapse_rows.Rd b/man/collapse_rows.Rd
index 4752d80..f145342 100644
--- a/man/collapse_rows.Rd
+++ b/man/collapse_rows.Rd
@@ -4,11 +4,17 @@
 \alias{collapse_rows}
 \title{Collapse repeated rows to multirow cell}
 \usage{
-collapse_rows(kable_input, columns = NULL, valign = c("middle", "top",
-  "bottom"), latex_hline = c("full", "major", "none", "custom"),
+collapse_rows(
+  kable_input,
+  columns = NULL,
+  valign = c("middle", "top", "bottom"),
+  latex_hline = c("full", "major", "none", "custom"),
   row_group_label_position = c("identity", "stack"),
-  custom_latex_hline = NULL, row_group_label_fonts = NULL,
-  headers_to_remove = NULL)
+  custom_latex_hline = NULL,
+  row_group_label_fonts = NULL,
+  headers_to_remove = NULL,
+  target = NULL
+)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
diff --git a/man/column_spec.Rd b/man/column_spec.Rd
index b611fad..0857f4d 100644
--- a/man/column_spec.Rd
+++ b/man/column_spec.Rd
@@ -4,12 +4,25 @@
 \alias{column_spec}
 \title{Specify the look of the selected column}
 \usage{
-column_spec(kable_input, column, width = NULL, bold = FALSE,
-  italic = FALSE, monospace = FALSE, underline = FALSE,
-  strikeout = FALSE, color = NULL, background = NULL,
-  border_left = FALSE, border_right = FALSE, width_min = NULL,
-  width_max = NULL, extra_css = NULL, include_thead = FALSE,
-  latex_column_spec = NULL)
+column_spec(
+  kable_input,
+  column,
+  width = NULL,
+  bold = FALSE,
+  italic = FALSE,
+  monospace = FALSE,
+  underline = FALSE,
+  strikeout = FALSE,
+  color = NULL,
+  background = NULL,
+  border_left = FALSE,
+  border_right = FALSE,
+  width_min = NULL,
+  width_max = NULL,
+  extra_css = NULL,
+  include_thead = FALSE,
+  latex_column_spec = NULL
+)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
diff --git a/man/dummy_html_tbl.Rd b/man/dummy_html_tbl.Rd
new file mode 100644
index 0000000..983f1fc
--- /dev/null
+++ b/man/dummy_html_tbl.Rd
@@ -0,0 +1,11 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/dummy_table.R
+\name{dummy_html_tbl}
+\alias{dummy_html_tbl}
+\title{Dummy html table for testing}
+\usage{
+dummy_html_tbl()
+}
+\description{
+Create dummy table for testing in kE
+}
diff --git a/man/dummy_latex_tbl.Rd b/man/dummy_latex_tbl.Rd
new file mode 100644
index 0000000..84cc9ee
--- /dev/null
+++ b/man/dummy_latex_tbl.Rd
@@ -0,0 +1,11 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/dummy_table.R
+\name{dummy_latex_tbl}
+\alias{dummy_latex_tbl}
+\title{Dummy latex table for testing}
+\usage{
+dummy_latex_tbl(booktabs = T)
+}
+\description{
+Create dummy table for testing in kE
+}
diff --git a/man/footnote.Rd b/man/footnote.Rd
index 063ca3c..90a5b80 100644
--- a/man/footnote.Rd
+++ b/man/footnote.Rd
@@ -4,12 +4,24 @@
 \alias{footnote}
 \title{Add footnote (new)}
 \usage{
-footnote(kable_input, general = NULL, number = NULL, alphabet = NULL,
-  symbol = NULL, footnote_order = c("general", "number", "alphabet",
-  "symbol"), footnote_as_chunk = FALSE, escape = TRUE,
-  threeparttable = FALSE, fixed_small_size = FALSE,
-  general_title = "Note: ", number_title = "", alphabet_title = "",
-  symbol_title = "", title_format = "italic", symbol_manual = NULL)
+footnote(
+  kable_input,
+  general = NULL,
+  number = NULL,
+  alphabet = NULL,
+  symbol = NULL,
+  footnote_order = c("general", "number", "alphabet", "symbol"),
+  footnote_as_chunk = FALSE,
+  escape = TRUE,
+  threeparttable = FALSE,
+  fixed_small_size = FALSE,
+  general_title = "Note: ",
+  number_title = "",
+  alphabet_title = "",
+  symbol_title = "",
+  title_format = "italic",
+  symbol_manual = NULL
+)
 }
 \arguments{
 \item{kable_input}{HTML or LaTeX table generated by \code{knitr::kable}}
@@ -57,7 +69,7 @@
 Multiple options are possible.}
 
 \item{symbol_manual}{User can manually supply a vector of either html or
-latex symbols. For example, \code{symbol_manual = c('*', '\\\\dag', '\\\\ddag')}.`}
+latex symbols. For example, \code{symbol_manual = c('*', '\\\\\\\\dag', '\\\\\\\\ddag')}.`}
 }
 \description{
 \code{footnote} provides a more flexible way to add footnote. You
diff --git a/man/footnote_marker_number.Rd b/man/footnote_marker_number.Rd
index 599f284..94b2e4d 100644
--- a/man/footnote_marker_number.Rd
+++ b/man/footnote_marker_number.Rd
@@ -20,7 +20,7 @@
 default value from global option \code{knitr.table.format}.}
 
 \item{double_escape}{T/F if output is in LaTeX, whether it should be double
-escaped. If you are using footnote_marker in \code{group_rows`` labeling row or }add_header_above\code{, you need to set this to be }TRUE`.}
+escaped. If you are using footnote_marker in \verb{group_rows`` labeling row or }add_header_above\verb{, you need to set this to be }TRUE`.}
 }
 \description{
 Put footnote mark in superscription in table. Unless you are
diff --git a/man/group_rows.Rd b/man/group_rows.Rd
index db032f5..d39d0d2 100644
--- a/man/group_rows.Rd
+++ b/man/group_rows.Rd
@@ -5,19 +5,45 @@
 \alias{pack_rows}
 \title{Put a few rows of a table into one category}
 \usage{
-group_rows(kable_input, group_label = NULL, start_row = NULL,
-  end_row = NULL, index = NULL,
+group_rows(
+  kable_input,
+  group_label = NULL,
+  start_row = NULL,
+  end_row = NULL,
+  index = NULL,
   label_row_css = "border-bottom: 1px solid;",
-  latex_gap_space = "0.3em", escape = TRUE, latex_align = "l",
-  colnum = NULL, bold = TRUE, italic = FALSE, hline_before = FALSE,
-  hline_after = FALSE, extra_latex_after = NULL, indent = TRUE)
+  latex_gap_space = "0.3em",
+  escape = TRUE,
+  latex_align = "l",
+  latex_wrap_text = FALSE,
+  colnum = NULL,
+  bold = TRUE,
+  italic = FALSE,
+  hline_before = FALSE,
+  hline_after = FALSE,
+  extra_latex_after = NULL,
+  indent = TRUE
+)
 
-pack_rows(kable_input, group_label = NULL, start_row = NULL,
-  end_row = NULL, index = NULL,
+pack_rows(
+  kable_input,
+  group_label = NULL,
+  start_row = NULL,
+  end_row = NULL,
+  index = NULL,
   label_row_css = "border-bottom: 1px solid;",
-  latex_gap_space = "0.3em", escape = TRUE, latex_align = "l",
-  colnum = NULL, bold = TRUE, italic = FALSE, hline_before = FALSE,
-  hline_after = FALSE, extra_latex_after = NULL, indent = TRUE)
+  latex_gap_space = "0.3em",
+  escape = TRUE,
+  latex_align = "l",
+  latex_wrap_text = FALSE,
+  colnum = NULL,
+  bold = TRUE,
+  italic = FALSE,
+  hline_before = FALSE,
+  hline_after = FALSE,
+  extra_latex_after = NULL,
+  indent = TRUE
+)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
@@ -50,6 +76,10 @@
 Value is "l"  If using html, the alignment can be set by using the label_row_css
 parameter.}
 
+\item{latex_wrap_text}{T/F for wrapping long text. Default is off. Whenever
+it is turned on, the table will take up the entire line. It's recommended
+to use this with full_width in kable_styling.}
+
 \item{colnum}{A numeric that determines how many columns the text should span.
 The default setting will have the text span the entire length.}
 
diff --git a/man/kableExtra-package.Rd b/man/kableExtra-package.Rd
index f22e66c..4fba68e 100644
--- a/man/kableExtra-package.Rd
+++ b/man/kableExtra-package.Rd
@@ -9,8 +9,8 @@
 When we are talking about table generators in R,
 \href{https://yihui.name/knitr/}{knitr}'s \code{kable()} function wins lots of flavor
 by its ultimate simplicity. Unlike those powerful table rendering engines
-such as \href{https://CRAN.R-project.org/package=xtable}{xtable}, the philosophy
-behind \href{https://rdrr.io/cran/knitr/man/kable.html}{knitr::kable()} is to
+such as \href{https://CRAN.R-project.org/package=xtable}{\code{xtable}}, the philosophy
+behind \href{https://rdrr.io/cran/knitr/man/kable.html}{\code{knitr::kable()}} is to
 make it easy for programmers to use. Just as it claimed in its
 function description, "this is a very simple table generator. It is simple
 by design. It is not intended to replace any other R packages for making
@@ -29,9 +29,9 @@
 \itemize{
 \item Use default base \code{kable()} (Or a good alternative for markdown tables is
 \code{pander::pander()}) for all simple tables
-\item Use \code{kable()} with \code{kableExtra} to generate 90 % of complex/advanced
+\item Use \code{kable()} with \code{kableExtra} to generate 90 \% of complex/advanced
 tables in either HTML or LaTeX
-\item Only have to mess with raw HTML/LaTeX in the last 10% cases where
+\item Only have to mess with raw HTML/LaTeX in the last 10\% cases where
 \code{kableExtra} cannot solve the problem
 }
 
diff --git a/man/kable_as_image.Rd b/man/kable_as_image.Rd
index e28247a..d127e5e 100644
--- a/man/kable_as_image.Rd
+++ b/man/kable_as_image.Rd
@@ -4,9 +4,15 @@
 \alias{kable_as_image}
 \title{Deprecated}
 \usage{
-kable_as_image(kable_input, filename = NULL, file_format = "png",
-  latex_header_includes = NULL, keep_pdf = FALSE, density = 300,
-  keep_tex = FALSE)
+kable_as_image(
+  kable_input,
+  filename = NULL,
+  file_format = "png",
+  latex_header_includes = NULL,
+  keep_pdf = FALSE,
+  density = 300,
+  keep_tex = FALSE
+)
 }
 \arguments{
 \item{kable_input}{Raw LaTeX code to generate a table. It doesn't have to
@@ -21,9 +27,9 @@
 
 \item{latex_header_includes}{A character vector of extra LaTeX header stuff.
 Each element is a row. You can have things like
-\code{c("\\\\usepackage{threeparttable}", "\\\\usepackage{icons}")}  You could
+\code{c("\\\\\\\\usepackage{threeparttable}", "\\\\\\\\usepackage{icons}")}  You could
 probably add your language package here if you use non-English text in your
-table, such as \code{\\\\usepackage[magyar]{babel}}.}
+table, such as \verb{\\\\\\\\usepackage[magyar]\{babel\}}.}
 
 \item{keep_pdf}{A T/F option to control if the mid-way standalone pdf should
 be kept. Default is \code{FALSE}.}
@@ -37,18 +43,3 @@
 \description{
 deprecated
 }
-\examples{
-\dontrun{
-library(kableExtra)
-
-kable(mtcars[1:5, ], "html") \%>\%
-  kable_styling("striped") \%>\%
-  row_spec(1, color = "red") \%>\%
-  save_kable("inst/test.pdf")
-
-kable(mtcars, "latex", booktabs = T) \%>\%
-kable_styling(latex_options = c("striped", "scale_down")) \%>\%
-row_spec(1, color = "red") \%>\%
-as_image()
-}
-}
diff --git a/man/kable_styling.Rd b/man/kable_styling.Rd
index ee6de44..f21be79 100644
--- a/man/kable_styling.Rd
+++ b/man/kable_styling.Rd
@@ -4,14 +4,24 @@
 \alias{kable_styling}
 \title{HTML table attributes}
 \usage{
-kable_styling(kable_input, bootstrap_options = "basic",
-  latex_options = "basic", full_width = NULL, position = "center",
-  font_size = NULL, row_label_position = "l",
+kable_styling(
+  kable_input,
+  bootstrap_options = "basic",
+  latex_options = "basic",
+  full_width = NULL,
+  position = "center",
+  font_size = NULL,
+  row_label_position = "l",
   repeat_header_text = "\\\\textit{(continued)}",
   repeat_header_method = c("append", "replace"),
-  repeat_header_continued = FALSE, stripe_color = "gray!6",
-  stripe_index = NULL, latex_table_env = NULL, protect_latex = TRUE,
-  table.envir = "table", fixed_thead = FALSE)
+  repeat_header_continued = FALSE,
+  stripe_color = "gray!6",
+  stripe_index = NULL,
+  latex_table_env = NULL,
+  protect_latex = TRUE,
+  table.envir = "table",
+  fixed_thead = FALSE
+)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
@@ -30,14 +40,14 @@
 table to the exact position. It is useful when the \code{LaTeX} table is contained
 in a \code{table} environment after you specified captions in \code{kable()}. It will
 force the table to stay in the position where it was created in the document.
-A stronger version: \code{HOLD_position} requires the \code{float} package and specifies \code{[H]}.
+A stronger version: \code{HOLD_position} requires the \code{float} package and specifies \verb{[H]}.
 \code{scale_down} is useful for super wide table. It will automatically adjust
 the table to page width. \code{repeat_header} in only meaningful in a longtable
 environment. It will let the header row repeat on every page in that long
 table.}
 
 \item{full_width}{A \code{TRUE} or \code{FALSE} variable controlling whether the HTML
-table should have 100\% width. Since HTML and pdf have different flavors on
+table should have 100\\% width. Since HTML and pdf have different flavors on
 the preferable format for \code{full_width}. If not specified, a HTML table will
 have full width by default but this option will be set to \code{FALSE} for a
 LaTeX table}
@@ -45,7 +55,7 @@
 \item{position}{A character string determining how to position the table
 on a page. Possible values include \code{left}, \code{center}, \code{right}, \code{float_left}
 and \code{float_right}. Please see the package doc site for demonstrations. For
-a \code{LaTeX} table, if \code{float_*} is selected, \code{LaTeX} package \code{wrapfig} will be
+a \code{LaTeX} table, if \verb{float_*} is selected, \code{LaTeX} package \code{wrapfig} will be
 imported.}
 
 \item{font_size}{A numeric input for table font size}
@@ -79,7 +89,7 @@
 
 \item{table.envir}{LaTeX floating table environment. \code{kable_style} will put
 a plain no-caption table in a \code{table} environment in order to center the
-table. You can specify this option to things like \code{table*} or \code{float*} based
+table. You can specify this option to things like \verb{table*} or \verb{float*} based
 on your need.}
 
 \item{fixed_thead}{HTML table option so table header row is fixed at top.
diff --git a/man/linebreak.Rd b/man/linebreak.Rd
index 01ab847..55adc0a 100644
--- a/man/linebreak.Rd
+++ b/man/linebreak.Rd
@@ -4,8 +4,7 @@
 \alias{linebreak}
 \title{Make linebreak in LaTeX Table cells}
 \usage{
-linebreak(x, align = c("l", "c", "r"), double_escape = F,
-  linebreaker = "\\n")
+linebreak(x, align = c("l", "c", "r"), double_escape = F, linebreaker = "\\n")
 }
 \arguments{
 \item{x}{A character vector}
@@ -15,7 +14,7 @@
 \item{double_escape}{Whether special character should be double escaped.
 Default is FALSE.}
 
-\item{linebreaker}{Symbol for linebreaks to replace. Default is \code{\\n}.}
+\item{linebreaker}{Symbol for linebreaks to replace. Default is \verb{\\\\n}.}
 }
 \description{
 This function generate LaTeX code of \code{makecell} so that users
diff --git a/man/reexports.Rd b/man/reexports.Rd
index 87b7db4..69a8477 100644
--- a/man/reexports.Rd
+++ b/man/reexports.Rd
@@ -14,6 +14,6 @@
 \describe{
   \item{knitr}{\code{\link[knitr]{kable}}}
 
-  \item{magrittr}{\code{\link[magrittr]{\%>\%}}}
+  \item{magrittr}{\code{\link[magrittr:pipe]{\%>\%}}}
 }}
 
diff --git a/man/remove_column.Rd b/man/remove_column.Rd
new file mode 100644
index 0000000..ead768f
--- /dev/null
+++ b/man/remove_column.Rd
@@ -0,0 +1,20 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/remove_column.R
+\name{remove_column}
+\alias{remove_column}
+\title{Remove columns}
+\usage{
+remove_column(kable_input, columns)
+}
+\arguments{
+\item{kable_input}{Output of \code{\link[knitr:kable]{knitr::kable()}} with format specified}
+
+\item{columns}{A numeric value or vector indicating in which column(s) rows
+need to be removed}
+}
+\description{
+Remove columns
+}
+\examples{
+remove_column(kable(mtcars), 1)
+}
diff --git a/man/row_spec.Rd b/man/row_spec.Rd
index c65aede..09f61a2 100644
--- a/man/row_spec.Rd
+++ b/man/row_spec.Rd
@@ -4,11 +4,23 @@
 \alias{row_spec}
 \title{Specify the look of the selected row}
 \usage{
-row_spec(kable_input, row, bold = FALSE, italic = FALSE,
-  monospace = FALSE, underline = FALSE, strikeout = FALSE,
-  color = NULL, background = NULL, align = NULL, font_size = NULL,
-  angle = NULL, extra_css = NULL, hline_after = FALSE,
-  extra_latex_after = NULL)
+row_spec(
+  kable_input,
+  row,
+  bold = FALSE,
+  italic = FALSE,
+  monospace = FALSE,
+  underline = FALSE,
+  strikeout = FALSE,
+  color = NULL,
+  background = NULL,
+  align = NULL,
+  font_size = NULL,
+  angle = NULL,
+  extra_css = NULL,
+  hline_after = FALSE,
+  extra_latex_after = NULL
+)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
diff --git a/man/save_kable.Rd b/man/save_kable.Rd
index 562ac79..76c144c 100644
--- a/man/save_kable.Rd
+++ b/man/save_kable.Rd
@@ -4,9 +4,16 @@
 \alias{save_kable}
 \title{Save kable to files}
 \usage{
-save_kable(x, file, bs_theme = "simplex", self_contained = TRUE,
-  extra_dependencies = NULL, ..., latex_header_includes = NULL,
-  keep_tex = FALSE)
+save_kable(
+  x,
+  file,
+  bs_theme = "simplex",
+  self_contained = TRUE,
+  extra_dependencies = NULL,
+  ...,
+  latex_header_includes = NULL,
+  keep_tex = FALSE
+)
 }
 \arguments{
 \item{x}{A piece of HTML code for tables, usually generated by kable and
@@ -21,16 +28,16 @@
 \item{self_contained}{Will the files be self-contained?}
 
 \item{extra_dependencies}{Additional HTML dependencies. For example,
-\code{list(}}
+\verb{list(}}
 
 \item{...}{Additional variables being passed to \code{webshot::webshot}. This
 is for HTML only.}
 
 \item{latex_header_includes}{A character vector of extra LaTeX header stuff.
 Each element is a row. You can have things like
-\code{c("\\\\usepackage{threeparttable}", "\\\\usepackage{icons}")}  You could
+\code{c("\\\\\\\\usepackage{threeparttable}", "\\\\\\\\usepackage{icons}")}  You could
 probably add your language package here if you use non-English text in your
-table, such as \code{\\\\usepackage[magyar]{babel}}.}
+table, such as \verb{\\\\\\\\usepackage[magyar]\{babel\}}.}
 
 \item{keep_tex}{A T/F option to control if the latex file that is initially created
 should be kept. Default is \code{FALSE}.}
@@ -38,3 +45,13 @@
 \description{
 Save kable to files
 }
+\examples{
+\dontrun{
+library(kableExtra)
+
+kable(mtcars[1:5, ], "html") \%>\%
+  kable_styling("striped") \%>\%
+  row_spec(1, color = "red") \%>\%
+  save_kable("inst/test.pdf")
+}
+}
diff --git a/man/scroll_box.Rd b/man/scroll_box.Rd
index 5d4b3af..65f385d 100644
--- a/man/scroll_box.Rd
+++ b/man/scroll_box.Rd
@@ -4,9 +4,14 @@
 \alias{scroll_box}
 \title{Put a HTML table into a scrollable box}
 \usage{
-scroll_box(kable_input, height = NULL, width = NULL,
-  box_css = "border: 1px solid #ddd; padding: 5px; ", extra_css = NULL,
-  fixed_thead = TRUE)
+scroll_box(
+  kable_input,
+  height = NULL,
+  width = NULL,
+  box_css = "border: 1px solid #ddd; padding: 5px; ",
+  extra_css = NULL,
+  fixed_thead = TRUE
+)
 }
 \arguments{
 \item{kable_input}{A HTML kable object}
diff --git a/man/spec_color.Rd b/man/spec_color.Rd
index 539b623..74cdd1d 100644
--- a/man/spec_color.Rd
+++ b/man/spec_color.Rd
@@ -4,8 +4,16 @@
 \alias{spec_color}
 \title{Generate viridis Color code for continuous values}
 \usage{
-spec_color(x, alpha = 1, begin = 0, end = 1, direction = 1,
-  option = "D", na_color = "#BBBBBB", scale_from = NULL)
+spec_color(
+  x,
+  alpha = 1,
+  begin = 0,
+  end = 1,
+  direction = 1,
+  option = "D",
+  na_color = "#BBBBBB",
+  scale_from = NULL
+)
 }
 \arguments{
 \item{x}{continuous vectors of values}
diff --git a/man/spec_font_size.Rd b/man/spec_font_size.Rd
index cdd7465..7d6cea3 100644
--- a/man/spec_font_size.Rd
+++ b/man/spec_font_size.Rd
@@ -4,8 +4,7 @@
 \alias{spec_font_size}
 \title{Generate common font size for continuous values}
 \usage{
-spec_font_size(x, begin = 8, end = 16, na_font_size = 12,
-  scale_from = NULL)
+spec_font_size(x, begin = 8, end = 16, na_font_size = 12, scale_from = NULL)
 }
 \arguments{
 \item{x}{continuous vectors of values}
diff --git a/man/spec_popover.Rd b/man/spec_popover.Rd
index c9565d7..e182f59 100644
--- a/man/spec_popover.Rd
+++ b/man/spec_popover.Rd
@@ -4,8 +4,12 @@
 \alias{spec_popover}
 \title{Setup bootstrap popover}
 \usage{
-spec_popover(content = NULL, title = NULL, trigger = "hover",
-  position = "right")
+spec_popover(
+  content = NULL,
+  title = NULL,
+  trigger = "hover",
+  position = "right"
+)
 }
 \arguments{
 \item{content}{content for pop-over message}
diff --git a/man/usepackage_latex.Rd b/man/usepackage_latex.Rd
index ab2e09c..91daccd 100644
--- a/man/usepackage_latex.Rd
+++ b/man/usepackage_latex.Rd
@@ -12,7 +12,7 @@
 \item{options}{The LaTeX options for the package}
 }
 \description{
-Load a LaTeX package using R code. Just like \code{\\usepackage{}}
+Load a LaTeX package using R code. Just like \verb{\\\\usepackage\{\}}
 in LaTeX
 }
 \examples{
diff --git a/vignettes/awesome_table_in_pdf.Rmd b/vignettes/awesome_table_in_pdf.Rmd
index 257deb6..4ca2a84 100644
--- a/vignettes/awesome_table_in_pdf.Rmd
+++ b/vignettes/awesome_table_in_pdf.Rmd
@@ -78,7 +78,7 @@
 If you are using a recent version of rmarkdown, you are recommended to load this package entirely via `library(kableExtra)` or `require(kableExtra)` because this package will load all necessary LaTeX packages, such as `booktabs` or `multirow`, for you automatically. Note that, if you are calling functions from `kableExtra` via `kableExtra::kable_styling()` or if you put `library(kableExtra)` in a separate R file that is **sourced** by the rmarkdown document, these packages won't be loaded. Furthermore, you can suppress this auto-loading behavior by setting a global option `kableExtra.latex.load_packages` to be `FALSE` before you load `kableExtra`.
 
 ```{r, eval = FALSE}
-# Not evaluated. Ilustration purpose
+# Not evaluated. Illustration purpose
 options(kableExtra.latex.load_packages = FALSE)
 library(kableExtra)
 ```