我现在已经可以在我的Mac OS X 10.6机器上正常工作,这样我就可以创建具有Sweave的漂亮的LaTeX文档,其中包括R代码,输出和LaTeX格式的片段。不幸的是,我觉得我的工作流程有点笨拙而效率低下:
使用TextWrangler,我在一个.Rnw文件中将LaTeX代码和R代码(由<<>> =上面和@下面的R代码块)包围在一起。
保存更改后,我使用Sweave命令从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会很不错。我怀疑有可能在终端编写脚本来执行此操作,但我没有使用终端的经验。
如果我能采取其他任何措施来简化或改善我的工作流程,请告诉我。
答案 0 :(得分:12)
我使用以下表格的Makefile
作为我的Sweave文档:
pdf: myfile.tex
R CMD texi2pdf myfile.tex
myfile.tex: myfile.Rnw
R CMD Sweave myfile.Rnw
然后我可以通过运行命令make pdf
我确信有一种方法可以让它更接近Mac OS X中的一键式目标,但这对我来说效果不错。
答案 1 :(得分: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"
作为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.Rnw它仍然可以写一个名为myfile.tex的文件。这也不会删除任何已创建的图形,以防您想要将它们与完整的排版文档分开。
答案 2 :(得分:8)
在bash shell命令行上:
R CMD Sweave foo.Rnw && pdflatex foo.tex
运行Sweave,如果成功,则继续执行pdflatex。 Out pops pdf。如果你已经在bash终端中获得了这个,那么只需按下向上箭头即可将其恢复并再次执行。然后再次。再一次。
Makefile解决方案也很好。
答案 3 :(得分:8)
RStudio有一个按钮可以一次完成。需要注意的是,它在自己的会话中运行,因此您可能设置的任何工作空间变量都将被忽略。
答案 4 :(得分:7)
请注意:您实际上可以使用texi2dvi(在工具包中)直接从R调用pdflatex等内容。例如:
Sweave(file="/Users/mymachine/Documents/Assign4.Rnw")
texi2pdf("Assign4.tex")
将您的Rnw文件编译为pdf。因此,无需离开R来处理tex-> pdf步骤。
答案 5 :(得分: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%.*}"
和第二个,也是为了做bibtex:
#!/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)
不能说他们是最好的做事方式,但他们确实有效。
答案 6 :(得分: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
驱动程序,这有助于避免不断重新执行需要很长时间才能运行的代码段。
答案 7 :(得分:2)
最好的解决方案是:为TeXShop创建一个新的* .engine,然后使用快捷方式或1按钮进行排版。
http://cameron.bracken.bz/sweave-for-texshop
Cameron也非常敏感,所以我强烈推荐他的解决方案。
答案 8 :(得分:1)
如果您愿意切换到(付费)解决方案,TextMate有一个Sweave插件,可以一步一步将.Rnw带到PDF:Sweave,typeset和view。结合Skim,可以配置为重新加载PDF,它可以很容易地调整文件。
答案 9 :(得分: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控制台,它具有图形对象浏览器。无论如何,我可以继续。如果您需要有关如何安装所有内容的详细信息,请给我留言。
答案 10 :(得分:1)
猜猜我参加派对已经迟到了,但是我整理了一个网页,记录了我基于Eclipse的Sweave工作流程(带一键式sweave):
http://www.stanford.edu/~messing/ComputationalSocialScienceWorkflow.html