2012-08-11 10 views
10

Ich renne gerade in das (seltsame) Problem, dass beim Einreichen eines (pdf) LaTeX Manuskript zu einem Elsevier Journal die Dateinamen von Zahlen vollständig sein müssen durch ihre pdf Gebäude und Überprüfung syste gefunden, das heißt:Machen Sie Swave oder Knitr setzen Grafik-Suffix in ` includegraphics {}`

\includegraphics{picture.pdf} 

gibt es eine einfache und bequeme Möglichkeit, Sweave oder knitr zu tun, dass zu sagen?

Edit:

  • ich mit include=FALSE Option Sweave vertrauter bin
  • Ich fühle mich auch durchaus in der Lage utils:::RweaveLatexRuncode

Doch für den Moment, dass ich hoffe, zu Patch gibt es etwas mehr bequem und elegant.

Es geht auch darum, die .RNW-Dateien als Zusatzmaterial oder Vignetten auszugeben. Aus didaktischer Sicht mag ich diese Verbesserungen nicht, die den Quellcode für die neuen Benutzer, von denen ich hoffe, dass sie sie lesen, komplizierter machen.

(weshalb auch wirklich ich das vor kurzem eingeführte print=TRUE in Sweave schätzen)

+0

meinst du 'print = TRUE' oder' split = TRUE'? –

+1

@Yihui: Ich meinte 'print = TRUE', weil die Grafikbefehle in der Vignette so aussehen, als würden Sie sie eingeben. Lässt nur die Falle" warum funktioniert das nicht in einer for-Schleife ". Aber die Leute wundern sich nicht, warum die Vignette "print (xyplot (...))" hat. – cbeleites

+1

Ich sehe. Wahrscheinlich wissen Sie bereits, dass "knitr" nicht "print (xyplot (...))" erfordert. –

Antwort

3

können Sie ändern die plot Haken ein wenig in knitr die Dateierweiterung hinzuzufügen:

<<>>= 
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}') 
}) 
@ 

033-file-extension.Rnw für ein komplettes Beispiel. Um zu verstehen, was sich hinter der Szene abspielt, siehe source code of the default LaTeX hooks in knitr.

+0

Dieser wird ein wichtiger Haken für mich sein ... Bis jetzt blieb ich bei 'Sweave' für alles was ich mit anderen teilen darf ('stricken' Sachen, wo ich nicht die .Rnw teile) aber ich denke, ich werde früher oder später komplett auf Knitr wechseln :-). Vielen Dank für das Paket, Yihui! – cbeleites

3

Ein Brute-Force-Lösung ist explizit die Dateien zu erstellen, sich in der R-Schnipsel. Setzen Sie die Option für Grafiken usw. auf false, lassen Sie den Code jedoch so auswerten, dass die Datei erstellt wird, und rufen Sie sie dann mit dem Aufruf \includegraphics{} an, den Sie anzeigen.

Ich habe ähnliche Schemata für das einfache Caching verwendet: Wenn die Zieldatei existiert, überspringe die Erstellung des Codes.

+0

Danke Dirk, ich habe ein wenig über die Gründe geklärt, warum ich eine "schönere" Lösung finden möchte. '<< include = FALSE >> =' was ich tue ... – cbeleites

Verwandte Themen