【问题标题】:Including code chunks in example/exercise blocks in pdf output在 pdf 输出中包含示例/练习块中的代码块
【发布时间】:2020-04-20 13:47:03
【问题描述】:

Bookdown 通过添加 environments for theorems, examples and exercises(以及更多)扩展了 R markdown。我想在示例环境中放置一个代码块:

```{example, label="ex1"}
Here is an example:

```{r eval=FALSE}
x <- 1+1
x+2
```

```

所需的输出如下:


示例 1. 这是一个示例:

x <- 1+1
x+2

上面的代码不起作用,因为代码块已经在一个```环境中。

我找到了以下解决方法,当我将文档编织到 html 页面时效果很好:

```{example, label="ex1"}
Here is an example:

<pre><code>
x <- 1+1
x+2
</code></pre>

```

不幸的是,当我将文档编织成 pdf 文件时,这不起作用 - 相反,我只是得到一个空白空间。有没有一种适用于 html 和 pdf 输出的方法?


更新:另一个不起作用的解决方案如下(基于this):

  ```{example, label="ex1"}
  Here is an example:

  ````
  `r ''````x <- 1+1
  x+2
  ```
  ````
  ```

在这种情况下,问题在于 1+1 和 x+2 之间的换行符消失了。

【问题讨论】:

  • 我认为当前版本的 bookdown 没有解决方案,但我很早就意识到这个问题,并计划修复它在未来。请随时向github.com/rstudio/bookdown/issues提出问题,谢谢!
  • @YihuiXie - 当然,我会发布一个问题!不过,我将首先对此进行更多试验 - 在我的文档的不同部分,它似乎以不同的方式(默默地)失败。我将尝试创建一个表示可能出错的不同事物的代表。

标签: r r-markdown bookdown


【解决方案1】:

解决方案非常简单,并且独立于您的输出格式。 您可以使用此表示法来包含 R 块。

````markdown
`r ''````{r}
plot(cars)
```
````

结果:

感谢Nathan Stephans

【讨论】:

  • 不幸的是,我认为这不是我想要的。我想在没有 ```{r} 位的情况下打印块内的代码。此外,此解决方案在示例环境中使用时不起作用。我更新了我的问题以澄清我在寻找什么。
  • 我不明白这一点,所以只需删除第二行和倒数第二行。
  • 如果我在示例环境中执行此操作,输出为:`markdown x \EndKnitrBlock{example}。这不是我想要的。请注意,我特别要求在示例环境中提供逐字文本。
【解决方案2】:

我不知道为什么,但以下解决方案很有效:

```{example, label="ex1"}
Here is an example:

```{r eval=FALSE}
x <- 1+1
x+2

```

这是我原来的提议,去掉了第二个```。

缺点是示例中 ```{r eval=FALSE} 部分之后的所有文本现在都变成了逐字记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多