【问题标题】:How do I produce R package vignettes in multiple formats?如何制作多种格式的 R 包插图?
【发布时间】:2015-07-03 21:45:20
【问题描述】:

我使用 knitrrmarkdown 为 R 包编写小插图。多亏了 pandoc 的魔力,可以轻松地将这些文档转换为各种格式。我想通过提供 HTML 和 PDF 的小插图来利用这一点。 rmarkdown 支持在文档元数据块中指定多种输出格式的参数。例如,我可能有这样的事情:

output:
  html_document:
    standalone: true
    smart: true
    normalize: true
    toc: true
    highlight: tango
    self-contained: true
    theme: cerulean
  pdf_document:
    toc: true
    highlight: tango
geometry: margin=2cm
documentclass: article
classoption: a4paper

在 R 命令行中,我可以使用 rmarkdown::render 轻松构建一个或两个输出文档。但是,在构建包时,仅使用首先列出的输出格式。我试图包含一个 Makefile,它通过包含类似于

的内容来构建两者
all: %.Rmd
    $(R_HOME)/bin/Rscript -e "rmarkdown::render('$*.Rmd', 'all')"

这是成功的,因为生成了所有输出文件,但其中只有一个被 R 识别为小插图。要获得包含在 docs/ 中的其他输出,必须将它们添加到 .install_extras时间>。虽然这确保了它们可以通过 HTML 索引访问,但它们与小插图分开列出,而且我认为它们不能从 R 中访问(通过vignette())。

有没有更好的方法(或任何自动化的方法)来做到这一点?

【问题讨论】:

  • 仅供参考,这与github.com/yihui/knitr/issues/1051是同一个问题
  • 感谢@Yihui。很高兴知道您正在调查它。你有机会调查吗?特别是它与 R CMD 检查的兼容性如何似乎是关于其可行性的一个重要问题。
  • 您可以尝试在您的 make 中包含行以从 html 切换到 pdf。生成小插图,使用sed从html切换到pdf,重新生成,再切换回来。
  • @Josh,问题在于 R 坚持每个小插图源文件都应该只生成一个输出文件。可以通过在 .install_extras 中列出它们来生成额外的输出,甚至将它们复制到 docs/,但它们不会被识别为这样的小插曲。
  • 你可以复制你的小插图。拥有您的原始输出 html,并创建一个 *.pdf.Rmd 版本。 Makefile 将是一个很好的地方。

标签: r knitr r-markdown pandoc


【解决方案1】:

两件事:

  1. 您可以“包含”公共内容并拥有两个具有不同标题的源文件,或者,

  2. 如果额外的小插图确实没有出现在索引中,请自己编写。从编写 R 扩展:“在安装时,包中所有小插图的 HTML 索引会自动从 \VignetteIndexEntry 语句创建,除非文件 index.html 存在于目录 inst/doc 中。该索引是从 HTML 帮助索引链接的包裹。”小插图索引条目也可能是让您可能同名的小插图被识别为不同的线索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多