更高效的R/Sweave/TeXShop工作流程?

bah*_*kev 19 textwrangler latex r sweave

我现在已经可以在我的Mac OS X 10.6机器上正常工作,这样我就可以创建具有Sweave的漂亮的LaTeX文档,其中包括R代码,输出和LaTeX格式的片段.不幸的是,我觉得我的工作流程有点笨拙且效率低下:

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

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

    Sweave(file="/Users/mymachine/Documents/Assign4.Rnw", 
            syntax="SweaveSyntaxNoweb")
    
    Run Code Online (Sandbox Code Playgroud)

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

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

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

  3. 然后我在TeXShop中打开.tex文件(例如Assign4.tex)并将其编译成pdf格式.只有在这一点上,我才能看到我对文档所做的任何更改,看看它是否"看起来不错".

有没有办法可以通过一键点击编译所有内容? 具体来说,直接从TextWrangler或TeXShop调用Sweave/R会很不错.我怀疑有可能在终端中编写脚本来执行此操作,但我没有使用终端的经验.

如果我能做任何其他事情来简化或改进我的工作流程,请告诉我.

las*_*ock 12

我使用Makefile以下表格作为我的Sweave文档:

pdf: myfile.tex
    R CMD texi2pdf myfile.tex

myfile.tex: myfile.Rnw
    R CMD Sweave myfile.Rnw
Run Code Online (Sandbox Code Playgroud)

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

我确信有一种方法可以让它更接近你在Mac OS X中的一键目标,但这对我来说效果很好.


Aar*_*ica 9

使用Gregor Gorjanc的Sweave.sh脚本在TeXShop中轻松实现一键式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"
Run Code Online (Sandbox Code Playgroud)

作为SweaveNoClean.engine:

#!/bin/bash
~/Library/TeXShop/bin/Sweave.sh  -nc -ld "$1"
Run Code Online (Sandbox Code Playgroud)

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

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

请注意:"Sweave"选项将自行清理,删除LaTeX和Sweave创建的所有额外文件.如果您的文件名为myfile.Rnw,则会包含名为myfile.R和myfile.tex的文件.所以明智的一句话:确保你的Rnw文件的基名是唯一的; 然后没有任何意外的事情将被写入然后删除.

SweaveNoClean选项不会自行清理.这样可以确保您不会删除任何意外的内容; 虽然如果你编写一个myfile.Rnw它仍然可以写一个名为myfile.tex的文件.这也不会删除任何已创建的图形,以防您想要将它们与完整的排版文档分开.


Spa*_*man 8

在bash shell命令行上:

R CMD Sweave foo.Rnw && pdflatex foo.tex
Run Code Online (Sandbox Code Playgroud)

运行Sweave,如果成功,它继续做pdflatex.Out pops pdf.如果你已经在bash终端中获得了这个,那么只需按下向上箭头即可将其取回并再次执行.然后再次.然后再次.

Makefile解决方案也不错.

  • 我也使用它但是更长一点(也可以删除文件扩展名).基本上它只是在链中添加bibtex并在完成时打开pdf:R CMD Sweave foo && R CMD pdflatex foo && R CMD bibtex foo && foo.pdf (3认同)

Jer*_*zig 8

RStudio有一个按钮可以一次完成.需要注意的是,它在自己的会话中运行,因此您可能设置的任何工作空间变量都将被忽略.

编译按钮


小智 7

请注意:您实际上可以使用texi2dvi(在工具包中)直接从R调用pdflatex等内容.例如:

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

texi2pdf("Assign4.tex")
Run Code Online (Sandbox Code Playgroud)

将您的Rnw文件编译为pdf.因此,无需离开R来处理tex-> pdf步骤.