2011-02-07 73 views
19

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

  1. 使用的TextWrangler,我写(以下R代码里面块由< <包围>> =上面和@)胶乳码和R代码放在一起在一个.Rnw文件中。

  2. 保存更改后,我用Sweave命令

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

    在响应调用来自R的.Rnw文件,R输出以下消息:

    现在您可以在“运行的LaTeX Assign4.tex”

    所以后来我发现在R目录.tex文件(Assign4.tex)和它复制到文件夹中的我的文档~/Documents/ .Rnw文件所在的位置(将所有内容保存在一个位置)。

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

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

请让我知道是否有任何其他的事情我可以做,以简化或改进自己的工作流程。

回答

9

使用Gregor Gorjanc的Sweave.sh脚本,在TeXShop中一键式刷新很容易。 从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权限和两个引擎文件允许执行。

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

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

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

12

我用以下形式的Makefile我Sweave文件:

pdf: myfile.tex 
    R CMD texi2pdf myfile.tex 

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

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

我肯定有一种方法可以让它更接近Mac OS X中的一键式目标,但这对我来说已经足够了。

+0

我也为sweave使用makefile;我发布了Sweave编译makefiles的几个示例:请参阅本文底部的链接:http://jeromyanglim.blogspot.com/2010/12/r-workflow-slides-from-talk-at.html – 2011-02-08 05:41:55

8

在bash shell中的命令行:

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

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

Makefile的解决方案也不错。

+3

我使用这也过了一段时间(也可以删除文件扩展名)。基本上,它只是在链中添加bibtex,并在完成时打开pdf:R CMD Sweave foo && R CMD pdflatex foo && R CMD bibtex foo && foo.pdf – 2011-02-07 17:48:24

+0

是不是可以说R CMD Sweave --pdf foo。 Rnw直接获得pdf? – 2011-11-19 07:36:27

1

如果您愿意切换到(支付)解决方案,TextMate有一个Sweave插件,可以将您从.Rnw一步转换为PDF:Sweave,排版和查看。结合Skim,它可以配置为重新加载PDF,它使调整文件变得非常简单。

2

我使用这些(保存为sweave.engine和sweavebibtex.engine)texshop中的自定义引擎。我通常在R中编写代码块,然后将该块复制到我在texshop中打开的rnw文件中。我很喜欢这个解决方案,它可以让我在同一文档(即emacs)中进行语法突出显示和拼写纠正R和tex。

#!/bin/bash 
echo 'SWEAVE | PDFLATEX. Custom engine--Akasurak-16Nov2009' 
export PATH=$PATH:/usr/texbin:/usr/local/bin 
R CMD Sweave "$1" 
pdflatex "${1%.*}" 

;第二,做中文提供,以及:

#!/bin/bash 
date 
before="$(date +%s)" 
echo 'SWEAVE | PDFLATEX | BIBTEX | PDFLATEX | PDFLATEX. Custom engine--Akasurak-16Nov2009' 
#Updated 20Jul2010 for auto including Sweave.sty 


export PATH=$PATH:/usr/texbin:/usr/local/bin 

R CMD Sweave "$1" 
R CMD pdflatex "${1%.*}" 
bibtex "${1%.*}.aux" 
R CMD pdflatex "${1%.*}" 
R CMD pdflatex "${1%.*}" 


after="$(date +%s)" 
elapsed_seconds="$(expr $after - $before)" 
date 
echo Elapsed time '(m:s)': $(date -r $elapsed_seconds +%M:%S) 

不能说他们正在做的事情的最好方法,但他们做的工作。

1

我有同样的问题(我使用Mac OSX),我选择下载Eclipse Classic 3.6.2。然后安装StatET插件。设置起来有点多毛,但是一旦你做这个环境很好,因为你可以使用pdflatex一键编译你的.Rwn Sweave文档,并为你最喜欢的浏览器设置选项,这样当你编译时,.pdf会自动弹出在TeXShop。你也可以在TeXShop中做到这一点,但是TeXShop对于调试很不方便.Rnw文件并且它不会突出显示.Rwn文件中的R代码。在Eclipse中,您可以自定义语法突出显示(不是Texclipse末端最好的,但确定),以便您可以轻松区分R和LaTeX代码。您也可以从Eclipse中启动R控制台,并且它有一个图形对象浏览器。无论如何,我可以继续。如果您想了解如何安装它的详细信息,请通知我。

2

我请使用Aquamacs或Eclipse的做.Rnw文件的编辑,然后我用下面的shell函数编译&观点是:

sweaveCache() { 
    Rscript -e "library(cacheSweave); setCacheDir(getwd()); 
    Sweave('$1.Rnw', driver = cacheSweaveDriver)" && 
    pdflatex --shell-escape $1.tex && 
    open $1.pdf 
} 

请注意,我用的cacheSweave驱动程序,有助于避免不断重新执行需要很长时间才能运行的代码段。

顺便说一句,我也试图切换到Babel而不是Sweave;不知道我最终会使用哪一种,但是我确实喜欢Babel的一些方面。

2

最好的解决方法是在这里:为TeXShop创建一个新的* .engine,然后使用快捷键或1按钮进行排版。

http://cameron.bracken.bz/sweave-for-texshop

卡梅伦也非常敏感,所以我极力推荐他的解决方案。

8

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

the compile button

7

只是注意:您可以居然直接来自R使用TEXI2DVI(在工具包)调用之类的东西pdflatex等。例如:

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

texi2pdf("Assign4.tex") 

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