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.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39140 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2011-06-20 10:59:23 +00:00
parent 8960d2bfa4
commit ebb85745a9

View File

@ -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 @@ tmpout <- gsub(".", "-", sub("\\.tex$", "", basename(ls.args[2])), fixed = TRUE)
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])