Sweave2knitr: Convert Sweave to knitr documents

View source: R/utils-sweave.R

Sweave2knitrR 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 is not NULL, no output file will be produced.

text

An alternative way to provide the Sweave code as a character string. If text is provided, file will be ignored.

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

Sweave, gsub

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")

knitr documentation built on Sept. 11, 2024, 6:18 p.m.