如何将sweave copy生成的图形制作成子文件夹?

时间:2011-01-12 22:09:02

标签: r sweave

我很乐意在我的Sweave报告中创建的所有graphics.pdf上使用一些基于shell脚本的pdfcrop。因此,如果将所有图形存储到子文件夹而不是丢弃所有乳胶类似.aux .log文件(等等)所在的位置,我会很高兴。如果我只需要在特定目录中的所有文件上使用裁剪脚本,那就容易多了。

这是我的Sweave大块:

\begin{figure}[htbp]
  \begin{center}
  <<fig=true,echo=false>>=
  print(mygraph)
  @
\caption{my graph}
\end{center}
\end{figure}

如果我运行sweave代码,mygraph.pdf存储在与report.tex文件本身相同的目录中。

有没有办法将此文件存储在像/ graphics这样的现有子文件夹中?

2 个答案:

答案 0 :(得分:9)

插入此内容:

\SweaveOpts{prefix.string=foo/bar}

进入您的Sweave源文件,最好是前言中的顶部。上面的行取自Sweave FAQ,并指出创建的数字将存储在子目录(Sweave源所在的目录)foo中,每个图像文件名将以bar开头。在Sweave FAQ.

中讨论了这一点以及更多内容

答案 1 :(得分:6)

好的RTFM,ran2。

以下是:

 \SweaveOpts{prefix.string=graphics/report} 

另见:the manual

图形是目录,报告是您可能想要使用的子字符串。至少你会在谷歌上找到更好的东西:)

编辑:

为了完整起见,我将在这里添加几行shell脚本:

#!/bin/sh
R CMD Sweave report.Rnw   
for file in `ls graphics`;
do pdfcrop "$file" graphics/"$file"
done
pdflatex report.tex
open report.pdf

也许有些人想要使用$ 1作为目录参数。