2013-03-21 11 views
6

Próbuję napisać dokumentację dla pakietu R w Markdown i przekonwertować go do pliku Rd.Konwersja przeceny na Rd lub zdefiniowanie niestandardowych reguł konwersji?

Chyba inny sposób patrzenia na to, że chcę ramy, który rozpoznaje różne konstrukcje przecenowych i pozwala mi określić, w jaki sposób powinny być świadczone, np

  • `text in backticks` zostanie przekonwertowany do \code{text in backticks}
  • **text** przekształca się \bold{text}
  • list przecen są przekształcane \itemize{...}

i tak dalej.

Czy jest coś, co pozwoli mi to zrobić? Pakiet pander w R (zawijanie wokół pandoc) wyglądał obiecująco, ale nie jestem pewien, czy mogę określić reguły konwersji (na przykład konwertuje kontrakty przy użyciu \texttt i chcę \code), a także generuje kompletny samodzielny dokument, a nie tylko mój fragment wejściowy został przekonwertowany.

Pakiet R wydaje się po prostu robić Markdown -> HTML. to wygląda potęga mieć wsparcie dla niestandardowych renderujących, ale nie jestem pewien, jak napisać (wygląda na to, muszę napisać kod C?)

jestem po coś takiego:

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 
) 

Czy coś takiego istnieje?

(Premia: chcę tylko móc umieścić komentarz w komentarzach roxygen, więc zastanawiałem się nad konwersją części komentarzy ze znacznika na rd, a następnie na wynik na poziomie roxygen).

+0

Dlaczego nie przekonwertować całej rzeczy, a następnie przeczytać i gsub tak, jak chcesz.Pandoc robi prawie wszystko, co chcesz, ale 'gsub' out' \\ texttt {'na' \\ kod {'itp. Zobacz na [to] (https://github.com/trinker/reports/blob/master /R/QC.R) i kradnij, jakby to była twoja praca. –

+0

"Dlaczego nie przekonwertować całości" - co masz na myśli? Masz na myśli po prostu użyć pandoc do zrobienia markdown -> latex, a następnie polegać na gsub do konwersji lateksu -> Rd? –

+0

Tak, dokładnie. Czy to działa? Po prostu ciekawy, dlaczego nie "roxygen2"? –

Odpowiedz

4

Widziałeś pakiet maksimum @ gabor-csardi?

https://github.com/gaborcsardi/maxygen

To w zasadzie pozwala pisać roxygen nagłówki w promocji cenowych.

[UPDATE] Zmiany te zostały włączone do pakietu roxygen2 i zostaną wydane wraz z wersją 6. Od GitHub:

Większość pól można teraz zapisać przy użyciu znaczników Markdown zamiast tradycyjnego języka Rd . Markdown można włączyć globalnie, dodając Roxygen: list (markdown = TRUE) do DESCRIPTION. Tagi @md/@noMd włączają/wyłączają parsowanie Markdown dla danego bloku. Patrz 'przecen' winietę więcej szczegółów (# 364, # 431, # 499, # 506, # 507), poprzez @gaborcsardi

+0

Ooo, nowa paczka! Wielkie dzięki! Będę czekać na CRAN .... –

0

Można użyć funkcji md2rd sugerowanego przez Fabian Scheipl: patrz roclet-md2rd.R dla szczegółów.