RMarkdown - table 中使用 kable 的不同字体类型?

RMarkdown - different font types in table using 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")

这有点棘手,因为在 LaTeX 中更改字体很棘手。我没有 Segoe UI 字体(那是一种 Windows 字体,对吗?),但在 MacOS 中使用不同的字体更改对我有用。

首先,您需要使用xelatex LaTeX 引擎。 (您可能可以使用 pdflatex 执行此操作,但命令会有所不同,我不知道它们。)

其次,您需要定义一个命令来切换到您想要的字体。在下面的代码中,我将其命名为 \comicfont 并将其设置为切换到 Comic Sans MS。

第三和第四,你需要定义环境来产生这种字体的tables。您需要两种环境,具体取决于您是想要 table 内联 (ctable) 还是带有标题的浮动 (capctable)。

然后,当您想要使用新字体的 table 时,您可以将 table.envir 设置为适当环境的名称。它在 kable_styling() 中设置为内联 tables,在 kable 中设置为浮动 tables。这是一个对我有用的例子:

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

这个 post https://tex.stackexchange.com/a/63975 给出了一个关于 Windows 的例子,可能会有帮助。

编辑添加:kable_stylingtable.envir 参数是一个非常新的添加;您应该确保安装了最新版本的 kableExtra