diff --git a/NAMESPACE b/NAMESPACE
index 0037e2d..4dafc68 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -11,8 +11,6 @@
 export(cell_spec)
 export(collapse_rows)
 export(column_spec)
-export(dummy_html_tbl)
-export(dummy_latex_tbl)
 export(footnote)
 export(footnote_marker_alphabet)
 export(footnote_marker_number)
diff --git a/R/kable_styling.R b/R/kable_styling.R
index 778335d..9be4bcc 100644
--- a/R/kable_styling.R
+++ b/R/kable_styling.R
@@ -67,6 +67,9 @@
 #' defines your own table class, you can also load it here.
 #' @param html_font A string for HTML css font. For example,
 #' `html_font = '"Arial Narrow", arial, helvetica, sans-serif'`.
+#' @param wraptable_width Width of the wraptable area if you specify
+#' "float_left/right" for latex table. Default is "0pt" for automated
+#' determination but you may specify it manually.
 #'
 #' @details  For LaTeX, if you use other than English environment
 #' - all tables are converted to 'UTF-8'. If you use, for example, Hungarian
@@ -103,7 +106,8 @@
                           table.envir = "table",
                           fixed_thead = FALSE,
                           htmltable_class = NULL,
-                          html_font = NULL) {
+                          html_font = NULL,
+                          wraptable_width = '0pt') {
 
   if (length(bootstrap_options) == 1 && bootstrap_options == "basic") {
     bootstrap_options <- getOption("kable_styling_bootstrap_options", "basic")
@@ -159,7 +163,8 @@
                             stripe_color = stripe_color,
                             stripe_index = stripe_index,
                             latex_table_env = latex_table_env,
-                            table.envir = table.envir))
+                            table.envir = table.envir,
+                            wraptable_width = wraptable_width))
   }
 }
 
@@ -311,7 +316,8 @@
                              stripe_color,
                              stripe_index,
                              latex_table_env,
-                             table.envir) {
+                             table.envir,
+                             wraptable_width) {
 
   latex_options <- match.arg(
     latex_options,
@@ -370,7 +376,7 @@
   }
 
   out <- styling_latex_position(out, table_info, position, latex_options,
-                                table.envir)
+                                table.envir, wraptable_width)
 
   out <- structure(out, format = "latex", class = "knitr_kable")
   attr(out, "kable_meta") <- table_info
@@ -513,7 +519,7 @@
 }
 
 styling_latex_position <- function(x, table_info, position, latex_options,
-                                   table.envir) {
+                                   table.envir, wraptable_position) {
   hold_position <- intersect(c("hold_position", "HOLD_position"), latex_options)
   if (length(hold_position) == 0) hold_position <- ""
   switch(
@@ -523,8 +529,10 @@
     left = styling_latex_position_left(x, table_info),
     right = styling_latex_position_right(x, table_info, hold_position,
                                          table.envir),
-    float_left = styling_latex_position_float(x, table_info, "l", table.envir),
-    float_right = styling_latex_position_float(x, table_info, "r", table.envir)
+    float_left = styling_latex_position_float(x, table_info, "l", table.envir,
+                                              wraptable_position),
+    float_right = styling_latex_position_float(x, table_info, "r", table.envir,
+                                               wraptable_position)
   )
 }
 
@@ -556,7 +564,8 @@
   styling_latex_position_center(x, table_info, hold_position, table.envir)
 }
 
