如果我在我的 \usepackage{Sweavel} 文件中包含 .rnw,我会收到一个 X11 弹出错误“看来您正在使用 Sweave 特定的语法;您可能需要 Sweave2knitr("IPT-baseline-test.rnw") 将其转换为 knitr”当我在 RStudio(版本 0.98.484)中编译。文档可以编译,但我必须忽略该错误。

(1) 为什么\usepackage{Sweavel} 会触发错误?

(2) 既然文档编译了,有没有办法关闭弹出窗口?

> sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] knitr_1.5

loaded via a namespace (and not attached):
[1] colorspace_1.2-4   dichromat_2.0-0    digest_0.6.3       evaluate_0.5.1
[5] formatR_0.10       ggplot2_0.9.3.1    grid_3.0.2         gtable_0.1.2
[9] labeling_0.2       MASS_7.3-29        munsell_0.4.2      plyr_1.8
[13] proto_0.3-10       RColorBrewer_1.0-5 reshape2_1.2.2     scales_0.2.3
[17] stringr_0.6.2      tools_3.0.2

最佳答案

你不应该需要明确地 \usepackage{Sweavel},我认为 - knitr 应该自动处理。如果您真的想抑制这种误报,您可以将 Sweavel.sty 重命名为不以 Sweave 开头的文件名……https://github.com/yihui/knitr/blob/de7c65c58acfb1f3f5c0ac2f00b92cd2546be943/R/utils-sweave.R 中的 which_sweave() 函数向您展示了 knitr 正在寻找哪些模式来检测“旧 Sweave 语法”,特别是在这种情况下,正则表达式

regexp <-
   '^\\s*\\\\(usepackage(\\[.*\\])?\\{Sweave|SweaveInput\\{|SweaveOpts\\{)'

所以改为 mySweavel.sty 应该可以工作......
grepl(regexp,"\\usepackage{Sweave}")  ## TRUE
grepl(regexp,"\\usepackage{Sweavel}")  ## TRUE
grepl(regexp,"\\usepackage{mySweavel}")  ## FALSE

我的猜测是,您的新机器上的 knitr 版本比旧机器上的更新版本,并且它更难检测旧的 Sweave 语法。

关于r -\usepackage{Sweavel} 产生错误 : It seems you are using the Sweave-specific syntax,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20586092/

10-11 17:49