Есть ли способ добавить спецификацию латекса в функции 'column_spec' в R kable? - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь изменить внешний вид таблицы, используя пакеты kable и kableExtra в вязке Markdown R для вывода в PDF.

В частности, я хотел бы удалить все границы из таблицы и добавить только одну горизонтальную линию под заголовком и одну вертикальную линию рядом с именами строк.

На данный момент у меня есть этот код:

---
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") 
```

, которая генерирует эту таблицу:

Таблица

Чтобы удалить все границы, я устанавливаю белые границы по умолчанию в качестве ответа на предложенный вопрос.

Теперь я хотел бы добавить горизонтальную синюю линию под заголовком и вертикальную синюю линию справа от названий строк.

Я могу получить горизонтальную линию со следующим:

---
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.

Моя цель - получить что-то вроде этого . Я знаю, что могу получить тот же результат с другими пакетами для таблиц, но мне интересно, возможно ли получить что-то подобное с помощью kable.

Кто-нибудь знает, есть ли решение для этого?

1 Ответ

0 голосов
/ 29 апреля 2019

Это действительно пока не поддерживается. Вы можете сделать запрос на функцию на 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)
```

enter image description here

...