RMarkdown输出PDF文档时如何实现两个gt()表格同页并排展示
两个gt表格同页左右并排的实现方法
你的PDF输出基于LaTeX渲染引擎,原有代码下表格上下排布的核心原因是,未被包裹在水平排列容器内的LaTeX内容会自动换行断行。借助LaTeX的minipage小页面盒子结构,即可实现同页并排效果,具体调整如下:
核心调整要点
- 无需改动已配置好的横向页面参数,原有YAML块里的
classoption: landscape设置完全保留 - 替换原输出两个表格的代码块,需要做两个关键设置:
- 给代码块添加
results='asis'参数,保证原生LaTeX代码可以被正确渲染,不会被当成普通文本输出 - 将两个表格分别包裹在独立的定宽
minipage盒子中,盒子之间用\hfill自动填充间隙,实现水平排布
- 给代码块添加
完整可运行的修改后代码
--- title: "R Notebook" output: pdf_document classoption: landscape --- Blablabla ```{r include=FALSE} library(tidyverse) library(knitr) library(gt)
\newpage
# 生成两个gt表格对象 table_1 <- filter(cars,speed<10) %>% gt() table_2 <- filter(cars,speed<10) %>% gt() # 提取两个表格对应的原生LaTeX代码 tab1_latex <- as.character(as_latex(table_1)) tab2_latex <- as.character(as_latex(table_2)) # 拼接并排排版的LaTeX结构 cat(paste0( "\\begin{minipage}{0.48\\textwidth}\n", tab1_latex, "\n", "\\end{minipage}\n", "\\hfill\n", "\\begin{minipage}{0.48\\textwidth}\n", tab2_latex, "\n", "\\end{minipage}" ))
### 排版适配细节 - 当前设置每个minipage占页面文本宽度的48%,预留了足够余量避免内容溢出。如果两个表格的内容宽度需求不对称,可以灵活调整两个盒子的宽度比例,只要两个宽度相加不超过`1.0\textwidth`就不会出现排版溢出 - 代码块默认会展示R代码,如果不需要展示代码,可以添加`echo=FALSE`参数,不影响最终表格的排版效果 - 如果导出时出现表格溢出的情况,可以通过`gt()`中的`tab_options()`参数调整表格内边距、字号,适配并排后的宽度限制 - 若需要给两个表格添加独立标题,直接在对应minipage内部、表格代码的前后添加对应caption代码即可,不会破坏并排布局 --- 内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

