Как отобразить вербальный встроенный код r с обратными выводами с помощью Rmarkdown?
В результате удвоения обратных шагов в 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 для удобства?
Ответы
Ответ 1
Вот трюк, который я использую. Во-первых, обратите внимание, \x60
is '
:
> 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)
}
Также см. Этот пост для другого трюка.
Ответ 2
Я только что узнал о опции results='asis'
.
Итак, еще один способ; для удовольствия и обучения: -)
```{r, results='asis', echo=FALSE}
cat("`` `r 2+2` ``")
```
Ответ 3
Вот удовлетворительный вывод. Сначала определите функцию
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
Ответ 4
Любой, кто смотрит на это сейчас, может захотеть проверить более свежее решение здесь: встроить Rmarkdown без оценки knitr
По сути вы можете сделать:
Some R code inline : 'r knitr::inline_expr("2+2")'
Я предполагаю, что описанная выше функциональность была добавлена в knitr напрямую, но это спасает нас от определения функции самим.