如何在 knitr::spin 中输出文字反引号
Posted
技术标签:
【中文标题】如何在 knitr::spin 中输出文字反引号【英文标题】:How to output literal backticks in knitr::spin 【发布时间】:2017-03-05 22:35:55 【问题描述】:我正在尝试在 R Studio 中为 knitr::spin
文档创建一些 sn-p 模板,我需要它们包含文字反引号,以便生成的文档包含 R sn-p:
所需输出示例:
#' ---
#' author: 'ENTER'
#' title: 'ENTER'
#' date: '`r Sys.time()`'
#' output:
#' html_document
#' ---
但是,我不知道如何输出反引号。这个:
`r paste("#' date: '`Sys.time()`')`
在从 R Studio sn-p 渲染到 R 代码时,由于刻度线会中断粘贴命令,因此将不起作用。我一直在尝试散列刻度线,添加正斜杠和反斜杠等,但还没有找到将这条线正确呈现为的解决方案:
#' date: '`r Sys.time()`'
Windows 7 企业版,64 位操作系统 R 版本:3.2.5 R Studio 版本:0.99.903 knitr 版本:1.14
示例:我试过这个,但它仍然会翻译 R 代码,而不仅仅是打印文本:
snippet spin.header
`r paste("#' ---")`
`r paste("#' author: 'ENTER'")`
`r paste("#' title: 'ENTER'")`
`r paste("#' date: '<code>``` `r Sys.time()` ```</code>'")`
`r paste("#' output:")`
`r paste("#' html_document")`
`r paste("#' ---")`
【问题讨论】:
注意:这不是 YAML 问题!正确的 YAML 输出显示在第三个代码框中。问题是渲染 R Studio Snippet 以正确显示 YAML 代码! -> 这是 R Studio sn-p 的问题! 3 号代码框工作正常,但问题是 R Studio sn-p 在 3 号框中创建第 4 行! 与这个问题更相关,但复杂程度更高***.com/questions/20409172/… 不知道它是否会有所帮助,因此只是评论而不是答案,但也许您可以使用反引号在 ASCII 表中为hex 80
的事实并滑出类似 \x80
或一些这样的。
`r paste("#\' date: '\x60Sys.time()\x60")`
不起作用吗?由于引号不平衡,您的粘贴命令也被中断了
【参考方案1】:
一种选择是破坏内联 R 在 sn-p 处理期间使用的令牌。
snippet sh
#' ---
#' author: '$1:AUTHOR'
#' title: '$2:TITLE'
#' date: '`$3:r Sys.time()`'
#' output:
#' html_document
#' ---
$0
另一种选择是完全避免内联 R 解析。
snippet sh
`r paste0(readLines("~/.R/snippets/spinheader.txt"),collapse = '\n')`
spinheader.txt
#' ---
#' author: '$1:AUTHOR'
#' title: '$2:TITLE'
#' date: '`r Sys.time()`'
#' output:
#' html_document
#' ---
$0
【讨论】:
【参考方案2】:正确答案是rawr
在cmets中发布的(他只漏掉了r和一个勾号):
snippet spin.header
`r paste("#' ---")`
`r paste("#' author: 'ENTER'")`
`r paste("#' title: 'ENTER'")`
`r paste("#\' date: '\x60r Sys.time()\x60'")`
`r paste("#' output:")`
`r paste("#' html_document")`
`r paste("#' ---")`
【讨论】:
以上是关于如何在 knitr::spin 中输出文字反引号的主要内容,如果未能解决你的问题,请参考以下文章
在任何情况下,由于我们有模板文字(反引号),JavaScript仍需要单引号或双引号吗?