[Rd] relative path to source files in vignette [a solution somehow]

Peter Ruckdeschel peter.ruckdeschel at web.de
Tue Oct 14 18:03:57 CEST 2008


Gabor Grothendieck schrieb:
> On Fri, Oct 10, 2008 at 7:06 PM, Peter Ruckdeschel
> <peter.ruckdeschel at web.de> wrote:
>   
[snip]
>> This could indeed be an option, but as noted in my reply to Robert, my
>> guess is that in the library where you install your packages to and which is
>> found with system.file(), you will no longer find the R source files but rather
>> some .rdb or .rdx file. At least this is what I found --- or is there some 
>> magic trick to get back the source files from this?
>>     
>
> Yes, that is what occurs. That's why it was suggested to copy it.
>
>
>   
Not sure whether this is helpful to anyone else out there, but
here is my solution:

I could not find a satisfactory automatic solution
%
(which should find the source folder[s] to my package[s]
 automatically and correspondingly, in R should fill string
 variables),
%
so I placed a README file into the  inst/doc folder where
I explain that to build / check / install my package[s] including
the building of the vignette, one either has to call R CMD from
the parent folder of the source folder to my package (distr)
or one has to define path(s) in a file myPATH.

In the preamble of my .Rnw file, I put

%--------------------------------------------------------------
% --- begin of code from newDistribution.Rnw in pkg distr --- %
%
<<setPath, results=tex, echo=FALSE>>=
if(file.exists("myPATH")){
   cat("\\def\\distrPATH{",readLines("myPATH")[1],"}\n",sep="")
   cat("\\def\\distrExPATH{",readLines("myPATH")[2],"}\n",sep="")
}else{
   cat("\\def\\distrPATH{../../../distr}\n",sep="")
   cat("\\def\\distrExPATH{../../../distrEx}\n",sep="")
}
@
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% define \lstinputlistingWithPath to be able to work with
% path information (parameter #2)
% so syntax for \lstinputlistingWithPath
%
%    \lstinputlistingWithPath[key=value-list]{<path>}{<file>}
%
% which then calls \lstinputlisting[key=value-list]{<path>/<file>}
%(but where <path> may be a macro which is expanded)
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\makeatletter
\def\lstinputlistingWithPath{\@ifnextchar[%
     {\@lstinputlistingWithPath}{\@lstinputlistingWithPath[]}}
\def\@lstinputlistingWithPath[#1]#2#3{%
    \def\@doLIstInput{\lstinputlisting[#1]}
    \expandafter\@doLIstInput\expandafter{#2/#3}
}
\makeatother
%
% --- end of code from newDistribution.Rnw in pkg distr --- %
%--------------------------------------------------------------

and in the .Rnw file I use

\lstinputlistingWithPath[firstline=<nn>, lastline = <nn>]%
         {\distrPATH}{R/<filename-of-myRsource>.R}

resp.

\lstinputlistingWithPath{\distrPATH}%
  {man/<filename-of-myRsource>.Rd}
 
to include some man-file.
>
> Perhaps you should just preprocess your Sweave files prior to the build.
> The brew package could be used, for example.
>   

I should have a look to it.

Thank you once again,
Peter



More information about the R-devel mailing list