Re: [Rd] Sweave: multiple graphic formats, e.g. win.metafile

From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Wed, 23 Mar 2011 12:05:01 +0000 (GMT)

We are currently in the process of implementing PNG and JPEG for 2.13.0, and an extensible architecture is planned for 2.14.0.

On Wed, 23 Mar 2011, Meyer, Sebastian wrote:

> Dear R devel,
>
> being constrained to a windows environment at work and having colleagues being accustomed to the Microsoft Office Suite, I was looking for a way to have the RweaveLatex driver for Sweave automatically generating 'win.metafile's in addition to the pdf graphics.
> Without this functionalilty, the generation of emf-graphics is quite laborious, I think:
>
> <<>>=
> plotit <- function () {
> # code which generates the graphic
> }
> win.metafile("foobar.emf")
> plotit()
> dev.off()
> pdf("foobar.pdf")
> plotit()
> dev.off()
> @
> \includegraphics{foobar}
>
>
> I would like to have something like:
>
> <<foobar, fig=true, pdf=true, emf=true>>
> # code which generates the graphic
> @
>
>
> SweaveHooks are not applicable for this feature. Therefore, I thought it would be best to extend the typical 'RweaveLatex' driver by an option 'emf' - like eps and pdf. So, here is the result of some handicrafts:
>
> RweaveLatexEMF <- function ()
> {
> # add option emf (= FALSE) and set default for eps to FALSE
> setup <- utils::RweaveLatexSetup
> setupsrc <- deparse(setup)
> epsline <- grep("eps", setupsrc)
> setupsrc[epsline] <- sub("eps = TRUE", "eps = FALSE, emf = FALSE", setupsrc[epsline])
> setup <- eval(parse(text=setupsrc))
>
> # 'makeRweaveLatexCodeRunner' function
> makeruncode <- function(evalFunc=utils::RweaveEvalWithOpt) {
> runcode <- utils:::RweaveLatexRuncode
> runcodesrc <- deparse(runcode)
> epsline1 <- grep("cat(.. eps..)", runcodesrc)
> runcodesrc <- append(runcodesrc, " if (options$emf) cat(\" emf\")", after=epsline1)
> epsline2 <- grep("options\\$fig && options\\$eval", runcodesrc)
> runcodesrc <- append(runcodesrc,
> deparse(quote(
> if (options$emf && .Platform$OS.type == "windows") {
> grDevices::win.metafile(file=paste(chunkprefix, "emf", sep="."),
> width=options$width, height=options$height)
> err <- try({SweaveHooks(options, run=TRUE)
> eval(chunkexps, envir=.GlobalEnv)})
> grDevices::dev.off()
> if(inherits(err, "try-error")) stop(err)
> }
> ))
> , after=epsline2)
> runcode <- eval(parse(text=runcodesrc))
> }
> runcode <- makeruncode()
>
> list(setup = setup, runcode = runcode,
> writedoc = utils::RweaveLatexWritedoc, finish = utils::RweaveLatexFinish,
> checkopts = utils::RweaveLatexOptions)
> }
>
>
> This enhanced Sweave driver works for me like a charm, but it is a very poor solution.
> What about allowing for all available grDevices on the current platform - besides the standard eps and pdf devices? The only building block is the section "if (options$fig && options$eval)" in utils:::makeRweaveLatexCodeRunner. The TODO list of Seth Falcon's weaver package also states "For Sweave: multiple graphic formats besides just pdf and eps (perhaps
> as a separate driver?)".
> However, since so many packages depend on the basic Sweave implementation by Fritz Leisch, I don't know if there is an easy route to tackle.
>
> Looking forward to your opinions and pointers.
> Best regards,
> Sebastian Meyer
>
> ______________________________________________
> R-devel_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Brian D. Ripley,                  ripley_at_stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Wed 23 Mar 2011 - 12:09:49 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 23 Mar 2011 - 14:10:36 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive