gpt4 book ai didi

rmarkdown 从文件中读取代码并高亮显示

转载 作者:行者123 更新时间:2023-12-03 08:00:57 30 4
gpt4 key购买 nike

我有两个 RMarkdown 文件。 main.Rmd这是渲染的主文件 example.Rmd它包含更长的示例并在其他地方使用(因此它存在于自己的文档中)。

我想包括example.Rmdmain.Rmd文件的代码突出显示其 RMarkdown 代码,但代码 example.Rmd不需要执行,就好像我设置了eval=FALSE并手动将所有代码复制到 block 中。

MWE 的一个示例是

main.Rmd

---
title: This is main.rmd
output: html_document
---

```{r}
# attempt that doesnt work
cat(readLines("example.Rmd"), sep = "\n")
```

以及example.Rmd

---
title: This is example.rmd
output: html_document
---

```{r}
# code that is not executed but shown in main.Rmd
data <- ...
```

最佳答案

example.Rmd 文件中设置 eval=FALSE,然后使用 child 将其包含在 main.Rmd 中> block 选项。

示例.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")
```

ma​​in.Rmd

---
title: This is main.Rmd
output:
html_document:
highlight: haddock
---

```{r example, child="example.Rmd"}
```

code chunk included from another file with syntax highlighting


编辑

要显示 Rmarkdown 文件的完整源代码,一种可能的选择是读取该 Rmd 文件,然后使用 block 选项 comment="cat 它“

现在介绍语法高亮;有一个 block 选项class.output,可以使用它指定 pandoc 支持语法突出显示的语言名称。

您可以通过运行以下命令来获取 pandoc 支持语法突出显示的语言名称列表,

pandoc --list-highlight-languages

(注意,如果没有单独安装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")
```

included contents of rmd file with possible custom syntax highlighting


但是,如果您想要 Rmarkdown 的特定语法突出显示,您实际上可以创建一个。 See here来自 pandoc 文档本身以及 this answer关于这一点。

关于rmarkdown 从文件中读取代码并高亮显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74224443/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com