微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

自定义R帮助文件-字体着色

如何解决自定义R帮助文件-字体着色

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

如果我们正常运行rdoc,则可以在下面右侧的帮助面板中看到常规的帮助文件,但是在Rstudio中使用?lm #devtools::install_github("mdequeljoe/rdoc") library(rdoc) options(rdoc.by_section = FALSE) rdoc(lm) 后再次执行该操作时,会得到帮助文件颜色编码,虽然很棒,但已发送到控制台输出(左侧)。理想情况下,我们希望在运行代码时将其保留在帮助面板中。现在的样子-它在您运行某些操作时便消失了。

.rprofile

enter image description here

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

我觉得这很难做到(如果有的话?),但有兴趣听到任何建议。

谢谢

解决方法

这是可能的,但涉及到一点点。您将需要定义自己的css文件来执行此操作,尽管可以创建一个写入相应css的函数。

作为概念证明,我使用了每个软件包的“ / html”文件夹中定义的“ R.css”文件的副本,并将h2颜色更改为红色,并将文件本地保存为“我”。 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")

我得到:

enter image description here

,

从 RStudio v1.2 开始,您可以通过创建自定义 user theme(本质上是一个 .rstheme 文件)来设计 RStudio 的集成帮助窗格。

我尝试了扩展 rscodeio theme 的帮助窗格样式(尽管没有彩色语法突出显示)。找到最新的 CSS 代码 here

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

要立即使用它,您可以

  • 使用 remotes 安装当前的 rscodeio master 分支:

    remotes::install_github("anthonynorth/rscodeio")
    

    然后在工具下激活名为Tomorrow Night Bright (rscodeio)的编辑器主题→全局选项...外观编辑器主题。包括帮助窗格 CSS 代码的第一次尝试。

  • 或 – 推荐 – 安装我的 fork 的 interim-merge branch,其中包含我所有最新工作 [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 的示例):

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。