我无法理解我之前在stackoverflow上询问的上一个问题的答案:
More efficient R / Sweave / TeXShop work-flow?
答案特别来自用户:las3rjock,他建议创建一个“makefile”并运行makefile来自动编译R(Sweave)中的.Rnw然后在LaTeX中编译。我不知道makefile是什么,或者如何在Mac OS X上的终端(?)中使用它。我的网络搜索返回了我的知识水平以上的东西。我想我需要一些手来创建并运行一个makefile。
任何人都可以提供关于如何创建makefile以运行Sweave / LaTeX的“虚拟”指令,或者更多,在上一个问题中使用las3rjock的答案吗?谢谢!
答案 0 :(得分:10)
我在getting started with makefiles for Sweave上写了一篇包含链接的帖子。
来自帖子:
我还发布了四个示例Sweave文档。 每个人都有github上提供的完整源代码。 每个人都使用一个makefile。 在前两个教程中,描述了makefile的详细信息:
答案 1 :(得分:6)
makefile是一个纯文本文件,它指定如何通过一系列操作给定一组“依赖项”来制作“目标”。目标是左边的东西,在它们之后带有“:”,依赖关系在该行的其余部分。后续的缩进行是应该成为目标的动作。
因此,例如在您的LaTeX案例中,.pdf文件是您的最终目标,这取决于您的.tex文件。所以有一个运行pdflatex的动作。 .tex本身是从.Rnw文件创建的,所以还有另一个规则是通过运行Sweave从foo.Rnw生成foo.tex。
make的美妙之处在于它检查依赖项的时间戳。它最初用于编译大型C程序,分为许多文件。在编译最终程序时,没有必要重新编译你没有更改过的所有.C文件,因此Makefile只会编译已更改的.C文件并将所有.o文件链接到可执行文件中。
Make已被超越原始方案的利用方式,以至于可以使用更新的自动构建解决方案,因此您可能会看到有关cmake,ant,maven和其他一些内容的提及。我不知道他们中有一半是什么。
答案 2 :(得分:3)
我刚刚阅读了上一个问题和这个问题,但这里是我为Mac OS X编写的一个小脚本脚本。我不确定这是不是你想要的,但也许你可以从中学习:
#!/bin/sh
R CMD Sweave yourfile.Rnw
for file in `ls pdfs`;
do pdfcrop "$file" pdfs/"$file"
done
pdflatex yourfile.tex
open yourfile.pdf
如果您不知道:您可以通过chmod +x yourscriptfile.sh
使此脚本可执行,然后通过./yourscript
运行。第一行开始创建.tex文件的Sweave。 for循环是可选的:它用于将.pdf图形裁剪到子文件夹。我发现这比在R的绘图中处理边距要容易得多 - 特别是如果我想优化.pdf报告中的位置。
工作流程我执行以下操作:1。存储打印到R对象中的所有内容(例如功能结果和图形)。 2.只需在Sweave中使用一条小线来获取整个分析。这样我的Sweave文档几乎不包含任何非LaTeX代码并且仍然很方便。每当我编辑文本时,我只需要编辑sweave文件(或者如果我不需要刷新计算,甚至只需要.tex文件)
HTH
答案 3 :(得分:2)
创建一个名为Makefile
的文件,用于存储文档并将其打开。
复制/粘贴他在Makefile
中输入的代码(并记住将myfile
替换为您要生成的文件的名称)
在文档目录中打开控制台,然后键入make pdf