2011-03-27 34 views
5

我现在Makefile更改Sweave司机看起来像:从织造命令行

SUFFIXES: .tex .pdf .Rnw 
MAIN = lecture 
INCLUDES = chapter1.tex chapter2.tex ... 

all: $(INCLUDES) $(MAIN).pdf 

$(MAIN).pdf: $(INCLUDES) $(MAIN).tex 

.Rnw.tex: 
     R CMD Sweave $*.Rnw 

.tex.pdf: 
     pdflatex $*.tex 


<snip> 

假设我想改变Sweave驱动程序才能使用highlight包(说)。这样做的最好方法是什么?

回答

6

你可以做我们为Rcpp *包做的事情。这里是RcppGSL:

RcppGSL.pdf: RcppGSL/RcppGSL.Rnw 
    cp -f RcppGSL/RcppGSL.Rnw . 
    $(RSCRIPT) --vanilla -e "require(highlight); \ 
          driver <- HighlightWeaveLatex(boxes = TRUE); \ 
          Sweave('RcppGSL.Rnw', driver = driver); " 
    $(RSCRIPT) -e "tools::texi2dvi('RcppGSL.tex', pdf = TRUE, clean = FALSE)" 
    bibtex RcppGSL 
    $(RSCRIPT) -e "tools::texi2dvi('RcppGSL.tex', pdf = TRUE, clean = TRUE)" 
    cp RcppGSL/RcppGSL-fake.Rnw RcppGSL.Rnw 

这使实际的源和子目录的“假”变型inst/doc/RcppGSL/ 诱骗R导入重建只有当我们希望它太PDF - 否则它看到一个RNW和pdf相同的基本名称,并很高兴。

多一点令人费解比基本Makefile您开始使用,但目前仍 只有这样,才能切换到highlight,我们知道。

+0

非常感谢。我只需要将'R CMD Sweave ...'换成'Rscript ...',一切都可以工作。我不使用R来pdflatex,我只是有一个额外的'Makefile'后缀命令,这意味着(我认为),我可以避免“假”目录。 – csgillespie 2011-03-27 12:33:56