我正在尝试使用R Markdown编织到PDF输出中的kable和kableExtra包来修改表格的外观。
特别是,我想从表格中删除所有边框,并仅在标题下添加一条水平线,并在行名旁边添加一条垂直线。
此刻,我有以下代码:
---
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")
```
哪个生成此表:
要删除所有边框,我将默认边框设置为白色,以回答this问题。
现在,我想在标题下方添加一条水平的蓝线,并在行名称的右侧添加一条垂直的蓝线。
我可以使用以下方法获取水平线:
---
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的东西。 我知道我可以使用其他表包获得相同的结果,但是我想知道是否可以使用kable来获得类似的结果。
有人知道是否有解决方案吗?
答案 0 :(得分:0)
到目前为止,确实不支持此功能。您可以在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)
```