On 14/12/2010 9:54 AM, Dominick Samperi wrote:
Another question about Sweave (actually it is more a question about TeX). Is there a reliable (system-independent) way to use Sweave.sty without having to place it in the current working directory? MiKTeX under Windows has dropped the use of TEXINPUTS, and this complicates the problem.
If you run it from R, the right path will be put in place. The tools::texi2dvi function does this.
Furthermore, you cannot refer to Sweave.sty using its full path as this would obviously not be system-independent. Yet another small issue: If I configure Sweave to use a temp directory for its temp files, and if this temp directory does not exist, TeX fails with error diagnostics that is not clear at all. Is there a way to have TeX automatically create the directory if necessary?
I don't understand this one. Are you talking about a "prefix=somedir/" option to Sweave? That needs to be there before TeX is run. I sometimes put a dir.create("somedir", showWarnings=FALSE) call in an early chunk in the document to create it.
Duncan Murdoch
Thanks, Dominick On Tue, Dec 14, 2010 at 7:21 AM, Friedrich Leisch< friedrich.lei...@stat.uni-muenchen.de> wrote: > >>>>> On Tue, 14 Dec 2010 12:40:04 +0100, > >>>>> Romain Francois (RF) wrote: > > > Hello, > > Sweave lets you use alternative drivers through the driver argument, and > > several packages take advantage of that and define custom Sweave driver > > for various purposes. Most of them are listed on the Reproducible > > Research CTV: > > (http://cran.r-project.org/web/views/ReproducibleResearch.html) > > > The next natural step is for package developpers to take advantage of > > this in their vignettes. In Rcpp we work around the way package building > > works and we do: > > - let R build a dummy vignette > > - then use the inst/doc/Makefile to replace it with a vignette that is > > processed by the driver from the highlight package (giving syntax > > highlighting). > > > I played with Sweave so that it would be able to create the driver from > > some text included in the text of the .Rnw file: > > > $ svn diff > > Index: src/library/utils/R/Sweave.R > > =================================================================== > > --- src/library/utils/R/Sweave.R (revision 53846) > > +++ src/library/utils/R/Sweave.R (working copy) > > @@ -20,6 +20,16 @@ > > # We don't need srclines for code, but we do need it for text, and > > it's easiest > > # to just keep it for everything. > > > +SweaveGetDriver<- function(file){ > > + txt<- readLines(file) > > + line<- grep( "\\SweaveDriver", txt, value = TRUE ) > > + if( length(line) ){ > > + txt<- sub( "^.*\\SweaveDriver[{](.*)[}]", "\\1", line[1L] ) > > + driver<- try( eval( parse( text = txt ) ), silent = TRUE ) > > + if( !inherits( driver, "try-error") ) driver > > + } > > +} > > + > > Sweave<- function(file, driver=RweaveLatex(), > > syntax=getOption("SweaveSyntax"), ...) > > { > > @@ -28,7 +38,9 @@ > > else if(is.function(driver)) > > driver<- driver() > > > - > > + drv<- SweaveGetDriver(file) > > + if( !is.null(drv) ) driver<- drv > > + > > if(is.null(syntax)) > > syntax<- SweaveGetSyntax(file) > > if(is.character(syntax)) > > > > > This allows one to write something like this in their file: > > > %\SweaveDriver{ { require(highlight); HighlightWeaveLatex() } } > > > So that when calling : > > >> Sweave( "somefile.Rnw" ) > > > the highlight driver is used instead of the default driver. > > > Could something like that be added to Sweave ? > > Yes, sure! > > Will have a look at the patch later this week and apply it if it > passes the tests. The patch is against a current r-devel? > > Best, > Fritz > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel