【发布时间】:2019-05-27 18:47:42
【问题描述】:
我目前正在开发一个 R 包,该包将在几周内提交给 CRAN。该包需要一些乳胶包才能运行。这些乳胶包在 CTAN 上可用,并通过rmarkdown::latex_dependency() 注入到 RMarkdown 文档的序言中。
这是我actual knit_print method的概念。
#' @export
knit_print.my_class <- function(obj, ...) {
knitr::raw_latex(
to_latex(obj),
meta = list(
rmakrdown::latex_dependency(
"ragged2e"
)
)
)
}
我的问题是如何以某种方式指定这些依赖项,以便 CRAN 接受此提交。据我所知,有四种选择
- 按原样提交包并通过文档和说明文件的
SystemRequirements字段添加安装说明。 - 在我的 R 包中包含所有必要的乳胶包,并以某种方式使它们可用于客户端的乳胶编译器
- 给tinytex添加一个依赖,可以自动安装CTAN包
- 如果不满足依赖关系,在安装过程中抛出错误
到目前为止,我使用了选项 (1)。
我对 travis (ubuntu 14.04) 的配置是
apt install texlive-latex-extra
tlmgr install standalone
对于 appveyor (Windows Server 2012 R2 x64),我解压缩 miktex-portable.exe 并将其添加到 PATH。然后我得到以下包。
mpm --install=standalone
mpm --install=ms
mpm --install=pbox
mpm --install=xcolor
mpm --install=colortbl
mpm --install=mptopdf
到目前为止我发现了什么
- 使用 google 搜索外部依赖项和 CRAN sumbissions 仅产生有关 C 和 C++ 依赖项的信息,这对我的事业没有帮助。
- 查看一些源代码发现
rticles直接在inst/中包含某些.sty文件,这让我相信,(2) 是正确答案。但是,rticles定义了自定义输出格式,并且由于.sty文件作为模板的一部分复制到渲染目录,因此不必“安装”乳胶包。 - magick 使用一个配置文件来阻止安装,以防(系统)依赖项不满足。它还会抛出一条信息丰富的错误消息,指示客户端如何满足依赖关系。
- tinytex 包在提交时未在 CRAN 上运行任何编译测试。我也无法让 tinytex 在 appveyor 上运行
【问题讨论】:
标签: r latex packaging cran external-dependencies