【问题标题】:using rmarkdown as a vignette engine使用 rmarkdown 作为小插图引擎
【发布时间】:2014-07-21 09:40:43
【问题描述】:

我在 R Markdown 中写了一些小插曲,目的是让它们 使用 RStudio 的 rmarkdown 构建 包裹。我知道rmarkdown::render是我们用来转换的函数 .rmd 到 .html(或任何其他格式),但是,当我放置

<!--
%\VignetteEnginer{rmarkdown::render}
%\VignetteIndexEntry{some test title}
-->

在我的 .rmd 的序言中(以及我的 Suggest 字段中的 knitrrmarkdown 描述,以及 VignetteBuilder 字段中的rmarkdown)我的小插图 不编译。

有没有人设法让rmarkdown 充当小插图制作者?

【问题讨论】:

    标签: r rstudio r-markdown


    【解决方案1】:

    取自@Ben 的回答(以及下面的 cmets),knitr 注册了一个访问 rmarkdown 的小插图引擎(如果已安装)并且

    <!--
    %\VignetteEngine{knitr::rmarkdown}
    %\VignetteIndexEntry{Supplementary materials}
    -->
    

    是我们如何注册它的示例。但是,为了充分利用rmarkdown(即将.Rmd 转换为.html 并保留.Rmd 中定义的任何样式),您必须将代码sn-p 放在上面BELOW“rmarkdown 序言”。例如,.Rmd 的顶部应该是这样的

    ---
    Title: "Supplementary Materials"
    output:
      html_document:
        theme: flatly
    ---
    <!--
    %\VignetteEngine{knitr::rmarkdown}
    %\VignetteIndexEntry{Supplementary Materials}
    -->
    

    当然,您还需要确保已正确创建您的说明文件以包含rmarkdownknitr。最简单的方法是使用

    Suggests: knitr, rmarkdown
    VignetteBuilder: knitr
    

    【讨论】:

    • 我对此感到很困惑,因为knitr::rmarkdown 确实不存在。我在调试模式下逐行提出了相同的解决方案,但不明白
    【解决方案2】:

    为什么要使用rmarkdown 而不是knitr?乍一看,您的问题在rmarkdownknitr 之间似乎有点混淆。澄清一下:

    rmarkdown 是一种“基于 knitr 和 pandoc”的“创作格式”。当我们运行 rmarkdown::render 时,我们正在调用 knitr 和/或 pandoc。

    knitr 是将 rmarkdown 转换为 html/PDF/docx 的引擎。这就是执行R 代码以获取输出和绘图等的内容。

    knitr 包作者already mentioned 表示,“因为 rmarkdown 包还没有在 CRAN 上,所以你现在不能使用小插图引擎 knitr::rmarkdown”。如果你等不及可以register your own engine,但这看起来相当复杂。

    我想你想要的是:

    这在您的 Rmd 文档的顶部:

    <!--
    %\VignetteEngine{knitr::rmarkdown}
    %\VignetteIndexEntry{Supplementary materials}
    -->
    

    这在你的DESCRIPTION 文件中:

    VignetteBuilder: knitr
    Suggests:
        knitr
    

    如需完整示例,请查看tidyr package,这里是DESCRIPTION,这里是rmarkdown vignette(向Andrie 致敬,让我知道这一点)。

    如果您想从rmarkdown 获得您无法从knitr 获得的特定内容(自定义样式等),那么您应该将其放在一个新问题中。

    【讨论】:

    • 这使用knitr 来编译小插图,而不是rmarkdown(上面链接的RStudio 包)...
    • 我对我的回答做了一些修改,看来你可能需要问一个更具体的问题。
    • 我想,在一天结束的时候,我想明确地使用rmarkdown 注册一个引擎。但是,查看knitr 如何注册其引擎,实际上似乎如果存在rmarkdownknitr::rmarkdown 将在其小插图构建例程期间调用该包。现在,唯一让我感到困惑的是,为什么我的小插图在编译时会失去样式......
    • 是的,这是一个关于文档样式的好问题。你能用一个独立的例子来问它作为一个新问题吗?这将吸引更多的关注,并希望得到一个好的答案。
    • 事实证明,如果您确保将降价序言放在 小插曲序言之前,它们不会失去样式。我会解释这是一个单独的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多