On Mon, Oct 1, 2012 at 9:43 AM, Richard Heck <rgh...@lyx.org> wrote: > On 10/01/2012 04:04 AM, Jean-Marc Lasgouttes wrote: >> >> Le 01/10/2012 08:56, Scott Kostyshak a écrit : >>> >>> On Mon, Oct 1, 2012 at 2:46 AM, Yihui Xie <x...@yihui.name> wrote: >>>> >>>> I have tested it on my Windows 7 and I did not see any problems. >>> >>> >>> Great, thanks for doing that Yihui. In that case, the question becomes >>> -- should this be committed only to trunk? I would be in favor of >>> committing it to branch, but I'm not sure if it's best to do that >>> before or after 2.0.5 is released. >>> >>> Anyone else have an opinion? >> >> >> I think it should go to trunk and branch: is is simpler now (always good) >> and I trust that Yihui tested it thoroughly. >> > Good for branch, then. > > Scott, you know about status.20x, yes?
I do, but I would have forgotten to update it. Thank you for the reminder. Attached are the patches for trunk and branch. Are they OK? Thanks, Scott
From dbf68ef44a0d31ee56bb77671ff6929f913d1170 Mon Sep 17 00:00:00 2001 From: Scott Kostyshak <skost...@lyx.org> Date: Tue, 2 Oct 2012 05:56:01 -0400 Subject: [PATCH] More elegant knitr support and bug fix Implement a more simple and elegant integration of the R package knitr. Now, lyxknitr.R does not need to move or copy files at all. This also fixes a bug: when /tmp was on a different file system (e.g. encrypted home), lyxknitr.R failed to move files to /tmp because it relied on R's 'file.rename' function, which in turn relied on the rename function in <stdio.h>, which was failing with the EXDEV errno. Patch from Yihui Xie. --- lib/examples/knitr.lyx | 2 +- lib/layouts/knitr.module | 2 +- lib/scripts/lyxknitr.R | 17 +++-------------- status.20x | 3 +++ 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/lib/examples/knitr.lyx b/lib/examples/knitr.lyx index f096d68..15fd817 100644 --- a/lib/examples/knitr.lyx +++ b/lib/examples/knitr.lyx @@ -176,7 +176,7 @@ status collapsed \begin_layout Plain Layout -http://yihui.github.com/knitr +http://yihui.name/knitr \end_layout \end_inset diff --git a/lib/layouts/knitr.module b/lib/layouts/knitr.module index 694ae77..fe64359 100644 --- a/lib/layouts/knitr.module +++ b/lib/layouts/knitr.module @@ -1,7 +1,7 @@ #\DeclareLyXModule[knitr->latex]{Rnw (knitr)} #DescriptionBegin #Uses the knitr package in R for dynamic report generation. This R package has to be installed for this module to work: install.packages('knitr'). Note it depends on R >= 2.14.1. -#For more info see http://yihui.github.com/knitr +#For more info see http://yihui.name/knitr #DescriptionEnd #Category: literate #Excludes: lilypond | sweave diff --git a/lib/scripts/lyxknitr.R b/lib/scripts/lyxknitr.R index 03150f2..7c029ea 100644 --- a/lib/scripts/lyxknitr.R +++ b/lib/scripts/lyxknitr.R @@ -11,7 +11,7 @@ ## author Yihui Xie ## knitr is an alternative package to Sweave, and has more features -## and flexibility; see https://yihui.github.com/knitr +## and flexibility; see https://yihui.name/knitr ## Rscript $$s/scripts/lyxknitr.R $$p$$i $$p$$o $$e $$r ## $$p the path of the output (temp dir) @@ -31,18 +31,7 @@ options(encoding = .cmdargs[3]) ## can put your data files there and functions like read.table() can ## work correctly without specifying the full path setwd(.cmdargs[4]) +opts_knit$set(root.dir = getwd()) -## copy the Rnw file to the current working directory if it does not exist -.tmp.file = tempfile(); .rnw.file = basename(.cmdargs[1]) -.rnw.exists = file.exists(.rnw.file) -if (.rnw.exists) file.rename(.rnw.file, .tmp.file) -file.copy(.cmdargs[1], '.') ## run knit() to get .tex or .R -knit(.rnw.file, tangle = 'tangle' %in% .cmdargs) - -setwd(.cmdargs[4]) -## remove the copied .Rnw if it did not exist, otherwise move the original one back -if (.rnw.exists) file.rename(.tmp.file, .rnw.file) else unlink(.rnw.file) -file.rename(basename(.cmdargs[2]), .cmdargs[2]) # move .tex to the temp dir -rm(.tmp.file, .rnw.file, .rnw.exists) # clean up these variables - +knit(.cmdargs[1], output = .cmdargs[2], tangle = 'tangle' %in% .cmdargs) diff --git a/status.20x b/status.20x index c1f2099..705a639 100644 --- a/status.20x +++ b/status.20x @@ -129,6 +129,9 @@ What's new - Fix tex2lyx import of mhchem commands outside math mode (bug 8306). +- Fix failure of lyxknitr.R to move files when /tmp was on a different + file system (e.g. an encrypted home partition). + * USER INTERFACE -- 1.7.9.5
From 06a139ac33333b42657e49668d4044dd11ad056e Mon Sep 17 00:00:00 2001 From: Scott Kostyshak <skost...@lyx.org> Date: Tue, 2 Oct 2012 05:56:01 -0400 Subject: [PATCH] More elegant knitr support and bug fix Implement a more simple and elegant integration of the R package knitr. Now, lyxknitr.R does not need to move or copy files at all. This also fixes a bug: when /tmp was on a different file system (e.g. encrypted home), lyxknitr.R failed to move files to /tmp because it relied on R's 'file.rename' function, which in turn relied on the rename function in <stdio.h>, which was failing with the EXDEV errno. Patch from Yihui Xie. --- lib/examples/knitr.lyx | 2 +- lib/layouts/knitr.module | 2 +- lib/scripts/lyxknitr.R | 17 +++-------------- 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/lib/examples/knitr.lyx b/lib/examples/knitr.lyx index ddbfe01..feab161 100644 --- a/lib/examples/knitr.lyx +++ b/lib/examples/knitr.lyx @@ -182,7 +182,7 @@ status collapsed \begin_layout Plain Layout -http://yihui.github.com/knitr +http://yihui.name/knitr \end_layout \end_inset diff --git a/lib/layouts/knitr.module b/lib/layouts/knitr.module index 694ae77..fe64359 100644 --- a/lib/layouts/knitr.module +++ b/lib/layouts/knitr.module @@ -1,7 +1,7 @@ #\DeclareLyXModule[knitr->latex]{Rnw (knitr)} #DescriptionBegin #Uses the knitr package in R for dynamic report generation. This R package has to be installed for this module to work: install.packages('knitr'). Note it depends on R >= 2.14.1. -#For more info see http://yihui.github.com/knitr +#For more info see http://yihui.name/knitr #DescriptionEnd #Category: literate #Excludes: lilypond | sweave diff --git a/lib/scripts/lyxknitr.R b/lib/scripts/lyxknitr.R index 03150f2..7c029ea 100644 --- a/lib/scripts/lyxknitr.R +++ b/lib/scripts/lyxknitr.R @@ -11,7 +11,7 @@ ## author Yihui Xie ## knitr is an alternative package to Sweave, and has more features -## and flexibility; see https://yihui.github.com/knitr +## and flexibility; see https://yihui.name/knitr ## Rscript $$s/scripts/lyxknitr.R $$p$$i $$p$$o $$e $$r ## $$p the path of the output (temp dir) @@ -31,18 +31,7 @@ options(encoding = .cmdargs[3]) ## can put your data files there and functions like read.table() can ## work correctly without specifying the full path setwd(.cmdargs[4]) +opts_knit$set(root.dir = getwd()) -## copy the Rnw file to the current working directory if it does not exist -.tmp.file = tempfile(); .rnw.file = basename(.cmdargs[1]) -.rnw.exists = file.exists(.rnw.file) -if (.rnw.exists) file.rename(.rnw.file, .tmp.file) -file.copy(.cmdargs[1], '.') ## run knit() to get .tex or .R -knit(.rnw.file, tangle = 'tangle' %in% .cmdargs) - -setwd(.cmdargs[4]) -## remove the copied .Rnw if it did not exist, otherwise move the original one back -if (.rnw.exists) file.rename(.tmp.file, .rnw.file) else unlink(.rnw.file) -file.rename(basename(.cmdargs[2]), .cmdargs[2]) # move .tex to the temp dir -rm(.tmp.file, .rnw.file, .rnw.exists) # clean up these variables - +knit(.cmdargs[1], output = .cmdargs[2], tangle = 'tangle' %in% .cmdargs) -- 1.7.9.5