-styling_latex_position_float <- function(x, table_info, option, table.envir) {
+styling_latex_position_float <- function(x, table_info, option, table.envir,
+                                         wraptable_width) {
   if (table_info$tabular == "longtable") {
     warning("wraptable is not supported for longtable.")
     if (option == "l") return(styling_latex_position_left(x, table_info))
@@ -567,7 +576,7 @@
   col_max_length <- apply(size_matrix, 1, max) + 4
   if (table_info$table_env) {
     option <- sprintf("\\\\begin\\{wraptable\\}\\{%s\\}", option)
-    option <- paste0(option, "\\{0pt\\}")
+    option <- paste0(option, "\\{", wraptable_width, "\\}")
     x <- sub("\\\\begin\\{table\\}\\[\\!h\\]", "\\\\begin\\{table\\}", x)
     x <- sub("\\\\begin\\{table\\}", option, x)
     x <- sub("\\\\end\\{table\\}", "\\\\end\\{wraptable\\}", x)
diff --git a/docs/awesome_table_in_pdf.Rmd b/docs/awesome_table_in_pdf.Rmd
index 6469847..2e79da6 100644
--- a/docs/awesome_table_in_pdf.Rmd
+++ b/docs/awesome_table_in_pdf.Rmd
@@ -170,7 +170,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, booktabs = T) %>%
+kbl(dt, booktabs = T) %>%
   kable_styling(full_width = T) %>%
   column_spec(1, width = "8cm")
 ```
@@ -180,13 +180,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, booktabs = T) %>%
+kbl(dt, booktabs = T) %>%
   kable_styling(position = "center")
 ```
 
 Besides these three common options, you can also wrap text around the table using the `float-left` or `float-right` options. Note that, like `striped`, this feature will load another non-default LaTeX package `wrapfig` which requires rmarkdown 1.4.0 +. If you rmarkdown version < 1.4.0, you need to load the package through a customed LaTeX template file. 
 ```{r}
-kable(dt, booktabs = T) %>%
+kbl(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.
@@ -194,7 +194,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, booktabs = T) %>%
+kbl(dt, booktabs = T) %>%
   kable_styling(font_size = 7)
 ```
 
@@ -211,7 +211,7 @@
   )
 )
 
-kable(text_tbl, booktabs = T) %>%
+kbl(text_tbl, booktabs = T) %>%
   kable_styling(full_width = F) %>%
   column_spec(1, bold = T, color = "red") %>%
   column_spec(2, width = "30em")
@@ -223,7 +223,7 @@
 ```{r}
 that_cell <- c(rep(F, 7), T)
 mtcars[1:8, 1:8] %>%
-  kable(booktabs = T, linesep = "") %>%
+  kbl(booktabs = T, linesep = "") %>%
   kable_paper(full_width = F) %>%
   column_spec(2, color = spec_color(mtcars$mpg[1:8]),
               link = "https://haozhu233.github.io/kableExtra") %>%
@@ -241,7 +241,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, booktabs = T) %>%
+kbl(dt, booktabs = T) %>%
   kable_styling("striped", full_width = F) %>%
   column_spec(7, border_left = T, bold = T) %>%
   row_spec(1, strikeout = T) %>%
@@ -251,7 +251,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, booktabs = T, align = "c") %>%
+kbl(dt, booktabs = T, align = "c") %>%
   kable_styling(latex_options = "striped", full_width = F) %>%
   row_spec(0, angle = 45)
 ```
@@ -282,7 +282,7 @@
                                         c("#666666", "#999999", "#BBBBBB")))
   ) %>%
   select(car, mpg, cyl) %>%
-  kable("latex", escape = F, booktabs = T, linesep = "")
+  kbl(escape = F, booktabs = T, linesep = "")
 ```
 
 ## Visualize data with Viridis Color
@@ -298,7 +298,7 @@
     Species, color = "white", bold = T,
     background = spec_color(1:10, end = 0.9, option = "A", direction = -1)
   )) %>%
-  kable("latex", escape = F, booktabs = T, linesep = "", align = "c")
+  kbl(escape = F, booktabs = T, linesep = "", align = "c")
 ```
 
 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. 
@@ -327,14 +327,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, booktabs = T) %>%
+kbl(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. Also, since kableExtra 0.3.0, you can specify `bold` & `italic` as you do in `row_spec()`.
 ```{r}
-kable(dt, booktabs = T) %>%
+kbl(dt, 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)) %>%
@@ -344,7 +344,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 function `pack_rows`/`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) %>%
+kbl(mtcars[1:10, 1:6], caption = "Group Rows", booktabs = T) %>%
   kable_styling() %>%
   pack_rows("Group 1", 4, 7) %>%
   pack_rows("Group 2", 8, 10)
@@ -352,13 +352,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, booktabs = T) %>%
+kbl(dt, booktabs = T) %>%
   pack_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], caption = "Group Rows", booktabs = T) %>%
+kbl(mtcars[1:10, 1:6], caption = "Group Rows", booktabs = T) %>%
   kable_styling() %>%
   pack_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.
@@ -370,7 +370,7 @@
 
 For example, 
 ```{r, eval=F}
-kable(mtcars[1:2, 1:2], align = c("cl"))
+kbl(mtcars[1:2, 1:2], align = c("cl"))
 # \begin{tabular}{l|cl|cl}  # Note the column alignment here
 # \hline
 #   & mpg & cyl\\
@@ -383,14 +383,14 @@
 Unlike `pack_rows()`, which will insert a labeling row, sometimes we want to list a few sub groups under a total one. In that case, `add_indent()` is probably more appropriate.  
 
 ```{r}
-kable(dt, booktabs = T) %>%
+kbl(dt, booktabs = T) %>%
   add_indent(c(1, 3, 5))
 ```
 
 You can also specify the width of the indentation by the `level_of_indent` option. At the same time, if you want to indent every column, you can choose to turn on `all_cols`. Note that if a column is right aligned, you probably won't be able to see the effect. 
 
 ```{r}
