diff --git a/DESCRIPTION b/DESCRIPTION
index 0a4d476..d61f533 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Package: kableExtra
 Type: Package
 Title: Construct Complex Table with 'kable' and Pipe Syntax
-Version: 0.5.1.9000
+Version: 0.5.2
 Authors@R: c(
     person('Hao', 'Zhu', email = 'haozhu233@gmail.com', role = c('aut', 'cre')),
     person('Timothy', 'Tsai', role = 'ctb'),
@@ -32,10 +32,10 @@
     xml2,
     rvest,
     rmarkdown (>= 1.6.0),
-    readr,
-    magick
+    readr
 Suggests:
-    testthat
+    testthat,
+    magick
 VignetteBuilder: knitr
 Encoding: UTF-8
 RoxygenNote: 6.0.1
diff --git a/NAMESPACE b/NAMESPACE
index d7e1c61..6ec7c1e 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -16,7 +16,6 @@
 export(row_spec)
 export(scroll_box)
 export(usepackage_latex)
-import(magick)
 importFrom(knitr,include_graphics)
 importFrom(knitr,knit_meta_add)
 importFrom(magrittr,"%>%")
diff --git a/R/column_spec.R b/R/column_spec.R
index 97dcd06..ffd23d5 100644
--- a/R/column_spec.R
+++ b/R/column_spec.R
@@ -26,14 +26,13 @@
 #' in a character string for the CSS of the border line
 #'
 #' @examples x <- knitr::kable(head(mtcars), "html")
-#' column_spec(x, 1, width = "20em", bold = TRUE, italic = TRUE)
+#' column_spec(x, 1:2, width = "20em", bold = TRUE, italic = TRUE)
 #'
 #' @export
 column_spec <- function(kable_input, column,
                         width = NULL, bold = FALSE, italic = FALSE,
                         monospace = FALSE, color = NULL, background = NULL,
-                        border_left = FALSE, border_right = FALSE,
-                        ...) {
+                        border_left = FALSE, border_right = FALSE) {
   if (!is.numeric(column)) {
     stop("column must be numeric. ")
   }
@@ -52,7 +51,7 @@
     return(column_spec_latex(kable_input, column, width,
                              bold, italic, monospace,
                              color, background,
-                             border_left, border_right, ...))
+                             border_left, border_right))
   }
 }
 
