一致的代码html内联和与knitr的块

时间:2013-09-05 18:54:19

标签: html r knitr

我希望段落中的代码与代码块中显示的代码一致。

例如:

<p>
The formula method for a linear model 
is <code>lm(y~x, data = dat)</code>. 
For our data the results are:
</p>
<!--begin.rcode 
    lm(y~x, data = dat)
    end.rcode-->

使用除<code>内联之外的内容并获得与块代码相同的格式将会很不错。

我正在使用knitr

> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets 
[6] methods   base     

other attached packages:
[1] knitr_1.2

loaded via a namespace (and not attached):
[1] digest_0.6.3   evaluate_0.4.3 formatR_0.7   
[4] stringr_0.6.2  tools_3.0.1

谢谢,

最高

2 个答案:

答案 0 :(得分:3)

您可以重新定义inline挂钩,并将内联代码编写为字符串。下面是一个最小的例子(确保您使用的是所有R软件包的最新版本):

<!DOCTYPE html>
<html>
<head>
  <title>Highlight inline R code</title>
</head>
<body>
<!--begin.rcode
    library(knitr)
    hook_inline = knit_hooks$get('inline')
    knit_hooks$set(inline = function(x) {
      if (is.character(x)) highr::hi_html(x) else hook_inline(x)
    })
    end.rcode-->

<p>
The formula method for a linear model 
is <code><!--rinline 'lm(y~x, data = dat)' --></code>. 
For our data the results are:
</p>
<!--begin.rcode eval=FALSE
    lm(y~x, data = dat)
    end.rcode-->

</body>
</html>

关键是通过highr::hi_html()进行语法高亮显示,这是输出:

highlight inline R code

答案 1 :(得分:0)

您可以尝试<!--rinline deparse(substitute(lm(y~x, data = dat))) -->。 (似乎语法突出显示无效)。