如何在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
相关产品推荐
相关产品推荐

