You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RMarkdown(bookdown::pdf_document2)中居中kable表格?

解决Bookdown中kableExtra长表格居中问题

问题原因

你开启了longtable = TRUE参数,生成的是LaTeX的longtable环境,而默认的kable_styling(position = "center")对这种跨页表格的全局居中支持不足,导致表格无法居中显示。

具体解决方法

方法1:指定列对齐+表格居中配置

在kable()中通过align参数设置每一列居中,同时在kable_styling()中添加latex_options = "centering"来强制longtable环境居中:

library(kableExtra)

data.frame(exp = c("LR Test", "R$^2$ de McFadden"),
           value = c("4155.8$^{***}$", 0.299)) |>
  kable(col.names = c("Variável explicativa", "Efeito"),
        caption = "Teste de razão de verossimilhança",
        booktabs = TRUE,
        longtable = TRUE,
        linesep = "",
        escape = FALSE,
        align = "cc") |>  # 设置两列都居中
  kable_styling(latex_options = "centering") |>  # 替换position参数实现longtable居中
  footnote(general_title = "",
           general = "Nota: $^{*}$p $<$ 0.1; $^{**}$p $<$ 0.05; $^{***}$p $<$ 0.01",
           escape = FALSE)

方法2:手动插入LaTeX居中命令

如果方法1效果不理想,可以手动在表格输出中插入LaTeX的\centering命令:

library(kableExtra)

data.frame(exp = c("LR Test", "R$^2$ de McFadden"),
           value = c("4155.8$^{***}$", 0.299)) |>
  kable(col.names = c("Variável explicativa", "Efeito"),
        caption = "Teste de razão de verossimilhança",
        booktabs = TRUE,
        longtable = TRUE,
        linesep = "",
        escape = FALSE) |>
  add_header_above(c(" " = 2), escape = FALSE, latex_after = "\\centering") |>  # 插入全局居中命令
  kable_styling() |>
  footnote(general_title = "",
           general = "Nota: $^{*}$p $<$ 0.1; $^{**}$p $<$ 0.05; $^{***}$p $<$ 0.01",
           escape = FALSE)

额外建议

如果你的表格不需要跨页显示,直接删除longtable = TRUE参数,原本的kable_styling(position = "center")就能正常让表格居中。

内容的提问来源于stack exchange,提问作者Alexandre Sanches

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 03:00:04