2013-03-21 9 views
6

Sto provando a scrivere documentazione per un pacchetto R in Markdown e convertirlo in un file Rd.Converti markdown in Rd o definisci regole di conversione personalizzate per il markdown?

Credo che un altro modo di guardare a questo è che io voglio un quadro che riconosce vari costrutti di riduzione dei prezzi e mi permette di specificare come questi dovrebbero essere resi, per esempio:

  • `text in backticks` viene convertito in \code{text in backticks}
  • **text** viene convertito in \bold{text}
  • liste riduzione dei prezzi vengono convertiti in \itemize{...}

e così via.

C'è qualcosa che mi permetterà di fare questo? Il pacchetto pander in R (wrapping around pandoc) sembrava promettente, ma non sono sicuro di poter specificare le regole di conversione (ad esempio converte i backtick utilizzando \texttt e voglio \code) e genera anche un documento autonomo completo anziché solo il mio frammento di input è stato convertito.

Il pacchetto markdown per R sembra fare solo markdown -> HTML. Sembra che forze hanno il supporto per renderer personalizzati, ma non sono sicuro di come scrivere una (sembra che devo scrivere codice C?)

che sto cercando qualcosa di simile:

convertMarkdown(myTextSnippet, 
       backticks = function (txt) { 
        return(paste0('\\code{', txt, '}')) 
       }, 
       bold = function(txt) { 
        return(paste0('\\bold{', txt, '}')) 
       }, 
       unordered.list = function (items) { 
        itms <- paste('\\item', items, collapse='\n') 
        return(paste('\\itemize{', itms, '}', sep='\n')) 
       }, 
       # ... and so on 
) 

Esiste una cosa del genere?

(Bonus: voglio solo essere in grado di incorporare markdown nei miei commenti roxygen, quindi stavo pensando di convertire parti dei commenti da markdown a rd e quindi eseguire roxygen sull'output).

+0

Perché non converti tutto e poi leggi e gsub come preferisci.Pandoc fa praticamente tutto quello che vuoi, ma 'gsub' out' \\ texttt {'per' \\ code {'ecc. Dai uno sguardo a [questo] (https://github.com/trinker/reports/blob/master /R/QC.R) e ruba come se fosse il tuo lavoro. –

+0

"Perché non convertire tutto" - cosa intendi? Vuoi dire basta usare pandoc per fare markdown -> latex e poi contare su gsub per convertire il latex -> Rd? –

+0

Sì esattamente. Funzionerebbe? Solo curioso, perché non 'roxygen2'? –

risposta

4

Hai visto il pacchetto maxygen di @ gabor-csardi?

https://github.com/gaborcsardi/maxygen

Si lascia basicamente scrive le intestazioni roxygen in Markdown.

[AGGIORNAMENTO] Queste modifiche sono state incorporate nel pacchetto roxygen2 e usciranno con la versione 6. Da GitHub:

La maggior parte dei campi ora può essere scritta utilizzando markup Markdown anziché il linguaggio Rd tradizionale . Puoi attivare Markdown globalmente aggiungendo Roxygen: elenco (markdown = TRUE) a DESCRIPTION. I tag @md/@noMd attivano/disattivano l'analisi markdown per il blocco specificato. Vedere la 'mark-down' vignetta per maggiori informazioni (# 364, # 431, # 499, # 506, # 507), da @gaborcsardi

+0

Ooo, nuovo pacchetto! Grazie mille! Lo attenderò su CRAN .... –

0

È possibile utilizzare la funzione md2rd suggerito da Fabian Scheipl: vedi roclet-md2rd.R per dettagli.