RMarkdown - разные типы шрифтов в таблице с использованием kable?

Я использую RMarkdown для создания PDF-документа. Можно ли изменить тип шрифта в таблицах с помощью kable_styling? Если нет, не могли бы вы предложить какой-нибудь другой пакет?

library(dplyr)
library(kableExtra)

kable(mtcars, align = "c", booktabs = TRUE) %>% 
  kable_styling(font_size = 12) %>% 
  row_spec(0, bold = T, color = "white", background = "gray")

person Donnie Darko    schedule 16.02.2019    source источник
comment
Какие изменения вы хотите?   -  person user2554330    schedule 16.02.2019
comment
Для примера сменить шрифт на Segoe UI. Возможно ли это?   -  person Donnie Darko    schedule 16.02.2019


Ответы (1)


Это несколько сложно, потому что изменить шрифты в LaTeX сложно. У меня нет шрифта Segoe UI (это шрифт Windows, верно?), Но вот кое-что, что у меня работает с другим изменением шрифта в MacOS.

Во-первых, вам нужно использовать xelatex движок LaTeX. (Вероятно, вы можете сделать это с помощью pdflatex, но команды будут другими, и я их не знаю.)

Во-вторых, вам нужно определить команду для переключения на нужный шрифт. В приведенном ниже коде я назвал его \comicfont и установил переключение на Comic Sans MS.

В-третьих и в-четвертых, вам необходимо определить среды для создания таблиц с этим шрифтом. Вам нужны две среды, в зависимости от того, хотите ли вы, чтобы таблица была встроенной (ctable) или плавающей с заголовком (capctable).

Затем, когда вы хотите, чтобы ваша таблица была в новом шрифте, вы устанавливаете table.envir в имя соответствующей среды. Он устанавливается в kable_styling() для встроенных таблиц и в kable для плавающих таблиц. Вот пример, который мне подходит:

---
title: 'Untitled'
output: 
  pdf_document:
    latex_engine: xelatex
header-includes:
  - \newfontfamily\comicfont[Path=/Library/Fonts/]{Comic Sans MS}
  - \newenvironment{ctable}{\comicfont }{}
  - \newenvironment{capctable}[1][t]{\begin{table}[#1]\centering\comicfont}{\end{table}}
---

```{r}
library(knitr)
library(kableExtra)
kable(head(mtcars), booktabs=TRUE, align = "c") %>% 
  kable_styling(table.envir="ctable", font_size=12) %>%
  row_spec(0, bold = T, color = "white", background = "gray")
kable(head(mtcars), booktabs=TRUE, align = "c", 
      caption = "This table floats", table.envir = "capctable") %>% 
  kable_styling(font_size=12) %>%
  row_spec(0, bold = T, color = "white", background = "gray")
```

В этом сообщении https://tex.stackexchange.com/a/63975 приводится пример для Windows, который может оказаться полезным.

Отредактировано для добавления: параметр table.envir в kable_styling - довольно новое дополнение; убедитесь, что у вас установлена ​​последняя версия kableExtra.

person user2554330    schedule 17.02.2019