我可以在pkg / doc文件夹中包含一些PDF,以便vignette
功能正常工作,但不存在相应的Rnw,Rtex等吗?
我正在考虑包含用R块编织的降价文本的幻灯片或文档,它们具有不同的构建过程,因此具有不同的文件扩展名。
写R扩展指南建议应该可以包含在安装时无法构建的文档,但vignette
函数似乎寻找具有特殊扩展名的文件(Rnw,Rtex等)和也适用于名为vignette.rds
的文件。
任何提示都表示赞赏。
答案 0 :(得分:5)
答案 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 :和
R.rsp
包的答案 2 :(得分:5)
从R 3.0.0开始本身支持此功能,请参阅http://yihui.name/knitr/demo/vignette/。
使用knitr
作为插图引擎的说明归结为:
- 将
%\VignetteEngine{knitr::knitr}
添加到Rnw
源文档中(请注意,您仍然需要%\VignetteIndexEntry{}
)- 在包描述文件中指定
VignetteBuilder: knitr
- 在
醇>Suggests: knitr
中添加DESCRIPTION
,如果仅需要knitr
来插件
另请参阅该主题的official R documentation。