Как конвертировать R Markdown в PDF?

Ранее я спросил о командах для преобразования R Markdown в HTML .

Что такое хороший способ конвертировать файлы R Markdown в документы PDF?

Хорошее решение позволит сохранить как можно больше контента (например, изображения, уравнения, таблицы html и т. Д.). Решение должно быть выполнено из командной строки. Хорошее решение также будет кросс-платформенным и идеально минимизировать зависимости, чтобы упростить совместное использование make-файлов и т. Д.

В частности, есть много вариантов:

  • Преобразование RMD в MD в HTML в PDF; или RMD до MD в PDF; или RMD для PDF
  • Если вы используете пакет markdown в R, какие параметры указывать
  • Использовать ли pandoc , пакет, встроенный в R, или что-то еще

Вот пример файла rmd, который предположительно обеспечивает разумную проверку любого предлагаемого решения. Он был использован в качестве основы для этого сообщения в блоге .

Обновленный ответ (10 февраля 2013 г.)

Пакет rmarkdown : теперь на github теперь rmarkdown пакет rmarkdown который взаимодействует с Pandoc. Он включает функцию render . В документации очень ясно, как преобразовать rmarkdown в pdf среди ряда других форматов. Это включает в себя выходные форматы в файле rmarkdown или запуск подачи выходного формата в функцию rend. Например,

 render("input.Rmd", "pdf_document") 

Командная строка: когда я запускаю render из командной строки (например, используя make-файл), у меня иногда возникают проблемы с не найденным pandoc. Предположительно, это не на пути поиска. Следующий ответ объясняет, как добавить pandoc в среду R.

Так, например, на моем компьютере с OSX, где у меня есть копия pandoc через RStudio, я могу использовать следующее:

 Rscript -e "Sys.setenv(RSTUDIO_PANDOC='/Applications/RStudio.app/Contents/MacOS/pandoc');library(rmarkdown); library(utils); render('input.Rmd', 'pdf_document')" 

Старый ответ (около 2012)

Таким образом, многие люди предположили, что Pandoc – это путь. См. Примечания ниже о важности наличия обновленной версии Pandoc.

Использование Pandoc

Я использовал следующую команду для преобразования R Markdown в HTML (т. RMDFILE Вариант этого make-файла ), где RMDFILE – это имя файла R Markdown без компонента .rmd (он также предполагает, что расширение является .rmd а не .Rmd ).

 RMDFILE=example-r-markdown Rscript -e "require(knitr); require(markdown); knit('$RMDFILE.rmd', '$RMDFILE.md'); markdownToHTML('$RMDFILE.md', '$RMDFILE.html', options=c('use_xhml'))" 

а затем эту команду для преобразования в pdf

 Pandoc -s example-r-markdown.html -o example-r-markdown.pdf 

Несколько замечаний об этом:

  • Я удалил ссылку в файле примера, который экспортирует графики в imgur для размещения изображений.
  • Я удалил ссылку на изображение, размещенное на imgur. Цифры, по-видимому, должны быть локальными.
  • Параметры функции markdownToHTML означали, что ссылки на изображения относятся к файлам, а не к данным, хранящимся в файле HTML (т. 'base64_images' Я удалил 'base64_images' из списка опций).
  • Результат был таким . Он явно сделал документ стиля LaTeX в отличие от того, что я получаю, если я распечатаю файл HTML в pdf из браузера.

Получение обновленной версии Pandoc

Как уже упоминалось @daroczig, важно иметь обновленную версию Pandoc для вывода PDF-файлов. На Ubuntu с 15 июня 2012 года я был застрял с версией 1.8.1 Pandoc в менеджере пакетов, но, похоже, из журнала изменений, что для поддержки в формате pdf вам нужна как минимум версия 1.9+ из Pandoc.

Таким образом, я установил caball-install . А потом побежал:

 cabal update cabal install pandoc 

Pandoc был установлен в ~/.cabal/bin/pandoc Таким образом, когда я запускал pandoc он все еще видел старую версию. См. Здесь, чтобы добавить путь .

Я думаю, вам действительно нужен pandoc , для которого было разработано и построено большое программное обеспечение именно для этой задачи. Помимо pdf , вы можете конвертировать ваш файл md, например, docx или odt среди других.

