\ usepackage {Sweavel}产生错误:您似乎正在使用特定于Sweave的语法

时间:2013-12-14 17:24:34

标签: r knitr

如果我在\usepackage{Sweavel}文件中包含.rnw,我会收到X11弹出错误“您似乎正在使用特定于Sweave的语法;您可能需要Sweave2knitr(”IPT-baseline-test。当我在RStudio(版本0.98.484)中编译时,将它转换为knitr。该文件编译,但我不得不驳回错误。

(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   

2 个答案:

答案 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语法。

答案 1 :(得分:0)

删除乳胶文档中的 Sweave 标记可防止出现警告。它不会阻止文件的呈现。因此,上述评论中提出的建议有效...... knit2pdf(在我的情况下)将其弄清楚。 - E