diff --git a/vignettes/awesome_table_in_html.Rmd b/vignettes/awesome_table_in_html.Rmd
index 0ed1595..0fc99e3 100644
--- a/vignettes/awesome_table_in_html.Rmd
+++ b/vignettes/awesome_table_in_html.Rmd
@@ -21,6 +21,8 @@
 
 To learn how to generate complex tables in LaTeX, please visit [http://haozhu233.github.io/kableExtra/awesome_table_in_pdf.pdf](http://haozhu233.github.io/kableExtra/awesome_table_in_pdf.pdf)
 
+There is also a Chinese version of this vignette. You can find it [here](http://haozhu233.github.io/kableExtra/awesome_table_in_html_cn.html)
+
 # Installation
 ```r
 install.packages("kableExtra")
@@ -37,24 +39,29 @@
 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.* **In this tutorial, I'll still put `format="html"` in the function in case users just want to quickly replicate the results.** 
+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.* 
+
+**Starting from `kableExtra` 0.9.0**, when you load this package (`library(kableExtra)`), `r text_spec("it will automatically set up the global option 'knitr.table.format' based on your current environment", bold = T, color = "white", background = "#d9230f")`. Unless you are rendering a PDF, `kableExtra` will try to render a HTML table for you. **You no longer need to manually set either the global option or the `format` option in each `kable()` function**. I'm still including the explanation above here in this vignette so you can understand what is going on behind the scene. Note that this is only an global option. You can manually set any format in `kable()` whenever you want. I just hope you can enjoy a peace of mind in most of your time. 
+
+You can disable this behavior by setting `options(kableExtra.auto_format = FALSE)` before you load `kableExtra`.
 
 ```{r}
-options(knitr.table.format = "html") 
+# If you are using kableExtra < 0.9.0, you are recommended to set a global option first.
+# options(knitr.table.format = "html") 
 ## If you don't define format here, you'll need put `format = "html"` in every kable function.
 ```
 
 ## 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, "html")
+kable(dt)
 ```
 
 ## 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}
 dt %>%
-  kable("html") %>%
+  kable() %>%
   kable_styling()
 ```
 
@@ -66,39 +73,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, "html") %>%
+kable(dt) %>%
   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, "html") %>%
+kable(dt) %>%
   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, "html") %>%
+kable(dt) %>%
   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, "html") %>%
+kable(dt) %>%
   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, "html") %>%
+kable(dt) %>%
   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, "html") %>%
+kable(dt) %>%
   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.
@@ -106,7 +113,7 @@
 ## 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, "html") %>%
+kable(dt) %>%
   kable_styling(bootstrap_options = "striped", font_size = 7)
 ```
 
@@ -126,7 +133,7 @@
   )
 )
 
-kable(text_tbl, "html") %>%
+kable(text_tbl) %>%
   kable_styling(full_width = F) %>%
   column_spec(1, bold = T, border_right = T) %>%
   column_spec(2, width = "30em", background = "yellow")
@@ -137,7 +144,7 @@
 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, "html") %>%
+kable(dt) %>%
   kable_styling("striped", full_width = F) %>%
   column_spec(5:7, bold = T) %>%
   row_spec(3:5, bold = T, color = "white", background = "#D7261E")
@@ -148,7 +155,7 @@
 ## Header Rows
 One special case of `row_spec` is that you can specify the format of the header row via `row_spec(row = 0, ...)`. 
 ```{r}
-kable(dt, format = "html") %>%
+kable(dt) %>%
   kable_styling("striped", full_width = F) %>%
   row_spec(0, angle = -45)
 ```
