如果 RStudio 编辑器主题为深色,kableExtra 表的内容将不可见

Geg*_*naV 9 r rstudio r-markdown kableextra

我使用深色 RStudio 主题并尝试knitrExtra在 R Markdown 文档中打印表格。不幸的是,表格的主要内容是不可见的(即白色背景上的白色符号)。

问题:如何使用kableExtra深色 RStudio 编辑器主题使 R Markdown 文档中的表格内容可见?

代码示例:

```{r}
library(kableExtra)

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

输出示例:

在此输入图像描述

如果选择文本,内容会暂时可见,但这不是我正在寻找的解决方案:

在此输入图像描述


RStudio 版本: 1.1.463
kabeExtra版本: 0.9.0

Mat*_*lke 1

编辑 RStudio 主题文件不起作用,因为正如 @Simbamangu 指出的那样,使用 {kableExtra} 时这些更改会被忽略。

这是一个解决方法,我们在打印期间编辑 kable html 以包含设置颜色样式的内联 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))
  }
}
Run Code Online (Sandbox Code Playgroud)

更改包括添加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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述