Makefile for dummies? Mac OS X.

时间:2011-02-07 16:36:07

标签: r latex terminal sweave osx-leopard

我无法理解我之前在stackoverflow上询问的上一个问题的答案:

More efficient R / Sweave / TeXShop work-flow?

答案特别来自用户:las3rjock,他建议创建一个“makefile”并运行makefile来自动编译R(Sweave)中的.Rnw然后在LaTeX中编译。我不知道makefile是什么,或者如何在Mac OS X上的终端(?)中使用它。我的网络搜索返回了我的知识水平以上的东西。我想我需要一些手来创建并运行一个makefile。

任何人都可以提供关于如何创建makefile以运行Sweave / LaTeX的“虚拟”指令,或者更多,在上一个问题中使用las3rjock的答案吗?谢谢!

4 个答案:

答案 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