4

我应该如何为我正在使用bookdown包编写的书中的练习编写解决方案?

我目前正在使用bookdownR 包写一本书。这本书分为章节,每章都有一个markdown编号列表中的练习。我希望能够将解决方案直接放在练习下方,而不会弄乱问题的编号,并且我可以切换是否打印解决方案。我还希望能够提取选定的解决方案(或所有解决方案)以形成一个解决方案手册,作为附录打印出来。到目前为止,我有两种方法,我称之为“隐藏 R 块方法”和“YAML 方法”,但似乎都不理想,只能用于创建解决方案手册。

1. Exercise one compute 1+1. 
```{r, echo = FALSE, eval = FALSE}
  #Solution
  1+1
  #BeginText The solution is `r 1 + 1`.
  #EndText
```
1. Exercise two: compute 2^2.
```{r, echo = FALSE, eval = FALSE}
  #Solution
  2*2
  #BeginText The solution is $2^2 = $`r 2*2`.
  #EndText
```

然后我编写了一个脚本,它使用#Solution 注释提取任何内容,并像这样将#BeginText 和#EndText 断开:

###Problem 1.
```{r }
  1+1
```
The solution is `r 1 + 1`.

###Problem 2. 
```{r }
  2*2
```
The solution is $2^2 = $`r 2*2`.

并将其保存在具有适当标题的新 .Rmd 文件中。

第二种解决方案涉及练习之间的 YAML。

1. Exercise one compute 1+1. 
---
solution: |
  ```{r}
    1+1
  ```
  The solution is `r 1 + 1`.
---

我的合著者曾希望他可以使用现有的解析器提取 YAML,但最终不得不像隐藏的 R 块方法一样编写脚本。我不确定像这样使用 YAML 有多么糟糕。两种解决方案都要求每个练习至少有一个解决方案存根,以便编号相同。

我希望练习的解决方案以某种方式与练习相关联,这样,如果我们重新安排练习或添加新练习,就不会出现任何问题。我还希望能够将部分或全部解决方案提取到单独的降价文件中,我们可以使用这些文件来创建解决方案手册。

我们应该怎么做?

4

0 回答 0