【问题标题】:Space after every five rows in kable output (with booktabs option) in R Markdown documentR Markdown 文档中 kable 输出(带有 booktabs 选项)每五行后的空格
【发布时间】:2018-08-07 12:10:56
【问题描述】:

我正在使用 knitr::kable() 将表格呈现为 R Markdown 文档的一部分(它本身是 bookdown 项目的一部分)。特别是, booktabs 选项(通过将booktabs 参数设置为等于TRUE)以漂亮的方式呈现表格。但是,我希望每五行之后不要有空格。

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

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

我希望不包括每五行之后出现的空间,但我似乎无法在 knitr::kable() 中找到执行此操作的设置。

【问题讨论】:

    标签: r knitr r-markdown bookdown kable


    【解决方案1】:

    行高不总是相等的原因是默认情况下,当 booktabs 指定为 TRUE 时,kable 每 5 行插入一个\addlinespace,如图here

    linesep = if (booktabs) c('', '', '', '', '\\addlinespace') else '\\hline'
    

    要更改此设置,请将linesep = "" 作为参数添加到kable()

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

    请参阅Get rid of \addlinespace in kable了解更多详情。

    值得一提的是,如果您想更改样式,可以使用此选项。例如linesep = c("", "", "", "\\hline") 将每四个空格添加一条水平线。

    【讨论】:

    • 谢谢,成功了。我认为我没有找到 Q&A 的原因是我没有搜索 \addlinespace。
    • 知道正确的搜索词总是最难的部分:)
    【解决方案2】:

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

    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))
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      相关资源
      最近更新 更多