我目前正在研究将在几周内提交给 CRAN 的 R 包。该包需要一些乳胶包才能运行。这些乳胶包在 CTAN 上可用,并通过rmarkdown::latex_dependency()
.
这是我实际 knit_print 方法的概念。
#' @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
包含某些.sty
文件,inst/
这让我相信,(2)是正确的答案。但是,rticles
定义了自定义输出格式并且那些不必“安装”乳胶包,因为.sty
文件作为模板的一部分被复制到渲染目录。 - magick使用一个配置文件来阻止安装,以防(系统)依赖项不满足。它还会抛出一条信息性错误消息,指示客户端如何满足依赖关系。
- tinytex 包在提交时没有在 CRAN 上运行任何编译测试。我也不能让tinytex在appveyor上工作