@@ -167,14 +174,13 @@
 mtcars[1:10, 1:2] %>%
   mutate(
     car = row.names(.),
-    # You don't need format = "html" if you have ever defined options(knitr.table.format)
-    mpg = cell_spec(mpg, "html", color = ifelse(mpg > 20, "red", "blue")),
-    cyl = cell_spec(cyl, "html", color = "white", align = "c", angle = 45, 
+    mpg = cell_spec(mpg, color = ifelse(mpg > 20, "red", "blue")),
+    cyl = cell_spec(cyl, color = "white", align = "c", angle = 45, 
                     background = factor(cyl, c(4, 6, 8), 
                                         c("#666666", "#999999", "#BBBBBB")))
   ) %>%
   select(car, mpg, cyl) %>%
-  kable("html", escape = F) %>%
+  kable(escape = F) %>%
   kable_styling("striped", full_width = F)
 ```
 
@@ -184,16 +190,16 @@
 ```{r}
 iris[1:10, ] %>%
   mutate_if(is.numeric, function(x) {
-    cell_spec(x, "html", bold = T, 
+    cell_spec(x, bold = T, 
               color = spec_color(x, end = 0.9),
               font_size = spec_font_size(x))
   }) %>%
   mutate(Species = cell_spec(
-    Species, "html", color = "white", bold = T,
+    Species, color = "white", bold = T,
     background = spec_color(1:10, end = 0.9, option = "A", direction = -1)
   )) %>%
-  kable("html", escape = F, align = "c") %>%
-  kable_styling("striped", full_width = F)
+  kable(escape = F, align = "c") %>%
+  kable_styling(c("striped", "condensed"), full_width = F)
 ```
 
 In the example above, I'm using the `mutate` functions from `dplyr`. You don't have to use it. Base R solutions like `iris$Species <- cell_spec(iris$Species, color = "red")` also works. 
@@ -210,7 +216,7 @@
   "and nobody can resist. ;)"
 ), " ")[[1]]
 text_formatted <- paste(
-  text_spec(sometext, "html", color = spec_color(1:length(sometext), end = 0.9),
+  text_spec(sometext, color = spec_color(1:length(sometext), end = 0.9),
             font_size = spec_font_size(1:length(sometext), begin = 5, end = 20)),
   collapse = " ")
 
@@ -263,7 +269,7 @@
     title = NULL,                           # title will add a Title Panel on top
     position = popover_dt$position
   ))
-kable(popover_dt, "html", escape = FALSE) %>%
+kable(popover_dt, escape = FALSE) %>%
   kable_styling("striped", full_width = FALSE)
 ```
 
@@ -280,15 +286,15 @@
   mutate(
     car = row.names(.),
     mpg = color_tile("white", "orange")(mpg),
-    cyl = cell_spec(cyl, "html", angle = (1:5)*60, 
+    cyl = cell_spec(cyl, angle = (1:5)*60, 
                     background = "red", color = "white", align = "center"),
     disp = ifelse(disp > 200,
-                  cell_spec(disp, "html", color = "red", bold = T),
-                  cell_spec(disp, "html", color = "green", italic = T)),
+                  cell_spec(disp, color = "red", bold = T),
+                  cell_spec(disp, color = "green", italic = T)),
     hp = color_bar("lightgreen")(hp)
   ) %>%
   select(car, everything()) %>%
-  kable("html", escape = F) %>%
+  kable(escape = F) %>%
   kable_styling("hover", full_width = F) %>%
   column_spec(5, width = "3cm") %>%
   add_header_above(c(" ", "Hello" = 2, "World" = 2))
@@ -299,14 +305,14 @@
 ## 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, "html") %>%
+kable(dt) %>%
   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, "html") %>%
+kable(dt) %>%
   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)) %>%
@@ -316,7 +322,7 @@
 ## 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], "html", caption = "Group Rows") %>%
+kable(mtcars[1:10, 1:6], caption = "Group Rows") %>%
   kable_styling("striped", full_width = F) %>%
   group_rows("Group 1", 4, 7) %>%
   group_rows("Group 2", 8, 10)
