[ESS] knitr

Rasmus rasmus at gmx.us
Sun Jun 3 20:08:30 CEST 2012

Kevin Wright <kw.stat at gmail.com> writes:

> I've used Sweave for many years, but have switched to knitr because I
> find knitr makes several things _much_ easier.  I added this to my
> .emacs:

I like Knitr a lot and have written several papers with it.  It makes
including graphs easy.  I use noweb syntax.

However, I don't know if the <<KEYWORDS>> have stabilized.  It seems
they change every so often.  This might be taken into consideration
before implementing Knitr support.  That is unless Yihui says the syntax
has stabilized.

Here's what I use.  Knitr makes the .tex files and latexmk runs pdflatex
and Biber the appropriate number of times:

(add-hook 'Rnw-mode-hook
          (lambda ()
            (add-to-list 'TeX-command-list
                         '("knitr" "/home/rasmus/bin/knitr %s.Rnw %s.tex && latexmk -pdf %s.tex"
                           TeX-run-command nil the:help "Run Knitr") t)

            (setq TeX-command-default "Knitr")))

With the /home/rasmus/bin/knitr shipped with Knitr, i.e.

$ cat ~/bin/knitr 
#!/usr/bin/env Rscript

    p = commandArgs(TRUE)
    if (length(p) == 0L || '--help' %in% p) {
    knit input [output] [--pdf]
    knit --help to print help messages')

    knit_fun = if ('--pdf' %in% p) {
        p = setdiff(p, '--pdf')
        if (length(p) == 0L) stop('no input file provided')
    } else knit

    if (!file.exists(p[1]))
        stop("file '", p[1], "' does not exist!")

    knit_fun(p[1], if (length(p) < 2L) NULL else p[2])


In theory, practice and theory are the same. In practice they are not

More information about the ESS-help mailing list