8

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

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

编写 R 扩展指南建议应该可以包含在安装时无法构建的文档,但该vignette功能似乎会查找具有特殊扩展名(Rnw、Rtex 等)的文件以及名为vignette.rds.

任何提示表示赞赏。

4

3 回答 3

5

几年前我问过这个问题,虽然 Fritz Leisch 接受了这个想法,但他还没有时间实施它。

于 2011-07-09T13:47:57.390 回答
5

(从我刚刚在 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 文档,因为只有它们具有像标题这样的元数据。这计划很快就会改变。

...但我不知道“很快”是什么意思(我认为 2.14.0 发布大约需要 6 个月)

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

编辑2:和

于 2011-07-14T17:03:36.870 回答
5

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

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

  1. 添加%\VignetteEngine{knitr::knitr}Rnw源文档(注意你仍然需要%\VignetteIndexEntry{}像以前一样)
  2. VignetteBuilder: knitr在包说明文件中指定
  3. 如果仅对小插图需要Suggests: knitr,则添加DESCRIPTIONknitr

另请参阅有关该主题的官方 R 文档

于 2013-12-11T10:31:05.750 回答