@@ -325,14 +331,14 @@
 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(mtcars[1:10, 1:6], 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") %>%
+kable(dt) %>%
   kable_styling("striped", full_width = F) %>%
   group_rows("Group 1", 3, 5, label_row_css = "background-color: #666; color: #fff;")
 ```
@@ -341,23 +347,23 @@
 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, "html") %>%
+kable(dt) %>%
   kable_styling("striped", full_width = F) %>%
   add_indent(c(1, 3, 5))
 ```
 
 ## 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. The vertical allignment of the cell is controlled by `valign` with default as "top". 
 
 ```{r}
 collapse_rows_dt <- data.frame(C1 = c(rep("a", 10), rep("b", 5)),
                  C2 = c(rep("c", 7), rep("d", 3), rep("c", 2), rep("d", 3)),
                  C3 = 1:15,
                  C4 = sample(c(0,1), 15, replace = TRUE))
-kable(collapse_rows_dt, "html", align = "c") %>%
+kable(collapse_rows_dt, align = "c") %>%
   kable_styling(full_width = F) %>%
   column_spec(1, bold = T) %>%
-  collapse_rows(columns = 1:2)
+  collapse_rows(columns = 1:2, valign = "top")
 ```
 
 # Table Footnote
@@ -368,7 +374,7 @@
 
 There are four notation systems in `footnote`, namely `general`, `number`, `alphabet` and `symbol`. The last three types of footnotes will be labeled with corresponding marks while `general` won't be labeled. You can pick any one of these systems or choose to display them all for fulfill the APA table footnotes requirements. 
 ```{r}
-kable(dt, "html", align = "c") %>%
+kable(dt, align = "c") %>%
   kable_styling(full_width = F) %>%
   footnote(general = "Here is a general comments of the table. ",
            number = c("Footnote 1; ", "Footnote 2; "),
@@ -377,10 +383,10 @@
            )
 ```
 
-You can also specify title for each category by using the `***_title` arguments. Default value for `general_title` is "Note: " and "" for the rest three. You can also change the order using `footnote_order`. You can even display footnote as chunk texts (default is as a list) using `footnote_as_chunk`.
+You can also specify title for each category by using the `***_title` arguments. Default value for `general_title` is "Note: " and "" for the rest three. You can also change the order using `footnote_order`. You can even display footnote as chunk texts (default is as a list) using `footnote_as_chunk`. The font format of the titles are controlled by `title_format` with options including "italic" (default), "bold" and "underline".
 
 ```{r}
-kable(dt, "html", align = "c") %>%
+kable(dt, align = "c") %>%
   kable_styling(full_width = F) %>%
   footnote(general = "Here is a general comments of the table. ",
            number = c("Footnote 1; ", "Footnote 2; "),
@@ -388,7 +394,7 @@
            symbol = c("Footnote Symbol 1; ", "Footnote Symbol 2"),
            general_title = "General: ", number_title = "Type I: ",
            alphabet_title = "Type II: ", symbol_title = "Type III: ",
-           footnote_as_chunk = T
+           footnote_as_chunk = T, title_format = c("italic", "underline")
            )
 ```
 
@@ -400,7 +406,7 @@
                                 footnote_marker_symbol(1))
 row.names(dt_footnote)[4] <- paste0(row.names(dt_footnote)[4], 
                                 footnote_marker_alphabet(1))
-kable(dt_footnote, "html", align = "c", 
+kable(dt_footnote, align = "c", 
       # Remember this escape = F
       escape = F) %>%
   kable_styling(full_width = F) %>%
@@ -417,7 +423,31 @@
 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), "html") %>%
