сворачивание общего текста в R bookdown

Я хочу свернуть общий текст при использовании Bookdown в R.

Есть много способов свернуть код.

Здесь есть несколько советов по дословному складыванию текста что не совсем то же самое, но, возможно, хорошая отправная точка.

Однако я даже не могу заставить работать это дословное сворачивание текста, несмотря на то, что следую (насколько я могу судить) совету, данному в ответ на этот вопрос.

На моем 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.

Возможно, кто-нибудь из осведомленных сможет изменить исходный текст приведен код для дословного складывания текста. Поскольку и код, и дословное сворачивание текста кажутся возможными, я надеюсь, что сворачивание общего текста может быть относительно простым ...

Спасибо.

P.


person Pete    schedule 17.12.2018    source источник


Ответы (1)


Идея такая же, как и в другом ответе. Вам просто нужно сделать складываемые абзацы идентифицируемыми, обернув их элементом div. Возьмите следующую ИМО:

---
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 должны прояснить, что там происходит. Для дальнейшей стилизации вы можете добавлять и изменять CSS по своему усмотрению.

введите описание изображения здесь

person Martin Schmelzer    schedule 17.12.2018
comment
Это сенсационно. Спасибо, Мартин. Я тоже ценю комментарии, чтобы я мог их понять. П. - person Pete; 18.12.2018
comment
Еще немного информации для тех, кто сталкивался с этой веткой: в Bookdown я добавил информацию <style> в styles.css. Информацию <script>, которую я поместил в новый файл, я назвал fold.js. Затем в моем файле bookdown я использовал block, type=“fold” согласно bookdown.org/yihui/bookdown/custom -blocks.html - person Pete; 23.12.2018