以简洁的方式显示多个代码块
Display several code chunks in a concise way
我正在用 blogdown
创建一个博客,我在其中比较了 R 代码和 Stata 代码。我想展示这两个代码,以便用户可以比较它是如何在 R 和 Stata 中完成的。但是,将两个或多个块放在一行中(R 的代码,Stata 的代码 + 输出)会使阅读变得非常不舒服。
我想到了几个布局,包括几个块,但我不知道它们是否已经实现,或者是否有可能实现。
有一个按钮到 display/hide 个区块(一个按钮 每个区块 )
一个想法是:
- 文章中默认可见的 R 代码块,
- Stata 代码块默认不可见,但如果用户单击按钮则可见
This person and this person 在 blogdown 中成功折叠了他们的代码块,但显然它默认隐藏或显示每个块。我怎样才能默认只隐藏一些块?是否有隐藏或显示 blogdown
中的代码块的选项(如选项 eval
、echo
...)?
块 "tabs"
这部分的标题不言自明:是否可以在一个块中包含选项卡,以便我们可以从一个代码切换到另一个代码(例如,就像网络浏览器中的选项卡一样)?
并排显示两个块
在某些 blogdown
主题中(也许是全部,我不知道),宽度缩小了很多,边上还有一些未使用的 space。因此,是否可以增加文章某些部分的宽度,并排显示两个块?
想知道其中一种布局是否可以在 blogdown
中实现吗?
由于我之前的回答有点乱,而且不是很详细,所以我做了一个新的回答,这个回答正好符合我想做的事情(即可以折叠一些代码块)。
解决方案是使用 Jonathan Sidi 的 details package, as pointed out by this answer。最初,这个包的目的是隐藏一些需要大量space的输出,例如sessionInfo
,在用R Markdown制作的HTML文档中(因此也用R Blogdown) .这是一个示例(取自软件包的网站):
---
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 文章(因为它是 "just" 网站上的一些 R Markdown)。
包的网站上详细介绍了更多功能(例如 customize the hidden chunks)。
我找到了另一种选择,这似乎是迄今为止最好的选择:使用 {xaringanExtra}
.
的面板集
Panelsets 适用于 {xaringan}
演示文稿以及 R Markdown(因此 {blogdown}
)输出。有关更多选项和详细信息,请参阅 here。这是一个小演示:
---
title: Title
output:
blogdown::html_page
---
```{r include = FALSE}
library(xaringanExtra)
# enable panelset
use_panelset()
```
## Title
Here's a simple way to display several code chunks in a concise way:
::::: {.panelset}
<!-- First panel -->
::: {.panel}
[R code]{.panel-name}
Check the R code below:
```{r echo = TRUE, eval = FALSE}
lm(mpg ~ drat, data = mtcars)
```
:::
<!-- Second panel -->
::: {.panel}
[Stata code]{.panel-name}
```
regress y x
```
:::
<!-- Third panel -->
::: {.panel}
[R output]{.panel-name}
```{r echo = FALSE, eval = TRUE}
lm(mpg ~ drat, data = mtcars)
```
:::
::::
我正在用 blogdown
创建一个博客,我在其中比较了 R 代码和 Stata 代码。我想展示这两个代码,以便用户可以比较它是如何在 R 和 Stata 中完成的。但是,将两个或多个块放在一行中(R 的代码,Stata 的代码 + 输出)会使阅读变得非常不舒服。
我想到了几个布局,包括几个块,但我不知道它们是否已经实现,或者是否有可能实现。
有一个按钮到 display/hide 个区块(一个按钮 每个区块 )
一个想法是:
- 文章中默认可见的 R 代码块,
- Stata 代码块默认不可见,但如果用户单击按钮则可见
This person and this person 在 blogdown 中成功折叠了他们的代码块,但显然它默认隐藏或显示每个块。我怎样才能默认只隐藏一些块?是否有隐藏或显示 blogdown
中的代码块的选项(如选项 eval
、echo
...)?
块 "tabs"
这部分的标题不言自明:是否可以在一个块中包含选项卡,以便我们可以从一个代码切换到另一个代码(例如,就像网络浏览器中的选项卡一样)?
并排显示两个块
在某些 blogdown
主题中(也许是全部,我不知道),宽度缩小了很多,边上还有一些未使用的 space。因此,是否可以增加文章某些部分的宽度,并排显示两个块?
想知道其中一种布局是否可以在 blogdown
中实现吗?
由于我之前的回答有点乱,而且不是很详细,所以我做了一个新的回答,这个回答正好符合我想做的事情(即可以折叠一些代码块)。
解决方案是使用 Jonathan Sidi 的 details package, as pointed out by this answer。最初,这个包的目的是隐藏一些需要大量space的输出,例如sessionInfo
,在用R Markdown制作的HTML文档中(因此也用R Blogdown) .这是一个示例(取自软件包的网站):
---
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 文章(因为它是 "just" 网站上的一些 R Markdown)。
包的网站上详细介绍了更多功能(例如 customize the hidden chunks)。
我找到了另一种选择,这似乎是迄今为止最好的选择:使用 {xaringanExtra}
.
Panelsets 适用于 {xaringan}
演示文稿以及 R Markdown(因此 {blogdown}
)输出。有关更多选项和详细信息,请参阅 here。这是一个小演示:
---
title: Title
output:
blogdown::html_page
---
```{r include = FALSE}
library(xaringanExtra)
# enable panelset
use_panelset()
```
## Title
Here's a simple way to display several code chunks in a concise way:
::::: {.panelset}
<!-- First panel -->
::: {.panel}
[R code]{.panel-name}
Check the R code below:
```{r echo = TRUE, eval = FALSE}
lm(mpg ~ drat, data = mtcars)
```
:::
<!-- Second panel -->
::: {.panel}
[Stata code]{.panel-name}
```
regress y x
```
:::
<!-- Third panel -->
::: {.panel}
[R output]{.panel-name}
```{r echo = FALSE, eval = TRUE}
lm(mpg ~ drat, data = mtcars)
```
:::
::::