Изменение драйвера Sweave из командной строки - PullRequest
5 голосов
/ 27 марта 2011

Мой текущий 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 . Какой лучший способ сделать это?

1 Ответ

6 голосов
/ 27 марта 2011

Вы можете сделать то, что мы делаем для пакетов 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, с которого вы начали, но в настоящее время все еще единственный способ переключиться на выделение , который мы знаем,

...