-kable(dt, booktabs = T, align = "l") %>%
+kbl(dt, booktabs = T, align = "l") %>%
   add_indent(c(1, 3, 5), level_of_indent = 2, all_cols = T)
 ```
 
@@ -404,14 +404,14 @@
                  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, booktabs = T, align = "c") %>%
+kbl(collapse_rows_dt, booktabs = T, align = "c") %>%
   column_spec(1, bold=T) %>%
   collapse_rows(columns = 1:2, latex_hline = "major", valign = "middle")
 ```
 
 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[-1], align = "c", booktabs = T) %>%
+kbl(collapse_rows_dt[-1], align = "c", booktabs = T) %>%
   column_spec(1, bold = T, width = "5em") %>%
   row_spec(c(1:7, 11:12) - 1, extra_latex_after = "\\rowcolor{gray!6}") %>%
   collapse_rows(1, latex_hline = "none")
@@ -431,7 +431,7 @@
   mutate(C1 = rnorm(n()),
          C2 = rnorm(n()))
 
-kable(collapse_rows_dt, 
+kbl(collapse_rows_dt, 
       booktabs = T, align = "c", linesep = '') %>%
   collapse_rows(1:3, row_group_label_position = 'stack') 
 ```
@@ -443,7 +443,7 @@
   list(bold = T, italic = T), 
   list(bold = F, italic = F)
   )
-kable(collapse_rows_dt, 
+kbl(collapse_rows_dt, 
                      booktabs = T, align = "c", linesep = '') %>%
   column_spec(1, bold=T) %>%
   collapse_rows(1:3, latex_hline = 'custom', custom_latex_hline = 1:3, 
@@ -459,7 +459,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 fulfilling the APA table footnotes requirements.  
 ```{r}
-kable(dt, align = "c") %>%
+kbl(dt, align = "c") %>%
   kable_styling(full_width = F) %>%
   footnote(general = "Here is a general comments of the table. ",
            number = c("Footnote 1; ", "Footnote 2; "),
@@ -471,7 +471,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`. The font format of the titles are controlled by `title_format` with options including "italic" (default), "bold" and "underline".
 
 ```{r}
-kable(dt, align = "c", booktabs = T) %>%
+kbl(dt, align = "c", booktabs = T) %>%
   footnote(general = "Here is a general comments of the table. ",
            number = c("Footnote 1; ", "Footnote 2; "),
            alphabet = c("Footnote A; ", "Footnote B; "),
@@ -491,7 +491,7 @@
                                 footnote_marker_symbol(1, "latex"))
 row.names(dt_footnote)[4] <- paste0(row.names(dt_footnote)[4], 
                                 footnote_marker_alphabet(1))
-kable(dt_footnote, align = "c", booktabs = T,
+kbl(dt_footnote, align = "c", booktabs = T,
       # Remember this escape = F
       escape = F) %>%
   footnote(alphabet = "Footnote A; ",
@@ -503,7 +503,7 @@
 If your table footnote is very long, please consider to put your table in a `ThreePartTable` frame. Note that, in kableExtra version <= 0.7.0, we were using `threeparttable` but since kableExtra 0.8.0, we start to use `ThreePartTable` from `threeparttablex` instead. `ThreePartTable` supports both the `longtable` and `tabu` environments. 
 
 ```{r}
-kable(dt, align = "c", booktabs = T, caption = "s") %>%
+kbl(dt, align = "c", booktabs = T, caption = "s") %>%
   footnote(general = "Here is a very very very very very very very very very very very very very very very very very very very very long footnote", 
            threeparttable = T)
 ```
@@ -520,7 +520,7 @@
 
 dt_lb %>%
   mutate_all(linebreak) %>%
-  kable("latex", booktabs = T, escape = F,
+  kbl(booktabs = T, escape = F,
         col.names = linebreak(c("Item\n(Name)", "Value\n(Number)"), align = "c"))
 ```
 
@@ -530,7 +530,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, caption = "Demo Table (Landscape)[note]", booktabs = T) %>%
+kbl(dt, 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", 
@@ -548,12 +548,12 @@
 # Not evaluated. 
 
 # The code below will automatically include the image in the rmarkdown document
-kable(dt, booktabs = T) %>%
+kbl(dt, booktabs = T) %>%
   column_spec(1, bold = T) %>%
   as_image()
 
 # If you want to save the image locally, just provide a name
-kable(dt, booktabs = T) %>%
+kbl(dt, booktabs = T) %>%
   column_spec(1, bold = T) %>%
   save_kable("my_latex_table.png")
 ```
diff --git a/docs/awesome_table_in_pdf.pdf b/docs/awesome_table_in_pdf.pdf
index de42e9f..eabc76b 100644
--- a/docs/awesome_table_in_pdf.pdf
+++ b/docs/awesome_table_in_pdf.pdf
Binary files differ
diff --git a/docs/awesome_table_in_pdf.toc b/docs/awesome_table_in_pdf.toc
index dd2e50b..984d331 100644
--- a/docs/awesome_table_in_pdf.toc
+++ b/docs/awesome_table_in_pdf.toc
@@ -27,8 +27,8 @@
 \contentsline {subsection}{Row indentation}{15}{section*.28}%
 \contentsline {subsection}{Group rows via multi-row cell}{16}{section*.29}%
 \contentsline {section}{Table Footnote}{19}{section*.30}%
-\contentsline {section}{LaTeX Only Features}{21}{section*.31}%
-\contentsline {subsection}{Linebreak processor}{21}{section*.32}%
+\contentsline {section}{LaTeX Only Features}{22}{section*.31}%
+\contentsline {subsection}{Linebreak processor}{22}{section*.32}%
 \contentsline {subsection}{Table on a Landscape Page}{22}{section*.33}%
 \contentsline {subsection}{Use LaTeX table in HTML or Word}{24}{section*.34}%
 \contentsline {section}{From other packages}{24}{section*.35}%
diff --git a/inst/NEWS.md b/inst/NEWS.md
index 3818d58..bd7c192 100644
--- a/inst/NEWS.md
+++ b/inst/NEWS.md
@@ -41,6 +41,8 @@
 
 * Added a `html_font` option to `kable_styling` and its variants.
 
+* Added a `wraptable_width` to `kable_styling`
+
 
 # Bug Fix
 
diff --git a/man/add_indent.Rd b/man/add_indent.Rd
index 7889802..633de8e 100644
--- a/man/add_indent.Rd
+++ b/man/add_indent.Rd
@@ -13,6 +13,8 @@
 be indented.}
 
 \item{level_of_indent}{a numeric value for the indent level. Default is 1.}
+
+\item{all_cols}{T/F whether to apply indentation to all columns}
 }
 \description{
 Add indentations to row headers
diff --git a/man/dummy_html_tbl.Rd b/man/dummy_html_tbl.Rd
deleted file mode 100644
index 983f1fc..0000000
--- a/man/dummy_html_tbl.Rd
+++ /dev/null
@@ -1,11 +0,0 @@
-% Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/dummy_table.R
-\name{dummy_html_tbl}
-\alias{dummy_html_tbl}
-\title{Dummy html table for testing}
-\usage{
-dummy_html_tbl()
-}
-\description{
-Create dummy table for testing in kE
-}
diff --git a/man/dummy_latex_tbl.Rd b/man/dummy_latex_tbl.Rd
deleted file mode 100644
index 84cc9ee..0000000
--- a/man/dummy_latex_tbl.Rd
+++ /dev/null
@@ -1,11 +0,0 @@
-% Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/dummy_table.R
-\name{dummy_latex_tbl}
-\alias{dummy_latex_tbl}
-\title{Dummy latex table for testing}
-\usage{
-dummy_latex_tbl(booktabs = T)
-}
-\description{
-Create dummy table for testing in kE
-}
diff --git a/man/kable_classic.Rd b/man/kable_classic.Rd
index 65fc159..7192342 100644
--- a/man/kable_classic.Rd
+++ b/man/kable_classic.Rd
@@ -58,6 +58,9 @@
 \code{bootstrap_options} in \code{kable_styling}. Choices include \code{basic}, \code{striped}
 and \code{hover}.}
 
+\item{html_font}{A string for HTML css font. For example,
+\code{html_font = '"Arial Narrow", arial, helvetica, sans-serif'}.}
+
 \item{...}{Everything else you need to specify in \code{kable_styling}.}
 }
 \description{
diff --git a/man/kable_styling.Rd b/man/kable_styling.Rd
index d95b4b8..9cc993d 100644
--- a/man/kable_styling.Rd
+++ b/man/kable_styling.Rd
@@ -22,7 +22,8 @@
   table.envir = "table",
   fixed_thead = FALSE,
   htmltable_class = NULL,
-  html_font = NULL
+  html_font = NULL,
+  wraptable_width = "0pt"
 )
 }
 \arguments{
@@ -105,6 +106,10 @@
 
 \item{html_font}{A string for HTML css font. For example,
 \code{html_font = '"Arial Narrow", arial, helvetica, sans-serif'}.}
+
+\item{wraptable_width}{Width of the wraptable area if you specify
+"float_left/right" for latex table. Default is "0pt" for automated
+determination but you may specify it manually.}
 }
 \description{
 This function provides a cleaner approach to modify the style
