2013-12-14 18 views
3

如果我在我的.rnw文件中包含\usepackage{Sweavel},我得到一个X11弹出错误“看起来你正在使用Sweave特有的语法;你可能当我在RStudio(版本0.98.484)中编译时,需要Sweave2knitr(“IPT-baseline-test.rnw”)将它转换为knitr。该文件编译,但我不得不解雇这个错误。 (1)\ usepackage {Sweavel}触发错误的任何想法? usepackage {Sweavel}产生错误:看起来你正在使用Sweave特有的语法

(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 
+0

它说这是'错误'还是只是'警告'? –

+1

使用'knitr'语法,而不是Sweave(而不是Sweavel)。 –

+0

@Dwin:据我所见,它不会出现在日志中......打开X11并创建一个弹出消息 –

回答

2

你不应该需要\usepackage{Sweavel}明确,我认为 - knitr会自动搞定。如果您真的想要抑制这种误报,您可以将Sweavel.sty重命名为不以Sweave开头的文件名... which_sweave()函数https://github.com/yihui/knitr/blob/de7c65c58acfb1f3f5c0ac2f00b92cd2546be943/R/utils-sweave.R显示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你的新的更新版本比旧的机器上,并它是在尝试g很难检测旧的Sweave语法。

+0

这是对的。 ''usepackage {Sweavel}'和'\ usepackage {Sweave}'对于'knitr'不是必须的,所以发出警告只是为了节省地球上的几个字节(它们可以安全地移除)和LaTeX几毫秒。 –

+0

这很有帮助,谢谢。 @Yihui,knitr曾经加入'Sweavel.sty',对吗?当我想[修改代码突出显示](http://stackoverflow.com/a/17509667/841405)时,我开始指定我自己的文件。无论如何,我的外卖是我不需要再指定它了。如果我想保留它,我需要更改名称。 –

+0

我刚开始收到这条消息。但是,当我删除\ usepackage {Sweavel}我得到的环境knitrout未定义。 –

0

删除latex文档中的Sweave标记可防止出现警告。它并没有阻止文件的渲染。因此,在上面的评论中提出的建议工作... knit2pdf(在我的情况)计算出来。 - E