Содержимое таблицы kableExtra отображается, если тема редактора RStudio темная

Я использую темную тему RStudio и пытаюсь напечатать knitrExtra таблица в документе R Markdown. К сожалению, основное содержимое таблицы невидимо (т.е. белые символы на белом фоне).

Вопрос: как сделать kableExtra содержимое таблицы видно в документах R Markdown с темными темами редактора RStudio?

Пример кода:

```{r}
library(kableExtra)

head(iris) %>% 
  knitr::kable(caption = "**Table 1.** Iris data. ", digits = 2) %>% 
  kableExtra::kable_styling()
```

Пример вывода:

Если выбрать текст, содержимое временно становится видимым, но это не решение, которое я ищу:


Версия RStudio: 1.1.463
kabeExtraверсия: 0.9.0

1 ответ

Редактирование файла темы RStudio не работает, потому что эти изменения игнорируются при использовании {kableExtra}, как указано @Simbamangu.

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

Сначала запустите эту отредактированную версию kableExtra:::print.kableExtra():

      print.kableExtra <- function (x, ...) {
  view_html <- getOption("kableExtra_view_html", TRUE)
  if (view_html & interactive()) {
    dep <- list(
      rmarkdown::html_dependency_jquery(), 
      rmarkdown::html_dependency_bootstrap(theme = "cosmo"), 
      kableExtra::html_dependency_kePrint(), 
      kableExtra::html_dependency_lightable()
    )
    
    x <- sub('style="', 'style="color: black; ', as.character(x), fixed = TRUE)
        
    html_kable <- htmltools::browsable(
      htmltools::HTML(
        as.character(x), 
        "<script type=\"text/x-mathjax-config\">MathJax.Hub.Config({tex2jax: {inlineMath: [[\"$\",\"$\"]]}})</script><script async src=\"https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML\"></script>"
      )
    )
    htmltools::htmlDependencies(html_kable) <- dep
    class(html_kable) <- "shiny.tag.list"
    print(html_kable)
  }
  else {
    cat(as.character(x))
  }
}

Изменения заключались в добавлении x <- sub('style="', 'style="color: black; ', as.character(x), fixed = TRUE)строку, а также добавление полных ссылок на некоторые функции.

Затем вы можете распечатать таблицу, как и раньше:

      head(iris) %>% 
  knitr::kable(caption = "**Table 1.** Iris data. ", digits = 2) %>% 
  kableExtra::kable_styling()

Другие вопросы по тегам