R Markdown代码折叠功能无法与bash、Python代码块一起使用

6

R Markdown现在可以自动显示或隐藏代码块在.Rmd文档中。但是,这似乎只适用于R代码块。

---
output: 
  html_document: 
    code_folding: hide
---

```{r}
print("This code chunk will be hidden")
```

```{r, engine='bash'}
echo "This code chunk will not be hidden"


```{r, engine='python'}
print "Will this code chunk be hidden?"
```

```{r}
system('uname -srv',intern=T)
sessionInfo()
```

Output

我能想到的唯一解决方案是将代码隐藏在一个空白的选项卡后面。
---
output: 
  html_document: 
    code_folding: hide
---

```{r}
print("This code chunk will be hidden")
```

# Source code {.tabset .tabset-pills}

## Hide Code

## Show Code

```{r, engine='bash'}
echo "This code chunk will not be hidden"
```

```{r, engine='python'}
print "Will this code chunk be hidden?"
```

```{r}
system('uname -srv',intern=T)
sessionInfo()
```

Blank Tab

是否有更好的解决方案,可以使所有代码块都支持代码折叠?


“_code_folding: hide_” 是否等同于在初始化时设置 knitr::opts_chunk$set(echo = FALSE) - lukeA
1
不,'代码折叠'是一种独特的功能。您提到的 knitr 选项会防止所有(或选择的)代码块在文档中出现。相反,代码折叠会在文档中放置一个标有“代码”的小按钮,单击它将显示或隐藏代码块。这使最终用户可以在编译后的文档中切换代码可见性。 - user5359531
实质上,当.Rmd文件编译为.md文件时,knitr选项才会生效。此外,YAML文件头中嵌入的其他功能将在.pandoc将.md文件编译为HTML时生效。 - user5359531
3
也许你需要稍微调整一下代码,但这个可能会有所帮助:https://dev59.com/UFoU5IYBdhLWcg3wK0pX#37839683 - Martin Schmelzer
@MartinDabbelJuSmelter 非常感谢您指出这一点,我会进一步研究。巧合的是,学习如何编写和嵌入自己的JavaScript到我的RMarkdown中正是我接下来要做的事情。 - user5359531
2个回答

2
你也可以在后期制作中进行修复。我使用rmarkdown::render()(R 3.4.1)和pandoc-1.17.2将Rmd转换为HTML。生成的HTML文件使用不同的CSS类来支持不同的语言,但只有"class"为"sourceCode r"的<pre>类支持折叠。
因此,在<pre>标签中,只需将所有非-"r"类更改为"r"即可。
perl -i -pe 's/<pre class="sourceCode [^r]+">/<pre class="sourceCode r">/' myfile.html

代码块中的代码外观不会改变。

2
也许 R 版本在这里起了作用?对我来说,在没有任何修改的情况下,您的代码按预期工作:
## R version 3.3.3 (2017-03-06)
## Platform: x86_64-apple-darwin13.4.0 (64-bit)
## Running under: macOS Sierra 10.12.6

关于R Studio:
Version 1.0.136 – © 2009-2016 RStudio, Inc.

当然,我已经做了一些修改(与您最初的帖子不同)。

在此输入图片描述

```{r, engine='bash'}
echo "This code chunk will not be hidden"

使用

```{r, engine='bash'}
echo "This code chunk will not be hidden"
```

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接