R Markdown文档中的kable输出中每隔五行(带有booktabs选项)后的空格

Jos*_*erg 21 r knitr r-markdown bookdown kable

knitr::kable()用来渲染表作为R Markdown文档的一部分(它本身是一个bookdown项目的一部分).特别是,booktabs选项(通过将booktabs参数设置为相等TRUE)以一种漂亮的方式呈现表格.但是,我希望每隔五行就不会有空格.

例如,这里是代码以及在作为PDF呈现时,bookdown演示中的表格如何显示:

knitr::kable(
  head(iris, 20), caption = 'Here is a nice table!',
  booktabs = TRUE
)
Run Code Online (Sandbox Code Playgroud)

虹膜表与booktabs

我想要在每五行之后出现的空间不被包括在内,但我似乎找不到knitr::kable()这样做的设置.

Mic*_*per 38

之所以行的高度并不总是等于是,默认情况下,kable插入  \addlinespace每5行时booktabs指定为TRUE,如图所示在这里:

linesep = if (booktabs) c('', '', '', '', '\\addlinespace') else '\\hline'
Run Code Online (Sandbox Code Playgroud)

要改变这一点,请添加  linesep = ""为参数kable().

knitr::kable(
  head(iris, 20), caption = 'Here is a nice table!',
  booktabs = TRUE,
  linesep = ""
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有关 更多详细信息,请参阅  在kable中删除\ addlinespace.

如果你想改变风格,你也可以使用这个选项.例如linesep = c("", "", "", "\\hline"),每四个空格添加一条水平线.

  • 知道正确的搜索词总是最难的部分:) (3认同)
  • 谢谢,这成功了。我认为我没有找到 Q&A 的原因是我没有搜索 \addlinespace。 (2认同)

Bar*_*art 10

根据上面的例子,我对控制分离感兴趣。这与以下辅助函数配合得很好。这使得控制线分离的位置成为可能。

linesep<-function(x,y=character()){
  if(!length(x))
    return(y)
  linesep(x[-length(x)], c(rep('',x[length(x)]-1),'\\addlinespace',y))  
}
knitr::kable(
  head(iris, 20), caption = 'Here is a nice table!',
  booktabs = TRUE,
  linesep = linesep(c(3,2,1,1,3,5,4,1))
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述