Как правильно реализовать кнопку, чтобы скрыть код R в RMarkdown / html - PullRequest
0 голосов
/ 28 апреля 2020

Я делаю упражнения для моих учеников, используя RMarkdown и фрагмент кода, который я использовал begore, от Ronak Bhatt, но он больше не работает корректно. Вместо R-кода в правильном формате у меня `` `r ... как текстовый вывод.

Ниже я публикую все настройки, чтобы иметь кнопку, которая скрывает / показывает код в html. Я действительно ценю любую помощь. Спасибо!

В yaml R Markdown у меня есть:

---
title: "Test"
author: "..."
date:  "`r Sys.Date()`" 
output: 
  html_document:
    includes:
      in_header: scripts/uncover.html 
...
---

В настройках Knitr у меня есть:

```{r setup, include=FALSE}
uncover <- function(before, options, envir) {
     if (before) {
         id <- options$id
         button_string <- paste0("<button onclick=\"uncover('", 
                                 id, 
                                 "')\">Solução</button>")
         div_string <- paste0("<div id = '", id, 
                              "', style = 'display:none'>")
         paste(button_string, div_string, sep= "\n")
     }
     else {
         "</div><br>"
     }
 }

И в сценарии раскрыть. html У меня есть :

<script>
function uncover(id) {
    var x = document.getElementById(id);
    if (x.style.display === "block") {
      x.style.display = "none";
    } else {
      x.style.display = "block";
    }
}
</script>

1 Ответ

0 голосов
/ 29 апреля 2020

Нашел решение здесь . RMarkdown дружественен с HTML и позволяет использовать необработанный HTML в Rmarkdown, если он используется должным образом. Я не использовал ваш файл uncover. html, потому что я использовал другой код HTML прямо внутри Rmarkdown.

---
title: "Test"
author: "..."
date:  "`r Sys.Date()`" 
output: 
  html_document:
    includes:
      in_header: uncover.html
---
<button class="btn btn-primary" data-toggle="collapse" data-target="#BlockName"> Show/Hide </button>  
<div id="BlockName" class="collapse">  


```{r}

uncover <- function(before, options, envir) {
     if (before) {
         id <- options$id
         button_string <- paste0("<button onclick=\"uncover('", 
                                 id, 
                                 "')\">Solução</button>")
         div_string <- paste0("<div id = '", id, 
                              "', style = 'display:none'>")
         paste(button_string, div_string, sep= "\n")
     }
     else {
         "</div><br>"
     }
 }

```

</div>
...