有没有办法在 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)
```
我正在尝试使用 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)
```