在rMarkdown中实现A4 PDF文档内两张表格并排对齐
在R Markdown的A4 PDF中实现两张表格并排的两种方案
嘿,在R Markdown里做A4 PDF报告时要放两张并排表格,这俩方案亲测靠谱,给你拆解明白:
方案一:用kableExtra快速实现(无需写原生LaTeX)
这个方法纯R代码搞定,不用碰LaTeX语法,适合想快速出效果的场景:
- 先安装并加载
kableExtra包(如果还没装的话) - 分别生成两个带样式的表格对象
- 用
kables()函数把它们并排,调整宽度适配A4页面
library(kableExtra) # 生成左侧表格(示例用mtcars数据) t1 <- mtcars[1:5, 1:3] %>% kable(caption = "左表:前5行mtcars数据", booktabs = TRUE) %>% kable_styling(full_width = FALSE, position = "center") # 生成右侧表格 t2 <- mtcars[6:10, 1:3] %>% kable(caption = "右表:第6-10行mtcars数据", booktabs = TRUE) %>% kable_styling(full_width = FALSE, position = "center") # 并排显示,调整列宽适配A4 kables(list(t1, t2), align = "c", valign = "top") %>% column_spec(1, width = "48%") %>% column_spec(2, width = "48%")
小提示:把full_width设为FALSE是为了让表格不撑满整行,方便并排;column_spec里的宽度设为48%而不是50%,是给两个表格之间留一点空隙,避免在A4页面上挤到边缘。
方案二:嵌入原生LaTeX代码(更灵活)
如果需要更精细的控制(比如调整表格位置、自定义间距),可以用原生LaTeX的minipage结构,结合cat()输出代码:
- 先把两个表格转成LaTeX格式的代码
- 用
cat()输出包含两个minipage的LaTeX表格环境
library(knitr) # 生成左侧表格的LaTeX代码 t1 <- mtcars[1:5, 1:3] %>% kable(format = "latex", caption = "左表:前5行mtcars数据", booktabs = TRUE, align = "c") %>% kable_styling(full_width = FALSE) # 生成右侧表格的LaTeX代码 t2 <- mtcars[6:10, 1:3] %>% kable(format = "latex", caption = "右表:第6-10行mtcars数据", booktabs = TRUE, align = "c") %>% kable_styling(full_width = FALSE) # 输出LaTeX并排结构 cat(c( "\\begin{table}[!htb]", " \\begin{minipage}{.48\\linewidth}", " \\centering", t1, " \\end{minipage}%", # 这个%一定要加,避免两个minipage之间出现多余空格 " \\begin{minipage}{.48\\linewidth}", " \\centering", t2, " \\end{minipage}", "\\end{table}" ), sep = "\n")
关键注意点:
[!htb]参数是让LaTeX尽量把表格放在当前位置,避免被挤到其他页面- 第一个
minipage后面的%必须保留,不然LaTeX会把换行当成空格,导致第二个表格被挤到下一行 - 如果表格内容多,可以在
kable_styling里加font_size = 9来缩小字体,适配A4的并排空间
内容的提问来源于stack exchange,提问作者Dom
相关产品推荐
相关产品推荐

