% 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}{xtable}, the philosophy
behind \href{https://rdrr.io/cran/knitr/man/kable.html}{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}
