更高效的R / Sweave / TeXShop工作

我现在已经在我的Mac OS X 10.6机器上正常工作,以便我可以使用Sweave创建体面的LaTeX文档,其中包括R代码片段,输出和LaTeX格式。 不幸的是,我觉得我的工作流程有点笨重和低效:

  • 使用TextWrangler,我在一个.Rnw文件中一起编写了LaTeX代码和R代码(由<< >> = above和@下面的R代码块包围)。

  • 保存更改后,我使用Sweave命令从R调用R的.Rnw文件

    Sweave(file="/Users/mymachine/Documents/Assign4.Rnw", 
            syntax="SweaveSyntaxNoweb")
    

    作为响应,R输出以下消息:

    您现在可以在'Assign4.tex'上运行LaTeX

    然后,我在R目录中找到.tex文件(Assign4.tex),并将其复制到我的文档~/Documents/其中.Rnw文件所在的文件夹(将所有内容保存在一个位置)。

  • 然后,我在TeXShop中打开.tex文件(例如Assign4.tex)并将其编译为pdf格式。 只有在这个时候,我才能看到我对文档所做的任何更改,看看它是否“看起来不错”。

  • 有没有一种方法可以通过单击一个按钮来编译所有内容? 具体来说,直接从TextWrangler或TeXShop调用Sweave / R会很好。 我怀疑可能在终端中编写脚本来完成它,但我对终端没有经验。

    请让我知道,如果我还能做其他事情来简化或改进我的工作流程。


    在TeXShop中使用Gregor Gorjanc的Sweave.sh脚本轻松实现一键式Sweaving。 从http://cran.r-project.org/contrib/extra/scripts/Sweave.sh获取它,并将它放在你的~/Library/TeXShop/bin/文件夹中。

    然后将以下文件添加到~/Library/TeXShop/engines/文件夹中:

    作为Sweave.engine

    #!/bin/bash
    ~/Library/TeXShop/bin/Sweave.sh  -ld "$1"
    

    作为SweaveNoClean.engine

    #!/bin/bash
    ~/Library/TeXShop/bin/Sweave.sh  -nc -ld "$1"
    

    您必须在Sweave.sh和两个引擎文件上设置权限才能执行。

    单击Sweave,在添加这些文件后重新启动TeXShop,打开Sweave文档(使用Rnw扩展名),并在文档窗口上方的下拉菜单中将其从LaTeX更改为Sweave或SweaveNoClean。

    注意:“Sweave”选项将自行清理,删除LaTeX和Sweave创建的所有额外文件。 如果你的文件被称为myfile.Rnw,这将包括名为myfile.R和myfile.tex的文件。 所以对智者来说一句话:确保你的Rnw文件的基名是唯一的; 那么没有任何意外的事情会被写下来然后被删除。

    SweaveNoClean选项不会自行清理。 这可以确保你不会删除任何意想不到的事情; 尽管它仍然可以写入一个名为myfile.tex的文件,如果您将一个myfile.Rnw文件读取出来的话。 这也不会删除已创建的任何图形,以防您希望将它们与完整的排版文档分开。


    我为我的Sweave文档使用了以下格式的Makefile

    pdf: myfile.tex
        R CMD texi2pdf myfile.tex
    
    myfile.tex: myfile.Rnw
        R CMD Sweave myfile.Rnw
    

    然后,我可以通过运行命令make pdf在Mac OS Terminal中一步建立文档

    我相信在Mac OS X中有一种方法可以使它更接近您的单击目标,但这对我来说已经足够了。


    在bash shell命令行上:

    R CMD Sweave foo.Rnw && pdflatex foo.tex
    

    运行Sweave,如果成功,则继续执行pdflatex。 Out弹出pdf。 如果你在bash Terminal里有这个,那么只需点击箭头把它取回来,然后重新执行。 然后再次。 然后再次。

    Makefile解决方案也不错。

    链接地址: http://www.djcxy.com/p/33435.html

    上一篇: More efficient R / Sweave / TeXShop work

    下一篇: R Sweave user defined function