【问题标题】:R Markdown code folding doesn't work with bash, Python code chunksR Markdown 代码折叠不适用于 bash、Python 代码块
【发布时间】:2017-02-21 17:34:51
【问题描述】:

R Markdown 现在可以在您的 .Rmd 文档中自动选择show or hide code chunks。但是,这似乎只适用于 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: 
  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()
```

有没有更好的解决方案可以为所有代码块启用代码折叠?

【问题讨论】:

  • code_folding: hide 是否等同于在初始化时设置knitr::opts_chunk$set(echo = FALSE)
  • 没有。 “代码折叠”是一个独特的功能。您提到的 knitr 选项可防止所有(或选定的)代码块完全出现在文档中。代码折叠会在文档中放置一个标记为“代码”的小按钮,单击它会显示或隐藏代码块。这允许最终用户在编译的文档中切换代码可见性。
  • 本质上,knitr 选项在 .Rmd 文件编译为 .md 时生效。当 pandoc 将 .md 文件编译为 HTML 时,此功能以及嵌入在 YAML 文件头中的其他功能生效。
  • 您可能需要稍微调整一下代码,但这可能会有所帮助:stackoverflow.com/questions/37755037/…
  • @MartinDabbelJuSmelter 非常感谢您指出这一点,我会调查的。巧合的是,弄清楚如何在我的 RMarkdown 中编写和嵌入我自己的自定义 JavaScript 是我的待办事项列表中的下一个。

标签: python r bash markdown r-markdown


【解决方案1】:

也许 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工作室

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"
```

【讨论】:

    【解决方案2】:

    您也可以在后期制作中修复它。我使用 rmarkdown::render() (R 3.4.1) 和 pandoc-1.17.2 转换 Rmd->HTML。生成的 HTML 文件对不同的语言使用不同的 CSS 类,但只有

     类“sourceCode r”支持折叠。 
    
    

    所以,只需在

     标记中将所有非“r”类更改为“r”:
    
    
    perl -i -pe 's/<pre class="sourceCode [^r]+">/<pre class="sourceCode r">/' myfile.html
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 2012-03-10
      • 1970-01-01
      • 2016-10-26
      相关资源
      最近更新 更多