我可以在 pkg/doc 文件夹中包含一些 PDF 以便该vignette
功能正常工作,但不存在相应的 Rnw、Rtex 等吗?
我正在考虑包含用 R 块编织的降价文本的幻灯片或文档,它们具有不同的构建过程,因此具有不同的文件扩展名。
编写 R 扩展指南建议应该可以包含在安装时无法构建的文档,但该vignette
功能似乎会查找具有特殊扩展名(Rnw、Rtex 等)的文件以及名为vignette.rds
.
任何提示表示赞赏。
几年前我问过这个问题,虽然 Fritz Leisch 接受了这个想法,但他还没有时间实施它。
(从我刚刚在 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:和
R.rsp
包装中关于非 Sweave 小插图的小插图从 R 3.0.0 开始,本机支持此功能,请参阅http://yihui.name/knitr/demo/vignette/。
用作小插图引擎的说明knitr
归结为:
- 添加
%\VignetteEngine{knitr::knitr}
到Rnw
源文档(注意你仍然需要%\VignetteIndexEntry{}
像以前一样)VignetteBuilder: knitr
在包说明文件中指定- 如果仅对小插图需要
Suggests: knitr
,则添加DESCRIPTION
knitr
另请参阅有关该主题的官方 R 文档。