简体   繁体   中英

Adding additional documentation to a package in R

Aside from a vignette, I wish to add an additional document as PDF to my package. I can, of course, copy it to the inst/doc directory and it will then be included in the package documentation.

However, I would like to make it easy for the user to display this file. The authors of the edgeR package decided to do the following: the main users manual is distributed as PDF (and is not a regular vignette), and the authors include a function called edgeRUsersGuide() which shows the PDF by means of the following code:

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)
}

It appears to work. Do you think it is a reasonable approach?

Or should one use something else? Potentially, the following code would also work and be more robust:

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

My solution was to ape the code in 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))
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM