В RStudio `knit` всегда работает, но` rmarkdown :: render` дает сбой при втором запуске (но не первом!) - PullRequest
3 голосов
/ 15 июня 2019

Я пытаюсь сделать что-то довольно простое: генерировать отчеты в формате PDF. Наконец-то нашел способ, который воспроизводит мою проблему. Мне нужно использовать rmarkdown::render для создания отчетов на основе данных в GlobalEnv. Я использую пакет tinytex. Вот test.Rmd:

---
title: "Untitled"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(kableExtra)
library(tidyverse)
```

## R Markdown

```{r cars}
mtcars %>%
  kable(booktabs = TRUE) %>%
  kable_styling(latex_options = "striped")
```

Работает:

Кажется, что "Knit" в RStudio всегда работает с этим файлом, создавая, как и ожидалось, mtcars фрейм данных, красиво отформатированный с kable()

Не работает (но должен?):

Запуск rmarkdown::render("test.Rmd") работает при первом запуске, но НЕ во втором. Выдает ошибку:

! LaTeX Error: Unknown float option `H'.

После этого «Knit» в RStudio создает PDF, но R / knitr печатает любые предупреждения / сообщения об ошибках из команды rmarkdown::render("test.Rmd").

Дополнительная информация

Запуск rmarkdown::render("test.Rmd") не выдает ошибок, если вышеуказанный фрагмент кода изменен на

```{r cars}
mtcars %>%
  kable()
```

1 Ответ

1 голос
/ 18 июня 2019

Я решил ответить на свой вопрос, потому что нашел обходной путь, который, надеюсь, не понадобится, если кто-то найдет причину ошибок.

Кажется, что механизм рендеринга PDF не распознает ничего, кроме самой базовой установки LaTeX из tinytex.Я попытался tinytex::tlmgr_install вручную установить необходимые пакеты LaTeX, но все они вернули сообщение «пакет уже присутствует».

Решение

Я добавил следующее в свой YAML в моем Rmd:

header-includes:
   - \usepackage{booktabs}
   - \usepackage{float}
   - \usepackage{colortbl}
   - \usepackage[table]{xcolor}

Я по существу добавлял каждую \usepackage строку, пока не получил никаких ошибок с форматированием, которое искал.

Рабочий код Rmd

Оба rmarkdown::render()и knit (Rstudio) работают (и на мой собственный код!):

---
title: "Untitled"
output: pdf_document
header-includes:
   - \usepackage{booktabs}
   - \usepackage{float}
   - \usepackage{colortbl}
   - \usepackage[table]{xcolor}
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(kableExtra)
library(tidyverse)
```

## R Markdown

```{r cars}
mtcars %>%
  kable(booktabs = TRUE) %>%
  kable_styling(latex_options = "striped")
```
...