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

Sté*_*ent 30 markdown r knitr r-markdown

通过将Markdown中的反引号加倍,可以很容易地呈现代码样式中的一些文本,包括反引号,例如:`r 2+2`.但是如何用RMarkdown做到这一点?通过我们可以显示的相同方式`t 2+2`,但替换tr执行R代码2+2.

我到目前为止找到的唯一方法是:

<p><code  class="r">`</code><code class="r">r 2+2`</code></p>
Run Code Online (Sandbox Code Playgroud)

不太方便.也许我应该为这样做更方便地定义一个新的CSS?

Yih*_*Xie 28

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

> cat('\x60', '\n')
` 
Run Code Online (Sandbox Code Playgroud)

然后你写

`r '\x60r foo+bar\x60'`
Run Code Online (Sandbox Code Playgroud)

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

`` `r '\x60r foo+bar\x60'` ``
Run Code Online (Sandbox Code Playgroud)

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

rinline <- function(code) {
  sprintf('``` `r %s` ```', code)
}
Run Code Online (Sandbox Code Playgroud)

另请参阅此帖以获取其他技巧.


aqu*_*aga 5

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

```{r, results='asis', echo=FALSE}
cat("`` `r 2+2` ``")
```
Run Code Online (Sandbox Code Playgroud)


adu*_*aic 5

对于现在关注此问题的任何人,您可能想在此处查看更新的解决方案: embed Rmarkdown withoutknitrvaluation

本质上你可以这样做:

Some R code inline : `r knitr::inline_expr("2+2")`
Run Code Online (Sandbox Code Playgroud)

我猜测上面描述的功能已经直接添加到knitr中,但它节省了我们自己定义函数的时间。


Mig*_*rez 5

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

<code>&grave;r foo(x)&grave;</code>
Run Code Online (Sandbox Code Playgroud)

其内联显示`r foo(x)`