Содержимое таблицы 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.463kabeExtra
версия: 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()