Author: lasgouttes
Date: Mon Jun 20 12:59:23 2011
New Revision: 39140
URL: http://www.lyx.org/trac/changeset/39140

Log:
When Sweave.sty is not available to LaTeX, copy it in the temp directory 
instead of using the stylepath argument of Sweave(). This is better under 
windows, where the path to Sweave.sty may contain spaces.

Add Yihui Xie as co-author.

Modified:
   lyx-devel/trunk/lib/scripts/lyxsweave.R

Modified: lyx-devel/trunk/lib/scripts/lyxsweave.R
==============================================================================
--- lyx-devel/trunk/lib/scripts/lyxsweave.R     Mon Jun 20 12:13:37 2011        
(r39139)
+++ lyx-devel/trunk/lib/scripts/lyxsweave.R     Mon Jun 20 12:59:23 2011        
(r39140)
@@ -3,6 +3,7 @@
 # Licence details can be found in the file COPYING.
 
 # author Jean-Marc Lasgouttes
+# author Yihui Xie
 
 # Full author contact details are available in file CREDITS
 
@@ -15,10 +16,16 @@
 ls.args <- commandArgs(trailingOnly=TRUE)
 
 # check whether Sweave.sty is seen by LaTeX. if it is not, we will
-# pass the option stylepath=TRUE to sweave so that a full path is given
-# to \usepackage.
+# copy it alongside the .tex file (in general in the temporary
+# directory). This means that an exported LaTeX file will not work,
+# but this is a problem of installation of R on the user's machine.
+# The advantage compared to the use of stylepath, is that the exported
+# .tex file will be portable to another machine. (JMarc)
 ls.sweavesty <- system("kpsewhich Sweave.sty", intern=TRUE, ignore.stderr=TRUE)
-ls.sp <- (length(ls.sweavesty) == 0)
+if (!length(ls.sweavesty)) {
+   stypath <- file.path(R.home("share"), "texmf", "tex", "latex", "Sweave.sty")
+   file.copy(stypath, dirname(ls.args[2]), overwrite=TRUE)
+}
 
 # set default encoding for input and output files; ls.enc is used in
 # the sweave module preamble to reset the encoding to what it was.
@@ -36,7 +43,7 @@
 ls.pr <- paste(dirname(ls.args[2]), tmpout, sep="/")
 
 # finally run sweave
-Sweave(file=ls.args[1], output=ls.args[2], syntax="SweaveSyntaxNoweb", 
stylepath=ls.sp, prefix.string=ls.pr)
+Sweave(file=ls.args[1], output=ls.args[2], syntax="SweaveSyntaxNoweb", 
prefix.string=ls.pr)
 
 # remove absolute path from \includegraphics
 ls.doc = readLines(ls.args[2])

Reply via email to