如何在 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仍需要单引号或双引号吗?

shell脚本中反引号与双引号的·区别与联系

Shell中常用的引号

反方向的单引号怎么打

Linux操作系统基础学习中,双引号单引号反引号的区别及样例

Python中,怎么在字符串里嵌入双引号或者单引号