R - 不是由Sweave制作的Vignettes可能吗?

时间:2011-07-09 12:37:44

标签: r packaging vignette

我可以在pkg / doc文件夹中包含一些PDF,以便vignette功能正常工作,但不存在相应的Rnw,Rtex等吗?

我正在考虑包含用R块编织的降价文本的幻灯片或文档,它们具有不同的构建过程,因此具有不同的文件扩展名。

写R扩展指南建议应该可以包含在安装时无法构建的文档,但vignette函数似乎寻找具有特殊扩展名的文件(Rnw,Rtex等)和也适用于名为vignette.rds的文件。

任何提示都表示赞赏。

3 个答案:

答案 0 :(得分:5)

几年前我问过这个问题,虽然Fritz Leisch对这个想法很感兴趣,但他还没有时间去实现它。

答案 1 :(得分:5)

(从response I just left on R-help交叉发布:)

作为解决方法,您可以在程序包中包含自己的xvignette函数:请参阅下文。 它不会显示索引,但它会选择您包含在inst/doc目录中的任何适当命名的文件 包...

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)
 }

您必须以某种方式提醒您的软件包用户注意这个替代文档存在的事实 - 可能在软件包本身的帮助文件中。

您可以使用您的软件包名称填写上面pkg的默认值,以方便用户:我考虑使用getPackageName(environment(xvignette))的某些变体自动执行此操作,但这似乎也是如此复杂......

Brian Ripley在回答问题时也提到:

  

目前,vignette()意味着Sweave文档,只有他们拥有   标题等元数据。计划很快改变。

...但我不知道“很快”意味着什么(我认为这将是大约6个月,直到2.14.0出来)

编辑http://article.gmane.org/gmane.comp.lang.r.devel/28449详细介绍了另一种解决方法(创建包含现有PDF文件的虚拟小插图)

编辑2 :和

答案 2 :(得分:5)

从R 3.0.0开始本身支持此功能,请参阅http://yihui.name/knitr/demo/vignette/

使用knitr作为插图引擎的说明归结为:

  
      
  1. %\VignetteEngine{knitr::knitr}添加到Rnw源文档中(请注意,您仍然需要%\VignetteIndexEntry{}
  2.   
  3. 在包描述文件中指定VignetteBuilder: knitr
  4.   
  5. Suggests: knitr中添加DESCRIPTION,如果仅需要knitr来插件
  6.   

另请参阅该主题的official R documentation