为什么这不会使脚本工作?

时间:2015-03-29 19:35:01

标签: r macos makefile latex knitr

这是mypaper.Rnw

的内容
\documentclass[a4paper,11pt]{article}

\begin{document}
\title{}
\author{Ross Ahmed}
\date{\today}
\maketitle

\section{Header}

lorem

<<fig1>>=

library(ggplot2)
ggplot(mtcars, aes(wt, mpg)) + geom_point()

@
\FloatBarrier

\end{document}

我可以使用Rknitrmypaper.Rnw文件转换为mypaper.tex文件。然后,我可以使用LaTeX将mypaper.tex文件转换为mypaper.pdf

我正在尝试用make做同样的事情。

这是我make文件的内容,提供here

mypaper.tex: R/mypaper.Rnw
    cd R;R CMD BATCH mypaper.Rnw

mypaper.pdf: mypaper.tex
    pdflatex mypaper.tex

如果我在R

中运行此功能
system("make mypaper.pdf")

我收到此错误:

make: *** No rule to make target `R/mypaper.Rnw', needed by `mypaper.tex'.  Stop.

我哪里错了?我在Mac OSX上

2 个答案:

答案 0 :(得分:1)

说:

mypaper.tex: R/mypaper.Rnw

您说文件mypaper.Rnw位于R目录中。可以?你不能说它,你只需称它为mypaper.Rnw。如果你运行ls R/mypaper.Rnw,你会收到错误吗?

如果它确实位于R目录中,并且您没有输错任何名称,则可以运行make -r -d以获取(大量)调试信息,并尝试弄清楚为什么make拒绝使用你的文件。

答案 1 :(得分:0)

我没有使用knitr的经验所以我使用了一些虚拟代码来生成文件。我无法重现您的错误,因此您的文件结构可能存在一些错误。

我将makefile重写为以下内容,按预期工作:

mypaper.tex: R/mypaper.Rnw
  cd R; cp mypaper.Rnw mypaper.tex

mypaper.pdf: mypaper.tex
  #cd R is needed before your command
  cd R;cp mypaper.tex mypaper.pdf

之前的文件结构:

.
├── makefile
└── R
    └── mypaper.Rnw

文件结构:

.
├── makefile
└── R
    ├── mypaper.pdf
    ├── mypaper.Rnw
    └── mypaper.tex