Отношения между R Markdown, Knitr, Pandoc и Bookdown

какова связь между функциональностью R Markdown, Knitr, Pandoc и Bookdown?

в частности, что такое "разделение труда" между этими пакетами при преобразовании документов разметки со встроенным кодом R (например,.Rnw или .Rmd) в конечные результаты (например,.pdf или .html)? И если Knitr используется для обработки RMarkdown, что делает rmarkdown пакет do и как он отличается от markdown package?

1 ответов


Pandoc

Pandoc-конвертер документов. Он может конвертировать из нескольких различных форматов разметки во многие другие форматы, такие как .doc, .pdf etc.

Pandoc-это инструмент командной строки без GUI. Это независимая часть программного обеспечения, отдельная от R. Однако, она поставляется в комплекте с R Studio, потому что rmarkdown полагается на него для преобразования документов.

Pandoc не только преобразует документы, но и добавляет функциональность поверх базовый язык markdown, позволяющий поддерживать более сложные результаты.

R Markdown

R Markdown основан на markdown:

Markdown (язык разметки)

Markdown-это легкий язык разметки с синтаксисом форматирования обычного текста, предназначенный для преобразования в HTML и многие другие форматы. Файл markdown-это обычный текстовый файл, который обычно имеет расширение .md.

как и другие языки разметки, такие как HTML и Latex, он полностью независим от R.

нет четко определенного стандарта Markdown. Это привело к фрагментации, поскольку разные поставщики пишут свои собственные варианты языка для исправления недостатков или добавления отсутствующих функций.

Markdown (R пакет)

markdown является пакетом R, который преобразует .Rmd файлы в HTML. Это предшественник rmarkdown, который предлагает большую функциональность. Это не более длиной порекомендованный для пользы.

R Markdown (язык разметки)

R Markdown является расширением синтаксиса markdown. R Markdown файлы представляют собой текстовые файлы, которые обычно имеют расширение файла .Rmd. Они написаны с использованием расширения синтаксиса markdown, которое позволяет встроить в них код R способом, который может быть выполнен позже.

потому что они, как ожидается, будут обработаны rmarkdown пакет, можно использовать Pandoc синтаксис markdown как часть файла уценки R. Это расширение исходного синтаксиса markdown, которое предоставляет дополнительные функции, такие как raw HTML/Latex и таблицы.

R Markdown (пакет)

пакет R rmarkdown - это библиотека, которая обрабатывает и преобразует .Rmd файлы в различные форматы.

основные функции rmarkdown::render, который стоит на плечах pandoc. Эта функция ' входной файл в указанный выходной формат с помощью pandoc. Если вход требует вязания, то knitr::knit вызывается до pandoc.

цель пакета RMarkdown просто чтобы обеспечить разумно хорошие значения по умолчанию и R-дружественный интерфейс для настройки параметров Pandoc..

метаданные YAML, видимые в верхней части файлов RMarkdown, специально передаются в rmarkdown::render, чтобы направлять процесс сборки.

обратите внимание, что RMarkdown только синтаксис Markdown. Если вы хотите преобразовать .Rhtml или .Rnw файл, вы должны использовать функции удобства, встроенные в Knitr, например knitr::knit2html и knitr:knit2pdf

Knitr

Knitr берет простой текстовый документ со встроенным кодом, выполняет код и "вяжет" результаты обратно в документ.

например, он преобразует

основные функции knitr::knit и по умолчанию это будет смотреть на входной документ и пытаться угадать, какой это тип - Rnw,Rmd и т. д.

эта основная функция выполняет три роли: - Исходный парсер, который смотрит на входной документ и определяет, какие части кода что пользователь хочет быть оцененным. - Вычислитель кода, который оценивает этот код - Выходной визуализатор, который записывает результаты оценки обратно в документ в формате, который интерпретируется типом raw output. Например, если входной файл является .Rmd, выходной рендер отмечает вывод оценки кода в .

преобразование между форматами документа

Knitr делает не преобразование между форматами документов-такие как преобразование .md на .html. Однако он предоставляет некоторые функции удобства, которые помогут вам использовать другие библиотеки для этого. если вы используете rmarkdown пакет, вы должны игнорировать эту функциональность, потому что она была заменена rmarkdown::render.

пример knitr:knit2pdf что будет: 'свяжите входной rnw или rrst документ и скомпилируйте в PDF с помощью texi2pdf или rst2pdf'.

потенциальный источник путаницы knitr::knit2html, который " функция удобства для того чтобы связать источник уценки входного сигнала и вызвать markdown::markdownToHTML для преобразования результата в HTML." это теперь устаревшая функциональность, потому что markdown пакет был заменен rmarkdown пакета. См.эта заметка.

Bookdown

пакет bookdown построен поверх R Markdown и наследует простоту синтаксиса Markdown, а также возможность нескольких типов вывода форматы (PDF/HTML/Word/...).

он предлагает такие функции, как многостраничный вывод HTML, нумерация и перекрестные ссылки на цифры/таблицы / разделы / уравнения, вставка деталей / приложений и импорт стиля GitBook (https://www.gitbook.com) для создания элегантных и привлекательных страниц книг HTML.