Skip to content
A general-purpose tool for dynamic report generation in R
Branch: master
Clone or download
Latest commit 00ffce2 Apr 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github typos (#1687) Mar 25, 2019
R fix: When dev == 'svg' use 'grDevices::svg' (#1705) Apr 18, 2019
demo the demo/ directory is supposed to contain .R demos; moving this Rmd … Jul 13, 2016
docs point to the original source Jan 2, 2018
inst make stitch template work without knitr being attached (#1668) Feb 4, 2019
man support mogrify for png plot files (#1697) Apr 12, 2019
tests New tests: themes (#1673) Mar 18, 2019
vignettes close #1580: clarify in the knit_print vignette that you need registe… Dec 10, 2018
.Rbuildignore prevent codecov from commenting on PRs Nov 7, 2018
.Rinstignore there is no makefile now Aug 6, 2013
.gitignore these files/dirs no longer exist Aug 7, 2018
.travis.yml install libpoppler-cpp-dev for the R package pdftools Mar 7, 2019
DESCRIPTION support mogrify for png plot files (#1697) Apr 12, 2019 move to Feb 18, 2017
Makefile install latex packages needed by tikzDevice Dec 21, 2017
NAMESPACE support mogrify for png plot files (#1697) Apr 12, 2019 fix: When dev == 'svg' use 'grDevices::svg' (#1705) Apr 18, 2019 there isn't really a good reason to install all soft dependencies Mar 8, 2019 there isn't really a good reason to install all soft dependencies Mar 8, 2019 there isn't really a good reason to install all soft dependencies Mar 8, 2019
codecov.yml don't show code coverage status since it looks alarming but I don't r… Feb 28, 2019
knitr.Rproj no CRAN incoming check Dec 11, 2018


Build Status Coverage status Downloads from the RStudio CRAN mirror

The R package knitr is a general-purpose literate programming engine, with lightweight API's designed to give users full control of the output without heavy coding work. It combines many features into one package with slight tweaks motivated from my everyday use of Sweave. See the package homepage for details and examples. See FAQ's for a list of frequently asked questions (including where to ask questions).


You can install the stable version on CRAN:


You can also install the development version from XRAN, which provides daily build of knitr:

# update all existing packages first
update.packages(ask = FALSE, repos = '')
install.packages('knitr', repos = c('', ''))

Note that if you want to build the source package via R CMD INSTALL without a previously installed version of knitr, you must either pre-install knitr from CRAN, or run R CMD INSTALL on this source repo, otherwise R CMD build will fail (which is probably a bug of base R).


While Sweave and related add-on packages like cacheSweave and pgfSweave are fairly good engines for literate programming in R, I often feel my hands are tied. For example:

  • I stared at the source code of Sweave and wished for hundreds of times, if only I could easily insert [width=.8\textwidth] between \includegraphics and {my-plot.pdf}. (The official way in Sweave is \setkeys{Gin} but it is setting a global width, which is unrealistic since we often have to set widths individually; yes, you can use \setkeys{Gin} for many times, but why not just provide an option for each chunk?)
  • I wished for many times, if only I could use graphics devices other than PDF and postscript; now the dream has come true in the official R, but what I was hoping for was an option as simple as dev = 'png' or dev = 'CairoJPEG'.
  • I wished multiple plots in a code chunk could be recorded instead of only the last one.
  • I wished there was a way to round the numbers in \Sexpr{} other than writing expressions like \Sexpr{round(x, 3)} for each single \Sexpr{}
  • I wished I did not have to print() plots from. ggplot2 and a simple qplot(x, y) would just give me a plot in Sweave.
  • I wished users would never need instructions on Sweave.sty or run into troubles due to the fact that LaTeX cannot find Sweave.sty.
  • I wished cacheSweave could print the results of a code chunk even if it was cached.
  • I wished brew could support graphics.
  • I wished R2HTML could support R code syntax highlighting.
  • ...

The book Dynamic Documents with R and knitr

The package knitr was designed to give the user access to every part of the process of dealing with a literate programming document, so there is no need to hack at any core components if you want more freedom. I have gone through the source code of pgfSweave and cacheSweave for a couple of times and I often feel uncomfortable with the large amount of code copied from official R, especially when R has a new version released (I will begin to worry if the add-on packages are still up-to-date with the official Sweave).



If options are not explicitly specified, knitr will try to guess reasonable default settings. A few manuals are available such as the main manual, and the graphics manual. For a more organized reference, see the knitr book.


This package is free and open source software, licensed under GPL.

You can’t perform that action at this time.