Did you look at file.path()?

R. Mark Sharp, Ph.D.
Director of Primate Records Database
Southwest National Primate Research Center
Texas Biomedical Research Institute
P.O. Box 760549
San Antonio, TX 78245-0549
Telephone: (210)258-9476
e-mail: msh...@txbiomed.org







> On Oct 31, 2015, at 3:28 PM, Green Stone <greenstone1...@gmail.com> wrote:
> 
> I am writing an R package that generates a .pdf file for users that outputs
> summarizations of data. I have a .Rnw script in the package (here, my MWE
> of it is called test.Rnw). The user can do:
> 
> knit2pdf("test.Rnw", clean=T)
> 
> This makes the process easy for them, because it automatically creates the
> .pdf file from the .tex file, and it erases unnecessary files for them
> (.aux and .log, for example). It also stores any images into a temporary
> directory (using tempdir()), which will then be erased routinely by the
> system after they have been incorporated into the .tex and .pdf file. This
> means they do not have to erase image files either.
> 
> Below is my test.Rnw MWE:
> 
> \documentclass[nohyper]{tufte-handout}
> \usepackage{tabularx}
> \usepackage{longtable}
> 
> \setcaptionfont{% changes caption font characteristics
>  \normalfont\footnotesize
>  \color{black}% <-- set color here}
> 
> \begin{document}
> <<setup, echo=FALSE>>=
> library(knitr)
> library(xtable)
> library(ggplot2)# Specify directory for figure output in a temporary directory
> temppath <- tempdir()
> opts_chunk$set(fig.path = temppath)@
> 
>  <<diamondData, echo=FALSE, fig.env = "marginfigure",
> out.width="0.95\\linewidth", fig.cap = "The diamond dataset has
> varibles depth and price.",fig.lp="mar:">>=
>  print(qplot(depth,price,data=diamonds))@
> 
>  <<echo=FALSE,results='asis'>>=
>  myDF <- data.frame(a = rnorm(1:10), b = letters[1:10])
> print(xtable(myDF, caption= 'This data frame shows ten random
> variables from the distribution and a corresponding letter',
> label='tab:dataFrame'), floating = FALSE, tabular.environment =
> "longtable", include.rownames=FALSE)@
> 
>  Figure \ref{mar:diamondData} shows the diamonds data set, with the
> variables price and depth.Table \ref{tab:dataFrame} shows letters a through j
> corresponding to a random variable from a normal distribution.
> 
> \end{document}
> 
> I should note that, in reality, there is another .Rnw file in my package
> that calls the test.Rnw file via:
> 
> knit2pdf("/inst/Rnw/test.Rnw","/path/test.tex",clean=T)
> 
> In any case, I am trying to get this package ready to be submitted to CRAN
> and have run across two problems:
> 
> 1) The more perplexing question first: The MWE code above seems to work on
> Mac Systems, but does not seem to work on Windows Systems! On Windows, the
> .pdf file that is generated does not contain the images. After
> troubleshooting, I think I have figured out the problem, but still cannot
> find a solution.
> 
> Basically, on Windows, it seems that the tempdir() command will create a
> pathway with double back-slashes, such as \this\is\myPath. Then, in the
> .tex file, the pathway to the temporary directory (that contains the
> images) are single back-slashes, such as \this\is\myPath. However, these
> should be single forward-slashes, such as /this/is/myPath.
> 
> Indeed, if I manually the change the backslashes to forward slashes in the
> .tex file in Windows, then I can successfully convert it to .pdf file that
> successfully contains the images.
> 
> I am unsure how to solve this in my syntax, however. If I simply do
> something like:
> 
> # Specify directory for figure output in a temporary directory
> temppath <- tempdir()
> gsub("\\\\", "/", temppath)
> 
> Then the images cannot be stored into the pathway on the Windows in the
> first place, even if the .tex file will contain the correct single forward
> slashes needed.
> 
> 2) I am wondering if it would acceptable for me to, in my other .Rnw file,
> add a second line to call:
> 
> knit2pdf("/inst/Rnw/test.Rnw","/path/test.tex",clean=T)
> system(sprintf("%s", paste0("rm -r ", "/path/myFile.tex")))
> 
> So that the .tex file can also be automatically erased. I am trying to
> confirm that such syntax would be acceptable by CRAN standards, as it does
> involve erasing a file from the user's computer (which could seem like
> dangerous/malware), although it points specifically at the .tex file it
> just generated, and so it should not be deleting anything important for
> them.
> 
> *Note: I am by default erasing all intermediary files so the user only
> deals with the .pdf file. However, I am still allowing users the option to
> go against this default, and keep these intermediary files, if needed.
> 
> I am grateful to hear any suggestions...
> 
>       [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to