通过在 Markdown 中将反引号加倍,可以很容易地以代码样式呈现一些文本,包括反引号,例如:`r 2+2`
. 但是如何用RMarkdown做到这一点?通过同样的方式我们可以显示`t 2+2`
,但替换t
为r
执行 R 代码2+2
。
到目前为止,我发现的唯一方法是:
<p><code class="r">`</code><code class="r">r 2+2`</code></p>
不是很方便。也许我应该定义一个新的 css 来更方便地做到这一点?
通过在 Markdown 中将反引号加倍,可以很容易地以代码样式呈现一些文本,包括反引号,例如:`r 2+2`
. 但是如何用RMarkdown做到这一点?通过同样的方式我们可以显示`t 2+2`
,但替换t
为r
执行 R 代码2+2
。
到目前为止,我发现的唯一方法是:
<p><code class="r">`</code><code class="r">r 2+2`</code></p>
不是很方便。也许我应该定义一个新的 css 来更方便地做到这一点?
这是我使用的一个技巧。首先,注意\x60
是`
:
> cat('\x60', '\n')
`
然后你写
`r '\x60r foo+bar\x60'`
这将`r foo+bar`
在降价输出中为您提供,但这将r foo+bar
在 HTML 输出中,因此您需要使用两个(或更多)反引号来保护降价中的反引号。然后你会得到这个毛球:
`` `r '\x60r foo+bar\x60'` ``
您自己的解决方案很好,但我只是定义
rinline <- function(code) {
sprintf('``` `r %s` ```', code)
}
另请参阅这篇文章以了解另一个技巧。
对于现在正在查看此内容的任何人,您可能想在此处查看更新的解决方案: embed Rmarkdown without knitr evaluation
基本上你可以这样做:
Some R code inline : `r knitr::inline_expr("2+2")`
我猜上面描述的功能已经直接添加到 knitr 中,但它可以节省我们自己定义的功能。
我刚刚了解了这个results='asis'
选项。
所以,还有另一种方式;为了乐趣和学习:-)
```{r, results='asis', echo=FALSE}
cat("`` `r 2+2` ``")
```
这是一个令人满意的发现。首先定义函数
rinline <- function(code){
html <- '<code class="r">``` `r CODE` ```</code>'
sub("CODE", code, html)
}
在一个看不见的块。然后您可以`r 2+2`
通过键入以下内容来显示:
Some R code inline : `r rinline("2+2")` - nice
Yihui Xie的解决方案是在为 Github 存储库渲染 README.md 文件时,插入的代码中不显示引号。在那种情况下,我使用了 html 代码:
<code>`r foo(x)`</code>
内联显示`r foo(x)`
。