roxygen文档的代码块中带有{ }的字符串的逐字呈现

41zrol4v  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(79)

我有一些正则表达式,我想把它们放到我的R包文档中:

this <- c("letter-number"="^([a-zA-Z]{1}[0-9]+)")

当我把它放入roxygen文档字符串作为

#' @details This is the regex schema that I use: "`r this`".
#' @export
this <- c("letter-number"="^([a-zA-Z]{1}[0-9]+)")

它被渲染为^([a-zA-Z]10-9+),即吸收了花括号/对花括号内的表达式求值,看编译后的.Rd文件,我怀疑是帮助文件渲染的问题,就像在那个文件中,该行显示为"^([a-zA-Z]{1}\link{0-9}+)"(尽管roxygen将方括号转换为\link{}指令是有问题的;当我用?this查看帮助文件时,它会被忽略)。
什么是逐字显示这种字符串的适当方法?

> packageVersion("roxygen2")
[1] ‘7.1.2’
> packageVersion("devtools")
[1] ‘2.4.3’
> packageVersion("glue")
[1] ‘1.6.2’

(我现在只能使用过时的R 4.1.2。

n3h0vuf2

n3h0vuf21#

虽然这 * 可能 * 是roxygen2中的一个bug(或者它对rmarkdown的使用),但如果你能容忍一个helper-function,那么我们可以这样做:

backticks <- function(z) paste0('`', z, '`')
#' This.
#' @details This is the regex schema that I use: "`r backticks(this)`".
#' @export
this <- c("letter-number"="^([a-zA-Z]{1}[0-9]+)")

使用devtools::document()渲染(除其他方式外,效果相同)会在man/this.Rd文件中产生以下结果:

\details{
This is the regex schema that I use: "\verb{^([a-zA-Z]\{1\}[0-9]+)}".
}

其呈现为

Details:

     This is the regex schema that I use: "^([a-zA-Z]{1}[0-9]+)".

对于上下文,R-4.2.3 in emacs/ESS with

packageVersion("roxygen2")
# [1] '7.2.3'
packageVersion("devtools")
# [1] '2.4.5'
packageVersion("rmarkdown")
# [1] '2.20'
packageVersion("glue")
# [1] '1.6.2'

相关问题