RMarkdown - разные типы шрифтов в таблице, использующие kable или huxtable, выводить в pdf? - PullRequest
0 голосов
/ 21 марта 2019

Используя huxtable, вывод в html с разными шрифтами для разных ячеек / рядов очень прост. Не так много с PDF. Это не совсем новый вопрос, а конкретная версия RMarkdown - разные типы шрифтов в таблице, использующие kable? и Изменить шрифт Kable в Rmarkdown pdf

Я использовал ответ, полученный от https://stackoverflow.com/a/54735453/4927395, чтобы создать вывод на изображении ниже из rmarkdown (на моем компьютере с Windows). Обратите внимание, что код «среды» изменит шрифт для таблицы (всей таблицы), но этот текст после фрагмента соответствует шрифту, указанному для таблицы. Предложения, чтобы это исправить? Кроме того, я не смог заставить работать плавающий пример на моем компьютере, поэтому он закомментирован. Мне нравится huxtable, но я не видел примеров шрифта, выбранного для таблицы (где он отличается от основного шрифта), работающего в сети. Открыто для изучения других пакетов таблиц, если это абсолютно необходимо.

    ---
title: "Reprex selecting font for kable table output to pdf"
output: 
  pdf_document:
    latex_engine: xelatex
header-includes:
  \usepackage{fontspec}
  \setmainfont[Path=C:/windows/fonts/]{SHOWG.TTF}
  \newfontfamily\arialfont[Path=c:/windows/fonts/]{ARIAL}
  \newenvironment{ctable}{\arialfont }{}
  \newenvironment{capctable}[1][t]{\begin{table}[#1]\centering\arialfont}{\end{table}}
---

here is some text

```{r}
library(knitr)
library(kableExtra)
#This works, though leaves the selected font active for text after the chunk
kable(head(mtcars), booktabs=TRUE, align = "c") %>% 
   kable_styling(table.envir="ctable", font_size=12) %>%
   row_spec(0, bold = T, color = "white", background = "gray")
#This next bit doesn't work
#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")
```


here is some more text

output

1 Ответ

1 голос
/ 08 апреля 2019

Действительно, вот как это сделать в huxtable (я владелец пакета).Вам понадобится установить xelatex и пакет LaTeX "fontspec".Вам также понадобится изменяемая версия 4.4.0 или выше, в настоящее время доступная на github:

install_github("hughjonesd/huxtable")

В заголовке rmarkdown:

output:
   pdf_document:
     latex_engine: xelatex

В блоке кода R:

library(dplyr)
library(huxtable)
options(huxtable.latex_use_fontspec = TRUE)

mtcars %>%
      head() %>%
      as_huxtable() %>% 
      set_font("Times New Roman")

...