我在rmarkdown文档中创建了一些R练习,但我不希望显示答案,除非用户点击按钮。
我设法使用以下代码执行此操作:
---
title: "Aula 01 - Exercícios"
date : 2016-01-18
layout: post
comments: true
tags: exercicio
category: exercicio
---
<script>
var toggle = function(i) {
var mydiv = document.getElementById('q' + i);
if (mydiv.style.display === 'block' || mydiv.style.display === '')
mydiv.style.display = 'none';
else
mydiv.style.display = 'block'
}
</script>
1) Calcule o número de ouro no R.
$$ \frac{1 + \sqrt{5}}{2} $$
<div id="q1" style="display:none;" >
```{r}
(1 + sqrt(5))/2
```
</div>
<button type = "button" onclick="toggle(1);" class = "btn btn-success">+</button>
这很好用,但我想我正在重复很多代码。当我有100个问题并决定更改按钮名称时,我会非常难过。
无论如何,我可以做类似的事情:
---
title: "Aula 01 - Exercícios"
date : 2016-01-18
layout: post
comments: true
tags: exercicio
category: exercicio
---
<script>
var toggle = function(i) {
var mydiv = document.getElementById('q' + i);
if (mydiv.style.display === 'block' || mydiv.style.display === '')
mydiv.style.display = 'none';
else
mydiv.style.display = 'block'
}
</script>
1) Calcule o número de ouro no R.
$$ \frac{1 + \sqrt{5}}{2} $$
```{r, option_to_include_code}
(1 + sqrt(5))/2
```
所以knitr
在转换为div
之前包含必要的input
和markdown
?
答案 0 :(得分:6)
这是一种方式。这样:
<div>
回答&amp;按钮(格式由您决定)你没有以这种方式获得R代码格式化,但如果你想在它上面工作,这实际上是可行的。
---
title: "Aula 01 - Exercícios"
date : 2016-01-18
layout: post
comments: true
tags: exercicio
category: exercicio
---
```{r echo=FALSE}
library(htmltools)
q_num <- 1
q_inc <- function(q_exp) {
q_num <<- q_num + 1
return(div(div(id=sprintf("q%d", q_num-1),
style="display:none;",
pre(deparse(substitute(q_exp)), q_exp)),
HTML(sprintf('<button type="button" onclick="toggle(%d);" class="btn btn-success">+</button>',
q_num-1))))
}
```
<script>
var toggle = function(i) {
var mydiv = document.getElementById('q' + i);
if (mydiv.style.display === 'block' || mydiv.style.display === '')
mydiv.style.display = 'none';
else
mydiv.style.display = 'block'
}
</script>
1) Calcule o número de ouro no R.
$$ \frac{1 + \sqrt{5}}{2} $$
```{r, echo=FALSE, results="markup"}
q_inc((1 + sqrt(5))/2)
```
2) Calcule o número de ouro no R again.
$$ \frac{2 + \sqrt{5}}{2} $$
```{r, echo=FALSE, results="markup"}
q_inc((2 + sqrt(5))/2)
```