【问题标题】:Function to get HTML syntax coloring in R在 R 中获取 HTML 语法着色的函数
【发布时间】:2015-08-04 16:49:02
【问题描述】:

我想知道是否有办法让 HTML 输出带有 R 中一行代码的语法着色。它应该执行以下操作:

HTMLoutput <- HTMLsysntaxColoring("a <- paste('hello,', 'world')")

输出应该是可读的 HTML 代码,显示带有 R 语法着色的行。 Knit 对整个文档执行类似操作,但我希望将它用于单个命令行。

我这样做的原因是我正在开发一个包来在 R 中进行分析(它在 CRAN、GUIProfiler 中)。它构建了一个 HTML 报告,其中包括为需要更多时间的地方隐藏的分析代码。不幸的是,我使用 Nozzle.R1 而不是 knitr 来生成报告。 Nozzle.R1 似乎已停产,无法使用语法着色显示代码。 knitr 正在积极更新,并且确实有语法着色。

我没有使用 knitr 从头开始​​重建包(也许这是我将来会做的事情),而是尝试使用 knitr 来“修补”它以生成语法着色并将其粘贴到 Nozzle.R1 包中。

【问题讨论】:

  • 我真的不清楚您在寻找什么。您能否添加更多细节以使期望的结果更加清晰?
  • 可以通过tags$style(type='text/css', "#myDiv { height: 200px; }") 的变化来实现闪亮,

标签: r syntax knitr


【解决方案1】:

这应该可以,虽然我很好奇你真正在寻找什么。

html_syntax_coloring <- function(r_code) {
  require(knitr)
  r_code <- paste0("```{r eval=FALSE}\n", paste0(r_code, collapse="\n"), "\n```")
  tmp_in <- tempfile(fileext=".Rmd")
  cat(r_code, file=tmp_in)
  tmp_out <- tempfile(fileext=".html")
  on.exit(unlink(tmp_out))
  knit2html(tmp_in, tmp_out, quiet=TRUE)
  paste0(readLines(tmp_out), collapse="\n")
}

html_syntax_coloring("a <- paste('hello,', 'world')")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2014-10-30
    • 2016-12-08
    • 2011-07-29
    相关资源
    最近更新 更多