【问题标题】:How to add code folding to paged_table and kable outputs in distill article in R如何在 R 中的 distill 文章中将代码折叠添加到 paged_table 和 kable 输出
【发布时间】:2022-01-16 10:30:07
【问题描述】:

感谢Martin Schmelzer,我们有一个很棒的solution 可以隐藏/显示 R Markdown HTML 文档中代码块的输出。它也适用于从 R 中的 distill 包中提取的文章。我希望它是否可以扩展到隐藏/显示 paged_table(来自 Rmarkdown 包)和 kable(来自 knitr 包)输出。我知道必须在 javascript 中添加一些内容以包含与 paged_table 和 kable 输出相关的类,但我不知道编写 javascript 代码。有可能一开始就这样做吗?谢谢。

---
title: "Untitled"
description: |
  A new article created using the Distill format.
author:
  - name: Nora Jones 
    url: https://example.com/norajones
    affiliation: Spacely Sprockets
    affiliation_url: https://example.com/spacelysprokets
date: "`r Sys.Date()`"
output: distill::distill_article
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```

#paged_table output which I want to hide/show like code folding
```{r}
rmarkdown::paged_table(iris)
```

#kable output which I want to hide/show like code folding
```{r}
knitr::kable(iris)
```

受到@TarJae 的回答的启发,我正在更新这个问题,以更清楚地说明我想要什么。我直接复制了代码以启用来自here 的 div 类元素的隐藏/显示按钮。下面给出的是按钮的 javascript 代码。

function myFunction() {
  var x = document.getElementById("myDIV");
  if (x.style.display === "none") {
    x.style.display = "block";
  } else {
    x.style.display = "none";
  }
}  

将这个js脚本文件保存为“output_folding.js”,在distill文章中通过如下代码调用。

<script src="output_folding.js"></script>

在具有 paged_table 输出或 kable 输出的代码块中启用隐藏/显示按钮。以下代码显示为 paged_table 输出。

<button onclick="myFunction()">Click Me</button>

<div id="myDIV">
```{r}
rmarkdown::paged_table(iris)
```
</div>   

这是最终结果。

点击按钮之前

点击按钮后

现在这可行,但我希望我能对此进行改进。下面显示的是 solution 中发布的代码中的隐藏/显示按钮。

点击按钮之前

点击按钮后

这对正常的代码输出完美无缺,但不适用于 paged_table 和 kabel 输出。我想要的一些功能是代码是;

  1. 默认情况下,paged_table 或 kable 输出应该是隐藏的。
  2. 单击按钮后,文本应从“隐藏输出”变为“显示输出”
  3. 一个 CSS 文件,用于修改代码按钮的颜色和字体以及其中的文本。
  4. 能够将按钮放置在右侧,以免妨碍视线。

简而言之,对于 distil 文章中的 paged_table 和 kable 输出,我希望具有与 here 中提到的相同的按钮功能。 非常感谢您阅读本文。

【问题讨论】:

    标签: r r-distill


    【解决方案1】:

    你的意思是这样的吗?

    title: "Untitled"
    description: |
      A new article created using the Distill format.
    author:
       - name: Nora Jones 
        url: https://example.com/norajones
        affiliation: Spacely Sprockets
        affiliation_url: https://example.com/spacelysprokets
    date: "`r Sys.Date()`"
    output: distill::distill_article
    ---
    
    ```{r setup, include=FALSE}
    knitr::opts_chunk$set(echo = FALSE)
    ```
    
    #paged_table output which I want to hide/show like code folding
    ```{r}
    rmarkdown::paged_table(iris)
    ```
    
    #kable output which I want to hide/show like code folding
    <button class="btn btn-primary" data-toggle="collapse" data-target="#BlockName">     Show/Hide </button>  
    <div id="BlockName" class="collapse">  
    ```{r}
    knitr::kable(iris)
    ```
    </div>
    

    【讨论】:

    • 我认为我之前的代码中存在语法错误。我错过了把'---'放在开头。现在我已经纠正了。但是是的,您给出的解决方案与我想要的类似。
    • 我已经更新了我的问题,以便更清楚地了解我想要什么。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 2020-08-17
    • 2021-02-03
    • 2012-07-07
    • 2018-12-07
    • 2017-07-28
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多