使用kableExtra增加行/行间距

时间:2018-12-15 14:29:02

标签: r r-markdown bookdown kable kableextra

是否有办法用kableExtra来增加r-markdown或bookdown中pdf输出的行距?

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

enter image description here

4 个答案:

答案 0 :(得分:3)

您可以使用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}

重置它

enter image description here

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

基于CL的答案here,您还可以将kable的{​​{1}}参数与'\ addlinespace'(或Latex'linesep的类似参数)一起使用。像这样:

booktabs

您的示例:

linesep = "\\addlinespace"

我认为kable(head(iris, 5), "latex", caption = 'Iris Table', booktabs = T, linesep = "\\addlinespace") %>% kable_styling(latex_options = "striped") 会更改整个表的行距,包括标题,注释等,而\arraystretch仅控制表主体的行距。这样,您也不必在Rmarkdown文档中引入自定义的Latex代码。

答案 3 :(得分:0)

这只是 Martin Schmelzer 答案的补充(我是 stackoverflow 的新手,不允许发表评论)。问题是您可以在 chunck 中添加数组拉伸。当一个块中有多个表时就派上用场了。

```{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...)
```