如何使用Rmarkdown使用反引号显示逐字内联r代码?

时间:2013-12-05 19:47:02

标签: r markdown knitr r-markdown

通过将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来做到这一点?

5 个答案:

答案 0 :(得分:27)

这是我使用的技巧。首先,请注意\x60`

> cat('\x60', '\n')
` 

然后你写

`r '\x60r foo+bar\x60'`

这将在markdown输出中为您提供`r foo+bar`,但在HTML输出中将为r foo+bar,因此您需要使用两个(或更多)反对来保护markdown中的反引号。然后你最终得到了这个毛球:

`` `r '\x60r foo+bar\x60'` ``

你自己的解决方案很好,但我只是定义

rinline <- function(code) {
  sprintf('``` `r %s` ```', code)
}

另请参阅this post了解其他技巧。

答案 1 :(得分:5)

我刚刚了解了results='asis'选项 所以,另一种方式;为了好玩和学习: - )

```{r, results='asis', echo=FALSE}
cat("`` `r 2+2` ``")
```

答案 2 :(得分:4)

这是一个令人满意的发现。首先定义函数

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 

答案 3 :(得分:1)

Yihui Xie的解决方案在为Github存储库呈现README.md文件时未在插入的代码中显示封闭的引号。 在那种情况下,我使用了html代码:

<code>&grave;r foo(x)&grave;</code>

内联显示`r foo(x)`

答案 4 :(得分:0)

对于现在正在查看此内容的任何人,您可能想在这里查看最新的解决方案: embed Rmarkdown without knitr evaluation

基本上您可以这样做:

Some R code inline : `r knitr::inline_expr("2+2")`

我猜想上面描述的功能已直接添加到knitr中,但省去了我们自己定义功能的麻烦。

相关问题