Quarto/RMarkdown导出PDF:如何增大表格子标题边距
Quarto/RMarkdown 导出PDF时增大纵向排列子表格间距的配置方法
方案1:使用Quarto原生布局参数(推荐)
Quarto 原生提供了多图/多表纵向排列的间距控制参数,不需要额外写LaTeX命令,是最稳定的方案:
- 首先移除每个
knitr::kable()里手动传入的caption参数:你已经在代码块YAML头里定义了tbl-cap和tbl-subcap,手动给kable传caption会导致标题重复渲染,打乱默认排版间距。 - 在代码块YAML头中添加
layout-vspace参数,直接控制纵向排列的两个表格之间的垂直距离,支持em/cm/pt等通用单位,数值越大间距越大。
调整后的代码示例:
#| label: tbl-1985 #| tbl-cap: "*Was Wann Wo* im Jahr 1985" #| tbl-subcap: #| - "Auswertung nach Kategorien" #| - "Besonderheiten" #| layout-nrow: 2 #| layout-vspace: "2em" # 按需调整数值,默认间距约为0.5em #| tbl-pos: 'H' # 注意:表格浮动定位用tbl-pos,fig-pos仅对图片生效 # 第一个表格 df_table_1 %>% knitr::kable() %>% kableExtra::kable_styling(latex_options = "scale_down") # 第二个表格 df_table_2 %>% knitr::kable() %>% kableExtra::column_spec(2, width = "12cm")
方案2:局部插入LaTeX间距命令
如果需要保留kable手动传入的caption、或者方案1的间距控制不符合预期,可以直接在两个表格的生成代码之间插入LaTeX垂直间距命令,精准控制间距:
# 第一个表格 df_table_1 %>% knitr::kable(., caption = paste0("\\textit{Was Wann Wo} im Jahr ", year)) %>% kableExtra::kable_styling(latex_options = "scale_down") # 插入垂直间距,数值按需调整 cat("\\vspace{1.8em}") # 第二个表格 df_table_2 %>% knitr::kable(., caption = paste0("Besonderheiten im Jahr ", year)) %>% kableExtra::column_spec(2, width = "12cm")
方案3:全局配置所有子表间距
如果文档里所有纵向排列的子表都需要调整间距,可以直接在文档开头的YAML配置里修改LaTeX子浮动体的间距参数,不需要每个代码块单独设置:
format: pdf: include-in-header: text: | \captionsetup[subfloat]{ vskip=2em % 控制所有上下排列的子图、子表之间的垂直间距 }
注意:原代码中使用
fig-pos: 'H'控制表格浮动位置是无效的,该参数仅对图片生效,表格需要使用tbl-pos: 'H',参数用错会导致浮动体排版异常,连带出现间距不符合预期的问题。
内容的提问来源于stack exchange,提问作者kabr
相关产品推荐
相关产品推荐

