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 mypackage
和 R CMD INSTALL mypackage.1.0.tar.gz
。
在我使用 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 mypackage
和 R CMD INSTALL mypackage.1.0.tar.gz
。