R Markdown、Knitr、Pandoc、Bookdownの機能の間にはどのような関係がありますか?
具体的には、Rコード(eg.Rnw
または.Rmd
)が埋め込まれたマークアップドキュメントを最終出力(eg.pdf
または.html
)に変換する際の、これらのパッケージ間の「分業」とは何ですか?また、Knitrを使用してRMarkdownを処理する場合、rmarkdown
パッケージは何をし、どのように違いmarkdown package
ますか?
回答:
Pandocはドキュメントコンバータです。それは、次のような多くの他のフォーマットに異なるマークアップ形式の数へ変換することができる.doc
、.pdf
等
Pandocは、GUIのないコマンドラインツールです。これは、Rとは別の独立したソフトウェアです。ただし、rmarkdown
ドキュメントの変換に依存しているため、RStudioにバンドルされています。
Pandocは、ドキュメントを変換するだけでなく、基本のマークダウン言語に機能を追加して、より複雑な出力をサポートできるようにします。
Rマークダウンはマークダウンに基づいています:
Markdownは、HTMLや他の多くの形式に変換できるように設計されたプレーンテキスト形式の構文を備えた軽量マークアップ言語です。マークダウンファイルは、通常拡張子が付けられたプレーンテキストファイルです.md
。
HTMLやLaTeXのような他のマークアップ言語と同様に、Rから完全に独立しています。
明確に定義されたMarkdown標準はありません。これにより、さまざまなベンダーが独自の言語バリアントを作成して欠陥を修正したり、不足している機能を追加したりするため、断片化が発生しています。
markdown
.Rmd
ファイルをHTMLに変換するRパッケージです。これは、の前身でありrmarkdown
、はるかに多くの機能を提供します。使用は推奨されなくなりました。
R Markdownは、マークダウン構文の拡張です。Rマークダウンファイルは、通常ファイル拡張子が.Rmd
。のプレーンテキストファイルです。それらは、後で実行できる方法でRコードを埋め込むことができるマークダウン構文の拡張を使用して記述されています。
それらはrmarkdown
パッケージによって処理されることが期待されているため、Rマークダウンファイルの一部としてPandocマークダウン構文を使用することができます。これは、生のHTML / Latexやテーブルなどの追加機能を提供する元のマークダウン構文の拡張です。
Rパッケージrmarkdown
は、.Rmd
ファイルを処理してさまざまな形式に変換するライブラリです。
コア機能はあるrmarkdown::render
どのpandocの肩の上に立っています。この関数は、pandocを使用して、入力ファイルを指定された出力形式にレンダリングします。入力に編み物が必要な場合は、knitr::knit
pandocの前に呼び出されます。
RMarkdownパッケージの目的は、Pandocオプションをカスタマイズするための適度に優れたデフォルトとRフレンドリーなインターフェースを提供することです。。
RMarkdownファイルの上部に表示されるYAMLメタデータは、具体的にはrmarkdown::render
、ビルドプロセスをガイドするために、にオプションを渡すためのものです。
RMarkdownはマークダウン構文のみを扱うことに注意してください。変換したい場合.Rhtml
や.Rnw
ファイルを、あなたはに組み込まれた便利な機能を使用する必要がありますKnitr
など、knitr::knit2html
およびknitr:knit2pdf
Knitrは、コードが埋め込まれたプレーンテキストドキュメントを取得し、コードを実行して、結果をドキュメントに「編み込み」ます。
たとえば、それは変換します
.Rmd
)標準値下げファイルにファイル(.md
).Rnw
(のSweave)ににファイル.tex
形式。 .Rhtml
htmlへのファイル。コア関数はでknitr::knit
あり、デフォルトでは、これは入力ドキュメントを見て、それがどのタイプであるかを推測しようとします-Rnw、Rmdなど。
このコア関数は、次の3つの役割を実行します。-入力ドキュメントを調べ、ユーザーが評価するコードである部分を検出するソースパーサー。-このコードを評価するコードエバリュエーター-評価結果を生の出力タイプで解釈可能な形式でドキュメントに書き戻す出力レンダラー。たとえば、入力ファイルが、の.Rmd
場合、出力レンダリングはコード評価の出力を.md
フォーマットでマークアップします。
Knitrはないない文書フォーマット間の変換-そのような変換のよう.md
に.html
。ただし、他のライブラリを使用してこれを行うのに役立ついくつかの便利な関数を提供します。 パッケージを使用rmarkdown
している場合は、に置き換えられているため、この機能は無視してくださいrmarkdown::render
。
例はknitr:knit2pdf
次のとおりです。'入力RnwまたはRrstドキュメントを編成し、texi2pdfまたはrst2pdfを使用してPDFにコンパイルします。
潜在的な混乱の原因はknitr::knit2html
、「入力マークダウンソースを編成しmarkdown::markdownToHTML
、結果をHTMLに変換するために呼び出す便利な関数です」です。markdown
パッケージがパッケージに取って代わられた ため、これはレガシー機能になりましたrmarkdown
。このメモを参照してください。
ブックダウンパッケージはRMarkdownの上に構築されており、Markdown構文の単純さ、および複数のタイプの出力形式(PDF / HTML / Word /…)の可能性を継承しています。
複数ページのHTML出力、図/表/セクション/方程式の番号付けと相互参照、パーツ/付録の挿入、GitBookスタイル(https://www.gitbook.com)のインポートなどの機能を提供して、エレガントで魅力的なHTMLを作成します。本のページ。
knitr_opts
(私は常にそれが何と呼ばれるかを忘れています)、カスタムpandoc引数、追加のyamファイル、またはカスタムを介して、どのパラメーターを呼び出す必要があるかを推測する必要がありますpandocテンプレート...特にLaTeXをチェーンに追加すると、少しジャングルを感じることがあります。
pandoc
ステップがなく、魔法が少なく、混乱が少ない。確かに急なLaTeXの学習曲線です。私の意見では、Rmarkdownは、単純なデフォルトのものに満足しているときに最適です。しかし、微調整する必要があるとすぐに、複雑さが急速に高まります。