odfWeave: Sweave processing of Open Document Format (ODF) files

Description Usage Arguments Details Value Author(s) See Also Examples


Sweave processing of Open Document Format files


odfWeave(file, dest, workDir = odfTmpDir(), control = odfWeaveControl())



the ODF file created using OpenOffice V2.0 or above.


path to put the processed file (should include file name and extension)


a path to a directory where the source file will be unpacked and processed. If it does not exist, it will be created. If it exists, it should be empty, since all its contents will be included in the generated file.


a list of control settings. See odfWeaveControl for the names of the settable control values and their effects.


odfWeave can be used to embed R code within a word processing document. The odfWeave package was created so that the functionality of Sweave can be used within a rich editor like OpenOffice. The generated document can also easily be edited.

The markup language used is the Open Document Format (ODF), which is an open, non–proprietary format that encompasses text documents, presentations and spreadsheets. There are several editors/office suites that can produce ODF files. OpenOffice, as of version 2.0, uses ODF as the default format. odfWeave has been tested with OpenOffice to produce text documents. As of the current version, odfWeave processing of presentations and spreadsheets should be considered to be experimental (but should be supported in subsequent versions).

Since ODF files are compressed archives of files and directories, R will need to zip and unzip the source file. While R has an unzip utility, it does not have one for re-zipping files, so an external application is needed. unzip and zip are free utilities located at


Also, jar can be used. See odfWeaveControl for more information on configuring odfWeave to use applications other than zip and unzip.

A few notes about file paths and working directories:

  • When specifying the location of the odt file, you cannot use relative paths such as file = "../file.odt". If the input or output files are not in the current working directory, then the absolute path should be used

  • odfWeave changes the working directory to the location where the odt file is decompressed. If an error occurs within odfWeave, the working directory will be changed back to the original path

  • Since odfWeave changes the working directory when the code chunks are executed, references to files and directories should use absolute paths. For example, if you are using read.csv to bring data into R, the file specification should include the whole path since the working directory will have been changed to a temporary location

The functionality of Sweave is mostly preserved in odfWeave, such as weaving, hooks, figure environments, etc. Some functionality, such as writing output to separate files for each code chunk using the split argument, doesn't make sense when using ODF. See RweaveOdf for more details about the available options.

odfWeave uses the noweb convention for R code. In-line R commands should be in Sexpr calls. The Sexpr text should all be completely in one visual format. e.g., changing the color of part of the Sexpr could result in an error. Block code chunks should use the <<>>= syntax (i.e. no Latex syntax will currently work).

The image format and sizes are specified using setImageDefs. The dimensions of the image file and the dimensions of the rendered image can be set independently. See setImageDefs for more details.

The document formatting.odt in the package's examples directory illustrates the process of changing the appearance of the various document elements.


an ODF file with the R output


Max Kuhn

See Also

odfWeaveControl, RweaveOdf, Sweave


## Not run: vignette("odfWeave")

## Not run: 
demoFile <- system.file("examples", "examples.odt", package = "odfWeave")
demoFile <- system.file("examples", "testCases.odt", package ="odfWeave")
demoFile <- system.file("examples", "formatting.odt", package = "odfWeave")

## End(Not run)

demoFile <- system.file("examples", "simple.odt", package = "odfWeave")
outputFile <- gsub("simple.odt", "output.odt", demoFile)

odfWeave(demoFile, outputFile)

Search within the odfWeave package
Search all R packages, documentation and source code

Questions? Problems? Suggestions? or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.