% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/kableExtra-package.R
\docType{package}
\name{kableExtra-package}
\alias{kableExtra-package}
\alias{kableExtra}
\title{kableExtra}
\description{
When we are talking about table generators in R,
\href{https://yihui.name/knitr/}{knitr}'s \code{kable()} function wins lots of flavor
by its ultimate simplicity. Unlike those powerful table rendering engines
such as \href{https://CRAN.R-project.org/package=xtable}{\code{xtable}}, the philosophy
behind \href{https://rdrr.io/cran/knitr/man/kable.html}{\code{knitr::kable()}} is to
make it easy for programmers to use. Just as it claimed in its
function description, "this is a very simple table generator. It is simple
by design. It is not intended to replace any other R packages for making
tables. - Yihui".

However, the ultimate simplicity of \code{kable()} also brought troubles to some
of us, especially for new R users, who may not have a lot of experience on
generating tables in R. It is not rare to see people including experienced
users asking questions like how to center/left-align a table on Stack
Overflow. Also, for me personally, I found myself repeatedly parsing CSS
into \code{kable()} for some very simple features like striped lines. For LaTeX,
it's even worse since I'm almost Stack Overflow dependent for LaTeX...
That's why this package \code{kableExtra} was created.

I hope with \code{kableExtra}, you can
\itemize{
\item Use default base \code{kable()} (Or a good alternative for markdown tables is
\code{pander::pander()}) for all simple tables
\item Use \code{kable()} with \code{kableExtra} to generate 90 \% of complex/advanced
tables in either HTML or LaTeX
\item Only have to mess with raw HTML/LaTeX in the last 10\% cases where
\code{kableExtra} cannot solve the problem
}

For a full package documentation, please visit the
\href{http://haozhu233.github.io/kableExtra/}{package documentation site}
for more information
}
\note{
If you found a feature on the documentation site that is not available
in the version of \code{kableExtra} you are using, try to install the pre-release
version from github. You can do so by running
\code{devtools::install_github("haozhu233/kableExtra")}.

Also, note that This package can load required LaTeX package automatically in
vanilla rmarkdown. For customized rmarkdown templates, it is recommended to
load related LaTeX packages manually.
}
\section{Features}{

\strong{Pipable syntax:} \code{kableExtra} is NOT a table generating package. It is a
package that can "add features" to a \code{kable} output using a syntax
that every useR loves - the \href{http://r4ds.had.co.nz/pipes.html}{pipe}.
We see similar approaches to deal with plots in packages like \code{ggvis} and
\code{plotly}. There is no reason why we cannot use it with tables.

\strong{Unified functions for both HTML and PDF:} Most functionalities in
\code{kableExtra} can work in both HTML and PDF. In fact, as long as you
specifies format in \code{kable} (which can be set globally through option
\code{knitr.table.format}), functions in this package will pick the right way
to manipulate the table be themselves. As a result, if users want to left
align the table, \code{kable_styling(kable(...), position = "left")} will work
in both HTML and PDF.
}

\keyword{package}
