r - 将具有 CTAN 依赖项的 R 包提交给 CRAN

标签 r latex packaging cran external-dependencies

我目前正在开发一个 R 包,该包将在几周内提交给 CRAN。该包需要一些 latex 包才能运行。这些 Latex 包可在 CTAN 上找到,并通过 rmarkdown::latex_dependency() 注入(inject)到 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 包中包含所有必需的 Latex 包,并以某种方式使它们可供客户端的 Latex 编译器使用
  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 提交仅产生有关 C 和 C++ 依赖项的信息,这对我的事业没有帮助。
  • 查看一些源代码发现articles直接在inst/中包含某些.sty文件,这让我相信,(2 )是正确答案。但是,文章定义了自定义输出格式,并且不必“安装” latex 包,因为 .sty 文件作为模板的一部分复制到渲染目录.
  • magick使用配置文件,在不满足(系统)依赖性的情况下阻止安装。它还会抛出一条信息丰富的错误消息,指示客户端如何满足依赖关系。
  • tinytex 包在提交时没有在 CRAN 上运行任何编译测试。我也无法让tinytex在appveyor上工作

最佳答案

我对CRAN Repository Policy相当熟悉并且通常不提供 CRAN 等的外部依赖

也就是说,我根据需要从 GitHub 下载预构建的库,对 CRAN 进行了一些扩展。之后您可以为您的包建模。

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

关于r - 将具有 CTAN 依赖项的 R 包提交给 CRAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56300873/

相关文章:

python - 四开 pdf 输出文档中的代码换行

java - 打包java文件

xml - TargetDeviceFamily 无法识别

python - 如何从子包中访问 'global'变量?

r - 如何忽略 _bookdown.yml 以使用自己的 YAML header 呈现章节?

r - 使用 `browser()` 时如何从命令行使用 R 的 `Rscript` 函数

latex - LaTeX 中的词汇表包和脚注

r - 如何从R中的矩阵列表中的每个矩阵中删除列?

r - 通过 twitteR 包获取的推文编码

latex - Sublime 文本构建系统 - 如何自动打开 pdf