+kable(cbind(mtcars, mtcars)) %>%
   kable_styling() %>%
   scroll_box(width = "500px", height = "200px")
 ```
+
+<br>
+
+You can also specify width using a percentage.
+
+```{r}
+kable(cbind(mtcars, mtcars)) %>%
+  kable_styling() %>%
+  scroll_box(width = "100%", height = "200px")
+```
+
+## Save HTML table directly
+If you need to save those HTML tables but you don't want to generate them through rmarkdown, you can try to use the `save_kable()` function. You can choose whether to let those HTML files be self contained (default is yes). Self contained files packed CSS into the HTML file so they are quite large when there are many. 
+```{r, eval=FALSE}
+kable(mtcars) %>%
+  kable_styling() %>%
+  save_kable(file = "table1.html", self_contained = T)
+```
+
+# From other packages
+Since the structure of `kable` is relatively simple, it shouldn't be too difficult to convert HTML or LaTeX tables generated by other packages to a `kable` object and then use `kableExtra` to modify the outputs. If you are a package author, feel free to reach out to me and we can collaborate. 
+
+## `tables`
+The latest version of [`tables`](https://cran.r-project.org/web/packages/tables/index.html) comes with a `toKable()` function, which is compatiable with functions in `kableExtra` (>=0.9.0).
diff --git a/vignettes/awesome_table_in_pdf.Rmd b/vignettes/awesome_table_in_pdf.Rmd
index 4ea4c15..204d0c4 100644
--- a/vignettes/awesome_table_in_pdf.Rmd
+++ b/vignettes/awesome_table_in_pdf.Rmd
@@ -32,7 +32,7 @@
 > Please see the package [documentation site](http://haozhu233.github.io/kableExtra) for how to use this package in HTML and more.  
 
 # Overview
-The goal of `kableExtra` is to help you build common complex tables and manipulate table styles. It imports the pipe `%>%` symbol from `magrittr` and verbalizes all the functions, so basically you can add "layers" to a kable output in a way that is similar with `ggplot2` and `plotly`. 
+The goal of `kableExtra` is to help you build common complex tables and manipulate table styles. It imports the pipe `%>%` symbol from `magrittr` and verbalizes all the functions, so basically you can add "layers" to a kable output in a way that is similar with `ggplot2` and `plotly`.
 
 To learn how to generate complex tables in LaTeX, please visit [http://haozhu233.github.io/kableExtra/awesome_table_in_html.html](http://haozhu233.github.io/kableExtra/awesome_table_in_html.html).
 
@@ -53,10 +53,16 @@
 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 = "latex")` so you don't repeat the step every time.* **In this tutorial, I'll still put `format="latex"` in the function in case users just want to quickly replicate the results.** 
+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 = "latex")` so you don't repeat the step every time.* **In this tutorial, I’ll still put format="latex" in the function in
+case users just want to quickly replicate the results. In practice, you don't need to define those formats.**
+
+**Starting from `kableExtra` 0.9.0**, when you load this package (`library(kableExtra)`), `r text_spec("it will automatically set up the global option 'knitr.table.format' based on your current environment", bold = T, color = "red")`. Unless you are rendering a PDF, `kableExtra` will try to render a HTML table for you. **You no longer need to manually set either the global option or the `format` option in each `kable()` function**. I'm still including the explanation above here in this vignette so you can understand what is going on behind the scene. Note that this is only an global option. You can manually set any format in `kable()` whenever you want. I just hope you can enjoy a peace of mind in most of your time. 
+
+You can disable this behavior by setting `options(kableExtra.auto_format = FALSE)` before you load `kableExtra`.
 
 ```{r}
-options(knitr.table.format = "latex") 
+# If you are using kableExtra < 0.9.0, you are recommended to set a global option first.
+# options(knitr.table.format = "latex") 
 ## If you don't define format here, you'll need put `format = "latex"` 
 ## in every kable function.
 ```
@@ -70,7 +76,7 @@
 library(kableExtra)
 ```
 
-If you are using R Sweave, beamer, R package vignette template, tufte or some customized rmarkdown templates, you can put the following metadata into the `yaml` section. If you are familiar 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, R package vignette template, 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. 
 
 ```
 header-includes:
@@ -88,21 +94,22 @@
   - \usepackage{threeparttablex}
   - \usepackage[normalem]{ulem}
   - \usepackage{makecell}
-
 ```
 
 ## Plain LaTeX
 Plain LaTeX table looks relatively ugly in 2017.
 ```{r}
-# As I said, you don't need format = "latex" if you have defined 
-# knitr.table.format in options.
-kable(dt, format = "latex")
+# Again, with kableExtra >= 0.9.0, `format = "latex"` is automatically defined
+# when this package gets loaded. Otherwise, you still need to define formats
+kable(dt)
+# Same: kable(dt, "latex")
 ```
 
 ## LaTeX table with booktabs
-Similar to Bootstrap in HTML, in LaTeX, you can also use a trick to make your table look prettier as well. The different part is that, this time you don't need to pipe kable outputs to another function. Instead, you should call `booktabs = T` directly in `kable()`
+Similar to Bootstrap in HTML, in LaTeX, you can also use a trick to make your table look prettier as well. The different part is that, this time you don't need to pipe kable outputs to another function. Instead, you should call `booktabs = T` directly in `kable()`.
+
 ```{r}
-kable(dt, format = "latex", booktabs = T)
+kable(dt, "latex", booktabs = T)
 ```
 
 # Table Styles
