Rmarkdown中collapse_rows的valign='middle'对齐失效问题求助
解决kableExtra合并单元格垂直居中问题
我用RMarkdown生成PDF表格时,使用kable及kableExtra的collapse_rows合并单元格,设置了valign="middle"但合并后的单元格(如"Example1")并未与对应列的中间行(第二列的数字"2")垂直对齐。
原代码如下:
library(kableExtra) library(tidyr) library(dplyr) data <- data.frame(A=c(rep("Example1",3),rep("Example2",3)),B=1:6,C=c(1,1,1,2,2,2),D=6:1,E=c(1,1,1,2,2,2)) knitr::kable(data, col.names = linebreak(c("","B","C","B", "C"),align = 'c'), caption = "Example.", format = "latex", booktabs = T, linesep="\\addlinespace", escape = F, align = "c") %>% add_header_above(.,c(' '=1,'Ascending'=2,'Descending'=2), bold = T, escape = F) %>% collapse_rows(columns = c(1,3,5), valign = "middle") %>% kable_styling(font_size = 10, latex_options = c("striped", "hold_position"))
表格效果:
解决方案
问题在于collapse_rows的valign参数仅针对HTML输出,生成LaTeX格式的PDF表格时,需要使用latex_valign参数指定垂直对齐方式,设置为"m"即可实现合并单元格的垂直居中。
修改后的完整代码:
library(kableExtra) library(tidyr) library(dplyr) data <- data.frame(A=c(rep("Example1",3),rep("Example2",3)),B=1:6,C=c(1,1,1,2,2,2),D=6:1,E=c(1,1,1,2,2,2)) knitr::kable(data, col.names = linebreak(c("","B","C","B", "C"),align = 'c'), caption = "Example.", format = "latex", booktabs = T, linesep="\\addlinespace", escape = F, align = "c") %>% add_header_above(.,c(' '=1,'Ascending'=2,'Descending'=2), bold = T, escape = F) %>% collapse_rows(columns = c(1,3,5), valign = "middle", latex_valign = "m") %>% # 添加latex_valign参数 kable_styling(font_size = 10, latex_options = c("striped", "hold_position"))
内容的提问来源于stack exchange,提问作者Laure Tomás Daza
相关产品推荐
相关产品推荐

