bah*_*kev 19 textwrangler latex r sweave
我现在已经可以在我的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")
Run Code Online (Sandbox Code Playgroud)
作为响应,R输出以下消息:
您现在可以在'Assign4.tex'上运行LaTeX
然后我在R目录中找到.tex文件(Assign4.tex)并将其复制到我的文档~/Documents/
中.Rnw文件所在的文件夹(将所有内容保存在一个位置).
然后我在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中的一键目标,但这对我来说效果很好.
使用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的文件.这也不会删除任何已创建的图形,以防您想要将它们与完整的排版文档分开.
在bash shell命令行上:
R CMD Sweave foo.Rnw && pdflatex foo.tex
Run Code Online (Sandbox Code Playgroud)
运行Sweave,如果成功,它继续做pdflatex.Out pops pdf.如果你已经在bash终端中获得了这个,那么只需按下向上箭头即可将其取回并再次执行.然后再次.然后再次.
Makefile解决方案也不错.
小智 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步骤.