@@ -130,8 +129,7 @@
 column_spec_latex <- function(kable_input, column, width,
                               bold, italic, monospace,
                               color, background,
-                              border_left, border_right,
-                              decimal_align = F) {
+                              border_left, border_right) {
   table_info <- magic_mirror(kable_input)
   if (!is.null(table_info$collapse_rows)) {
     message("Usually it is recommended to use column_spec before collapse_rows,",
diff --git a/R/kableExtra-package.R b/R/kableExtra-package.R
index 2664c4d..5add5e5 100644
--- a/R/kableExtra-package.R
+++ b/R/kableExtra-package.R
@@ -66,7 +66,6 @@
 #' @importFrom magrittr %>%
 #' @importFrom utils read.csv
 #' @importFrom readr read_lines read_file write_file
-#' @import magick
 #' @name kableExtra-package
 #' @aliases kableExtra
 #' @docType package
diff --git a/R/kable_as_image.R b/R/kable_as_image.R
index 6a83118..044943c 100644
--- a/R/kable_as_image.R
+++ b/R/kable_as_image.R
@@ -31,54 +31,65 @@
 #' `c("\\usepackage{threeparttable}", "\\usepackage{icons}")`
 #' @param keep_pdf A T/F option to control if the mid-way standalone pdf should
 #' be kept. Default is `FALSE`.
+#' @param density Resolution to read the PDF file. Default value is 300, which
+#' should be sufficient in most cases.
 #'
 #' @export
 kable_as_image <- function(kable_input, filename = NULL,
                            file_format = "png",
                            latex_header_includes = NULL,
-                           keep_pdf = FALSE) {
-  temp_tex <- c(
-    "\\documentclass[border=1mm, preview]{standalone}",
-    "\\usepackage[active,tightpage]{preview}",
-    "\\usepackage{varwidth}",
-    "\\usepackage{amssymb, amsmath}",
-    "\\usepackage{ifxetex,ifluatex}",
-    "\\usepackage{fixltx2e}",
-    "\\usepackage{polyglossia}",
-    "\\setmainlanguage{$mainlang$}",
-    latex_pkg_list(),
-    "\\usepackage{graphicx}",
-    "\\usepackage{mathspec}",
-    "\\usepackage{xltxtra,xunicode}",
-    latex_header_includes,
-    "\\begin{document}",
-    enc2utf8(as.character(kable_input)),
-    "\\end{document}"
-  )
-  temp_tex <- paste(temp_tex, collapse = "\n")
-  temp_file <- paste0("table_", format(Sys.time(), "%Y-%m-%d_%H%M%S"))
-  write_file(temp_tex, paste0(temp_file, ".tex"))
-  system(paste0("xelatex -interaction=batchmode ", temp_file, ".tex"))
-  temp_file_delete <- paste0(temp_file, c(".tex", ".aux", ".log"))
-  unlink(temp_file_delete)
-
-  table_img_pdf <- try(image_read(paste0(temp_file, ".pdf"), density = 300),
-                       silent = T)
-  if (class(table_img_pdf) == "try-error") {
-    stop("Ghostscript is required to read PDF on windows. ",
-         "Please download it here: https://ghostscript.com/")
-  }
-  if (!keep_pdf) {
-    unlink(paste0(temp_file, ".pdf"))
-  }
-  table_img <- image_convert(table_img_pdf, file_format)
-  if (!is.null(filename)) {
-    temp_img <- paste0(filename, ".", file_format)
+                           keep_pdf = FALSE,
+                           density = 300) {
+  if (!requireNamespace("magick", quietly = TRUE)) {
+    stop('kable_as_image requires the magick package, which is not available ',
+         'on all platforms. Please get it installed ',
+         'via install.packages("magick"). If you are running on Windows, you ',
+         'also need to install Ghostscript. Please download it here:',
+         'https://ghostscript.com/')
   } else {
-    temp_img <- tempfile(fileext = paste0(".", file_format))
-  }
-  image_write(table_img, temp_img)
+    temp_tex <- c(
+      "\\documentclass[border=1mm, preview]{standalone}",
+      "\\usepackage[active,tightpage]{preview}",
+      "\\usepackage{varwidth}",
+      "\\usepackage{amssymb, amsmath}",
+      "\\usepackage{ifxetex,ifluatex}",
+      "\\usepackage{fixltx2e}",
+      "\\usepackage{polyglossia}",
+      "\\setmainlanguage{$mainlang$}",
+      latex_pkg_list(),
+      "\\usepackage{graphicx}",
+      "\\usepackage{mathspec}",
+      "\\usepackage{xltxtra,xunicode}",
+      latex_header_includes,
+      "\\begin{document}",
+      enc2utf8(as.character(kable_input)),
+      "\\end{document}"
+    )
+    temp_tex <- paste(temp_tex, collapse = "\n")
+    temp_file <- paste0("table_", format(Sys.time(), "%Y-%m-%d_%H%M%S"))
+    write_file(temp_tex, paste0(temp_file, ".tex"))
+    system(paste0("xelatex -interaction=batchmode ", temp_file, ".tex"))
+    temp_file_delete <- paste0(temp_file, c(".tex", ".aux", ".log"))
+    unlink(temp_file_delete)
 
-  include_graphics(temp_img)
-  return(kable_input)
+    table_img_pdf <- try(magick::image_read(paste0(temp_file, ".pdf"),
+                                            density = density),
+                         silent = T)
+    if (class(table_img_pdf) == "try-error") {
+      stop("Ghostscript is required to read PDF on windows. ",
+           "Please download it here: https://ghostscript.com/")
+    }
+    if (!keep_pdf) {
+      unlink(paste0(temp_file, ".pdf"))
+    }
+    table_img <- magick::image_convert(table_img_pdf, file_format)
+    if (!is.null(filename)) {
+      temp_img <- paste0(filename, ".", file_format)
+    } else {
+      temp_img <- tempfile(fileext = paste0(".", file_format))
+    }
+    magick::image_write(table_img, temp_img)
+
+    include_graphics(temp_img)
+  }
 }
diff --git a/R/row_spec.R b/R/row_spec.R
index 5a77ee4..3cd4808 100644
--- a/R/row_spec.R
+++ b/R/row_spec.R
@@ -19,7 +19,7 @@
 #' pay attention to the differences in color codes between HTML and LaTeX.
 #'
 #' @examples x <- knitr::kable(head(mtcars), "html")
-#' row_spec(x, 1, bold = TRUE, italic = TRUE)
+#' row_spec(x, 1:2, bold = TRUE, italic = TRUE)
 #'
 #' @export
 row_spec <- function(kable_input, row,
diff --git a/docs/awesome_table_in_html.Rmd b/docs/awesome_table_in_html.Rmd
index 95c745e..e042f65 100644
--- a/docs/awesome_table_in_html.Rmd
+++ b/docs/awesome_table_in_html.Rmd
@@ -112,7 +112,7 @@
 
 # Column / Row Specification
 ## Column spec
-When you have a table with lots of explanatory texts, you may want to specified the column width for different column, since the auto adjust in HTML may not work in its best way while basic LaTeX table is really bad at handling text wrapping. Also, sometimes, you may want to highlight a column (e.g. a "Total" column) by making it bold. In these scenario, you can use `column_spec()`. You can find an example below.
+When you have a table with lots of explanatory texts, you may want to specified the column width for different column, since the auto adjust in HTML may not work in its best way while basic LaTeX table is really bad at handling text wrapping. Also, sometimes, you may want to highlight a column (e.g. a "Total" column) by making it bold. In these scenario, you can use `column_spec()`. You can find an example below. 
 
 Warning: If you have a super long table, you should be cautious when you use `column_spec` as the xml node modification takes time.
 
@@ -139,8 +139,8 @@
 ```{r}
 kable(dt, "html") %>%
   kable_styling("striped", full_width = F) %>%
-  column_spec(7, bold = T) %>%
-  row_spec(5, bold = T, color = "white", background = "#D7261E")
+  column_spec(5:7, bold = T) %>%
+  row_spec(3:5, bold = T, color = "white", background = "#D7261E")
 ```
 
 # Grouped Columns / Rows
@@ -170,6 +170,14 @@
   group_rows("Group 2", 8, 10)
 ```
 
+Another way to use `group_rows` is to provide an grouping index, similar with `add_header_above()`. This feature is only available in kableExtra > 0.5.2.
+```{r, eval = F}
+# Not evaluated. This example generates the same table as above.
+kable(mtcars[1:10, 1:6], "html", caption = "Group Rows") %>%
+  kable_styling("striped", full_width = F) %>%
+  group_rows(index = c(" " = 3, "Group 1" = 4, "Group 2" = 3))
+```
+
 For advanced users, you can even define your own css for the group labeling.
 ```{r}
 kable(dt, "html") %>%
@@ -249,4 +257,3 @@
   kable_styling() %>%
   scroll_box(width = "500px", height = "200px")
 ```
-
diff --git a/docs/awesome_table_in_html.html b/docs/awesome_table_in_html.html
index 3b0c3ad..6e80212 100644
--- a/docs/awesome_table_in_html.html
+++ b/docs/awesome_table_in_html.html
@@ -11,7 +11,7 @@
 
 <meta name="author" content="Hao Zhu" />
 
-<meta name="date" content="2017-09-13" />
+<meta name="date" content="2017-09-15" />
 
 <title>Create Awesome HTML Table with knitr::kable and kableExtra</title>
 
@@ -217,7 +217,7 @@
 
 <h1 class="title toc-ignore">Create Awesome HTML Table with knitr::kable and kableExtra</h1>
 <h4 class="author"><em>Hao Zhu</em></h4>
-<h4 class="date"><em>2017-09-13</em></h4>
+<h4 class="date"><em>2017-09-15</em></h4>
 
 </div>
 
@@ -1650,8 +1650,8 @@
 <p>Similar with <code>column_spec</code>, you can define specifications for rows. Currently, you can either bold or italiciz an entire row. Note that, similar with other row-related functions in <code>kableExtra</code>, for the position of the target row, you don’t need to count in header rows or the group labelling rows.</p>
 <pre class="r"><code>kable(dt, &quot;html&quot;) %&gt;%
   kable_styling(&quot;striped&quot;, full_width = F) %&gt;%
-  column_spec(7, bold = T) %&gt;%
-  row_spec(5, bold = T, color = &quot;white&quot;, background = &quot;#D7261E&quot;)</code></pre>
+  column_spec(5:7, bold = T) %&gt;%
+  row_spec(3:5, bold = T, color = &quot;white&quot;, background = &quot;#D7261E&quot;)</code></pre>
 <table class="table table-striped" style="width: auto !important; margin-left: auto; margin-right: auto;">
 <thead>
 <tr>
@@ -1691,10 +1691,10 @@
 <td style="text-align:right;">
 160
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;">
 110
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;">
 3.90
 </td>
 <td style="text-align:right;font-weight: bold;">
@@ -1714,10 +1714,10 @@
 <td style="text-align:right;">
 160
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;">
 110
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;">
 3.90
 </td>
 <td style="text-align:right;font-weight: bold;">
@@ -1725,48 +1725,48 @@
 </td>
 </tr>
 <tr>
-<td style="text-align:left;">
+<td style="text-align:left;font-weight: bold;color: white;background-color: #D7261E;">
 Datsun 710
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;color: white;background-color: #D7261E;">
 22.8
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;color: white;background-color: #D7261E;">
 4
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;color: white;background-color: #D7261E;">
 108
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;font-weight: bold;color: white;background-color: #D7261E;">
 93
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;font-weight: bold;color: white;background-color: #D7261E;">
 3.85
 </td>
-<td style="text-align:right;font-weight: bold;">
+<td style="text-align:right;font-weight: bold;font-weight: bold;color: white;background-color: #D7261E;">
 2.320
 </td>
 </tr>
 <tr>
-<td style="text-align:left;">
+<td style="text-align:left;font-weight: bold;color: white;background-color: #D7261E;">
 Hornet 4 Drive
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;color: white;background-color: #D7261E;">
 21.4
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;color: white;background-color: #D7261E;">
 6
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;color: white;background-color: #D7261E;">
 258
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;font-weight: bold;color: white;background-color: #D7261E;">
 110
 </td>
-<td style="text-align:right;">
+<td style="text-align:right;font-weight: bold;font-weight: bold;color: white;background-color: #D7261E;">
 3.08
 </td>
-<td style="text-align:right;font-weight: bold;">
+<td style="text-align:right;font-weight: bold;font-weight: bold;color: white;background-color: #D7261E;">
 3.215
 </td>
 </tr>
@@ -1783,10 +1783,10 @@
 <td style="text-align:right;font-weight: bold;color: white;background-color: #D7261E;">
 360
 </td>
-<td style="text-align:right;font-weight: bold;color: white;background-color: #D7261E;">
+<td style="text-align:right;font-weight: bold;font-weight: bold;color: white;background-color: #D7261E;">
 175
 </td>
-<td style="text-align:right;font-weight: bold;color: white;background-color: #D7261E;">
+<td style="text-align:right;font-weight: bold;font-weight: bold;color: white;background-color: #D7261E;">
 3.15
 </td>
 <td style="text-align:right;font-weight: bold;font-weight: bold;color: white;background-color: #D7261E;">
@@ -2437,6 +2437,11 @@
 </tr>
 </tbody>
 </table>
+<p>Another way to use <code>group_rows</code> is to provide an grouping index, similar with <code>add_header_above()</code>. This feature is only available in kableExtra &gt; 0.5.2.</p>
+<pre class="r"><code># Not evaluated. This example generates the same table as above.
+kable(mtcars[1:10, 1:6], &quot;html&quot;, caption = &quot;Group Rows&quot;) %&gt;%
+  kable_styling(&quot;striped&quot;, full_width = F) %&gt;%
+  group_rows(index = c(&quot; &quot; = 3, &quot;Group 1&quot; = 4, &quot;Group 2&quot; = 3))</code></pre>
 <p>For advanced users, you can even define your own css for the group labeling.</p>
 <pre class="r"><code>kable(dt, &quot;html&quot;) %&gt;%
   kable_styling(&quot;striped&quot;, full_width = F) %&gt;%
@@ -2796,7 +2801,7 @@
 3
 </td>
 <td style="text-align:center;">
-0
+1
 </td>
 </tr>
 <tr>
@@ -2804,7 +2809,7 @@
 4
 </td>
 <td style="text-align:center;">
-1
+0
 </td>
 </tr>
 <tr>
@@ -2828,7 +2833,7 @@
 7
 </td>
 <td style="text-align:center;">
-1
+0
 </td>
 </tr>
 <tr>
@@ -2855,7 +2860,7 @@
 10
 </td>
 <td style="text-align:center;">
-1
+0
 </td>
 </tr>
 <tr>
@@ -2877,7 +2882,7 @@
 12
 </td>
 <td style="text-align:center;">
-1
+0
 </td>
 </tr>
 <tr>
@@ -2888,7 +2893,7 @@
 13
 </td>
 <td style="text-align:center;">
-1
+0
 </td>
 </tr>
 <tr>
@@ -2896,7 +2901,7 @@
 14
 </td>
 <td style="text-align:center;">
-0
+1
 </td>
 </tr>
 <tr>
@@ -2904,7 +2909,7 @@
 15
 </td>
 <td style="text-align:center;">
-0
+1
 </td>
 </tr>
 </tbody>
diff --git a/docs/awesome_table_in_pdf.Rmd b/docs/awesome_table_in_pdf.Rmd
index 9a55b87..2d37e1b 100644
--- a/docs/awesome_table_in_pdf.Rmd
+++ b/docs/awesome_table_in_pdf.Rmd
@@ -65,7 +65,7 @@
 library(kableExtra)
 ```
 
-If you are using R Sweave or some customized rmarkdown templates or you just want to load these LaTeX libraries by yourself, you can put the following meta data into the `yaml` section. If you are familar with LaTeX and you know what you are doing, feel free to remove unnecessary packages from the list. 
+If you are using R Sweave, beamer, tufte or some customized rmarkdown templates, you can put the following meta data into the `yaml` section. If you are familar with LaTeX and you know what you are doing, feel free to remove unnecessary packages from the list. 
 
 ```{yaml}
 header-includes:
@@ -317,3 +317,20 @@
   group_rows("Group 1", 4, 5) %>%
   landscape()
 ```
+
+## Use LaTeX table in HTML or Word
+If you want to include a LaTeX rendered table in your HTML or Word document, or if you just want to save table as an image, you may consider to use `kable_as_image()`. Note that this feature requires you to have [magick](https://github.com/ropensci/magick) installed (`install.packages("magick")`). Also, if you are planning to use it on Windows, you need to install [Ghostscript](https://www.ghostscript.com/). 
+
+```{r, eval = F}
+# Not evaluated. 
+
+# The code below will automatically include the image in the rmarkdown document
+kable(dt, "latex", booktabs = T) %>%
+  column_spec(1, bold = T) %>%
+  kable_as_image()
+
+# If you want to save the image locally, just provide a name
+kable(dt, "latex", booktabs = T) %>%
+  column_spec(1, bold = T) %>%
+  kable_as_image("my_latex_table")
+```
diff --git a/docs/awesome_table_in_pdf.pdf b/docs/awesome_table_in_pdf.pdf
index 79c240e..666ff35 100644
--- a/docs/awesome_table_in_pdf.pdf
+++ b/docs/awesome_table_in_pdf.pdf
Binary files differ
diff --git a/inst/NEWS.md b/inst/NEWS.md
index 7e13dfa..23ae047 100644
--- a/inst/NEWS.md
+++ b/inst/NEWS.md
@@ -1,3 +1,17 @@
+kableExtra 0.5.2
+--------------------------------------------------------------------------------
+* Request from CRAN: Changed dependency on `magick` from Imports to Suggest. 
+Added error message when users don't have magick installed. 
+
+* Added argument `index` to `group_rows` so users can build multiple row groups
+in one step. The syntax is the same with `add_header_above`
+
+* Now `row_spec` and `column_spec` can take vectors so users can customized 
+multiple row/columns at the same time. 
+
+* Fixed a bug for `kable_as_image` on Windows. Improved documentations and 
+error messages. 
+
 kableExtra 0.5.1
 --------------------------------------------------------------------------------
 * Added documentations about those color/background color options in column_spec 
diff --git a/man/column_spec.Rd b/man/column_spec.Rd
index dc10432..ace0922 100644
--- a/man/column_spec.Rd
+++ b/man/column_spec.Rd
@@ -6,7 +6,7 @@
 \usage{
 column_spec(kable_input, column, width = NULL, bold = FALSE,
   italic = FALSE, monospace = FALSE, color = NULL, background = NULL,
-  border_left = FALSE, border_right = FALSE, ...)
+  border_left = FALSE, border_right = FALSE)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
@@ -46,6 +46,6 @@
 }
 \examples{
 x <- knitr::kable(head(mtcars), "html")
-column_spec(x, 1, width = "20em", bold = TRUE, italic = TRUE)
+column_spec(x, 1:2, width = "20em", bold = TRUE, italic = TRUE)
 
 }
diff --git a/man/kable_as_image.Rd b/man/kable_as_image.Rd
index dcb3bb1..113f848 100644
--- a/man/kable_as_image.Rd
+++ b/man/kable_as_image.Rd
@@ -5,7 +5,7 @@
 \title{Convert a LaTeX table to an image and place it in a rmarkdown document}
 \usage{
 kable_as_image(kable_input, filename = NULL, file_format = "png",
-  latex_header_includes = NULL, keep_pdf = FALSE)
+  latex_header_includes = NULL, keep_pdf = FALSE, density = 300)
 }
 \arguments{
 \item{kable_input}{Raw LaTeX code to generate a table. It doesn't have to
@@ -24,6 +24,9 @@
 
 \item{keep_pdf}{A T/F option to control if the mid-way standalone pdf should
 be kept. Default is \code{FALSE}.}
+
+\item{density}{Resolution to read the PDF file. Default value is 300, which
+should be sufficient in most cases.}
 }
 \description{
 This is a LaTeX-only function. This function will render the
diff --git a/man/row_spec.Rd b/man/row_spec.Rd
index eaf7b57..4a94983 100644
--- a/man/row_spec.Rd
+++ b/man/row_spec.Rd
@@ -35,6 +35,6 @@
 }
 \examples{
 x <- knitr::kable(head(mtcars), "html")
-row_spec(x, 1, bold = TRUE, italic = TRUE)
+row_spec(x, 1:2, bold = TRUE, italic = TRUE)
 
 }
diff --git a/vignettes/awesome_table_in_html.Rmd b/vignettes/awesome_table_in_html.Rmd
index 96baeda..e042f65 100644
--- a/vignettes/awesome_table_in_html.Rmd
+++ b/vignettes/awesome_table_in_html.Rmd
@@ -37,7 +37,7 @@
 dt <- mtcars[1:5, 1:6]
 ```
 
-When you are using `kable()`, if you don't specify `format`, by default it will generate a markdown table and let pandoc handle the conversion from markdown to HTML/PDF. This is the most favorable approach to render most simple tables as it is format independent. If you switch from HTML to pdf, you basically don't need to change anything in your code. However, markdown doesn't support complex table. For example, if you want to have a double-row header table, markdown just cannot provide you the functionality you need. As a result, when you have such a need, you should **define `format` in `kable()`** as either "html" or "latex". *You can also define a global option at the beginning using `options(knitr.table.format = "html")` so you don't repeat the step everytime.*
+When you are using `kable()`, if you don't specify `format`, by default it will generate a markdown table and let pandoc handle the conversion from markdown to HTML/PDF. This is the most favorable approach to render most simple tables as it is format independent. If you switch from HTML to pdf, you basically don't need to change anything in your code. However, markdown doesn't support complex table. For example, if you want to have a double-row header table, markdown just cannot provide you the functionality you need. As a result, when you have such a need, you should **define `format` in `kable()`** as either "html" or "latex". *You can also define a global option at the beginning using `options(knitr.table.format = "html")` so you don't repeat the step everytime.* **In this tutorial, I'll still put `format="html"` in the function in case users just want to quickly replicate the results.** 
 
 ```{r}
 options(knitr.table.format = "html") 
@@ -47,13 +47,14 @@
 ## Basic HTML table
 Basic HTML output of `kable` looks very crude. To the end, it's just a plain HTML table without any love from css.
 ```{r}
-kable(dt)
+kable(dt, "html")
 ```
 
 ## Bootstrap theme
 When used on a HTML table, `kable_styling()` will automatically apply twitter bootstrap theme to the table. Now it should looks the same as the original pandoc output (the one when you don't specify `format` in `kable()`) but this time, you are controlling it.
 ```{r}
-kable(dt) %>%
+dt %>%
+  kable("html") %>%
   kable_styling()
 ```
 
@@ -65,39 +66,39 @@
 
 For example, to add striped lines (alternative row colors) to your table and you want to highlight the hovered row, you can simply type:
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling(bootstrap_options = c("striped", "hover"))
 ```
 
 The option `condensed` can also be handy in many cases when you don't want your table to be too large. It has slightly shorter row height.
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
 ```
 
 Tables with option `responsive` looks the same with others on a large screen. However, on a small screen like phone, they are horizontally scrollable. Please resize your window to see the result.
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
 ```
 
 ## Full width?
 By default, a bootstrap table takes 100% of the width. It is supposed to use together with its grid system to scale the table properly. However, when you are writing a rmarkdown document, you probably don't want to write your own css/or grid. For some small tables with only few columns, a page wide table looks awful. To make it easier, you can specify whether you want the table to have  `full_width` or not in `kable_styling`. By default, `full_width` is set to be `TRUE` for HTML tables (note that for LaTeX, the default is `FALSE` since I don't want to change the "common" looks unless you specified it.)
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling(bootstrap_options = "striped", full_width = F)
 ```
 
 ## Position
 Table Position only matters when the table doesn't have `full_width`. You can choose to align the table to `center`, `left` or `right` side of the page
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling(bootstrap_options = "striped", full_width = F, position = "left")
 ```
 
 Becides these three common options, you can also wrap text around the table using the `float-left` or `float-right` options. 
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling(bootstrap_options = "striped", full_width = F, position = "float_right")
 ```
 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras sit amet mauris in ex ultricies elementum vel rutrum dolor. Phasellus tempor convallis dui, in hendrerit mauris placerat scelerisque. Maecenas a accumsan enim, a maximus velit. Pellentesque in risus eget est faucibus convallis nec at nulla. Phasellus nec lacinia justo. Morbi fermentum, orci id varius accumsan, nibh neque porttitor ipsum, consectetur luctus risus arcu ac ex. Aenean a luctus augue. Suspendisse et auctor nisl. Suspendisse cursus ultrices quam non vulputate. Phasellus et pharetra neque, vel feugiat erat. Sed feugiat elit at mauris commodo consequat. Sed congue lectus id mattis hendrerit. Mauris turpis nisl, congue eget velit sed, imperdiet convallis magna. Nam accumsan urna risus, non feugiat odio vehicula eget.
@@ -105,13 +106,13 @@
 ## Font size
 If one of your tables is huge and you want to use a smaller font size for that specific table, you can use the `font_size` option. 
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling(bootstrap_options = "striped", font_size = 7)
 ```
 
 # Column / Row Specification
 ## Column spec
-When you have a table with lots of explanatory texts, you may want to specified the column width for different column, since the auto adjust in HTML may not work in its best way while basic LaTeX table is really bad at handling text wrapping. Also, sometimes, you may want to highlight a column (e.g. a "Total" column) by making it bold. In these scenario, you can use `column_spec()`. You can find an example below.
+When you have a table with lots of explanatory texts, you may want to specified the column width for different column, since the auto adjust in HTML may not work in its best way while basic LaTeX table is really bad at handling text wrapping. Also, sometimes, you may want to highlight a column (e.g. a "Total" column) by making it bold. In these scenario, you can use `column_spec()`. You can find an example below. 
 
 Warning: If you have a super long table, you should be cautious when you use `column_spec` as the xml node modification takes time.
 
@@ -125,7 +126,7 @@
   )
 )
 
-kable(text_tbl) %>%
+kable(text_tbl, "html") %>%
   kable_styling(full_width = F) %>%
   column_spec(1, bold = T, border_right = T) %>%
   column_spec(2, width = "30em", background = "yellow")
@@ -136,24 +137,24 @@
 Similar with `column_spec`, you can define specifications for rows. Currently, you can either bold or italiciz an entire row. Note that, similar with other row-related functions in `kableExtra`, for the position of the target row, you don't need to count in header rows or the group labelling rows.
 
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling("striped", full_width = F) %>%
-  column_spec(7, bold = T) %>%
-  row_spec(5, bold = T, color = "white", background = "#D7261E")
+  column_spec(5:7, bold = T) %>%
+  row_spec(3:5, bold = T, color = "white", background = "#D7261E")
 ```
 
 # Grouped Columns / Rows
 ## Add header rows to group columns
 Tables with multi-row headers can be very useful to demonstrate grouped data. To do that, you can pipe your kable object into `add_header_above()`. The header variable is supposed to be a named character with the names as new column names and values as column span. For your convenience, if column span equals to 1, you can ignore the `=1` part so the function below can be written as `add_header_above(c(" ", "Group 1" = 2, "Group 2" = 2, "Group 3" = 2)).
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling("striped") %>%
   add_header_above(c(" " = 1, "Group 1" = 2, "Group 2" = 2, "Group 3" = 2))
 ```
 
 In fact, if you want to add another row of header on top, please feel free to do so.
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling(c("striped", "bordered")) %>%
   add_header_above(c(" ", "Group 1" = 2, "Group 2" = 2, "Group 3" = 2)) %>%
   add_header_above(c(" ", "Group 4" = 4, "Group 5" = 2)) %>%
@@ -163,15 +164,23 @@
 ## Group rows via labeling
 Sometimes we want a few rows of the table being grouped together. They might be items under the same topic (e.g., animals in one species) or just different data groups for a categorical variable (e.g., age < 40, age > 40). With the new function `group_rows()` in `kableExtra`, this kind of task can be completed in one line. Please see the example below. Note that when you count for the start/end rows of the group, you don't need to count for the header rows nor other group label rows. You only need to think about the row numbers in the "original R dataframe".
 ```{r}
-kable(mtcars[1:10, 1:6], caption = "Group Rows") %>%
+kable(mtcars[1:10, 1:6], "html", caption = "Group Rows") %>%
   kable_styling("striped", full_width = F) %>%
   group_rows("Group 1", 4, 7) %>%
   group_rows("Group 2", 8, 10)
 ```
 
+Another way to use `group_rows` is to provide an grouping index, similar with `add_header_above()`. This feature is only available in kableExtra > 0.5.2.
+```{r, eval = F}
+# Not evaluated. This example generates the same table as above.
+kable(mtcars[1:10, 1:6], "html", caption = "Group Rows") %>%
+  kable_styling("striped", full_width = F) %>%
+  group_rows(index = c(" " = 3, "Group 1" = 4, "Group 2" = 3))
+```
+
 For advanced users, you can even define your own css for the group labeling.
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling("striped", full_width = F) %>%
   group_rows("Group 1", 3, 5, label_row_css = "background-color: #666; color: #fff;")
 ```
@@ -180,7 +189,7 @@
 Unlike `group_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 apporiate. 
 For advanced users, you can even define your own css for the group labeling.
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling("striped", full_width = F) %>%
   add_indent(c(1, 3, 5))
 ```
@@ -205,21 +214,21 @@
 
 ### Alphabet
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling("striped") %>%
   add_footnote(c("Footnote 1", "Have a good day."), notation = "alphabet")
 ```
 
 ### Number
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling("striped") %>%
   add_footnote(c("Footnote 1", "Have a good day."), notation = "number")
 ```
 
 ### Symbol
 ```{r}
-kable(dt) %>%
+kable(dt, "html") %>%
   kable_styling("striped") %>%
   add_footnote(c("Footnote 1", "Footnote 2", "Footnote 3"), notation = "symbol")
 ```
@@ -228,7 +237,7 @@
 By design, `add_footnote()` will transform any `[note]` to in-table footnote markers. 
 
 ```{r}
-kable(dt, caption = "Demo Table[note]") %>%
+kable(dt, "html", caption = "Demo Table[note]") %>%
   kable_styling("striped") %>%
   add_header_above(c(" ", "Group 1[note]" = 3, "Group 2[note]" = 3)) %>%
   add_footnote(c("This table is from mtcars", 
@@ -244,8 +253,7 @@
 When you use `scroll_box`, you can specify either `height` or `width`. When you specify `height`, you will get a vertically scrollable box and vice versa. If you specify both, you will get a two-way scrollable box. 
 
 ```{r}
-kable(cbind(mtcars, mtcars)) %>%
+kable(cbind(mtcars, mtcars), "html") %>%
   kable_styling() %>%
   scroll_box(width = "500px", height = "200px")
 ```
-
diff --git a/vignettes/awesome_table_in_pdf.Rmd b/vignettes/awesome_table_in_pdf.Rmd
index e0d7e77..2d37e1b 100644
--- a/vignettes/awesome_table_in_pdf.Rmd
+++ b/vignettes/awesome_table_in_pdf.Rmd
@@ -65,7 +65,7 @@
 library(kableExtra)
 ```
 
-If you are using R Sweave or some customized rmarkdown templates or you just want to load these LaTeX libraries by yourself, you can put the following meta data into the `yaml` section. If you are familar with LaTeX and you know what you are doing, feel free to remove unnecessary packages from the list. 
+If you are using R Sweave, beamer, tufte or some customized rmarkdown templates, you can put the following meta data into the `yaml` section. If you are familar with LaTeX and you know what you are doing, feel free to remove unnecessary packages from the list. 
 
 ```{yaml}
 header-includes:
@@ -108,12 +108,14 @@
 ```
 
 ### Hold position
-If you provide a table caption in `kable()`, it will put your LaTeX tabular in a `table` environment, unless you are using `longtable`. A `table` environment will automatically find the best place (it thinks) to put your table. However, in many cases, you do want your table to appear in a position you want it to be. In this case, you can use this `hold_position` options here.
+If you provide a table caption in `kable()`, it will put your LaTeX tabular in a `table` environment, unless you are using `longtable`. A `table` environment will automatically find the best place (it thinks) to put your table. However, in many cases, you do want your table to appear in a position you want it to be. In this case, you can use this `hold_position` options here. 
 ```{r}
 kable(dt, format = "latex", caption = "Demo table", booktabs = T) %>%
   kable_styling(latex_options = c("striped", "hold_position"))
 ```
 
+If you find `hold_position` is not powerful enough to literally PIN your table in the exact position, you may want to use `HOLD_position`, which is a more powerful version of this feature. For those who are familar with LaTeX, `hold_position` uses `[!h]` and `HOLD_position` uses `[H]` and the `float` package.
+
 ### Scale down
 When you have a wide table that will normally go out of the page and you want to scale down the table to fit the page, you can use the `scale_down` option here. Note that, if your table is too small, it will also scale up your table. It was named in this way only because scaling up isn't very useful in most cases. 
 ```{r}
@@ -137,10 +139,11 @@
 
 
 ## Full width?
-If you have a small table and you want it to spread wide on the page, you can try the `full_width` option. Unlike `scale_down`, it won't change your font size. Note that, if you use `full_width` in LaTeX, you will loss your in-cell text alignment settings and everything will be left-aligned. 
+If you have a small table and you want it to spread wide on the page, you can try the `full_width` option. Unlike `scale_down`, it won't change your font size. You can use `column_spec`, which will be explained later, together with `full_width` to achieve the best result.
 ```{r}
 kable(dt, format = "latex", booktabs = T) %>%
-  kable_styling(full_width = T)
+  kable_styling(full_width = T) %>%
+  column_spec(1, width = "8cm")
 ```
 
 ## Position
@@ -192,7 +195,7 @@
 kable(dt, format = "latex", booktabs = T) %>%
   kable_styling("striped", full_width = F) %>%
   column_spec(7, border_left = T, bold = T) %>%
-  row_spec(5, bold = T, color = "white", background = "black")
+  row_spec(3:5, bold = T, color = "white", background = "black")
 ```
 
 # Grouped Columns / Rows
@@ -228,6 +231,14 @@
   group_rows("Group 1", 4, 5, latex_gap_space = "2em")
 ```
 
+If you prefer to build multiple groups in one step, you can use the short-hand `index` option. Basically, you can use it in the same way as you use `add_header_above`. However, since `group_row` only support one layer of grouping, you can't add multiple layers of grouping header as you can do in `add_header_above`. 
+```{r, eval=FALSE}
+kable(mtcars[1:10, 1:6], format = "latex", caption = "Group Rows", booktabs = T) %>%
+  kable_styling() %>%
+  group_rows(index=c(" " = 3, "Group 1" = 4, "Group 2" = 3))
+# Not evaluated. The code above should have the same result as the first example in this section.
+```
+
 ## Row indentation
 Unlike `group_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 apporiate. 
 For advanced users, you can even define your own css for the group labeling.
@@ -237,7 +248,7 @@
 ```
 
 ## Group rows via multi-row cell
-Function `group_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 to use `collapse_rows` instead, which will put repeating cells in columns into multi-row cells. 
+Function `group_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 to use `collapse_rows` instead, which will put repeating cells in columns into multi-row cells. If you even need to specify column/row format, use `column_spec` & `row_spec` before you pipe it into `collapse_rows`.
 
 ```{r}
 collapse_rows_dt <- data.frame(C1 = c(rep("a", 10), rep("b", 5)),
@@ -306,3 +317,20 @@
   group_rows("Group 1", 4, 5) %>%
   landscape()
 ```
+
+## Use LaTeX table in HTML or Word
+If you want to include a LaTeX rendered table in your HTML or Word document, or if you just want to save table as an image, you may consider to use `kable_as_image()`. Note that this feature requires you to have [magick](https://github.com/ropensci/magick) installed (`install.packages("magick")`). Also, if you are planning to use it on Windows, you need to install [Ghostscript](https://www.ghostscript.com/). 
+
+```{r, eval = F}
+# Not evaluated. 
+
+# The code below will automatically include the image in the rmarkdown document
+kable(dt, "latex", booktabs = T) %>%
+  column_spec(1, bold = T) %>%
+  kable_as_image()
+
+# If you want to save the image locally, just provide a name
+kable(dt, "latex", booktabs = T) %>%
+  column_spec(1, bold = T) %>%
+  kable_as_image("my_latex_table")
+```
