【问题标题】:folding general text in R bookdown在R bookdown中折叠一般文本
【发布时间】:2019-05-17 12:41:47
【问题描述】:

我想在 R 中使用 bookdown 时折叠一般文本

有很多方法可以折叠代码

这里有一些针对folding verbatim text 的建议,虽然不完全相同,但也许是一个很好的起点。

但是,尽管遵循(据我所知)针对该问题给出的建议,但我什至无法使这种逐字文本折叠工作。

在我的 Mac 上,逐字折叠功能有效……但发出以下警告:

Warning messages:
1: In get_engine(options$engine) :
  Unknown language engine 'fold' (must be registered via knit_engines$set()).

每当我添加这个块时。建议:

```{fold}
Here I am
```

在 Windows 上,代码根本不会产生任何折叠;文本出现,但没有折叠所述文本。

在任何情况下,文本都会出现逐字显示(这并不奇怪,因为说明是这样的),但理想情况下,我希望能够折叠一般文本。

谁能给点建议?即:R bookdown中的一倍通用文本如何

作为背景:我是bookdown的新手,我很了解R,但我不知道任何与javascript相关的东西。

也许知道的人可以to amend the original code given 折叠逐字文本。由于代码和逐字文本折叠似乎都是可能的,我希望一般文本的折叠可能相对容易......

谢谢。

P.

【问题讨论】:

    标签: r r-markdown bookdown


    【解决方案1】:

    这个想法与其他答案相同。您只需要通过在它们周围包裹一个div 元素来使要折叠的段落可识别。采取以下 MRE:

    ---
    title: "Hide Verbatim Blocks"
    author: "Martin Schmelzer"
    date: "June 22, 2018"
    output: 
      bookdown::html_document2
    ---
    
    <style>
    .fold-btn { 
      float: right; 
      margin: 5px 5px 0 0;
    }
    .fold { 
      border: 1px solid black;
      min-height: 40px;
    }
    </style>
    
    <script type="text/javascript">
    $(document).ready(function() {
      $folds = $(".fold");
      $folds.wrapInner("<div class=\"fold-blck\">"); // wrap a div container around content
      $folds.prepend("<button class=\"fold-btn\">Unfold</button>");  // add a button
      $(".fold-blck").toggle();  // fold all blocks
      $(".fold-btn").on("click", function() {  // add onClick event
        $(this).text($(this).text() === "Fold" ? "Unfold" : "Fold");  // if the text equals "Fold", change it to "Unfold"or else to "Fold" 
        $(this).next(".fold-blck").toggle("linear");  // "swing" is the default easing function. This can be further customized in its speed or the overall animation itself.
      })
    });
    </script>
    
    # Rmd file
    
    
    <div class="fold">
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.   
    
    Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.   
    
    Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.   
    
    Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.   
    
    Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.   
    
    At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur
    </div>
    

    如您所见,我们将 div 容器与类 .fold 包裹在文本周围。 JS sn-p 旁边的 cmets 应该澄清那里发生的事情。 对于进一步的样式,您可以根据需要添加和更改 CSS。

    【讨论】:

    • 这太耸人听闻了。谢谢马丁。也欣赏cmets,所以我可以理解。 P.
    • 对于那些遇到此线程的人的更多信息:在 Bookdown 中,我将 &lt;style&gt; 信息添加到 styles.css。我将&lt;script&gt; 信息放在一个名为fold.js 的新文件中。然后在我的 bookdown 文件中,我使用了 block, type=“fold” bookdown.org/yihui/bookdown/custom-blocks.html
    猜你喜欢
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 2020-04-07
    • 2013-08-30
    • 2013-11-29
    相关资源
    最近更新 更多