有没有办法在 R kable 的 'column_spec' 函数中添加乳胶规范?

Is there a way to add latex specification in 'column_spec' function in R kable?

我正在尝试使用 R Markdown 中的 kable 和 kableExtra 包修改 table 的外观,编织成 PDF 输出。

特别是,我想从 table 中删除所有边框,只在 header 下方添加一条水平线,在行名称旁边添加一条垂直线。

目前,我有这个代码:

---
header-includes:  \setmainfont[Path = C:/Windows/Fonts/]{Arial}
                  \usepackage{colortbl}
                  \arrayrulecolor{white}
output:
  pdf_document:
    latex_engine: xelatex
  word_document: default
---


```{r echo=FALSE, message=FALSE, warning=F, paged.print=TRUE}

library(kableExtra)
library(magrittr)

DATA<- data.frame(jen=c(1,2,3,4,5), feb=c(2,3,4,5,3), mar=c(0,2,4,1,2))
rownames(DATA)<-c("first","second","third","fourth","fifth")


kable(DATA, "latex") 
```

生成这个 table:

Table

要删除所有边框,我将默认边框设置为白色作为 问题建议的答案。

现在,我想在 header 下添加一条水平蓝线,在行名称的右侧添加一条垂直蓝线。

我可以通过以下方法获得水平线:

---
header-includes:  \setmainfont[Path = C:/Windows/Fonts/]{Arial}
                  \usepackage{colortbl}
                  \arrayrulecolor{white}
output:
  pdf_document:
    latex_engine: xelatex
---


```{r echo=FALSE, message=FALSE, warning=F, paged.print=TRUE}

library(kableExtra)
library(magrittr)

DATA<- data.frame(jen=c(1,2,3,4,5), feb=c(2,3,4,5,3), mar=c(0,2,4,1,2))
rownames(DATA)<-c("first","second","third","fourth","fifth")



kable(DATA, "latex")  %>%
    row_spec(0, extra_latex_after = "\arrayrulecolor[rgb]{0,.275,.725}") %>%
    row_spec(1:nrow(DATA), extra_latex_after = "\arrayrulecolor{white}")

```

获得this.

我想用垂直线做同样的事情,但是函数 'column_spec' 中没有像 'extra_latex_after' 这样的命令。它只接受 'extra_css' 显然不适用于 PDF 输出的命令。

我的目标是获得类似 this 的东西。 我知道我可以用 tables 的其他包得到相同的结果,但我想知道是否有可能使用 kable 得到类似的结果。

有谁知道是否有解决方案?

目前确实不支持这个。您可以在 github.

上提出功能请求

您可以使用正则表达式替换表格中的对齐选项:

---
title: "Test"
date: 2019-02-13
output: pdf_document
---

```{r header, echo= FALSE, include = T, warning=F}
library(knitr)

tbl <- kable(mtcars[1:4, 1:3], format = "latex")

# here we search for the begin command and its options and replace them
gsub(pattern = "(begin\{tabular\})(\{.*?\})", 
     repl    = "\1{l|r !{\\color{red}\\vrule width 1pt} r|r|}", 
     x       = tbl)
```