【问题标题】:\usepackage{Sweavel} produces error: It seems you are using the Sweave-specific syntax\usepackage{Sweave} 产生错误:看来您正在使用 Sweave 特定的语法
【发布时间】:2013-12-14 17:24:33
【问题描述】:

如果我在我的 .rnw 文件中包含 \usepackage{Sweavel},我会收到 X11 弹出错误“看来您正在使用 Sweave 特定的语法;您可能需要 Sweave2knitr("IPT-baseline-test.rnw")当我在 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   

【问题讨论】:

  • 它说这是一个“错误”还是只是一个“警告”?
  • 使用 knitr 语法,而不是 Sweave(也不是 Sweave)。
  • @Dwin:据我所知,它没有出现在日志中...打开 X11 并创建一个弹出消息
  • @RomanLuštrik:我以前使用过 sweavel 包,但从未收到此消息。我现在有一台新机器,所以我想知道我的旧机器上的设置是否抑制了这个弹出消息。
  • 你想用knitr还是sweave?

标签: r knitr


【解决方案1】:

您不需要明确地\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 语法。

【讨论】:

  • 没错。 \usepackage{Sweavel}\usepackage{Sweave} 对于 knitr 来说不是必需的,因此发出警告只是为了在地球上节省几个字节(可以安全地删除它们)和几毫秒的 LaTeX。
  • 这很有帮助,谢谢。 @Yihui,knitr 曾经合并Sweavel.sty,对吗?当我想modify code highlighting 时,我开始指定我自己的文件。无论如何,我的收获是我不再需要指定它了。如果我出于任何原因想保留它,我需要更改名称。
  • 我刚开始突然收到这条消息。但是当我删除 \usepackage{Sweavel} 我得到 Environment knitrout undefined.
【解决方案2】:

删除乳胶文档中的 Sweave 标记可防止出现警告。它并没有阻止文件的呈现。因此,在上述其中一个 cmets 中提出的建议有效...... knit2pdf(在我的情况下)计算出来了。 - E

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多