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

时间:2019-02-16 05:49:47

标签: r-markdown kable kableextra

我正在使用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")

1 个答案:

答案 0 :(得分: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的{​​{1}}参数是一个相当新的添加;您应该确保已安装最新版本的kable_styling