我正在使用Knitr,Markdown和Slidify进行演示。幻灯片将部分处理Knitr作为主题,这就是我陷入困境的原因。我不能包括例如knitr-markdown chunk来在幻灯片上显示它。即使我做了类似的事情,它也会在第一次运行时被解释:
```
```{r eval = F, include = T}
```
```
如何防止块被解释并因此从最终输出中删除,以便我可以在使用Markdown和Knitr时显示块的结构?
编辑:
我尝试了@Ramnath的版本并制作了以下幻灯片:
## Testslide 1
```{r verbatimchunk, verbatim = TRUE}
x = 1 + 1
x
```
```{r regularchunk}
x = 1 + 1
x
```
---
## Testslide 2
```{r verbatimchunk_2, verbatim = TRUE}
x = 1 + 1
x
```
* element 1
* element 2
---
## Testslide 3
* element 1
* element 2
```{r verbatimchunk_3, verbatim = TRUE}
x = 1 + 1
x
```
前两张幻灯片工作正常,但最后一张是问题。如果在逐字块之前有一个项目符号列表,则会像往常一样进行解释。所以它与@Scott的第一个解决方案相同。我不明白。
EDIT 2/3(工作解决方案)
```{r echo = FALSE}
require(knitr)
hook_source_def = knit_hooks$get('source')
knit_hooks$set(source = function(x, options){
if (!is.null(options$verbatim) && options$verbatim){
opts = gsub(",\\s*verbatim\\s*=\\s*TRUE\\s*", "", options$params.src)
bef = sprintf('\n\n ```{r %s}\n', opts, "\n")
stringr::str_c(bef, paste(knitr:::indent_block(x, " "), collapse = '\n'), "\n ```\n")
} else {
hook_source_def(x, options)
}
})
```
## Testslide
* Element one
* Element two
Some text here breaks list environment:
```{r verbatim = T}
any code
```
答案 0 :(得分:3)
我认为你需要在```{r}
之后添加一个空字符串,而knitr将不会执行该块,但会显示它。请参阅示例here
这张幻灯片适用于我(顶部执行,底部不执行)
---
```{r}
list(5, 6, 7)
```
```{r}`r ''`
hist(rnorm(100))
5 + 6
```
---
答案 1 :(得分:3)
这是另一个使用块钩子的解决方案。这个想法是,如果你有一个带有选项verbatim = TRUE
的块,它会激活钩子并逐字输出块。我已经检查过它也适用于Slidify。
```{r echo = FALSE}
require(knitr)
hook_source_def = knit_hooks$get('source')
knit_hooks$set(source = function(x, options){
if (!is.null(options$verbatim) && options$verbatim){
opts = gsub(",\\s*verbatim\\s*=\\s*TRUE\\s*", "", options$params.src)
bef = sprintf('\n\n ```{r %s}\n', opts, "\n")
stringr::str_c(bef, paste(knitr:::indent_block(x, " "), collapse = '\n'), "\n ```\n")
} else {
hook_source_def(x, options)
}
})
```
```{r verbatimchunk, verbatim = TRUE}
x = 1 + 1
x
```
```{r regularchunk}
x = 1 + 1
x
```
编辑:列表后面的代码块的技巧是列表环境需要被破坏。一种快速而肮脏的方法就是添加一个空的段落元素。或者,您可以修复挂钩,以便在代码块的开头自动添加空段落。
* element 1
* element 2
<p></p>
```{r verbatimchunk_3, verbatim = TRUE}
x = 1 + 1
x
```
答案 2 :(得分:0)
参加聚会很晚,但这似乎也可行:
```{r echo=FALSE, class.output="r", comment=""}
cat("```{r}\nx <- 1 + 1\nx\n```")
```
或者,等效但也许更好的读写方式:
```{r echo=FALSE, class.output="r", comment=""}
cat(paste(sep = "\n",
"```{r}",
"x <- 1 + 1",
"x",
"```"
))
```