【问题标题】:submit an R package with CTAN dependencies to CRAN向 CRAN 提交具有 CTAN 依赖项的 R 包
【发布时间】: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 接受此提交。据我所知,有四种选择

  1. 按原样提交包并通过文档和说明文件的SystemRequirements 字段添加安装说明。
  2. 在我的 R 包中包含所有必要的乳胶包,并以某种方式使它们可用于客户端的乳胶编译器
  3. tinytex添加一个依赖,可以自动安装CTAN包
  4. 如果不满足依赖关系,在安装过程中抛出错误

到目前为止,我使用了选项 (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


    【解决方案1】:

    我对@9​​87654321@ 相当熟悉,并且通常没有针对 CRAN 等之外的外部依赖项的规定。

    也就是说,我通过根据需要从 GitHub 上下载预构建的库来扩展 CRAN。之后你可以为你的包建模。

    但我真正认为你应该做的是......在本地准备你的 pdf 小插图,然后让 R 包按原样“注入”它。如何做到这一点在this post by Mark 中有解释,我刚刚转换了我的RcppAnnoy 包来做到这一点。当然,YMMV。

    【讨论】:

    • 非常感谢。 tex 依赖项不仅是小插图所必需的,而且对于大多数包函数的使用也是必需的。我刚刚编辑了我的问题以使其更清楚。如果 CRAN 维护人员的测试环境无法解决这些依赖关系,我将不得不使用 \dontrun{} 来防止示例和单元测试调用 tex 编译器。您能否提供一个 github 永久链接来演示 CRAN 的“拉伸”?
    猜你喜欢
    • 2016-04-09
    • 2014-09-20
    • 2017-01-26
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2021-05-26
    相关资源
    最近更新 更多