使用 kableExtra 增加 line/row 间距

Increase line/row spacing with kableExtra

对于 r-markdown 或 bookdown 中的 pdf 输出,有没有办法使用 kableExtra 增加行间距?

library(knitr)
library(kableExtra)
kable(
  head(iris, 5), caption = 'Iris Table',
  booktabs = TRUE) %>%
  kable_styling(latex_options = "striped")

你可以使用 LaTeX 命令来完成 \arraystretch:

---
output: pdf_document
---

```{r setup, include=FALSE}
library(kableExtra)
library(tidyverse)
```


\renewcommand{\arraystretch}{2}
```{r, echo=FALSE}
library(knitr)
library(kableExtra)
kable(head(iris, 5), caption = 'Iris Table',booktabs = TRUE) %>%
  kable_styling(latex_options = "striped")
```

请注意,以下所有表格都将使用相同的间距。但您可以使用 \renewcommand{\arraystretch}{1}

重置它

除了 Martin 的回答之外,您还可以像这样将标签 \renewcommand{\arraystretch}{2} 放入 save_kable 函数中(以防您像我一样只想导出 pdf table 不使用 R Markdown):

save_kable(tableName, file="FileName.pdf", latex_header_includes = c("\renewcommand{\arraystretch}{2}"))

基于 CL. 的回答 here,您还可以使用 kable's linesep argument with '\addlinespace'(或来自 Latex'booktabs 的类似参数)。像这样:

linesep = "\addlinespace"

你的例子:

kable(head(iris, 5),
  "latex",
  caption = 'Iris Table',
  booktabs = T,
  linesep = "\addlinespace") %>%
  kable_styling(latex_options = "striped")

我认为 \arraystretch 改变整个 table 的行间距,包括 headers、注释等,而 linesep 只控制 [=29] 的行间距=] body。这样您也不必在 Rmarkdown 文档中引入自定义 Latex 代码。

这只是对 Martin Schmelzer 回答的补充(我是 Whosebug 的新手,不允许发表评论)。事情是你可以在 chunck 中添加数组 stretch 。当一个chunk中有多个表时就派上用场了。

```{r, echo=FALSE}
#array stretch increases row height
cat("\renewcommand{\arraystretch}{2}   \n")

#This is the table
kable(head(iris, 5), caption = 'Iris Table',booktabs = TRUE) %>%
kable_styling(latex_options = "striped")

#array stretch sets row height back
cat("\renewcommand{\arraystretch}{1}   \n")

kable(....another table in chunck that is unaffected...)
```