@@ -114,14 +121,14 @@
 ### Striped
 Even though in the LaTeX world, people usually call it `alternative row colors` but here I'm using its bootstrap name for consistency. Note that to make it happen, LaTeX package `xcolor` is required to be loaded. In an environment like rmarkdown::pdf_document (rmarkdown 1.4.0 +), `kable_styling` will load it automatically if `striped` is enabled. However, in other cases, you probably need to import that package by yourself. 
 ```{r}
-kable(dt, format = "latex", booktabs = T) %>%
+kable(dt, "latex", booktabs = T) %>%
   kable_styling(latex_options = "striped")
 ```
 
 ### 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. 
 ```{r}
-kable(dt, format = "latex", caption = "Demo table", booktabs = T) %>%
+kable(dt, "latex", caption = "Demo table", booktabs = T) %>%
   kable_styling(latex_options = c("striped", "hold_position"))
 ```
 
@@ -130,11 +137,11 @@
 ### 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}
-kable(cbind(dt, dt, dt), format = "latex", booktabs = T) %>%
+kable(cbind(dt, dt, dt), "latex", booktabs = T) %>%
   kable_styling(latex_options = c("striped", "scale_down"))
 ```
 ```{r}
-kable(cbind(dt), format = "latex", booktabs = T) %>%
+kable(cbind(dt), "latex", booktabs = T) %>%
   kable_styling(latex_options = c("striped", "scale_down"))
 ```
 
@@ -143,7 +150,7 @@
 ```{r}
 long_dt <- rbind(mtcars, mtcars) 
 
-kable(long_dt, format = "latex", longtable = T, booktabs = T, caption = "Longtable") %>%
+kable(long_dt, "latex", longtable = T, booktabs = T, caption = "Longtable") %>%
   add_header_above(c(" ", "Group 1" = 5, "Group 2" = 6)) %>%
   kable_styling(latex_options = c("repeat_header"))
 ```
@@ -152,7 +159,7 @@
 ## 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. 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(dt, "latex", booktabs = T) %>%
   kable_styling(full_width = T) %>%
   column_spec(1, width = "8cm")
 ```
