R中kableExtra插入水平线时自动添加空行的解决方法
解决kableExtra生成LaTeX表格时hline_after自动添加空行的问题
使用kableExtra包生成LaTeX表格时,通过row_spec(..., hline_after = TRUE)在指定行后插入水平线,会自动在水平线后添加空行。问题根源是生成的LaTeX代码中插入的是\midrule\\,多余的换行符导致了空行。
复现问题
R代码
library(kableExtra) set.seed(123) df <- data.frame(matrix(runif(9), 3, 3)) kable( df, booktabs = TRUE, format = "latex") %>% row_spec(2, hline_after = T)
生成的问题LaTeX代码片段
0.7883051 & 0.9404673 & 0.8924190\\ \midrule\\ 0.4089769 & 0.0455565 & 0.5514350\\
简便解决方案
无需使用gsub做字符串替换,以下两种方法可直接避免多余空行:
方法一:用extra_latex_after替代hline_after
直接在指定行的extra_latex_after参数中插入\midrule,不会自动添加换行符:
library(kableExtra) set.seed(123) df <- data.frame(matrix(runif(9), 3, 3)) kable( df, booktabs = TRUE, format = "latex") %>% row_spec(2, extra_latex_after = "\\midrule")
方法二:使用add_hline精准插入水平线
通过add_hline指定插入位置和水平线类型,同样不会产生多余换行:
library(kableExtra) set.seed(123) df <- data.frame(matrix(runif(9), 3, 3)) kable( df, booktabs = TRUE, format = "latex") %>% add_hline(lines = 2, line = "\\midrule")
以上两种方法生成的LaTeX代码中,水平线后仅保留\midrule,不会出现多余的\\,彻底解决空行问题。
内容的提问来源于stack exchange,提问作者carl
相关产品推荐
相关产品推荐

