[Rd] Creating package Vignette

Ben Bolker bbolker at gmail.com
Thu Jul 14 19:00:08 CEST 2011


Prof Brian Ripley <ripley <at> stats.ox.ac.uk> writes:

> 
> It depends what you mean by 'vignette': the R docs have been unclear 
> (but R >= 2.13.0 are more consistent).  In most cases a 'vignette' is 
> an Sweave document, the vignette source being the .Rnw file, and the 
> vignette PDF the processed .pdf file.
> 
> At present vignette() means Sweave documents, as only they have 
> metadata like titles.  This is planned to be changed soon.
> 
> On Thu, 14 Jul 2011, Nipesh Bajaj wrote:
> 
> > Hi all, I was trying to create some vignette files for my newly
> > developed package, however wondering whether there could be any
> > simpler way to do so. In writing R extension it is advised to go
> > through Sweave route, however I have already got a big pdf file and
> > want to use this as package vignette.
> >
> > So far I have manually created the inst/doc folder in the main package
> > skeleton, and put that file into this, which is not working by calling
> > "vignette(file_name)" after I build  and load the package. I am
> 
> file_name is not an argument to vignette(): it is 'topic'.  And topics 
> are normally file basenames (without any extension), not file names.
> 
> > getting following error without opening that pdf file: "vignette
> > 'file_name' *not* found"
> >
> > So I like to know, is there any way to use any arbitrary pdf file as 
> > vignette?
> 
> By definition, no.
> 
> >
> > Any suggestion is highly appreciated.

  One possibility: as a workaround, you could include your
own "xvignette" function in your package: see below.
It won't show you indices, but it will pick up any appropriately
named file that you include in the inst/doc directory of your
package ...

xvignette <- function(vname,pkg,ext="pdf") {
   vname <- paste(vname,ext,sep=".")
   fn <- system.file("doc",vname,package=pkg)
   if (nchar(fn)==0) stop("file not found")
   utils:::print.vignette(list(pdf=fn))
   invisible(fn)
 }

  You'll have to somehow alert your package users to the
fact that this alternative documentation exists -- perhaps in the help
package for the package itself.

  You might fill in the default value of "pkg" above with your
package name to make it easier on the user: I thought about
using some version of getPackageName(environment(xvignette))
to do it automatically, but that seems too complicated ...



More information about the R-devel mailing list