5

我的当前Makefile编织看起来像:

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包(比如说)。这样做的最佳方法是什么?

4

1 回答 1

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您开始使用的基本内容更令人费解,但目前仍然是切换到突出显示我们知道的唯一方法。

于 2011-03-27T11:27:18.837 回答