如果我在我的 \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/