【问题标题】:Prevent text wrapping after kable table with kableExtra(position='float_left')使用 kableExtra(position='float_left') 在 kable 表后防止文本换行
【发布时间】:2026-02-14 05:25:03
【问题描述】:

我正在尝试将多个表格放在 R Markdown 文档的一行中。我可以通过kable %>% kableStyling(... ,position='float_left') 做到这一点,并且表格在页面上很好地排列:

但是,当在这些表格(标题、文本等任何内容)之后恢复文本时,它会从该行最后一个表格的右侧开始。这是一个简单的例子:

---
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

我原以为## Next heading 会在新的一行开始。 format='html' 和 format='latex' 都会发生这种情况:

【问题讨论】:

    标签: r r-markdown kable kableextra


    【解决方案1】:

    正如kableExtra documentation 关于float 选项所述:

    您还可以使用 float-left 或 float-right 选项将文本环绕在表格周围。

    因此,您所看到的行为与包裹的预期相同。

    针对您的情况,一个简单的解决方法是让每一行的最后一个表使用参数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
    

    【讨论】: