如何阻止bookdown表格在PDF中漂移到页面底部?

21

我正在使用bookdown创建 PDF 报告,但我的表格总是浮动到页面底部,无论有多少空间。请参见此示例:

---
title: "test_doc"
author: "Jake Thompson"
date: "6/30/2017"
output:
  bookdown::pdf_document2:
    toc: false
---

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

# Test heading

Let make a data frame and print it in Table \@ref(tab:test-table)

```{r test-table}
data_frame(col_a = seq_len(5), col_b = rnorm(5), col_c = runif(5)) %>%
  knitr::kable(caption = "This is a test")
```

生成的PDF文件如下所示:

pdf-output

为什么表格会跑到页面底部?有没有办法防止这种情况发生?


为什么,请阅读 https://bookdown.org/yihui/bookdown/figures.html。如何避免这种情况,我将留给其他LaTeX专家来回答您。 - Yihui Xie
2个回答

36

你可以通过kableExtra来解决这个问题

data_frame(col_a = seq_len(5), col_b = rnorm(5), col_c = runif(5)) %>%
  knitr::kable(caption = "This is a test") %>%
  kableExtra::kable_styling(latex_options = "hold_position")

它基本上在LaTeX table环境中插入一个[!h],它将防止浮动行为并将表固定在当前位置。


对我来说完美地工作了。谢谢Hao,我一直在互联网上找到你的可爱帮助。 - Nova
@Nova 哈哈,很高兴能帮到你!:D - Hao
2
如果你和我一样,同时遇到了图表位置的问题,这里有一个解决方案:https://dev59.com/LmQn5IYBdhLWcg3wtpBW#33801326 - puslet88
1
我只想添加一条注释,你必须首先按答案中所示在代码块中调用数据框。如果你使用下面的代码,它将无法正常工作。knitr::kable(myDataFrame, caption = "This is a test") %>% kableExtra::kable_styling(latex_options = "hold_position") - Patrick

10

我不得不使用

kable_styling(latex_options = "HOLD_position")

注意HOLD_position的大写,与hold_position不同。 另见此处

为了能够使用它,我还必须添加到文档的顶部部分(来自如何通过bookdown :: render_book构建latex kable?):

output:
  pdf_document:
    extra_dependencies: ["float"]

2
我要重申一下,对于我来说,HOLD_position有效,而hold_position无效。 - Byron Wall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接