防止表格在 Rmarkdown 中被拆分

Bus*_*gun 4 r r-markdown

有没有办法将我的表格放在一页中?我有一张桌子,它在两页之间坏了。这是一个可重现的示例:

---
output: pdf_document
---

`r rep("Text", 400)`

```{r}
# This will create a page break
knitr::kable(mtcars, caption = "A split table")
```
Run Code Online (Sandbox Code Playgroud)

这将生成一个 2 页的 pdf,其中包含一个损坏的表格,如下所示:

在此处输入图片说明

Mic*_*per 5

有两种简单的方法可以做到这一点:

1.添加分页符

如果您只使用 PDF 输出,您实际上可以将 LaTeX 命令直接集成到报告中。因此,该\newpage命令将按如下方式强制分页:

---
output: pdf_document
---

`r rep("Text", 400)`

\newpage
```{r}
knitr::kable(mtcars, caption = "A fixed table")
```
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

2. 使用页面浮动

由于 RMarkdown 使用 LaTeX 来构建 PDF,您可以利用页面浮动功能。这可能需要一些时间来适应,但不是将图形或表格锁定在固定位置,LaTeX 会尝试将图形放置在它认为“最佳”的位置。对于表格,它将尝试删除任何分页符。

这是一个例子。表格将浮动到第二页。确保更新 YAML 以包含header-includes:参数:

---
output: pdf_document
header-includes:
   - \usepackage{booktabs}
---

`r rep("Text", 400)`

```{r}
knitr::kable(mtcars, format = "latex",
             caption = "A caption",
             booktabs = TRUE,
             longtable = FALSE)
```

`r rep("Text", 200)`
Run Code Online (Sandbox Code Playgroud)

如果您查看输出,您将看到第二个文本块与第一个文本块在同一页面上,并且表格位于第二个页面的中心。这一切都是由 LaTeX 自动完成的,如果您在表格之前添加更多文本,这可能会导致表格再次损坏,则可以避免麻烦。

在此处输入图片说明

希望有帮助。