add a kable function with better doc
diff --git a/R/column_spec.R b/R/column_spec.R
index 2e8a64d..2a97fee 100644
--- a/R/column_spec.R
+++ b/R/column_spec.R
@@ -39,6 +39,8 @@
#' header row will be manipulated. Default is `FALSE`.
#' @param latex_column_spec Only for LaTeX tables. Code to replace the column
#' specification. If not `NULL`, will override all other arguments.
+#' @param latex_valign vertical alignment. Only works when you specified column
+#' width. Choose among `p`, `m`, `b`.
#'
#' @details Use `latex_column_spec` in a LaTeX table to change or
#' customize the column specification. Because of the way it is handled
@@ -56,7 +58,7 @@
border_left = FALSE, border_right = FALSE,
width_min = NULL, width_max = NULL,
extra_css = NULL, include_thead = FALSE,
- latex_column_spec = NULL) {
+ latex_column_spec = NULL, latex_valign = 'p') {
if (!is.numeric(column)) {
stop("column must be numeric. ")
}
@@ -82,7 +84,8 @@
underline, strikeout,
color, background,
border_left, border_right,
- latex_column_spec = latex_column_spec))
+ latex_column_spec = latex_column_spec,
+ latex_valign = latex_valign))
}
}
@@ -222,7 +225,7 @@
underline, strikeout,
color, background,
border_left, border_right,
- latex_column_spec) {
+ latex_column_spec, latex_valign) {
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,",
@@ -237,7 +240,8 @@
function(x) {
latex_column_align_builder(
x, width, bold, italic, monospace, underline, strikeout,
- color, background, border_left, border_right, latex_column_spec)
+ color, background, border_left, border_right, latex_column_spec,
+ latex_valign)
}
))
@@ -271,14 +275,14 @@
underline, strikeout,
color, background,
border_left, border_right,
- latex_column_spec) {
+ latex_column_spec, latex_valign) {
extra_align <- ""
if (!is.null(width)) {
extra_align <- switch(x,
"l" = "\\\\raggedright\\\\arraybackslash",
"c" = "\\\\centering\\\\arraybackslash",
"r" = "\\\\raggedleft\\\\arraybackslash")
- x <- paste0("p\\{", width, "\\}")
+ x <- paste0(latex_valign, "\\{", width, "\\}")
}
if (!is.null(color)) {
diff --git a/R/kable.R b/R/kable.R
new file mode 100644
index 0000000..f1709d5
--- /dev/null
+++ b/R/kable.R
@@ -0,0 +1,105 @@
+#' Wrapper function of knitr::kable
+#'
+#' @description knitr's kable function is the foundation of this package.
+#' However, it has many latex/html specific arguments hidden under the ground
+#' unless you check its source code. This wrapper function is created to
+#' provide better documentation (and auto-complete yay) and at the same time,
+#' solve the auto format setting in a better way.
+#'
+#' @param table.attr A character string for addition HTML table attributes.
+#' This is convenient if you simply want to add a few HTML classes or styles.
+#' For example, you can put 'class="table" style="color: red"'.
+#' @param booktabs T/F for whether to enable the booktabs format for tables. I
+#' personally would recommend you turn this on for every latex table except
+#' some special cases.
+#' @param longtable T/F for whether to use the longtable format. If you have a
+#' table that will span over two or more pages, you will have to turn this on.
+#' @param valign You probably won't need to adjust this latex option very often.
+#' If you are familar with latex tables, this is the optional position for the
+#' tabular environment controling the vertical position of the table relative
+#' to the baseline of the surrounding text. Possible choices are `b`, `c` and
+#' `t` (default).
+#' @param position This is the "real" or say floating position for the latex
+#' table environment. The `kable` only puts tables in a table environment when
+#' a caption is provided. That is also the reason why your tables will be
+#' floating around if you specify captions for your table. Possible choices are
+#' `h` (here), `t` (top, default), `b` (bottom) and `p` (on a dedicated page).
+#' @param centering T (default)/F. Whether to center tables in the table
+#' environment.
+#' @param caption.short Another latex feature. Short captions for tables
+#' @param linesep By default, in booktabs tables, `kable` insert an extra space
+#' every five rows for clear display. If you don't want this feature or if you
+#' want to do it in a different pattern, you can consider change this option.
+#' The default is c('', '', '', '', '\\addlinespace'). Also, if you are not
+#' using booktabs, but you want a cleaner display, you can change this to ''.
+#' @param table.envir You probably don't need to change this as well. The
+#' default setting is to put a table environment outside of tabular if a
+#' caption is provided.
+#' @param vline vertical separator. Default is nothing for booktabs
+#' tables but "|" for normal tables.
+#' @param toprule toprule. Default is hline for normal table but toprule for
+#' booktabs tables.
+#' @param bottomrule bottomrule. Default is hline for normal table but
+#' bottomrule for booktabs tables.
+#' @param midrule midrule. Default is hline for normal table but midrule for
+#' booktabs tables.
+#'
+#' @inheritParams knitr::kable
+#' @export
+kable <- function(x, format, digits = getOption("digits"),
+ row.names = NA, col.names = NA, align,
+ caption = NULL, label = NULL, format.args = list(),
+ escape = TRUE,
+ table.attr = '',
+ booktabs = FALSE, longtable = FALSE,
+ valign = 't', position = '', centering = TRUE,
+ vline = getOption('knitr.table.vline', if (booktabs) '' else '|'),
+ toprule = getOption('knitr.table.toprule', if (booktabs) '\\toprule' else '\\hline'),
+ bottomrule = getOption('knitr.table.bottomrule', if (booktabs) '\\bottomrule' else '\\hline'),
+ midrule = getOption('knitr.table.midrule', if (booktabs) '\\midrule' else '\\hline'),
+ linesep = if (booktabs) c('', '', '', '', '\\addlinespace') else '\\hline',
+ caption.short = '',
+ table.envir = if (!is.null(caption)) 'table', ...) {
+ if (!missing(align) && length(align) == 1L && !grepl('[^lcr]', align)) {
+ align <- strsplit(align, '')[[1]]
+ }
+ if (missing(format) | is.null(format)) {
+ if (knitr::is_latex_output()) {
+ format <- "latex"
+ return(knitr::kable(
+ x = x, format = format, digits = digits,
+ row.names = row.names, col.names = col.names, align = align,
+ caption = caption, label = label, format.args = format.args,
+ escape = escape,
+ booktabs = booktabs, longtable = longtable,
+ valign = valign, position = position, centering = centering,
+ vline = vline, toprule = toprule, bottomrule = bottomrule,
+ midrule = midrule, linesep = linesep, caption.short = caption.short,
+ table.envir = table.envir, ...
+ ))
+ } else {
+ format <- "html"
+ return(knitr::kable(
+ x = x, format = format, digits = digits,
+ row.names = row.names, col.names = col.names, align = align,
+ caption = caption, label = label, format.args = format.args,
+ escape = escape,
+ table.attr = table.attr, ...
+ ))
+ }
+ } else {
+ return(knitr::kable(
+ x = x, format = format, digits = digits,
+ row.names = row.names, col.names = col.names, align = align,
+ caption = caption, label = label, format.args = format.args,
+ escape = escape, table.attr = table.attr,
+ booktabs = booktabs, longtable = longtable,
+ valign = valign, position = position, centering = centering,
+ vline = vline, toprule = toprule, bottomrule = bottomrule,
+ midrule = midrule, linesep = linesep, caption.short = caption.short,
+ table.envir = table.envir, ...
+ ))
+ }
+
+
+}
diff --git a/R/kableExtra-package.R b/R/kableExtra-package.R
index c01f058..bb6528c 100644
--- a/R/kableExtra-package.R
+++ b/R/kableExtra-package.R
@@ -85,6 +85,3 @@
#' @export
magrittr::`%>%`
-
-#' @export
-knitr::kable