2012-08-11 12 views
10

Me encuentro con el (curioso) problema de que al enviar un manuscrito (pdf) LaTeX a alguna revista Elsevier, los nombres de archivo de las figuras deben completarse para encontrado por su edificio pdf y el syste de comprobación, es decir:Make Sweave o Knitr ponen el sufijo de gráficos en ` includegraphics {}`

\includegraphics{picture.pdf} 

¿hay alguna forma fácil y conveniente para contar Sweave o knitr de hacer eso?

Editar:

  • Estoy familiarizado con la opción de Sweave include=FALSE
  • también me siento muy capaz de remendar utils:::RweaveLatexRuncode

Sin embargo, por el momento estoy esperando que hay algo más conveniente y elegante.

También se trata de entregar los archivos .Rnw como material complementario o viñetas. Desde un punto de vista didáctico, no me gustan estos ajustes que hacen que el código fuente sea mucho más complicado para los nuevos usuarios de quienes espero que lo lean.

(que es también la razón por la que realmente aprecio print=TRUE introducido recientemente en Sweave)

+0

¿quiere decir 'print = TRUE' o' split = TRUE'? –

+1

@Yihui: Quise decir 'print = TRUE' porque entonces los comandos gráficos de la cuadrícula (reticulado, ggplot2) en la viñeta parecen que los escribes. Solo deja la trampa" ¿por qué no funciona en un ciclo for "? . Pero la gente no se pregunta por qué la viñeta tiene 'print (xyplot (...))'. – cbeleites

+1

Ya veo. Probablemente ya sepas que 'knitr' no requiere' print (xyplot (...)) '. –

Respuesta

3

Puede modificar el gancho plot un poco en knitr añadir la extensión de archivo:

<<>>= 
knit_hooks$set(plot = function(x, options) { 
    x = paste(x, collapse = '.') # x is file.ext now instead of c(file, ext) 
    paste0('\\end{kframe}', hook_plot_tex(x, options), '\\begin{kframe}') 
}) 
@ 

Ver 033-file-extension.Rnw para un ejemplo completo. Para comprender lo que ocurre detrás de la escena, vea source code of the default LaTeX hooks en knitr.

+0

Este va a ser un gancho importante para mí ... Hasta ahora me quedé con 'Sweave' puro para todo lo que puedo compartir con los demás ('tejiendo cosas donde no comparto el .Rnw) pero supongo que cambiaré por completo a knitr tarde o temprano :-). Muchas gracias por el paquete, Yihui! – cbeleites

3

Una solución de fuerza bruta es crear explícitamente los archivos por sí mismo en el fragmento R. Establezca la opción de gráficos, etc. en falso, pero haga que se evalúe el código para que se cree el archivo y luego pídales que los llame con la misma llamada \includegraphics{} que muestre.

He utilizado esquemas similares para el almacenamiento en caché simple: si el archivo de destino existe, omita el código de creación.

+0

Gracias Dirk, elaboré un poco sobre las razones por las que me gustaría encontrar una solución "más agradable". '<< include = FALSE >> =' es lo que hago ... – cbeleites

Cuestiones relacionadas