Sweave2knitr {knitr} | R Documentation |
Convert Sweave to knitr documents
Description
This function converts an Sweave document to a knitr-compatible document.
Usage
Sweave2knitr(
file,
output = gsub("[.]([^.]+)$", "-knitr.\\1", file),
text = NULL
)
Arguments
file |
Path to the Rnw file (must be encoded in UTF-8). |
output |
Output file path. By default, ‘file.Rnw’ produces
‘file-knitr.Rnw’); if |
text |
An alternative way to provide the Sweave code as a character
string. If |
Details
The pseudo command ‘\SweaveInput{file.Rnw}’ is converted to a code
chunk header <<child='file.Rnw'>>=
.
Similarly ‘\SweaveOpts{opt = value}’ is converted to a code chunk
‘opts_chunk$set(opt = value)’ with the chunk option include =
FALSE
; the options are automatically fixed in the same way as local chunk
options (explained below).
The Sweave package ‘\usepackage{Sweave}’ in the preamble is removed because it is not required.
Chunk options are updated if necessary: option values true
and
false
are changed to TRUE
and FALSE
respectively;
fig=TRUE
is removed because it is not necessary for knitr (plots
will be automatically generated); fig=FALSE
is changed to
fig.keep='none'
; the devices pdf/jpeg/png/eps/tikz=TRUE
are
converted to dev='pdf'/'jpeg'/'png'/'postscript'/'tikz'
;
pdf/jpeg/png/eps/tikz=FALSE
are removed;
results=tex/verbatim/hide
are changed to
results='asis'/'markup'/'hide'
; width/height
are changed to
fig.width/fig.height
; prefix.string
is changed to
fig.path
; print/term/prefix=TRUE/FALSE
are removed; most of the
character options (e.g. engine
and out.width
) are quoted;
keep.source=TRUE/FALSE
is changed to tidy=FALSE/TRUE
(note the
order of values).
If a line @
(it closes a chunk) directly follows a previous
@
, it is removed; if a line @
appears before a code chunk and
no chunk is before it, it is also removed, because knitr only uses one
‘@’ after ‘<<>>=’ by default (which is not the original Noweb
syntax but more natural).
Value
If text
is NULL
, the output
file is written and
NULL
is returned. Otherwise, the converted text string is returned.
Note
If ‘\SweaveOpts{}’ spans across multiple lines, it will not be
fixed, and you have to fix it manually. The LaTeX-style syntax of Sweave
chunks are ignored (see ?SweaveSyntaxLatex
); only the Noweb syntax
is supported.
References
The motivation of the changes in the syntax: https://yihui.org/knitr/demo/sweave/
See Also
Examples
Sweave2knitr(text = "<<echo=TRUE>>=") # this is valid
Sweave2knitr(text = "<<png=true>>=") # dev='png'
Sweave2knitr(text = "<<eps=TRUE, pdf=FALSE, results=tex, width=5, prefix.string=foo>>=")
Sweave2knitr(text = "<<,png=false,fig=TRUE>>=")
Sweave2knitr(text = "\\SweaveOpts{echo=false}")
Sweave2knitr(text = "\\SweaveInput{hello.Rnw}")
# Sweave example in utils
testfile = system.file("Sweave", "Sweave-test-1.Rnw", package = "utils")
Sweave2knitr(testfile, output = "Sweave-test-knitr.Rnw")
if (interactive()) knit("Sweave-test-knitr.Rnw") # or knit2pdf() directly
unlink("Sweave-test-knitr.Rnw")