Dav*_*vid 2 r knitr r-markdown
我有两个 RMarkdown 文件。main.Rmd这是渲染的主文件,example.Rmd它包含更长的示例并在其他地方使用(因此它位于自己的文档中)。
我想example.Rmd在文件中包含突出显示其 RMarkdown 代码的代码,但不需要执行main.Rmd代码,就好像我手动将所有代码设置并复制到块中一样。example.Rmdeval=FALSE
MWE 的一个例子是
main.Rmd
---
title: This is main.rmd
output: html_document
---
```{r}
# attempt that doesnt work
cat(readLines("example.Rmd"), sep = "\n")
```
Run Code Online (Sandbox Code Playgroud)
并在example.Rmd
---
title: This is example.rmd
output: html_document
---
```{r}
# code that is not executed but shown in main.Rmd
data <- ...
```
Run Code Online (Sandbox Code Playgroud)
eval=FALSE在example.Rmd文件中设置,然后使用chunk 选项将其包含在main.Rmdchild中。
示例.Rmd
---
title: This is example.Rmd
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(eval = FALSE)
```
```{r}
# This is from example.Rmd
x <- rnorm(10)
y <- rnorm(10)
lm(y ~ x)
```
```{r}
# some comments
print("This is from example.Rmd")
```
Run Code Online (Sandbox Code Playgroud)
主.Rmd
---
title: This is main.Rmd
output:
html_document:
highlight: haddock
---
```{r example, child="example.Rmd"}
```
Run Code Online (Sandbox Code Playgroud)
要显示 Rmarkdown 文件的完整源代码,一种可能的选择是读取该 Rmd 文件,然后cat使用块选项读取它comment=""。
现在介绍语法高亮;有一个块选项class.output,可以指定 pandoc 支持语法突出显示的语言名称。
您可以通过运行以下命令来获取 pandoc 支持语法突出显示的语言名称列表:
pandoc --list-highlight-languages
Run Code Online (Sandbox Code Playgroud)
(注意,如果没有单独安装pandoc,也可以使用Rstudio本身安装的pandoc,运行rmarkdown::pandoc_exec()即可获取pandoc可执行路径)
现在,我们尝试包含的文件实际上不仅包含 R 代码,还包含 markdown 和 yaml 语法。所以这是一种混合的东西,pandoc 没有对此进行开箱即用的语法突出显示支持。我仍然选择c作为语法突出显示语言只是为了展示可能性。(也尝试过r,但语法高亮不是那么有特色)
---
title: This is main.Rmd
output:
html_document:
highlight: tango
---
## Rmarkdown
```{r example, echo=FALSE, class.output="c", comment=""}
cat(readLines("example.Rmd"), sep = "\n")
```
Run Code Online (Sandbox Code Playgroud)
但如果您想要 Rmarkdown 的特定语法突出显示,您实际上可以创建一个。请参阅pandoc 文档本身以及有关此问题的此答案。
| 归档时间: |
|
| 查看次数: |
474 次 |
| 最近记录: |