web-dev-qa-db-ja.com

複数のコードチャンクを簡潔に表示する

私はblogdownでブログを作成しています。このブログでは、RのコードとStataのコードを比較しています。ユーザーがRとStataでどのように行われるかを比較できるように、両方のコードを表示したいと思います。さらに、2つ以上のチャンクを続けて配置すると(Rのコード、Stata +出力のコード)、読み取りが非常に不快になります。

いくつかのレイアウトがいくつかのチャンクを含めるように思いつきましたが、それらがすでに実装されているかどうか、またはそれが可能かどうかさえわかりません。


チャンクを表示/非表示にするボタンがあります(チャンクごとに1つのボタン)

1つのアイデアは、

  • 記事にデフォルトで表示されるRコードチャンク
  • stataコードチャンクはデフォルトでは非表示ですが、ユーザーがボタンをクリックすると表示されます

This person および this person は、blogdownでコードチャンクを折りたたむことに成功しましたが、デフォルトでは、すべてのチャンクを非表示または表示するようです。デフォルトで一部のチャンクのみを非表示にするにはどうすればよいですか? evalのコードチャンクを非表示または表示するオプション(オプションechoblogdown...など)はありますか?


「タブ」付きのチャンク

この部分のタイトルはそれ自体を物語っています:あるコードから別のコードに切り替えることができるようにタブをチャンクに含めることは可能ですか(たとえばWebブラウザーのタブのように)?


2つのチャンクを並べて表示します

一部のblogdownテーマ(たぶんすべて、わからない)では、幅がかなり狭くなり、側面に未使用のスペースがいくつかあります。したがって、記事の一部の幅を増やして、2つのチャンクを並べて表示することは可能ですか?

これらのレイアウトの1つをblogdownで実現できるかどうかはわかりませんか?

9
bretauv

私の以前の答えは少し乱雑であまり詳細ではなかったので、私がやりたかったことでうまくいく新しい答えを出します(つまり、いくつかのコードチャンクを折りたたむ可能性があります)。

解決策は この答え で指摘されているように、Jonathan Sidiの details パッケージを使用することです。元々、このパッケージの目的は、R Markdownで(したがって、R Blogdownでも)作成されたHTMLドキュメントで、sessionInfoなどの多くのスペースを必要とする出力を非表示にすることでした。次に例を示します(パッケージのWebサイトから取得)。

---
title: "Test"
output: html_document
---

```{r}
library(details)

sessioninfo::session_info()%>%
  details::details(summary = 'current session info')
```

ただし、非表示にしたいのは、一部のRコードの出力ではなく、実行することを意図していないStataコードであるため、読者が必要に応じてRコードをStataコードと比較できます。そのため、HTMLを使用する必要があります。

---
title: "Test"
output: html_document
---

## Regression with R and Stata

```{r, eval=FALSE}
lm(mpg ~ drat, data = mtcars)
```

<details>
<summary> Stata </summary>
```stata
regress y x
```
</details>

これで、読者は、必要に応じてStataコードを見ることができ、望まない人はコードチャンクが多すぎて邪魔になりません。これはBlogdown記事でも機能します(Webサイト上のRマークダウンの「ほんの一部」であるため)。

その他の機能( 隠しチャンクのカスタマイズ など)は、パッケージのWebサイトで詳しく説明されています。

0
bretauv