编织到PDF时如何填充kableExtra列标题中的整个单元格背景?

问题描述 投票:0回答:1

我正在用 R Markdown 中的

kableExtra
包将表格编织成 PDF,我想知道是否有人有解决方案来确保列标题(黑色)、列组标题(黑色)和包的背景颜色行(红色)填充整个单元格。如下图所示,各个单元格仅被部分填充,看起来有点傻。

示例代码:

---
title: "Test Doc"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(
  echo = FALSE,
  message = FALSE,
  warning = FALSE,
  dev = "cairo_pdf"
  )
```

```{r}
library(tidyverse)
library(kableExtra)
```

```{r}
set.seed(1)

df <- data.frame(
  id = LETTERS[1:10],
  var1 = rnorm(10, 50, 10),
  var2 = rnorm(10, 50, 10),
  var3 = rnorm(10, 50, 10),
  var4 = rnorm(10, 50, 10),
  var5 = rnorm(10, 50, 10),
  var6 = rnorm(10, 50, 10),
  grp = rep(paste("Group", 1:2), each = 5)
)
```

```{r}
kbl(df[1:7],
    booktabs = TRUE,
    escape = FALSE,
    align = c("l", rep("c", ncol(df) - 1))) %>%
  kable_styling(latex_options = c("HOLD_position"),
                font_size = 8) %>%
  add_header_above(c(" " = 1, "colgroup1" = 3, "colgroup2" = 3), background = "black",
                     color = "white", bold = TRUE) %>%
  row_spec(row = 0, background = "black", color = "white", bold = TRUE) %>%
  pack_rows(index = table(fct_inorder(df$grp)), background = "#ED1B2F",
            color = "white", bold = TRUE, extra_latex_after = "\\midrule{}")
```
r latex r-markdown kableextra
1个回答
0
投票

此方法消除了行之间的间距,从而消除了空格。

尝试:
a) 删除

booktabs
参数:这会强制每 5 行增加额外的行间距。
b) 添加
linesep = ""
,这样就没有线条分隔,然后
c) 在调用
pack_rows
时删除分组行
extra_latex_after = ""
之后的空格。

```{r}

kbl(df[1:7],
    # booktabs = TRUE,
    escape = FALSE,
    align = c("l", rep("c", ncol(df) - 1)),
    linesep = "")  |> 
  kable_styling(latex_options = c("HOLD_position"),
                font_size = 8)  |> 
  add_header_above(c(" " = 1, "colgroup1" = 3, "colgroup2" = 3), 
                   background = "black",
                   color = "white", 
                   bold = TRUE)  |> 
  row_spec(row = 0, 
           background = "black", 
           color = "white", 
           bold = TRUE) |> 
  pack_rows(index = table(fct_inorder(df$grp)), background = "#ED1B2F",
            color = "white", 
            bold = TRUE,
            extra_latex_after = "")
```

结果:

© www.soinside.com 2019 - 2024. All rights reserved.