【问题标题】:Add markdown code chunk to R Markdown document将 Markdown 代码块添加到 R Markdown 文档
【发布时间】:2019-04-13 01:38:42
【问题描述】:

我想编写一个 R Markdown 文档,其中提供了如何编写 R Markdown 文档的代码示例。例如,我想在文档中展示如何将文本呈现为粗体。

`**this is bold**` will render 'this is bold' with bold text, i.e. **this is bold**

这很好用,` 将其中的文本呈现为代码。但是,我不知道如何让代码块正确显示。例如

```{markdown, eval=FALSE}
  ```{r}
  x = rnorm(1)
  ```
```

这不起作用,因为 markdown 不是受支持的语言。我无法将 r 代码块包含在 ` 中,因为我需要该符号来标记代码块的开头,并且它只能内联。

我可以通过实际使用 R 来做一些箍跳

```{r, echo="FALSE"}
o = "```{r}\nx=sample(1)\n```\n"
cat(o)
```

呈现为

## ```{r}
## x=sample(1)
## ```

但这对我编写文档来说更复杂,并且它生成的代码不允许简单的复制/粘贴。

是否有一种本地方式将创建 R 代码块所需的降价代码呈现为代码?

【问题讨论】:

  • knitr 常见问题解答 7:yihui.name/knitr/faq
  • @YihuiXie 您可能有兴趣阅读 Mark 的答案,它应该在您的常见问题解答中占有一席之地
  • @DanChaltiel 谢谢!发布时我已经阅读了马克的答案。不过,knitr FAQ 7 提供了基本相同的解决方案。

标签: r-markdown knitr


【解决方案1】:

我在 Rmarkdown 上找到了 bookdown 书籍,其中包含通过 Rmarkdown 呈现 R 代码块的示例。本书源码在GitHub上,相关章节位于here

下面的块按需要工作。我无法解释为什么在块的开头需要 `r ''`,但确实如此。

````markdown
`r ''````{r}
x = sample(1)
```
````

【讨论】:

    【解决方案2】:

    如果你不在三个反引号后面加上{r},rmarkdown 只会将块传递给 markdown,它几乎可以工作。比如这个

    ```
      ```{r}
      x = rnorm(1)
      ```
    ```
    

    显示为

    这不太对; r 周围的大括号已被移除。 (我认为 r-markdown 做到了这一点,而不是 markdown。)我不知道是否有强制它们进入的选项,但如果在 r 之前有一个非字母,它们就会出现。您可以放入一个空格,或者(如果您能弄清楚如何)一个零宽度的空格,R 将使用"\u200B" 显示。

    【讨论】:

      【解决方案3】:

      您可以使用实验性的 knitrhooks 包,它添加了块选项chunk_head 以使我们能够保留标题。该软件包正在 GitHub here 上开发中。

      要安装软件包,请使用命令devtools::install_github("nathaneastwood/knitrhooks")。安装后,您可以通过加载包然后在标头中调用函数chunk_head() 来使用块挂钩。

      这是一个例子:

      ---
      title: "Untitled"
      output: pdf_document
      ---
      
      ```{r, include = FALSE}
      library(knitrhooks)
      chunk_head()
      ```
      
      
      ```{r, chunk_head = TRUE, echo = TRUE}
      x <- sample(1)
      ```
      

      不幸的是,这不会显示语法突出显示,但正如 this issue 中所讨论的,这是 knitr 处理文件的方式的限制。

      【讨论】:

        猜你喜欢
        • 2022-08-22
        • 1970-01-01
        • 2012-07-03
        • 2019-10-13
        • 2019-10-22
        • 1970-01-01
        • 2021-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多