首页 > 解决方案 > Knit & rmarkdown::render() 产生不同的结果(kable 格式;PDF)

问题描述

我有一些 Rmarkdown 文档,我正在尝试knit/render作为PDF文件。我想render正常工作,因为我将在一个包含多个 Rmd 文件以及许多其他进程(例如数据抓取和处理)的脚本中运行它。

使用knit按钮会产生所需的结果。如果我使用rmarkdown::render表格布局会变得古怪(参见示例)。这是一个重现我的问题的最小示例。

RMD

---
title: "RmdTest"
author: "TTS"
date: '`r format(Sys.time(), "%d %B, %Y")`'
output: pdf_document
always_allow_html: true
---

```{r Rmd-Setup, include=FALSE}
options(knitr.kable.NA = '')

library(kableExtra)

# Dummy Data
df <- structure(list(Location = c("Farm", "Farm", "Farm", "Farm"), 
    Animal = c("dog", "cat", "cat", "cat"), Age = c("Adult", 
    "Juvenile", "Adult", "Total"), Abundance = c(27269L, 62308L, 
    34904L, 97212L)), row.names = c(NA, -4L), class = "data.frame")
```


## Why?

The 'Knit' button is producing the desired result, while running rmarkdown::render is producing a different (undesirable) result.

```{r Table-1, echo=FALSE}
kable(df, caption = 'This data does not make sense.', booktabs = TRUE) %>%
  kable_styling(latex_options = 'scale_down') %>%
  landscape() %>%
  add_footnote(label = 'Here is a footnote.') 
```

使成为

  rmarkdown::render(input = 'test.Rmd', output_format = "pdf_document")

版本

R version 4.0.0 (2020-04-24)
Rmarkdown v 1.1
kableExtra v 1.1.0

期望的结果:获得与按钮render相同的输出knit,特别是表格格式。任何帮助表示赞赏。请让我知道是否有任何其他信息会有所帮助。干杯!

截图

使用针织

使用渲染

新的奇怪行为

通过退出并重新启动 RStudio 重新启动我的 R 会话后,我能够以render所需的格式成功运行。render在返回错误消息后立即尝试再次运行:! LaTeX Error: Environment landscape undefined.

但是,如果我使用.rs.restartR()render会产生不正确的格式。之后运行render会产生相同的结果:生成格式不正确的 PDF。

注意:我今天早上重新安装了 tinytex 以确保这不是问题。

标签: rpdfr-markdownknitrkableextra

解决方案


尝试在 YAML 序言中包含正确的 Latex 包。我不确定为什么在 Rstudio UI 中选择 Knit 按钮并使用该render功能会有所不同;但他们确实如此。我发现包含 Latex 包通常可以解决问题。

---
title: "RmdTest"
author: "TTS"
date: '`r format(Sys.time(), "%d %B, %Y")`'
header-includes:
- \usepackage{pdflscape}
- \usepackage{booktabs}
output: pdf_document
always_allow_html: true
---

推荐阅读