knitr.Rmd渐晕图不会与渐晕图()一起出现
在我用R Studio开发的一个包中,我通过knitr.Rmd渐晕图不会与渐晕图()一起出现,r,packages,knitr,R,Packages,Knitr,在我用R Studio开发的一个包中,我通过devtools::use_vignette(“mydoc.Rnw”)创建vignette,它提供了一个标准的vignette头,如 --- title: "Title" author: "Michael Friendly" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Title} %\VignetteEn
devtools::use_vignette(“mydoc.Rnw”)
创建vignette,它提供了一个标准的vignette头,如
---
title: "Title"
author: "Michael Friendly"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Title}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
我已遵守和中的所有说明。vignettes列在包的CRAN页面上,但是在加载包的R会话中,它们似乎无法访问
> browseVignettes("matlib")
No vignettes found by browseVignettes("matlib")
> library(tools)
> names(vignetteEngine(package = 'matlib'))
Error in getEngine(name, package) :
None of packages ‘matlib’ have registered vignette engines
我知道其他带有knitr
-processed.Rmd vignette的包可以从包中访问,但我不明白为什么我的包不能访问。
少了什么
我的
vignettes/
目录只包含.Rmd文件(没有PDF),但这似乎与install\u github()
之类的函数在默认情况下从目录生成包时,devtools不会生成vignettes。安装软件包时,必须指定参数build\u vignettes=TRUE
。目前,如果您只使用RStudio按钮build&Reload
,则无法使用devtools构建渐晕图。您必须构建源代码包
,并在tarball上运行R CMD INSTALL
。或者在R控制台中运行devtools::install(build\u vignettes=TRUE)
。好吧,我发现一种黑魔法可以解决这种情况
从Configure Build Tools…
,当您单击Build&Reload
按钮时,RStudio允许我们自定义R CMD INSTALL
选项。在当前的实现中,它的行为类似于在包目录的父目录下运行R CMD INSTALL[options]pkg
。
事实证明,这些选项可以是任意字符串,甚至包括代码>,从而使我们能够运行bash命令
例如,我们可以指定-v;cd包装;cp vignettes/*html inst/doc;R CMD安装--无多拱--with-keep.source。;回声
通过这种方式,-v
取消RStudio的R CMD安装
。然后,我们可以将vignette/
中构建的html文件复制到inst/doc/
中,然后使用我们自己的R CMD install
安装软件包。(cd-pkg;
使我们在后续命令中多次不用键入包名。echo
将RStudio附加的包名置为空
我知道这个技巧有很多缺点,比如硬编码包名,如果包名在后面更改,那么很容易出错
使用它的风险自负
希望RStudio能很快拿出一个优雅的解决方案。在我这方面,使用devtools::install(build\u vignettes=TRUE)
可以解决vignettes问题:browseVignettes(“mypackage”)
可以正常工作。但每次我试图打开帮助文件?myfunction
,都会出现一条错误消息:
Error in fetch(key) : lazy-load database
'/Library/Frameworks/R.framework/Versions/3.6/Resources/library/mypackage/help/mypackage.rdb' is corrupt
在我看来,解决这两个问题最安全的方法是执行R CMD build mypackage
和R CMD INSTALL mypackage.1.0.tar.gz
您是否选中了配置构建工具中的使用roxygen生成vignette
框,并且在安装包时是否正在构建vignette?我现在有了使用roxygen生成vignette
框生成vignettes
复选框选中,并且构建和重新加载
现在在vignettes/
目录中生成HTML文件。但是,我仍然没有发现BrowseSignettes(“matlib”)的vignettes。关于这个过程的进一步问题:是否应该将vignettes/*.html
添加到.gitignore
或.Rbuildignore
?啊!我必须运行devtools::build\u vignettes()
。这将Vignette/*.html
文件移动到inst/doc
,并将inst/doc
添加到。gitignore
。Vignette是包的一部分,不应被忽略。构建的Vignette可以被忽略,因为它将在每个构建上重新构建。这将非常清楚地说明问题。在此基础上添加一些内容可能有用给@user101089好建议,我会的。