R Markdown中单个块的代码折叠?

时间:2017-03-01 22:36:27

标签: r knitr r-markdown

是否有办法在R Markdown文档中为单个块提供代码折叠,而不是其他(没有writing customized JavaScript)?

我知道我可以使用code_folding YAML选项,但这适用于整个文档。我想为单个块启用它,但不是所有块。

[原因是编写一个实验室,其中包含不应隐藏的说明,但有问题显示/隐藏解决方案。]

4 个答案:

答案 0 :(得分:3)

截至2018年12月,这是still an open issue on GitHub。但是,使用HTML details中的was suggested元素的解决方法。

在实际使用之前,这可以在某些用例中起作用。

---
title: "Bohemian Rhapcodey"
output: html_document
---

## Question 1

Are you in love with your car?

<details>
  <summary>Toggle answer</summary>
  ```{r cars}
  summary(cars)
  ```
</details>

## Question 2

Are you under pressure?

<details>
  <summary>Toggle answer</summary>
  ```{r pressure}
  plot(pressure)
  ```
</details>

Try the knitted HTML on JSFiddle

答案 1 :(得分:0)

使用details元素的解决方法效果很好,但是为了提高可发现性,我建议添加一些代码,以便当用户将鼠标悬停在该元素上时看到用户的指点。这使得该元素是交互式的更加明显。展开7hibault的示例:

<style type="text/css">
details:hover { cursor: pointer }
</style>

---
title: "Bohemian Rhapcodey"
output: html_document
---

## Question 1

Are you in love with your car?

<details>
  <summary>Toggle answer</summary>
  ```{r cars}
  summary(cars)
  ```
</details>

答案 2 :(得分:0)

这是code_folding: hide时您要显示选择代码块的操作:

```
5 * 5
```
```{r}
5 * 5 
```

第一个块(没有{r})仅显示代码,第二个块运行代码

答案 3 :(得分:0)

使用rmarkdown 2.3版

基于7hibaut的答案,但并不完全相同。如rmarkdown pull request所述,在YAML中使用class.source = "fold-show"隐藏了其他块时,请使用块标题中的选项code_folding: hide显示一个块。

    ---
    title: "Bohemian Rhapsody"
    output: 
      html_document:
      code_folding: hide
    ---

    ## Question 1

    Are you in love with your car?

    ```{r class.source = NULL, eval = FALSE}
    summary(cars)
    ```

    ## Question 2

    Are you under pressure?

    ```{r class.source = NULL, eval = FALSE}
    plot(pressure)
    ```

    ## Question 3

    suggested code

    ```{r class.source = "fold-show", eval = FALSE}
    library(dplyr)
    library(magrittr)
 
    a <- dMeasure::dMeasure$new()
    a$open_emr_db()
    ## active patients
    kensington_clinicians <- a$UserConfig %>>%
      filter(
        grepl(
          "Kensington",
          purrr::map_chr(Location, function(x) paste(x, collapse = ", "))
          # map_chr will create a 'collapsed' version of all the
          # listed locations
        )
    )
    ```

enter image description here