除了小插图之外,我希望在我的软件包中添加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)
答案 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))
}