防止在Rmarkdown中拆分表

时间:2018-02-26 08:53:57

标签: r r-markdown

有没有办法把我的桌子放到一个页面?我有一张桌子,在两页之间打破。这是一个可重复的例子:

---
output: pdf_document
---

`r rep("Text", 400)`

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

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

enter image description here

1 个答案:

答案 0 :(得分:3)

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

<强> 1。添加分页符

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

---
output: pdf_document
---

`r rep("Text", 400)`

\newpage
```{r}
knitr::kable(mtcars, caption = "A fixed table")
```

enter image description here

<强> 2。使用Page Floats :

由于RMarkdown使用LaTeX构建PDF,您可以利用页面floats feature。这可能需要一些时间来习惯,但不是将图形或表格锁定在设定位置,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)`

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

enter image description here

希望有所帮助。