在R中向包中添加其他文档

时间:2018-03-21 14:04:18

标签: r pdf documentation

除了小插图之外,我希望在我的软件包中添加PDF格式的附加文档。当然,我可以将它复制到inst / doc目录,然后它将包含在包文档中。

但是,我想让用户轻松显示此文件。 edgeR包的作者决定执行以下操作:主要用户手册以PDF格式分发(并不是常规插图),作者包含一个名为edgeRUsersGuide()的函数,它通过以下方式显示PDF代码:

edgeRUsersGuide <- function (view = TRUE) {
    f <- system.file("doc", "edgeRUsersGuide.pdf", package = "edgeR")
    if (view) {
        if (.Platform$OS.type == "windows") 
            shell.exec(f)
        else system(paste(Sys.getenv("R_PDFVIEWER"), f, "&"))
    }
    return(f)
}

似乎有效。你认为这是一种合理的方法吗?

或者应该使用别的东西?潜在地,以下代码也可以工作并且更加健壮:

z <- list(PDF="edgeR.pdf", Dir=system.file(package="edgeR"))
class(z) <- "vignette"
return(z)

1 个答案:

答案 0 :(得分:0)

我的解决方案是在utils:::print.vignette()

中模仿代码
function(docfile) {

  ## code inspired by tools:::print.vignette
  pdfviewer <- getOption("pdfviewer")

  f <- system.file("doc", docfile, package = "tmod")
  if(identical(pdfviewer, "false")) 
    stop(sprintf("Cannot display the file %s", f))

  if (.Platform$OS.type == "windows" && 
      identical(pdfviewer, file.path(R.home("bin"), "open.exe"))) {
    shell.exec(f)
  }  else {
    system2(pdfviewer, shQuote(f), wait = FALSE)
  }

  return(invisible(f))
}