@@ -162,13 +169,13 @@
 
 Note that even though you can select to `right` align your table but the table will actually be centered. Somehow it is very difficult to right align a table in LaTeX (since it's not very useful in the real world?). If you know how to do it, please send out an issue or PR and let me know. 
 ```{r}
-kable(dt, format = "latex", booktabs = T) %>%
+kable(dt, "latex", booktabs = T) %>%
   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. 
 ```{r}
-kable(dt, format = "latex", booktabs = T) %>%
+kable(dt, "latex", booktabs = T) %>%
   kable_styling(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.
@@ -176,7 +183,7 @@
 ## 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, format = "latex", booktabs = T) %>%
+kable(dt, "latex", booktabs = T) %>%
   kable_styling(font_size = 7)
 ```
 
@@ -193,7 +200,7 @@
   )
 )
 
-kable(text_tbl, format = "latex", booktabs = T) %>%
+kable(text_tbl, "latex", booktabs = T) %>%
   kable_styling(full_width = F) %>%
   column_spec(1, bold = T, color = "red") %>%
   column_spec(2, width = "30em")
@@ -203,7 +210,7 @@
 Similar with `column_spec`, you can define specifications for rows. Currently, you can either bold or italicize an entire row. Note that, similar to 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 labeling rows.
 
 ```{r}
-kable(dt, format = "latex", booktabs = T) %>%
+kable(dt, "latex", booktabs = T) %>%
   kable_styling("striped", full_width = F) %>%
   column_spec(7, border_left = T, bold = T) %>%
   row_spec(1, strikeout = T) %>%
@@ -213,7 +220,7 @@
 ## Header Rows
 One special case of `row_spec` is that you can specify the format of the header row via `row_spec(row = 0, ...)`. 
 ```{r}
-kable(dt, format = "latex", booktabs = T, align = "c") %>%
+kable(dt, "latex", booktabs = T, align = "c") %>%
   kable_styling(latex_options = "striped", full_width = F) %>%
   row_spec(0, angle = 45)
 ```
@@ -286,14 +293,14 @@
 ## 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, format = "latex", booktabs = T) %>%
+kable(dt, "latex", booktabs = T) %>%
   kable_styling() %>%
   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. Also, since kableExtra 0.3.0, you can specify `bold` & `italic` as you do in `row_spec()`.
 ```{r}
-kable(dt, format = "latex", booktabs = T) %>%
+kable(dt, "latex", booktabs = T) %>%
   kable_styling(latex_options = "striped") %>%
   add_header_above(c(" ", "Group 1" = 2, "Group 2" = 2, "Group 3" = 2)) %>%
   add_header_above(c(" ", "Group 4" = 4, "Group 5" = 2)) %>%
@@ -303,7 +310,7 @@
 ## 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], format = "latex", caption = "Group Rows", booktabs = T) %>%
+kable(mtcars[1:10, 1:6], "latex", caption = "Group Rows", booktabs = T) %>%
   kable_styling() %>%
   group_rows("Group 1", 4, 7) %>%
   group_rows("Group 2", 8, 10)
@@ -311,13 +318,13 @@
 
 In case some users need it, you can define your own gapping spaces between the group labeling row and previous rows. The default value is `0.5em`.
 ```{r}
-kable(dt, format = "latex", booktabs = T) %>%
+kable(dt, "latex", booktabs = T) %>%
   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(mtcars[1:10, 1:6], "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.
@@ -339,32 +346,34 @@
 LaTeX, somehow shows surprisingly high tolerance on that, which is quite unusual. As a result, it won't throw an error if you are just using `kable` to make some simple tables. However, when you use `kableExtra` to make some advanced modification, it will start to throw some bugs. As a result, please try to form a habit of using a vector in the `align` argument for `kable` (tip: you can use `rep` function to replicate elements. For example, `c("c", rep("l", 10))`). 
 
 ## 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 appropriate. 
+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 appropriate.  
 For advanced users, you can even define your own css for the group labeling.
 ```{r}
-kable(dt, format = "latex", booktabs = T) %>%
+kable(dt, "latex", booktabs = T) %>%
   add_indent(c(1, 3, 5))
 ```
 
 ## 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 using `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 using `collapse_rows` instead, which will put repeating cells in columns into multi-row cells.  
 
-In LaTeX, `collapse_rows` adds some extra hlines to help differentiate groups. You can customize this behavior using the `latex_hline` argument. You can choose from `full` (default), `major` and `none`.
+In LaTeX, `collapse_rows` adds some extra hlines to help differentiate groups. You can customize this behavior using the `latex_hline` argument. You can choose from `full` (default), `major` and `none`. Vertical alignment of cells is controlled by the `valign` option. You can choose from "top"(default), "middle" and "bottom".
 
 ```{r}
 collapse_rows_dt <- data.frame(C1 = c(rep("a", 10), rep("b", 5)),
                  C2 = c(rep("c", 7), rep("d", 3), rep("c", 2), rep("d", 3)),
                  C3 = 1:15,
                  C4 = sample(c(0,1), 15, replace = TRUE))
-kable(collapse_rows_dt, format = "latex", booktabs = T, align = "c") %>%
+kable(collapse_rows_dt, "latex", booktabs = T, align = "c") %>%
   column_spec(1, bold=T) %>%
-  collapse_rows(columns = 1:2, latex_hline = "major")
+  collapse_rows(columns = 1:2, latex_hline = "major", valign = "top")
 ```
 
+Right now, you can't automatically make striped rows based on collapsed rows but you can do it manually via the `extra_latex_after` option in `row_spec`. This feature is not officially supported. I'm only document it here if you want to give it a try. 
 ```{r}
-kable(collapse_rows_dt, format = "latex", align = "c") %>%
+kable(collapse_rows_dt[-1], "latex", align = "c", booktabs = T) %>%
   column_spec(1, bold = T, width = "5em") %>%
-  collapse_rows(1:2)
+  row_spec(c(1:7, 11:12) - 1, extra_latex_after = "\\rowcolor{gray!6}") %>%
+  collapse_rows(1, latex_hline = "none")
 ```
 
 When there are too many layers, sometimes the table can become too wide. You can choose to stack the first few layers by setting `row_group_label_position` to `stack`. 
@@ -381,7 +390,7 @@
   mutate(C1 = rnorm(n()),
          C2 = rnorm(n()))
 
-kable(collapse_rows_dt, format = "latex", 
+kable(collapse_rows_dt, "latex", 
       booktabs = T, align = "c", linesep = '') %>%
   collapse_rows(1:3, row_group_label_position = 'stack') 
 ```
@@ -393,7 +402,7 @@
   list(bold = T, italic = T), 
   list(bold = F, italic = F)
   )
-kable(collapse_rows_dt, format = "latex", 
+kable(collapse_rows_dt, "latex", 
                      booktabs = T, align = "c", linesep = '') %>%
   column_spec(1, bold=T) %>%
   collapse_rows(1:3, latex_hline = 'custom', custom_latex_hline = 1:3, 
@@ -407,7 +416,7 @@
 
 Documentations for `add_footnote` can be found [here](http://haozhu233.github.io/kableExtra/legacy_features#add_footnote).
 
-There are four notation systems in `footnote`, namely `general`, `number`, `alphabet` and `symbol`. The last three types of footnotes will be labeled with corresponding marks while `general` won't be labeled. You can pick any one of these systems or choose to display them all for fulfilling the APA table footnotes requirements. 
+There are four notation systems in `footnote`, namely `general`, `number`, `alphabet` and `symbol`. The last three types of footnotes will be labeled with corresponding marks while `general` won't be labeled. You can pick any one of these systems or choose to display them all for fulfilling the APA table footnotes requirements.  
 ```{r}
 kable(dt, "latex", align = "c") %>%
   kable_styling(full_width = F) %>%
@@ -418,7 +427,7 @@
            )
 ```
 
-You can also specify title for each category by using the `***_title` arguments. Default value for `general_title` is "Note: " and "" for the rest three. You can also change the order using `footnote_order`. You can even display footnote as chunk texts (default is as a list) using `footnote_as_chunk`.
+You can also specify title for each category by using the `***_title` arguments. Default value for `general_title` is "Note: " and "" for the rest three. You can also change the order using `footnote_order`. You can even display footnote as chunk texts (default is as a list) using `footnote_as_chunk`. The font format of the titles are controlled by `title_format` with options including "italic" (default), "bold" and "underline".
 
 ```{r}
 kable(dt, "latex", align = "c", booktabs = T) %>%
@@ -428,7 +437,7 @@
            symbol = c("Footnote Symbol 1; ", "Footnote Symbol 2"),
            general_title = "General: ", number_title = "Type I: ",
            alphabet_title = "Type II: ", symbol_title = "Type III: ",
-           footnote_as_chunk = T
+           footnote_as_chunk = T, title_format = c("italic", "underline")
            )
 ```
 
@@ -480,7 +489,7 @@
 ## Table on a Landscape Page
 Sometimes when we have a wide table, we want it to sit on a designated landscape page. The new function `landscape()` can help you on that. Unlike other functions, this little function only serves LaTeX and doesn't have a HTML side.
 ```{r}
-kable(dt, format = "latex", caption = "Demo Table (Landscape)[note]", booktabs = T) %>%
+kable(dt, "latex", caption = "Demo Table (Landscape)[note]", booktabs = T) %>%
   kable_styling(latex_options = c("hold_position")) %>%
   add_header_above(c(" ", "Group 1[note]" = 3, "Group 2[note]" = 3)) %>%
   add_footnote(c("This table is from mtcars", 
@@ -507,3 +516,9 @@
   column_spec(1, bold = T) %>%
   kable_as_image("my_latex_table")
 ```
+
+# From other packages
+Since the structure of `kable` is relatively simple, it shouldn't be too difficult to convert HTML or LaTeX tables generated by other packages to a `kable` object and then use `kableExtra` to modify the outputs. If you are a package author, feel free to reach out to me and we can collaborate. 
+
+## `tables`
+The latest version of [`tables`](https://cran.r-project.org/web/packages/tables/index.html) comes with a `toKable()` function, which is compatiable with functions in `kableExtra` (>=0.9.0).
