R Markdown,Knitr,Pandoc和Bookdown之间的关系

问题描述 投票:65回答:1

R Markdown,Knitr,Pandoc和Bookdown的功能之间有什么关系?

具体来说,在将标记文档与嵌入式R代码(例如.Rnw.Rmd)转换为最终输出(例如.pdf.html)时,这些包之间的“分工”是什么?如果Knitr用于处理RMarkdown,rmarkdown包有什么作用,它与markdown package有什么不同?

r knitr r-markdown pandoc bookdown
1个回答
91
投票

Pandoc

Pandoc是一个文档转换器。它可以从许多不同的标记格式转换为许多其他格式,例如.doc.pdf等。

Pandoc是一个没有GUI的命令行工具。它是一个独立的软件,与R分开。但是,它与R Studio捆绑在一起,因为rmarkdown依赖它进行文档转换。

Pandoc不仅可以转换文档,还可以在基本降价语言之上添加功能,使其能够支持更复杂的输出。

R Markdown

R Markdown基于降价:

Markdown (markup language)

Markdown是一种轻量级标记语言,设计了纯文本格式语法,因此可以将其转换为HTML和许多其他格式。 markdown文件是纯文本文件,通常给出扩展名.md

像其他标记语言一样,如HTML和Latex,它完全独立于R.

没有明确定义的Markdown标准。这导致了碎片化,因为不同的供应商编写自己的语言变体来纠正缺陷或添加缺失的功能。

Markdown (R package)

markdown是一个R包,它将.Rmd文件转换为HTML。它是rmarkdown的前身,它提供了更多的功能。不再推荐使用。

R Markdown (markup language)

R Markdown是markdown语法的扩展。 R Markdown文件是纯文本文件,通常具有文件扩展名.Rmd。它们使用markdown语法的扩展编写,使R代码能够以稍后执行的方式嵌入到它们中。

因为它们应该由rmarkdown包处理,所以可以使用Pandoc markdown syntax作为R markdown文件的一部分。这是原始markdown语法的扩展,提供了原始HTML / Latex和表等附加功能。

R Markdown (package)

R包rmarkdown是一个库,它将.Rmd文件处理并转换成许多不同的格式。

核心功能是rmarkdown::renderstands on the shoulders of pandoc。这个功能'renders the input file to the specified output format using pandoc. If the input requires knitting then knitr::knit is called prior to pandoc.

RMarkdown套餐的目标只是to provide reasonably good defaults and an R-friendly interface to customize Pandoc options.

在RMarkdown文件顶部看到的YAML元数据特定于将选项传递给rmarkdown::render,以指导构建过程。

请注意,RMarkdown仅处理markdown语法。如果你想转换.Rhtml.Rnw文件,你应该使用Knitr内置的便利函数,例如knitr::knit2htmlknitr:knit2pdf

Knitr

Knitr采用带有嵌入代码的纯文本文档,执行代码并将结果“编织”回文档。

例如,它转换

核心功能是knitr::knit,默认情况下,这将查看输入文档并尝试猜测它是什么类型 - Rnw,Rmd等。

此核心功能执行三个角色: - 源解析器,它查看输入文档并检测哪些部分是用户想要评估的代码。 - 代码评估程序,用于评估此代码 - 输出呈现器,它以可以由原始输出类型解释的格式将评估结果写回文档。例如,如果输入文件是.Rmd,则输出渲染将以.md格式标记代码评估的输出。

Converting between document formats

Knitr不会在文档格式之间进行转换 - 例如将.md转换为.html。但是,它确实提供了一些便利功能来帮助您使用其他库来执行此操作。如果您使用的是rmarkdown软件包,则应忽略此功能,因为它已被rmarkdown::render取代。

一个例子是knitr:knit2pdf,它将:'Knit the input Rnw or Rrst document, and compile to PDF using texi2pdf or rst2pdf'.

knitr::knit2html的潜在混淆来源"is a convenience function to knit the input markdown source and call markdown::markdownToHTML to convert the result to HTML."这是现在的遗留功能,因为markdown包被rmarkdown包取代了。见this note

Bookdown

bookdown软件包基于R Markdown构建,继承了Markdown语法的简单性,以及多种输出格式(PDF / HTML / Word / ...)的可能性。

它提供多页面HTML输出,编号和交叉引用图形/表格/截面/方程式,插入部分/附录以及导入GitBook样式(https://www.gitbook.com)等功能,以创建优雅且吸引人的HTML书页。

© www.soinside.com 2019 - 2024. All rights reserved.