2013-10-31 15 views
17

Qual è il modo corretto per includere un file PDF statico come "vignetta" in un pacchetto CRAN a partire da R 3.0?Utilizzo di una vignetta PDF (predefinita) statica nel pacchetto R

Il trucco descritto in this document di utilizzare uno stub vuoto Rnw non sembra funzionare in R 3.0. Il documento suggerisce che ora c'è un modo migliore basato su \VignetteEngine{} ma non è abbastanza chiaro come questo funzioni per i file PDF statici.

+5

+1, mi piacerebbe includere anche vignette statiche nei miei pacchetti – sckott

+0

Mi chiedevo anche questo ma mentre leggo il manuale e le foglie di tè, si sta spostando verso tutte le "vignette /" con un'attuazione ancora più severa nel futuro. –

+0

Hmmm. In tal caso, penso che potrei avere solo collegamenti a pagine Web con le esercitazioni poiché la maggior parte dei miei pacchetti effettua chiamate API al web. A meno che non ci sia un motivo importante per avere vignette in realtà all'interno di pkgs? – sckott

risposta

10

Con R.rsp (> = 1.19.0) è possibile includere un PDF statico 'vignette/main.pdf' con l'aggiunta di una piccola '/ vignette main.pdf.asis' file di testo contenente :

%\VignetteIndexEntry{My amazing package} 
%\VignetteEngine{R.rsp::asis} 

e assicurarsi di avere:

Suggests: R.rsp 
VignetteBuilder: R.rsp 

nel file di descrizione del pacchetto. Questo funziona anche per le vignette HTML statiche. Questo è anche spiegato in una delle vignette R.rsp.

+0

Grazie per aver fornito questa soluzione elegante. Funziona per te in R 3.1.2? – krlmlr

+0

Funziona per me - sembra essere un problema di 'devtools'. – krlmlr

+0

Benvenuto - Sono contento che ti piaccia. Sì, tutti i motori di vignettatura di R.rsp funzionano anche con versioni precedenti di R. Funzionano fuori dalla scatola con R (> = 3.0.0). Affinché funzionino anche con R (<3.0.0) devi aggiungere una soluzione di fallback che è spiegata in una delle sceneggiature di R.rsp. – HenrikB

1

UPDATE 2014/06/08: Per una soluzione migliore per compresi i PDF statici e file HTML in un pacchetto R, vedere la mia altra risposta in questa discussione su come utilizzare R.rsp (> = 0.19.0) e la sua R.rsp::asis motore di vignette.

Tutto ciò che serve è un file <name>.Rnw con un nome corrispondente al file statico <name>.pdf, ad es.

vignettes/ 
    static.pdf 
    static.Rnw 

dove <name>.Rnw (qui static.Rnw) è un file Sweave valida minimo, per esempio

%\VignetteIndexEntry{<title to be displayed on the R vignette index page>} 
\documentclass{article} 
\begin{document} 
\end{document} 

Questo file sorgente vignetta (<name>.Rnw) trucchi R CMD build costruirlo, vale a dire di R tools::buildVignettes() sarà prima Sweave <name>.Rnw in <name>.tex come al solito. Tuttavia, a causa di come è progettato buildVignettes(), verrà rilevato il nostro file statico <name>.pdf come già creato dal motore Sweave e pertanto non verrà compilato quel file fittizio di TeX in un file PDF (che sovrascriverebbe il nostro file statico).

Ciò che è importante capire è che (i) le vignette sono "costruite" durante R CMD build, (ii) e una volta compilate vengono copiate nella directory inst/doc/ (creata se mancante) del pacchetto creato. Inoltre, (iii) la directory vignettes/ corrisponderà a non come parte del pacchetto di build, ad esempio il file <pkgname>_<version>.tar.gz. Quindi, assicurati di cercare in inst/doc/.

Quindi, per essere chiari qui, l'utilizzo di un dummy <name>.Rnw potrebbe essere considerato un hack che potrebbe interrompersi se qualcuno decide di evitare questa strategia. Tuttavia, se ciò accade, è completamente possibile creare un motore di vignette non Sweave il cui unico scopo è compilare un file <name>.pdf in un file ... <name>.pdf. Questo è valido e possibile a causa del supporto non Sweave aggiunto in R (> = 3.0.0). Ho pensato di aggiungere un tale motore al pacchetto R.rsp, ad es. \ {VignetteEngine R.rsp :: StaticPDF}. Con questo non avresti nemmeno bisogno di avere quel file Rnw fittizio - solo il file PDF.

Spero che questo aiuti

+0

Ho la vaga sensazione che non ti sarà permesso più del Rnw in un punto futuro, ma nessun riferimento valido. –

+1

Non ho potuto farlo funzionare su R 3.0 senza modificare manualmente 'package.tar.gz'. Il problema è che, come descrivi, durante la 'R CMD build' il' pdf' viene spostato in '/ inst/doc'. Tuttavia, '/ vignettes/static.Rnw' * fa * viene incluso nel pacchetto sorgente e verrà ricostruito durante' R CMD check', a quel punto fallirà perché non genera il file 'pdf'. – Jeroen

+2

Ho usato questo trucco per un po 'di tempo, ma ha smesso di funzionare per me con R 3.1. –

Problemi correlati