是否可以使用roxygen2的非ASCII字符编写包文档?

Fil*_*ipW 6 r roxygen2 r-package

是否可以使用roxygen2使用非ASCII字符(例如å,ä,ö)在R中编写文档?我问,因为我正在用瑞典语编写一个包含内部函数的包.

我使用以下代码使用roxygen来编写文档:

#' @param data data frame där variablen finns
#' @param x variabeln, måste vara en av typen character
Run Code Online (Sandbox Code Playgroud)

这会导致非ASCII字符失真.我可以手动更改.Rd文件,但我不愿意.

小智 7

在 Windows 上,编码在 R 中很糟糕,而且非常复杂 - 开发包的人并不总是将其视为真正的问题(请参阅roxygendevtools)。什么对我有用:

  • 如果您的包中有非 ASCII 标签的数据,例如 colorvector c(rød = "#C30000", blå = "#00A9E0"),则必须在代码中转义名称/值:

    c(r\u00f8d = "#C30000", bl\u00e5 = "#00A9E0")
    
    Run Code Online (Sandbox Code Playgroud)
  • 在文档中(如果您使用 roxygenize 或 devtools::document()),您必须在每个函数描述之前放置 @encoding UTF-8,然后使用常规键盘。

如果您在同一个文件中有两个功能(例如,您组织的设计包中的“调色板”和“饱和度”),您必须在每个描述块中放置标签,而不仅仅是一次。

例子:

    #' @encoding UTF-8
    #' datastruktur for å definere firmapalett med æøå
    dummypalett <- structure(.Data = c("#c30000", "#00A9E0"),
                   names = c("r\u00f8d", "bl\u00e5"))

    #' @encoding UTF-8
    #' neste funksjon som er beskrevet med æøåäö
Run Code Online (Sandbox Code Playgroud)

为了更好地衡量,我将Language: nob放在描述文件中,并将 Rprofile 中的编码标记更改为“UTF-8”。


Cro*_*ops 5

非 ASCII 字符很难与R( https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Package-subdirectories )一起使用。

在代码文件中只能使用 ASCII 字符(以及控制字符制表符、换页符、LF 和 CR)。其他字符在注释13 中被接受,但是注释在例如UTF-8 语言环境中可能不可读。安装包时,对象名称中的非 ASCII 字符通常会失败。带引号的字符串中允许使用任何字节,但对非 ASCII 字符应使用 \uxxxx 转义符。但是,非 ASCII 字符串在某些语言环境中可能无法使用,而在其他语言环境中可能无法正确显示。

对于文档,您必须将标签添加@encoding UTF-8到您的 roxygen2 代码中。

您可以\uxxxx使用以下方法检查标签是否已成功使用转义。

path <- "path to Rd file"
tools::checkRd(path)
Run Code Online (Sandbox Code Playgroud)