knitr.Rmd渐晕图不会与渐晕图()一起出现

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

在我用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}
  %\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好建议,我会的。