2011-03-27 20 views
5

Mi actual Makefile para el tejido se ve algo como:Cambiar el controlador Sweave desde la línea de comandos

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> 

Supongamos que quiero cambiar el controlador Sweave utilizar el highlight paquete (por ejemplo). ¿Cuál es la mejor manera de hacer esto?

Respuesta

6

Puede hacer lo que hacemos para los paquetes Rcpp *. Aquí es 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 

Esto evita que la fuente real y una variante de 'falso' en un subdirectorio inst/doc/RcppGSL/ para engañar a R en la recreación de la pdf sólo cuando esperamos que lo haga --- de lo contrario se ve una Rnw y pdf del mismo nombre de pila y es feliz.

Un poco más complicado que el Makefile básica que comenzó con, pero en la actualidad todavía la única manera de cambiar a highlight que sabemos.

+0

Muchas gracias. Solo tengo que cambiar 'R CMD Sweave ...' a 'Rscript ...' y todo funcionará. No uso R para pdflatex, solo tengo un comando de sufijo 'Makefile' adicional, esto significa (creo), puedo evitar directorios" falsos ". – csgillespie

Cuestiones relacionadas