knitr .Rmd 小插图不会与小插图一起出现()

knitr .Rmd vignettes do not appear with vignette()

在我使用 R Studio 开发的包中,我通过 devtools::use_vignette("mydoc.Rnw") 创建了小插图,它提供了一个标准小插图 header,例如

---
title: "Title"
author: "Michael Friendly"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Title}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

我已按照 http://yihui.name/knitr/demo/vignette/ and http://r-pkgs.had.co.nz/vignettes.html 中的所有说明进行操作。小插图 列在包的 CRAN 页面上,但在加载包的 R session 中似乎无法访问它们。

 > 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 小插图的包可以从包中访问,但无法弄清楚为什么我的不行。 什么东西少了?

我的 vignettes/ 目录只包含 .Rmd 文件(没有 PDF),但这似乎与 https://github.com/yihui/knitr/tree/master/vignettes.

注意 devtools 在您 devtools::install()(对于某些 install_* 函数,如 install_github())一个包时,默认情况下不会构建小插曲从一个目录。安装软件包时必须指定参数 build_vignettes = TRUE。如果您只使用 RStudio 按钮 Build & Reload,目前无法使用 devtools 构建小插图。您必须 Build Source Package 和 运行 R CMD INSTALL 在 tarball 上。或 运行 devtools::install(build_vignettes = TRUE) 在 R 控制台中。

好吧,我找到了可以解决这种情况的黑魔法。

Configure Build Tools... 开始,RStudio 允许我们在您单击 Build & Reload 按钮时为 R CMD INSTALL 自定义选项。在当前的实现中,它的行为类似于包目录的 parent 目录中的 运行ning R CMD INSTALL [options] pkg。 事实证明,这些选项可以是任意字符串,甚至包括 ;,从而使我们能够使用 运行 bash 命令。

例如,我们可以指定-v; cd pkg; cp vignettes/*html inst/doc; R CMD INSTALL --no-multiarch --with-keep.source .; echo

这样,-v 使 RStudio 的 R CMD INSTALL 无效。然后我们可以在使用我们自己的 R CMD INSTALL 安装软件包之前,将 vignette/ 中构建的 html 文件复制到 inst/doc/。 (cd pkg; 使我们免于在后续命令中多次键入包名。echo 使 RStudio 附加的包名无效。

我知道这个技巧有很多弊端,比如hard-coding包名后面改包名容易出错。

Use it at your own risk.

希望RStudio早日出一个优雅的解决方案。

就我而言,使用 devtools::install(build_vignettes = TRUE) 可以解决小插曲问题: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 mypackageR CMD INSTALL mypackage.1.0.tar.gz