виньетки.rmd не появляются с виньеткой()
В пакете, который я разрабатываю с помощью R Studio, я создаю виньетки через devtools::use_vignette("mydoc.Rnw")
, который дает стандартный заголовок виньетки, например
---
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/ и http://r-pkgs.had.co.nz/vignettes.html. Виньеток перечислены на странице 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, но не могут понять, почему мои нет. Чего не хватает?
Мой каталог vignettes vignettes/
содержит только файлы.Rmd (без файлов PDF), но это похоже на, например, https://github.com/yihui/knitr/tree/master/vignettes.
Ответы
Ответ 1
Примечание devtools не создает виньетки по умолчанию, когда devtools::install()
(то же самое для некоторых функций install_*
таких как install_github()
), из каталога. При установке пакета необходимо указать аргумент build_vignettes = TRUE
. В настоящее время нет способа создать виньетки с помощью devtools, если вы просто используете кнопку RStudio Build & Reload
. Вам нужно Build Source Package
и запустить R CMD INSTALL
на tarball. Или запустите devtools::install(build_vignettes = TRUE)
в консоли R.
Ответ 2
Ну, я нахожу темную магию, которая может обойти эту ситуацию.
Из Configure Build Tools...
, RStudio позволяет нам настраивать параметры для R CMD INSTALL
при нажатии кнопки " Build & Reload
. В текущей реализации он ведет себя как запуск R CMD INSTALL [options] pkg
в родительском каталоге каталога пакетов. Оказывается, что эти параметры могут быть произвольными строками, в том числе ;
, что позволяет нам запускать команды bash.
Например, мы можем указать -v; cd pkg; cp vignettes/*html inst/doc; R CMD INSTALL --no-multiarch --with-keep.source.; echo
-v; cd pkg; cp vignettes/*html inst/doc; R CMD INSTALL --no-multiarch --with-keep.source.; echo
Таким образом, -v
аннулирует RStudio R CMD INSTALL
. Затем мы можем скопировать построенные html файлы в vignette/
в inst/doc/
до того, как мы установим пакет, используя наш собственный R CMD INSTALL
. (cd pkg;
освобождает нас от имени типа пакета несколько раз в последующих командах. echo
аннулирует имя пакета, добавленное RStudio.
Я знаю, что в этом трюке есть много недостатков, таких как имя пакета жесткого кодирования, которое подвержено ошибкам, если имя пакета изменено последним.
Используйте его на свой страх и риск.
Надежда RStudio скоро выйдет из элегантного решения.