【问题标题】:Create code snippets for various languages in rmardown programmatically以编程方式在 rmardown 中为各种语言创建代码片段
【发布时间】:2020-11-21 11:39:28
【问题描述】:

我尝试通过提供的参数以编程方式创建代码 sn-p,但保持目标编程语言动态。

我尝试了什么: 关注https://stackoverflow.com/a/64855295/8538074 我知道我可以使用opts <- knitr::opts_chunk$get() 这将包括一个可以尝试的引擎opts$engine 赌注设置为“SQL”。

我想这样的事情应该会起作用,因为: https://github.com/yihui/knitr-examples/blob/master/115-engine-sql.md https://github.com/yihui/knitr-examples/blob/master/115-engine-sql.Rmd

(但我需要从代码中渲染它,因为我通过 rmarkdown 文件的参数移交了相应的代码字符串)

我最好的尝试:

---
title: "xx"
output: html_document
params:
  code: list(language = "SQL", code_string = "SELECt * FROM tbl LIMIT 15")
---
   

```{r setup, include=FALSE}
hook <- knitr::hooks_html()$source
opts <- knitr::opts_chunk$get()

language <- params$code$code$language
opts$engine <- language

code_string <- params$code$code_string
cat(hook(code_string, options = opts))

```

【问题讨论】:

  • 首先你的代码有一些错误。首先解析输出参数,就像我在另一个问题上回答的那样:chunks &lt;- eval(parse(params$code))。然后您可以访问chunks$languagechunks$code_string。当我渲染文档时,我收到了由 Andre simon 安装 highlight 的错误。然后你可以试试或者设置opts$highglight &lt;- FALSE
  • 你是对的,谢谢。如果有人需要,我会添加一个自我回答。或者当然会赞成并接受您的回答。

标签: r r-markdown


【解决方案1】:

根据马丁的评论:

---
title: "xx"
output: html_document
params:
  code: list(language = "SQL", code_string = "SELECT * FROM tbl LIMIT 15")
---
   

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```


```{r, results = 'asis', echo = F}
chunks <- eval(parse(text = params$code))
hook <- knitr::hooks_html()$source
opts <- knitr::opts_chunk$get()

opts$highlight <- FALSE
code_string <- chunks$code_string
cat(hook(code_string, options = opts))

```

【讨论】:

    猜你喜欢
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多