使用kableExtra防止带有kable表的文本换行(position =' float_left')

时间:2018-03-19 23:21:43

标签: r r-markdown kable kableextra

我试图在R Markdown文档中将多个表放在一行上。我可以通过kable %>% kableStyling(... ,position='float_left')执行此操作,并且这些表格可以很好地排列在一个页面上:

enter image description here

然而,当在这些表(标题,文本,任何东西,真的)之后恢复文本时,它开始在该行的最后一个表的右侧。这是一个简单的例子:

---
output:
  html_document: default
  pdf_document: default
---

```{r setup, include=FALSE}
  knitr::opts_chunk$set(echo = TRUE)
  require(kableExtra)
``` and
```{r Test, echo=F}
  d1 <- data.frame(Item=c('A','B','C'),Value = c(1,2,3),Units=c('X','Y','Z'))
  knitr::kable(d1,format='html') %>%
    kable_styling(position='float_left',full_width=F)
```

## Next heading

enter image description here

我原以为## Next heading会在新的一行开始。格式=&#39; html&#39;和格式=&#39; latex&#39;:

1 个答案:

答案 0 :(得分:2)

kableExtra documentation关于float选项所述:

  

您还可以使用向左浮动或向右浮动选项将文字环绕表格。

因此,您所看到的行为与程序包所期望的一样。

一种适合您情况的简单解决方法是使每行的最后一个表使用参数position='left'而不是position='float_left'

---
output: html_document
---

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

```{r Test, echo=F}
  d1 <- data.frame(Item=c('A','B','C'),Value = c(1,2,3),Units=c('X','Y','Z'))
  knitr::kable(d1,format='html', caption = "Table 1") %>%
    kable_styling(position='float_left',full_width=F)


    knitr::kable(d1,format='html', caption = "Table 2") %>%
    kable_styling(position='float_left',full_width=F)

      knitr::kable(d1,format='html', caption = "Table 3") %>%
    kable_styling(position='left',full_width=F)

```    
# Next heading

enter image description here