我正在使用Knitr、Markdown和Slidify撰写一份演示文稿。其中幻灯片将部分涉及Knitr作为主题,这也是我遇到问题的原因。例如,我不能在幻灯片上显示knitr-markdown块,因为它总是在第一次运行时被解释,即使我像这样做:
```
```{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
```
第一和第二张幻灯片都没问题,但最后一张是有问题的。如果在演示文稿中verbatim代码块之前有一个项目列表,它会像平常一样被解释。所以这与 @Scott 的第一种解决方法相同。我不理解这个。
编辑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
```
cat()
函数来引用所需的 knitr 代码,但我只能部分地实现,最后的 "```" 无法呈现。或者,您可以插入一个特定的符号集,例如 "/myknitrcode_start",然后在编织原始文档后查找并替换它为正确的代码。或者编写一个 R 函数来实现此功能。 - Maxim.K