Ну, установка обновленной версии Pandoc может зависеть от Linux (так как вам понадобится вся haskell-platform для сборки из источников), но очень просто на Windows / Mac с несколькими мегабайтами загрузки.

Если у вас есть пивоваренный / трикотажный файл уценки, вы можете просто вызвать pandoc например, bash или с помощью system функции внутри R. Демо POC этого последнего реализовано в функции Ṗandoc.convert моего маленького пакета ( который вы, должно быть, ужасно скучаете поскольку я стараюсь обратить ваше внимание туда при каждой возможности ).

Прямо сейчас (август 2014 года) Вы можете использовать RStudio для преобразования R Markdown в PDF. В принципе, RStudio использует pandoc для преобразования Rmd в PDF.

Вы можете изменить метаданные следующим образом:

  1. Добавить оглавление
  2. Изменить параметры фигуры
  3. Изменение стиля подсветки синтаксиса
  4. Добавить параметры LaTeX
  5. И многое другое …

Для получения дополнительной информации – http://rmarkdown.rstudio.com/pdf_document_format.html введите описание изображения здесь

Для опции, которая больше похожа на то, что вы получаете при печати из браузера, wkhtmltopdf предоставляет один вариант.

На Ubuntu

 sudo apt-get install wkhtmltopdf 

И затем та же команда, что и для примера pandoc, чтобы перейти к HTML:

 RMDFILE=example-r-markdown Rscript -e "require(knitr); require(markdown); knit('$RMDFILE.rmd', '$RMDFILE.md'); markdownToHTML('$RMDFILE.md', '$RMDFILE.html', options=c('use_xhml'))" 

а потом

 wkhtmltopdf example-r-markdown.html example-r-markdown.pdf 

Полученный файл выглядел так. Казалось, что он не обрабатывает MathJax ( этот вопрос обсуждается здесь ), а разрывы страниц уродливы. Однако в некоторых случаях такой стиль может быть более предпочтительным для более стильной презентации LaTeX.

Только два шага:

  1. Установите последнюю версию «pandoc» отсюда:

    https://github.com/jgm/pandoc/releases

  2. Вызвать функцию pandoc в library(knitr)

     library(knitr) pandoc('input.md', format = 'latex') 

Таким образом, вы можете преобразовать свой «input.md» в «input.pdf».

Я нашел использование R studio самым простым способом, но если вы хотите управлять из командной строки, то простой R-скрипт может сделать трюк с помощью команды rmarkdown render (как упоминалось выше). Полная информация о скриптах здесь

 #!/usr/bin/env R # Render R markdown to PDF. # Invoke with: # > R -q -f make.R --args my_report.Rmd # load packages require(rmarkdown) # require a parameter naming file to render if (length(args) == 0) { stop("Error: missing file operand", call. = TRUE) } else { # read report to render from command line for (rmd in commandArgs(trailingOnly = TRUE)) { # render Rmd to PDF if ( grepl("\\.Rmd$", rmd) && file.exists(rmd)) { render(rmd, pdf_document()) } else { print(paste("Ignoring: ", rmd)) } } } 

Если вы не хотите ничего устанавливать, вы можете вывести html. Затем откройте файл html – он откроется в окне браузера, затем щелкните правой кнопкой мыши для печати. В окне печати выберите «сохранить как PDF» в нижнем правом углу, если вы находитесь на Mac. Вуаля!

Выполните следующие простые шаги:

1: В сценарии Rmarkdown запустите Knit (Ctrl + Shift + K) 2: Затем, после того, как откроется отметка html, нажмите «Открыть в браузере» (вверху слева) и html откроется в вашем браузере 3: Затем используйте Ctrl + P и сохранить как PDF.

  • Проблемы с установкой пакета devtools
  • как преобразовать data.frame в транзакции для arules
  • Извлечение чисел из векторов строк
  • Функции группировки (напр., По совокупности) и семейства * apply
  • Объединить легенды о цвете и форме в одну легенду
  • Найти количество строк, используя dplyr / group_by
  • Как искать материалы «R»?
  • Как лучше всего моделировать произвольную одномерную случайную переменную с использованием ее вероятностной функции?
  • Как вы можете прочитать CSV-файл в R с различным количеством столбцов
  • Удаление одной таблицыGrob при применении к графику с фасеткой
  • Что такое целочисленное переполнение в R и как это может произойти?
  • Давайте будем гением компьютера.