1

我想知道是否可以自定义 R 帮助文件,以便某些文本采用颜色编码并且更易于阅读。rdoc已经这样做了,只是它将输出发送到控制台。相反,我希望将其发送到帮助面板(我正在使用Rstudio)。有什么解决方法吗?

如果我们?lm正常运行,我们可以在右下方的帮助面板中看到通常的帮助文件,但是当您在使用rdocin后再次执行此操作时,Rstudio我们会得到帮助文件的颜色编码,这很好,但它会发送到控制台输出(左侧) . 理想情况下,我们希望它在运行代码时一直显示在帮助面板中。现在的方式 - 它会在您运行某些东西的那一刻消失。

?lm
#devtools::install_github("mdequeljoe/rdoc")
library(rdoc)
options(rdoc.by_section = FALSE)
rdoc(lm)

在此处输入图像描述

我想将代码放入与@csgillespie .rprofile.rprofile类似的代码中。请注意,如果您遵循他的代码,您可以使用而不必直接调用来生成颜色编码的控制台输出。?lmrdoc(lm)

我觉得这不容易(如果有的话?)但有兴趣听到任何建议。

谢谢

4

2 回答 2

2

这是可能的,但有点牵涉。您需要定义自己的 css 文件来执行此操作,尽管可以创建一个编写适当 css 的函数。

作为概念证明,我使用了在每个包的“/html”文件夹中定义的“R.css”文件的副本,只是将 h2 颜色更改为红色,并将该文件在本地保存为“my.css”。

无论如何,一旦你有了 css 文件,这个函数将在你的 R 查看器窗口中显示适当的帮助文件和适当的样式:

help_css <- function(func, css_file)
{
  pack <- sub("^.*:(.*)>$", "\\1", capture.output(environment(func)))
  func <- deparse(substitute(func))
  
  x <- readLines(paste0(find.package(pack), "/html/", func, ".html"))
  x[3] <- paste("<style>", 
                paste(readLines(css_file), collapse = "\n"), 
                "</style>")
  writeLines(x, file.path(tempdir(), "test.html"))
  
  myViewer <- getOption("viewer")
  myViewer(file.path(tempdir(), "test.html"))
}

因此,例如,如果我这样做:

help_css(lm, "my.css")

我得到:

在此处输入图像描述

于 2020-10-11T22:09:41.997 回答
1

从 RStudio v1.2 开始,您可以通过创建自定义用户主题(本质上是一个.rstheme文件)来设置 RStudio 的集成帮助窗格的样式。

我已经尝试过扩展rscodeio主题的帮助窗格样式(但没有彩色语法突出显示)。最新的 CSS 代码可在此处找到。

帮助窗格样式当前仅在可选的Tomorrow Night Bright (rscodeio)编辑器主题中可用。

要立即使用它,您可以

  • 使用遥控器安装当前的 rscodeiomaster分支:

    remotes::install_github("anthonynorth/rscodeio")
    

    然后激活Tomorrow Night Bright (rscodeio)Tools→下命名的编辑器主题Global Options…</kbd> → AppearanceEditor theme. A first attempt of the help pane CSS code is included.

  • 或者 – 推荐 – 安装我的 forkinterim-merge分支,其中包含我所有最新的工作 [1] 大修包,包括一个新apply_theme参数来立即激活所需的编辑器主题:

    remotes::install_github("salim-b/rscodeio@interim-merge")
    rscodeio::install_themes(apply_theme = "Tomorrow Night Bright (rscodeio)")
    

[1]:这也是上游提出的(12),但从那以后我没有收到作者的回复。

结果如下所示(例如?pal::as_string):

于 2021-01-23T09:28:18.217 回答