diff --git a/vignettes/awesome_table_in_html.Rmd b/vignettes/awesome_table_in_html.Rmd
index a98ca1e..b79235b 100644
--- a/vignettes/awesome_table_in_html.Rmd
+++ b/vignettes/awesome_table_in_html.Rmd
@@ -14,6 +14,8 @@
   %\VignetteEncoding{UTF-8}
 ---
 
+> Please see the package documentation site for how to use it in LaTeX.
+
 # 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 verbalize all the functions, so basically you can add "layers" to a kable output in a way that is similar with `ggplot2` and `plotly`. 
 
diff --git a/vignettes/awesome_table_in_pdf.Rmd b/vignettes/awesome_table_in_pdf.Rmd
deleted file mode 100644
index 467bc0f..0000000
--- a/vignettes/awesome_table_in_pdf.Rmd
+++ /dev/null
@@ -1,204 +0,0 @@
----
-title: "Create Awesome LaTeX Table with knitr::kable and kableExtra"
-author: "Hao Zhu"
-date: "`r Sys.Date()`"
-output: 
-  pdf_document:
-    toc: true
-    toc_depth: 2
----
-
-# 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 verbalize all the functions, so basically you can add "layers" to a kable output in a way that is similar with `ggplot2` and `plotly`. 
-
-# Installation
-```r
-install.packages("kableExtra")
-
-# For dev version
-# install.packages("devtools")
-devtools::install_github("haozhu233/kableExtra")
-```
-
-# Getting Started
-Here we are using the first few columns and rows from dataset `mtcars`
-```{r}
-library(knitr)
-library(kableExtra)
-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.*
-
-```{r}
-options(knitr.table.format = "latex") 
-## If you don't define format here, you'll need put `format = "latex"` 
-## in every kable function.
-```
-
-## Plain LaTeX
-Plain LaTeX table looks relatively ugly in 2017.
-```{r}
-kable(dt)
-```
-
-## LaTeX Table with Booktabs
-Similar with 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, booktabs = T)
-```
-
-# Table Styles
-`kable_styling` in LaTeX uses the same syntax and structure as `kable_styling` in HTML. However, instead of `bootstrap_options`, you should specify `latex_options` instead. 
-
-## LaTeX Options
-Similar with `bootstap_options`, `latex_options` is also a charter vector with a bunch of options including `striped`, `hold_position` and `scale_down`.
-
-### 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, 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, caption = "Demo table", booktabs = T) %>%
-  kable_styling(latex_options = c("striped", "hold_position"))
-```
-
-### 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), booktabs = T) %>%
-  kable_styling(latex_options = c("striped", "scale_down"))
-```
-```{r}
-kable(cbind(dt), booktabs = T) %>%
-  kable_styling(latex_options = c("striped", "scale_down"))
-```
-
-
-## 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. 
-```{r}
-kable(dt, booktabs = T) %>%
-  kable_styling(full_width = T)
-```
-
-## Position
-Table Position only matters when the table doesn't have `full_width`. You can choose to align the table to `center` or `left` side of the page. The default value of position is `center`. 
-
-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, 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, 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.
-
-## 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, booktabs = T) %>%
-  kable_styling(font_size = 7)
-```
-
-# Add Extra Header Rows
-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, 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. 
-```{r}
-kable(dt, booktabs = T) %>%
-  kable_styling() %>%
-  add_header_above(c(" ", "Group 1" = 2, "Group 2" = 2, "Group 3" = 2)) %>%
-  add_header_above(c(" ", "Group 4" = 4, "Group 5" = 2)) %>%
-  add_header_above(c(" ", "Group 6" = 6))
-```
-
-# Add footnote
-## Notation System
-You can also use `add_footnote()` function from this package. You will need to supply a character vector with each element as one footnote. You may select from `number`, `alphabet` and `symbol` for different types of notations. Example are listed below.
-
-### Alphabet
-```{r}
-kable(dt, booktabs = T) %>%
-  kable_styling() %>%
-  add_footnote(c("Footnote 1", "Have a good day."), notation = "alphabet")
-```
-
-### Number
-```{r}
-kable(dt, booktabs = T) %>%
-  kable_styling() %>%
-  add_footnote(c("Footnote 1", "Have a good day."), notation = "number")
-```
-
-### Symbol
-```{r}
-kable(dt, booktabs = T) %>%
-  kable_styling() %>%
-  add_footnote(c("Footnote 1", "Footnote 2", "Footnote 3"), notation = "symbol")
-```
-
-## In-table markers
-By design, `add_footnote()` will transform any `[note]` to in-table footnote markers. 
-```{r}
-kable(dt, caption = "Demo Table[note]", booktabs = T) %>%
-  kable_styling(latex_options = "hold_position") %>%
-  add_header_above(c(" ", "Group 1[note]" = 3, "Group 2[note]" = 3)) %>%
-  add_footnote(c("This table is from mtcars", 
-                 "Group 1 contains mpg, cyl and disp", 
-                 "Group 2 contains hp, drat and wt"), 
-               notation = "symbol")
-```
-
----
-The following features are introduced in `kableExtra` 0.2.0.
-
-# 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, caption = "Demo Table (Landscape)[note]", booktabs = T) %>%
-  kable_styling(latex_options = "hold_position") %>%
-  add_header_above(c(" ", "Group 1[note]" = 3, "Group 2[note]" = 3)) %>%
-  add_footnote(c("This table is from mtcars", 
-                 "Group 1 contains mpg, cyl and disp", 
-                 "Group 2 contains hp, drat and wt"), 
-               notation = "symbol") %>%
-  landscape()
-```
-
-# Group Rows
-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", booktabs = T) %>%
-  kable_styling() %>%
-  group_rows("Group 1", 4, 7) %>%
-  group_rows("Group 2", 8, 10)
-```
-
-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, booktabs = T) %>%
-  group_rows("Group 1", 4, 5, latex_gap_space = "2em")
-```
-
-# Add 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.
-```{r}
-kable(dt, booktabs = T) %>%
-  add_indent(c(1, 3, 5))
-```
diff --git a/vignettes/use_kable_in_shiny.Rmd b/vignettes/use_kable_in_shiny.Rmd
index d56859b..5cfcedb 100644
--- a/vignettes/use_kable_in_shiny.Rmd
+++ b/vignettes/use_kable_in_shiny.Rmd
@@ -1,6 +1,10 @@
 ---
 title: "Use kable in Shiny"
 output: html_document
+vignette: >
+  %\VignetteIndexEntry{Use kable in Shiny}
+  %\VignetteEngine{knitr::rmarkdown}
+  %\VignetteEncoding{UTF-8}
 ---
 
 ```{r setup, include=FALSE}
